Sector Inspector 1.0 Program Requirments: Uses 128k of RAM Works on a IIc, enhanced IIe, and IIgs Apple Computer Program memory map: Main Memory: $0000-$07FF - Computer usage $0800-$09FF - Bitmap for changed bytes in the true buffer $0A00-$0BFF - XBuffer2 (working buffer) $0C00-$0DFF - Buffer used to compare against true buffer for bitmap $0E00-$0FFF - XBuffer $1000-$1FFF - Buffer space $2000-$96FF - Sector Inspector 1.0 code $9700-$9FFF - DOS 3.3 RWTS $A000-$A4FF - Reserved for user use (making of RWTS subroutines) $A500-$A7FF - Macro storage memory $A800-$A9FF - Buffer Contents memory $A900-$A8FF - Labels memory $AA00-$AAFF - Trace Table memory $AB00-$ABFF - SI variable page $AC00-$AFFF - File buffer for File Follower and Info On File $B000-$B9FF - Search memory $BA00-$BEFF - Scratch memory for the Disk Copy $BF00-$BFFF - ProDOS MLI Global Page $C000-$FFFF - Computer usage Auxiliary Memory $0800-$AFFF - Used by Copy Routine $0800-$1FFF - Used by Save All command $3000-$3FFF - Used by Bitmap, Read in buffer storage $xx00-$yyFF - Used by RWTS Options save command Over view of features: 16 Buffers, 1 XBuffer 1 RWTS Entry point ($97B5) so that total alteration of all other locations is allowed. Little Use of Moustext, but extensive use of 65C02 specific opcodes. 100% Machine Language, no Basic routines are used. ProDOS and DOS 3.3 editing (buffers remain intact while switching) 22 Labels for disk position definitions 3 View modes (hex, text, both) Display of buffer contents (will show which block/sector of disk was read into current buffer. Erased when new disk is recognized) 85 last positions viewed on disk are displayed (Trace Table) Up to 9 strings simultaneous Search and Replace with prompting or not. Range of disk to be search may be entered. Printing of occurances found. Universal strings optionals and number of times string found printed. Wildcards, and mixed text/hex strings also. Use of last string in a repeat search Quick incrementing or decrement of buffers, sector/blocks, tracks. Continuous scan of disk (for no byte string). This is for perusing a disk in the text mode. Conversion of Binary, Decimal, Hexadecimal to other two. Buffer manipulation commands (Move, Copy, Fill, Compare, Load, Save). With option of partial displaced operations. Alteration of DOS 3.3 Prologs and Epilogs with Wildcard capability and ability for partial sectors Ability to read Half Tracks Screen Dump available at any input point Loading and Saving of foreign RWTSs (range of memory is selectable) 5 pages ($A000-$A4FF) of free user memory for user RWTS routines Bi-Windowed Monitor with screen dumps, 2 input/output windows (with toggling between the two), or 1 input, 1 ouput. Partial Displaced Disk Copying (Blocks $30-$40 of one device may be copied to blocks $80-$90 of another device. Devices need not match in size) Internal repeating keystroke Macros (macros which may be set to repeat themselves up to 255 times) Movement within a file to edit its blocks/sectors specific to that file and display of the files relative true disk blocks Disassembly of a selectable number of lines (not on a IIgs) Nibble Reads of disk to diplay actual, undecoded information on the disk Logical Operators (or/eor/and) on bytes, ranges, buffer, all buffers. Quick entry of True Monitor, Quit Code, and Main Menu Configuration of program defaults via an external segment Editing log to print changes to a buffer at write Bytes changed in a buffer are highlighted until written Undo of bytes changes via range, single byte or whole buffer Disk Compares with 10 second read times Format a track, range of tracks, or whole disks Features listed by menu appearance: ...Main Menu...: View Modes: Hex : displays buffers in hex Text : displays buffers in text Both : displays buffers with hex on the left and text on the right Filter : prints only a selected range of characters, wiping out the unwanted ones with a specific character Buffer Options: Fill : Fills byte, range, buffer, or all buffers with a selected byte Move : Moves data of one buffer to another, erasing original Copy : Copies data of one buffer to another, preserving original Jump : Moves to a selected buffer. This option will display the disk contents of the buffer (i.e. what block was read into it) Load All : Loads a file from disk containing SI buffer information This will load from disk, or Auxiliary memory (if flag set) Save All : Saves a file to disk, or auxiliary memory which contains: All buffer data Bitmap data (the bitmap tells you via highlighted bytes, which bytes you have changed inside a buffer) The XBuffer It does NOT preserve the Undo buffers Transpose : Flip the data in two buffers (x to y and y to x) Verify(Compare) : Compares two buffers or a range of data in two buffers and reports the difference in the form: xx:yy/zz where xx is the location, yy is the first buffer, and zz is the second Put Memory Page : This brings any memory page from the computer into the buffer Buffer - XBuffer : Stores the data of a buffer in the temporary buffer. If an XBuffer is in memory, an X will be displayed in the upper right of the status window XBuffer - Buffer : Recalls the temporary buffer into the current buffer Whole/Partial Toggle : This will turn on/off questions for partial ranges within a buffer Monitor: This is a 2 windowed monitor with an arrow at the top pointing to the current selected window. oa-Q will quit to Main oa-Tab will switch windows in TWO mode oa-1 will switch to ONE mode (1 input, 1 output window) oa-2 will switch to TWO mode (2 input/output windows) This monitor has ALL features of the real monitor Search: This is a VERY powerful search command. It has the following features: You may search a selected range of the disk You may include Replace strings, which, when finding a string on the disk, can rewrite a replacement back to the disk You may have up to 9 strings Searching and/or Replacing simultaneously This strings may have Hex data, Text data, or Both at the same time. They may have wildcards, which in the Replace mode will just write back whatever was found in the Search. You may stop when you find a string, or search continuously, while reporting findings When reporting search findings, you may do this either to the screen, or to the printer You may prompt when replacing, or do a continuous replace. Prompting will display the data in the search buffer, and highlight the byte the replace string begins at The editor will also return the number of times it found every string The editor will put your cursor on the first byte of the string in the buffer when it finds it (if you are on stop mode) You may use the string from the last search, and use its replace strings optionally When entering a string, press Oa-? to enter a wildcard, which will be ?? for hex, and an inverse ? for text. Press Oa-Tab to switch from hex to text, or vice versa. When entering a replace string, it will only let you enter as many characters as were in the search string. You may press sa-' or sa-" in text entry mode to enter high or low ascii. Entering [Control-A] as the first character of a search string will make the rest of the string Universal (i.e. John would be found as JOHN, JoHn, jOHN, or any combination of inverse/normal/high ascii/low ascii) All other selections are via Yes/No bars Labels: A label is a position on the disk which has an ASCII name defined to it. You can then quickly jump to the position on disk using the name instead of entering the block/sector name with Read Disk Goto Label : Jump to a disk position that has been previously defined Define Label : Give a disk position a name which you can jump to View Labels : Gives a list of current labels and their positions Purge Lables : Wipe out the label list You may only have 22 labels. When the list is full, you must then Purge them to enter more Number Converter: This will let you translate numbers to different base number systems Hexadecimal : Go from Base 16 to Base 10 and Base 2 Decimal : Go from Base 10 to the other two Binary : Go from Base 2 to the other two Trace Table: This will display the last 85 position you have been to on the current disk. Entry 1 is the most current, and entry 85 is the least current. Entry are not updated during a search Disassemble: This lets you display buffer data in PNEUMONIC form, from the current cursor position. It will also let you select a variable number of lines on the IIe/IIc Edit Buffer: You may edit a buffer in any view mode. For each mode, you may move through the buffer with all 4 cursor keys. You must press [Space] to begin entering data In Hex, you must continue to move all 4 directions while in data entry mode In Text data entry mode, you have an string which you may edit using the line entry edit commands, and pressing [Return] will enter the string into the buffer In Both, you have a selection of either mode, which is chosen by press T for Text, or H for Hex Esc will always return you to the menu in movement mode, or take you to movement mode from edit mode In Text edit, it will display the maximum length your string may be before it is automatically terminated. You will not be notified on reaching the end, nor will it stop you from entering data beyond the limit In all modes, you may select any main, or option menu command by pressing [Oa-key] for main menu commands, or [Sa-key] for option menu commands Read Disk: This will let you read a position on the disk, reference by track and sector, or block When you are entering a BLOCK number, you may press [Tab] at the first byte to enter the block number in Decimal Write Buffer: This will write the current buffer onto the disk. [Control-W] will write the buffer, without prompting for disk sector/block Goto Byte: This will jump to a specific byte in the buffer And/Or/Eor: This will preform the related logical operation onto a byte, range of bytes, or the whole buffer, or all buffers Change Device: This will change the current Slot/Drive. If you are in ProDOS, it will scan the new device Other Options: Alter DOS : This will let you change the disk prologs and epilogs searched for by DOS 3.3. It will also change error flags, and how the disk writes. This is for DOS 3.3 only. When entering the hex data, press left arrow to move back to the last byte Nibble Read : This will display the encoded raw disk data of any disk. Whole/Half Tracks : This will change your drive head position to read disks in Whole or Half tracking Printouts : This will change the printer slot for all printouts Disk Utilities : This will allow you to Duplicate, Format, or Compare a disk, or range of tracks on a disk Duplicate has the feature of copying in partial displaced copying. You can copy block $02-$06 of your hard drive, onto blocks $112-$116 of a 5.25 disk. The copier does not check device sizes and operates at the block level, or the track/sector level, depending on editor status Comparing will displays * and ., * means no match, and . means a match. It uses a double checksum, and is very accurate. RWTS Options : This allows you to Load or Save a foreign RWTS to or from disk Editing Log : This will allow you to print out all changes you make to buffer at write. The format printed will be xx:yy/zz, xx being position, yy being original value, zz being new value. This option only works if you have a printer in the correct slot, and it is ON. If this option is active, it will print an inverse L near the title in the upper right on the left side Macro Definitions : This allows you to define up to 8 keystroke macros, these will be interpreted as if you typed in the keystrokes from the keyboard. It uses all line edit commands, and use [Sa-Key] to enter a control character, such as Esc or Return. When editing an old macro, it will position you to the end of it without erasing it. You will then select the number of times you want it to execute File Follower : This will allow you to edit the indiviual blocks of a file in the ProDOS mode. You can preform ALL editor functions on the file as if it were a disk (except those such as Change Device). To return to editing the disk, just select the File Follower option a second time. When editing a file, it will use relative blocks. It will print the true disk block in the prompting window when it tells you what the current buffer contains Info On File : This will give all the disk directory information of a file, subdirectory, or volume directory. It will give the block index on the left, the real data, the description of its meaning, and the decoded data on the right Toggle Prompting : This will select/deselect the Yes/No prompting used throughout the editor on functions potentionally harmful to data in the computer. Such as Purge Labels. It will prompt because this could erase labels you did not want erased Switch Editors : This will switch you between ProDOS and DOS 3.3 Quit: This will return you to the ProDOS quit code [Sa-Control-Q] will allow you to "Quick-Quit" from anywhere You will always be prompted when quiting, no matter what the status of the prompting flag Commands having no menu entry: = - Increment Block/Sector - - Decrement Block/Sector + - Increment Track (does not function in ProDOS) _ - Decrement Track ("") . - Increment Buffer , - Decrement Buffer ] - Continuous Increment (to scan disk in text mode) [ - Continuous Decrement ("") > - Buffer/Sector Increment. Increments Buffer and sector while reading/writing the buffer into the sector depending on current status mode < - Buffer/Sector Decrement. Same as option above \ - Return default in hex entry [Tab] - If buffer cannot be diplayed all at once, this will change diplay to next highest section of buffer oa-P - Print screen from any input location [Control-W] - Entered at main menu, will Quick Write (skip asking for block number) [Control-X] - If entered while typing a string, will erase string and restart entry (like Ctrl-X on the Apple) sa-[Delete] - Enter true Monitor sa-[Cntl-Q] - Quit to ProDOS from any location sa-[Esc] - Will quick jump to main menu and redraw screen from anywhere sa-[1],[2] - Instant change to drive 1 or 2 Escape - Will abort any function, or return to previous function Arrows - Move cursor when one is given Return - Selection key Delete - In input routine, will backup cursor Misc. Features: Status bar contains current Block/Total Blocks/Buffer/Byte in ProDOS, Track(and .50 or .00 if half or whole tracks)/Sector/Buffer/Byte. Also contain current Slot/Drive/Printer Slot/Checksum of buffer (useful for comparing edits between people)/Disk status (whether read or write is active (affects [<], [>] commands))/Flags. PBR stands for Prompting, Buffers, and RWTS. Will be "o" if inactive, or a check mark if active. If prompting is active, yes/no question will be asked at crucial points in the program. If Buffers is active, there are buffers contained in the Aux Memory (turned off if loaded from it). If RWTS is active, An RWTS has been saved to Aux memory. Entire sectors will be displayed in the hex/text modes, whiles halves displayed in Both. In ProDOS, half buffers will be displayed in Hex, full in Text, and quarters in Both. Location of cursor will be highlighted and byte index numbers will be along the top and left side of the buffer (except in Both). Menus are cursor bar selectable with arrow control. If top of menu is reached, it will scroll back to the bottom. If return is pressed on a highlighted option, that option will be selected. The first letter of an option may also be pressed to select it to provide faster control and use of the program. Any selected option will return to after pressing escape (ie. if you highlight Labels, press return, the press escape, Labels will be highlighted) Yes/No selections are similar to AppleWorks and highlight the current answer. Arrows (and any other key besides Y and N) changes highlight from Yes to No and back and return selects. Presses Y or N will automatically select. Input of ascii data does not allow escape, delete, or certain control characters to be pressed. All characters are interpreted literally with solid apple (option) + (Control)-Key except single quote ['] and double quote ["] which toggle between low and high ascii (respectively). Control codes used are : [Control-B] to jump to beginning of string, [Control-N] to jump to end, [Control-D] and [Delete] to delete characters (from position and moving backward, respectively), and [Control-F] to insert spaces. [Control-X] will erase and restart the string Input of hex data is done by entering in digits desired and press space or return (there is a distinction in some parts of the program). Entering more than 2 digits will scroll the byte, so that entering 1 then 2 then 3 will go from 00 to 01 to 12 to 23. Pressing return without entering data will accept the number that was there upon allowing your entry. Escape will abort entry. Pressing of "\" will return default. Buffers with disk data read into them will report the block/sector and the label name if the block/sector is found within the Label Table All bytes that have been changed in any of the 16 buffers will be highlighted when that buffer is viewed. Printouts made with oa-P will return user to the point of execution as if they never left so as not to disturb the program. Seperate module: SI1.0.CONFIG: Will allow user to configure the following: Track entered on, Maximum number of Tracks (up to $FF) Sector entered on, Maximum number of Sectors (up to $FF) Buffer entered on, Byte entered on Printer slot, Device Slot, Device Drive Whether Prompting, ProDOS, Edit Log on, or Linefeeds at Carriage Return or not If left arrow is pressed on a hex byte, the cursor will move to the last hex byte Pressing "C" at title page will print credits (me and beta testers)