NOTES FOR SUPERZAP.COM This is SUPERZAP v.3.3 preconfigured and corrected for the C128 with 1571 drive. (It also works with the RF512C drive, a.k.a. Excel-71, a.k.a. Excel 2001, a 1571 compatible.) SUPERZAP is a high-quality, screen-oriented, menu-driven CP/M disk editor. It is much easier to use than non-screen- oriented editors such as DU. After changing the cursor codes to the correct ones for the C128 I had to locate and correct two bugs in the "generic" version of SUPERZAP 3.3 which prevented it from working properly with the C128: (1) The program assumed that the first track of the disk is a "system track" and that the directory started on the second track. On the C128 the directory starts on the first track, and the system files CCP.COM and CPM+.COM are listed in the directory. I modified the program so that it now understands where the directory is and how many tracks are on the disk. (2) Another bug prevented proper functioning of the mode which edits by track and sector number. The problem was omission of the mandatory calls to SETTRK and SETSEC before writing the corrected track back to disk. Correcting these problems required editing the assembly source file (62 pages!) and reassembly. I also deleted a mode for "changing the ambiguous file name" which does not seem to be useful on the C128. This version of SUPERZAP is now a very useful C128 CP/M disk editor. In FILE RELATIVE MODE you can edit any sector of any file in the directory; the program automatically follows sector links, which is important since a given file is scattered due to the C128 CP/M sector skew. In TRACK/SECTOR ADDRESSING MODE you can edit any track/sector. These are LOGICAL track/sector numbers; the conversion to physical track/sector numbers is handled automatically by the C128 CP/M BIOS. Each logical track is one CP/M allocation unit of 1024 bytes, divided into 8 logical sectors (numbered 0000 to 0007) of 128 bytes each. The CP/M directory is on (logical) tracks 0000 and 0001 on a single- sided disk, 0000 to 0003 on a double-sided one. The last track number is 00A9 on a single-sided disk, and 0153 on a double-sided one. The TYPE FILE MODE is also very useful, since it will "type" (i.e., display) even non-ASCII files without crashing the screen display, something the built-in CP/M TYPE command can't do. The original documentation and the menu displays are adequate except for a few items. Where the menu specifies ^S, ^D, ^E, and ^X for cursor left, right, up, and down, you should use the arrow keys in the top row of the C128 keyboard (as with Wordstar on the C128). Where ^I is specified for "CHANGE SIDE", use the TAB key; this switches the cursor back and forth between the hexdump and ASCII sides of the sector display and has nothing to do with disk sides. Note that editing of either the hexdump or ASCII side of the display immediately displays the change in BOTH sides (a very nice touch!). As usual with monitor displays, you edit by moving the cursor to the desired character and typing over it. The original documentation is appended, with the description of the unimplemented mode for "changing the ambiguous file name" deleted and a few notes relevant to the C128 inserted. M.D. Girardeau Eugene, Oregon November 1987 SPZ.COM SPZ is a full screen interactive disk update utility, providing many of the features found in DU.COM. The program is menu driven, and little additional documentation is required. The following notes consist of a functional overview, plus notes on features not documented in the menus. SYSTEM REQUIREMENTS. SPZ requires a Z80 -it may be possible to update the source for 8080 but extensive use is made of Z80 opcodes, and this would be a large exercise. Subroutines would be required to simulate LDIR, LDDR, and CPIR, to say nothing of varieties of shift, rotate and load instructions. CPM 2.x is required. (Note by MDG: The C128 version uses CP/M+.) One or more disks may be used -SPZ determines if a selected disk is defined in the BIOS before attempting to access it. The terminal used must support cursor addressing, clear screen, and erase to end of line. At least an 80 by 24 display is required. FACILITIES. SPZ enables disk sector editing in HEX or ASCII, using File Relative or Track/Sector addressing. In File Relative mode a sorted directory listing is used to select the file. In both modes forward and backward browse is provided, in addition to random record selection. The displayed sector may be copied to a scratchpad buffer, or exchanged with the scratchpad. A file TYPE facility gives a paged, formatted display of any file. Control characters are displayed as "." except for TAB and Carriage return/Line feed which are processed normally. COM files are not formatted. (Note by MDG: Characters with 8th bit on are displayed in reverse video.) The SPZ command format may enter any operational mode directly - SPZ enters SPZ with a *.* directory list. SPZ d: as above with d:*.* directory list. SPZ [d:]afn as above with d:afn directory list. SPZ [d:]ufn enters SPZ in file relative mode, using the specified file. SPZ [d:]DSK: enters SPZ in Track Sector addressing mode on the specified drive. (Note by MDG: The above are not really necessary; just type SPZAP128. When the menu comes up, insert the desired disk, hit C for CHANGE DISK, and access files from the menu display.) DIRECTORY LIST MODE. In directory list mode the cursor is positioned on the first filename displayed. The cursor can be moved LEFT, RIGHT, UP or DOWN using Control keys. A file is selected by typing a command character against the required file name -"E" for file relative editting, or "T" for the TYPE function. Up to 32 file names are listed. If there are more files, the directory list may be paged forward and back. Other drives may be selected or the current disk changed. NOTE - if the disk in the current drive is changed, the "change disk" function should be used to select the same drive again. This provides a new directory list, and avoids CP/M making the disk Read Only. Track/Sector addressing is selected from the directory list display. FILE RELATIVE MODE. In this mode the selected file is displayed in HEX and ASCII format with record number and file offset displayed. For .COM files the address when loaded at 0100H is diplayed. The record displayed may be selected by browsing forward and back, locating the first or last record, or by setting a record number (in HEX). When setting a record number, Hex digits are entered in "calculator style" -new digits are entered on the right while the number moves left. Backspace deletes the last digit entered, and Escape restores the original number. These features are common to all number entries in SPZ. The selected record is read when RETURN is pressed. If it is not found, the previous record number will be restored. The displayed record may be changed by typing "C". The cursor is positioned on the first hex digit, and is moved using the same control keys as are used in the directory list mode. Any valid hex digit may be typed to alter the record. The TAB key moves the cursor to it corrosponding location in the ASCII display, allowing character strings to be easily changed. Another TAB returns the cursor to the HEX display area. Two control codes are available to stop editing the record -one saves the changes and rewrites the record to disk, the other restores the record to its original contents. Return to directory list mode is made by typing "L". TYPE FILE Files are TYPEd with up to 72 characters per line, 18 lines per page. Except for .COM files, Carriage return/Line feed codes are honoured, and Tabs are expanded. All other control characters are displayed as "." to prevent unwanted terminal control functions. Forward and backward paging operations are provided, including return to top of file. Following paging, the highest page displayed can be restored. TRACK/SECTOR ADDRESSING. This mode is entered by typing "S" in directory list mode. The facilities provided here are similar to File Relative mode, but sectors are selected by setting (or browsing back and forward) track and sector numbers. The allocation block number is also displayed and may be set. When a block number is set, the first sector of that block is displayed. The record diplayed may be altered in the same manner as File Relative mode. The scratchpad facility is also available in this mode. Note that sectors saved in one mode are available for exchange in the other mode. (Note by MDG: I haven't found any use for the scratchpad mode, but left it in this C128 implementation.) Thats it Folks - Willie Davidson. 8 Comely Bank Street Edinburgh Scotland. V3.3 notes ---------- I recently received an updated 2.5 source from Willie Davidson and 3.3 is simply the result of incorporating those changes into 3.2. The most significant differences seem to be to do with the "type file" function where the display width has been increased from 72 to 76 characters and the handling of non-display characters has been improved. V3.2 notes ---------- SUPERZAP v 3.1 allowed operation under CP/M 3.1 provided that certain implementation considerations were met, namely: 1. CP/M 3 is non-banked, OR, 2. Disk parameter headers reside in common memory, OR, 3. XMOVE routine is implemented. Version 3.2 removes all restrictions. It will now run on any CP/M 2.2 or 3.1 system with a Z80 processor. (Note by MDG: It didn't work right on the C128 until I modified the source code and reassembled it.) John Hastwell-Batten, 24th February, 1986 V3.1 enhancements and other changes to SUPERZAP ----------------------------------------------- 1. Upgraded to operate under CP/M 3.1 as well as CP/M 2.2, 2. Added ability to select user number, 3. Generalised screen control functions, 4. Other minor (cosmetic) changes. CP/M 3.1 compatibility: ---------------------- SUPERZAP now tests for CP/M version at startup. If not running under 2.2 or 3.1 then it complains and stops. Since any sensible CP/M 3.1 BIOS deals with physical disk sectors rather than 128-byte "logical" sectors, several changes were needed to map the physical disk I/O into a much larger buffer. The code size has not increased significantly because the buffer is set up in free memory past the end of the program. User number selection: --------------------- A very crude method of changing user number has been added. Upon selecting the (new) U option from the directory display panel, a prompt is displayed which calls for a single keystroke. If you respond with a numeric key (0-9) or a letter (in the range A-F) then the keystroke is interpreted as a hexadecimal digit and the current user number is changed. The user number is not displayed so you have to remember it. (I did say it was crude, didn't I?) Wish list: --------- 1. Extend random-record processing to handle VERY large files under CP/M 3.1, 2. Display current user number on the screen somewhere, 3. Extend file name selection to incorporate user numbers (perhaps like NSWP207). 4. Allow multiple sectors in the scratchpad. 5. Under CP/M 3.1 display physical sector numbers as XXXX:Y where XXXX is the actual sector number and Y is the 128-byte sub-sector number, 6. When in track/sector mode, allow the ability to select whether to use BIOS skewing or to use 0- or 1- origin sequential sector numbering (i.e. no skew). 7. Use the full width of the screen when displaying text files. 8. Add some sort of string search facility. John Hastwell-Batten, SYSOP, Tesseract RCPM+, P.O. Box 242, Dural, NSW 2158, AUSTRALIA 14th January, 1986