+$\\ DRIVE x (Select Drive) The DRIVE command will select a new drive for testing. The argument 'x' may take on the values 0, 1, 2 or 3. The track number in the Read/Write table for the old drive is saved and the track number for the new drive is placed into the table. The HEAD is always reset to 0. The DRIVE, TRACK, and HEAD fields are updated on the screen. No FDC commands are executed when selecting a new drive. 'D' may be used to abbreviate DRIVE. (See the TRACK and HEAD commands) $+$\\ HEAD x (Select Head) The HEAD command will select a new head for testing. The argument 'x' may take on the value 0 or 1 for Side 0 or 1 of the diskette. The HD bit in both the Read/Write table and the Format table is set for HEAD 1 and reset for HEAD 0. The HEAD field is updated on the screen. 'H' may be used to abbreviate HEAD. $+$\\ TRACK x (Select Track) The TRACK command will place the Head of the current drive at the Track specified by 'x'. The new Track number is placed into the Read/Write table and a seek is performed on the current drive. A seek error will show up as a hard error. If the TRACK field on screen displays a '??', this means the controller and the drive are not in sync. A RECAL should be performed, but if a TRACK command is performed instead, an automatic RECAL is performed before the TRACK command. The TRACK field is updated on the screen. If the seek verify switch is OFF, the track command will end. If the switch is ON, a READ ID is performed to verify the placement of the head. 'T' may be used to abbreviate TRACK. (See RECAL and SKVER commands) $+$\\ SECTOR x (Select Sector) The Sector command will select a new sector 'x' to be used for subsequent READ or WRITE commands. The argument 'x' may take on a value from 1 to 52 (Note: Most diskette formats do not contain this many sectors). The new sector is placed in the Read/Write table and the SECTOR field on the screen is updated. 'S' may be used to abbreviate SECTOR. (Note: Commands like DISKTEST and READ TRACK will change the current sector.) $\\ SKVER 'ON' or 'OFF' (Seek Verify Switch) The SKVER command is used to enable or disable Track verification after a TRACK or RECAL command is issued. Specify 'ON' to enable and 'OFF' to disable verification. Track verification includes performing a READ ID of the diskette after seeking or recalibrating and comparing the Track number in the ID field to the Track number in the Read/Write table. If a match is not found, a hard error will be counted. Further note that the READ ID is performed in the current density mode and produces a hard error if unsuccessful. $\\ RECAL (Recalibrate current drive) This RECAL command performs a recalibrate on the currently selected drive. If the TRACK field on screen displays a '??', this means the controller and the drive are not in sync. The RECAL command should be performed to sync the drive to the controller. A 0 is placed into the Read/Write table and a Recalibrate command is executed. A Recal error will produce a hard error. The TRACK field is updated on the screen. If the seek verify switch is OFF, the recal command will end. If the switch is ON, a READ ID is performed to verify the placement of the head. (See TRACK and SKVER commands) $\\ RADIX 'HEX' or 'DECIMAL' (Select Radix) The RADIX command is used to change the current radix mode. A hexadecimal radix may be specified by 'HEX' or 'H' and a decimal radix by 'DECIMAL', 'DEC', or '.'. All printed values will be displayed in the current radix with the exception of the DUMP command. If the requested radix is different than the current radix, the entire test screen will be reprinted in the new radix. $\\ FDC addr (Select controller base address) The FDC command will switch the base address of the controller under test midstream during execution of the test program. The newly selected contoller is assumed to be uninitialized by the program. The entire screen is reprinted after this command. $\\ SRT x (Select drive step-rate) The SRT command will select a new drive step-rate value to be used when seeking and recalibrating. The argument 'x' will become the drive new step. 'x' may take on the value 1 to 16 for 1ms to 16ms step-rates for 8" drives, 2ms to 32ms for 5" drives. The new drive step-rate is combined with other timer values and a specify command is performed to the controller. The SRT field on the screen is updated. (See HLT command) $\\ HLT x (Select drive head load time) The HLT command selects a new drive head load time for use when Reading and Writing the diskette. 'x' may take on the values 2 to 256 for 2ms to 256ms head load time values for 8" drives, 4ms to 512ms for 5" drives. The new head load time is combined with other timer values and a specify command is transmitted to the controller. The HLT field on the screen is updated. (See SRT command) $\\ SINGLE ['1' or '2' or '3'] (Single-Density mode) The SINGLE command may be used two ways. If used without a parameter, the MF bit of Read/Write commands to the controller is reset and all format values remain the same. If a parameter of '1' is used, the format values for 128 byte sectors are assigned (Standard IBM 3740). A parameter of '2' will select the format values for a 256 byte sector size and '3' will select the format values for a 512 byte sector size. The appropriate format values are updated on the screen. (See the N#, EOT, GPL1, DTL, SC, and GPL2 commands) $\\ DOUBLE ['1' or '2' or '3'] (Double-Density mode) The DOUBLE command may be used two ways. If used without a parameter, the MF bit of Read/Write commands to the controller is set and all format values remain the same. If a parameter of '1' is used, the format values for 256 byte sectors are assigned (Standard IMS double-density). A parameter of '2' will select the format values for a 512 byte sector size and '3' will select the format values for a 1024 byte sector size. The appropriate format values are updated on the screen. (See the N#, EOT, GPL1, DTL, SC, and GPL2 commands) $\\ N# x (Set bytes/sector) The N# command may be used to specify a new value for the N code (bytes/sector) in the Read/Write table and Format table. The 'x' argument for N# may take on the values 0 to 3 for sector sizes of 128 bytes to 1024 bytes respectively. The N# Field on the screen is updated. When formatting, The N code is written into every sector ID FIELD. When Reading or Writing, the N code in the Read/Write table is compared to that of the sector ID FIELD. (See SINGLE and DOUBLE commands) $\\ EOT x (Set End of Track) The EOT command is used to re-define the value of EOT in the Read/Write table. During Reading or Writing, the EOT value represents the final sector number on the track. The specifier 'x' may take on the values 1 to 52 (Note: Most disk formats have a final sector much less than 52). The EOT field on the screen is updated. (See SINGLE and DOUBLE commands) $\\ GPL1 x (Set Read/Write Gap Length) The GPL1 command is used to re-define the value of GPL1 (Read/Write Gap 3) in the Read/Write table. During Reading or Writing, GPL1 is used for length of Gap 3 (length between end of data field and next ID field). GPL1 is always less than GPL2 (Format Gap 3) to avoid the splice point between the data and ID fields. The argument 'x' may take on the values 0 to 99 (decimal). The GPL1 field on the screen is updated. (See SINGLE, DOUBLE, and GPL2 commands.) $\\ DTL x (Set Data Length) The DTL command is used to re-define the value of DTL (Data Length) in the Read/Write table. When Reading in single-density mode with N# equal to 0, DTL stands for the number of bytes to transfer from the sector data field. When in double-density mode or N# not-equal to 0, DTL has no meaning and should be set to 255 decimal. The specifier 'x' for DTL may take on the values 0 to 255 decimal. The DTL field on the screen is updated. (See SINGLE and DOUBLE commands) $\\ SC x (Set Number of Sectors/Track) The SC command is used to set the number of sectors/track used in the Format table. During Track Formatting, SC is used to specify the number of sectors to be formatted on one track. The specifier 'x' for SC may take on the values 1 to 52 decimal (Note: Most disk formats have less than 52 sectors/track). The SC field on the screen is updated. (See SINGLE and DOUBLE commands) $\\ GPL2 x (Set Format Gap Length) The GAP2 command is used to re-define the value of GAP2 (Format Gap 3 value) in the Format table. During Formatting, GAP2 is used for the length of Gap 3 (length between end of data field and next sector ID field). The argument 'x' for GPL2 may take on the values 0 to 99 decimal. The GPL2 field on the screen is updated. (See SINGLE and DOUBLE commands) $+$ READ [ x or 'TRACK' or 'LOOP'] (Read Disk) The READ command can be used one of three ways. All read commands start the transfer of data at the current READ ADDRESS. The READ command without any parameters will read the currently selected SECTOR and terminate. A READ command with the argument 'x' will read x number of sequential sectors beginning with the currently selected sector. If SECTOR becomes greater than EOT and HEAD=0, a check for double-sided media is performed and if true the HEAD is switched to HEAD 1 and SECTOR is reset to 1. If HEAD=1 or double-sided is false, a seek to the next track is performed and SECTOR is reset to 1. This form will reset the TRACK, HEAD and SECTOR values to the beginning after termination and will terminate automatically on the last sector of the last track of the disk. A READ TRACK command will read the entire track beginning with sector 1 of the currently selected HEAD. The current SECTOR will remain 1. A READ LOOP will perform endless reads on the currently selected SECTOR. (See TRACK, HEAD and SECTOR commands) $+$ WRITE [ x or 'TRACK' or 'LOOP'] (Write Disk) The WRITE command can be used one of three ways. All write commands start the transfer of data at the current WRITE ADDRESS. The WRITE command without any parameters will write the currently selected SECTOR and terminate. A WRITE command with the argument 'x' will write x number of sequential sectors beginning with the currently selected sector. If SECTOR becomes greater than EOT and HEAD=0, a check for double-sided media is performed and if true the HEAD is switched to HEAD 1 and SECTOR is reset to 1. If HEAD=1 or double-sided is false, a seek to the next track is performed and SECTOR is reset to 1. This form will reset the TRACK, HEAD and SECTOR values to the beginning after termination and will terminate automatically on the last sector of the last track of the disk. A WRITE TRACK command will write the entire track beginning with sector 1 of the currently selected HEAD. The current SECTOR will remain 1. A WRITE LOOP will perform endless writes on the currently selected SECTOR. (See TRACK, HEAD and SECTOR commands) $\\ FORMAT ['TRACK' or 'LOOP'] (Format current drive) The FORMAT command may be used in one of three ways. FORMAT alone is used to format the entire diskette in the current drive. Tracks 0 through 76 decimal (39/79 for 5" drives) are formatted and the TRACK is restored to 0 before terminating. FORMAT TRACK will format only the current TRACK and then terminate. FORMAT LOOP will endlessly format the current TRACK. In any case, the Format table (N#, SC, and GPL2) specifies the type of track formatting. A prompt is issued for the optional sector interleave factor (default=1). A last chance abort prompt is issued before Formatting begins. $\\ VERIFY (Verify Current Drive) The verify command is used to verify the formatting of every sector on a diskette. The current drive is recalibrated and a read track performed on tracks 0 through 76 decimal (0 through 39/79 for the 5" drives). The error counters should be reset before using VERIFY. (See ERROR command) $\\ SEEKTEST ['ALL'] (Seek Test) The SEEKTEST command may be used to test the stepping reliability of the drive under test. Assuming that SRT is set correctly, SEEKTEST will randomly select tracks. If SKVER is switched ON, a READ ID will be performed after each seek to verify head placement. SEEKTEST ALL will perform this test on all ready drives (drives with diskettes inserted). SEEKTEST ALL will default to 10 seeks on a drive before going on to the next ready drive. This may be changed during the test by typing the numbers 1 through 9 to select 2 through 18 seeks per drive respectively. (See SRT and SKVER command) SEEKTEST ALL requires that drive 0 be one of the drives tested. $\\ DISKTEST ['ALL'] (Disk Test) The DISKTEST command will Write and Verify random data in random tracks and sectors throughout the diskette in the current drive. DISKTEST will switch back and forth from SINGLE 1 and DOUBLE 1 formats to test both densities (See SINGLE and DOUBLE commands). When a new density is selected, the diskette will always be re-formatted first. DISKTEST ALL will perform this test on all ready drives (drives with diskettes inserted). DISKTEST ALL will default to 10 random writes on a drive before going on to the next ready drive. This may be changed during the test by typing the numbers 1 through 9 to select 2 through 18 random writes per drive respectively. (See SEEKTEST command) DISKTEST ALL requires that drive 0 be one of the drives tested. $+$ ERROR drive-number HARD/SOFT error-number ERROR CLEAR - ERROR ABORT ON - ERROR ABORT OFF A Soft error is defined as any type of Read/Write related error. A Hard error is any Seek, Recal, Seek verification or Read ID controller function as well as Read/Write errors that could not be performed after 5 retrys. Soft and Hard errors are not displayed as they occur, instead they are saved away in buffers and the Soft or Hard errors counters are incremented once for each error. "ERROR drive-number HARD/SOFT error-number" will display the desired HARD or SOFT error that occurred on the drive-number entered. E,H, and S may be used as abbreviations. For example, "E 3 H 5" will display the 5th hard error that occurred on drive 3. "ERROR CLEAR" will clear all 4 error counters and buffers. The maximum number of errors that each buffer may store is 63. "ERROR ABORT ON" will cause the test to abort on any error. "ERROR ABORT OFF" will turn off the abort-on-error condition. $\\ READBUF addr (Set Read buffer address) The READBUF command is used to change the beginning address of the Read buffer. Reads are always transferred to this address in memory. The default Read buffer address is the first free address after the test utility. The specifier 'addr' may be any location in system memory. Note that the test utility does NOT perform any check on the Read buffer which could be pointing to the test program area or the O.S. area before a Read. $\\\ WRITEBUF addr (Set Write buffer address) The WRITEBUF command is used to change the beginning address of the Write buffer. Writes are always transferred from this address in memory. The default Write buffer address is the first free address after the test utility. $ DUMP [addr] (Examine/Alter Memory) The DUMP command is an extensive memory examine/alter utility. System memory is displayed on the screen in window-like fashion using the cursor as the address pointer for examining and altering memory locations. If the argument 'addr' is present, the cursor will be positioned at that location in memory. Otherwise it defaults to the current address of the read buffer. Memory is displayed with the HEX representation on the left side of the screen and ASCII displayed on the right. Valid HEX digits may be entered at the cursor when on the left side or ASCII characters when on the right side. The following control characters are used to position the cursor pointer through memory. Use caution NOT to alter program area or O.S. area. [L] right [W] next byte [U] screen ends [Q] Hex/Ascii toggle [H] left [A] last byte [E] end ram [U] screen ends [J] down [F] right end [T] next page HOME begin ram [K] up [D] left end [R] last page ESC quit $\\\ FILL start end value (Fill memory with constant) The FILL command is used to fill any portion of system memory with a constant. Three parameters are needed, with 'start' and 'end' being any valid address and 'value' in the range of 0 to 255 decimal. Memory is filled starting at 'start' and ending with 'end' inclusive. No check is made on memory addresses so caution should be taken NOT to alter program or O.S. areas. $+$\\\ IN port (Read port) OUT port value (Write port) The IN and OUT commands may be used to read and write values to Z-80 I/O Ports. The value from the IN command is displayed on the next line. In either command, the argument 'port' must be a valid port (0 to 255 decimal). A value must be specified with the OUT command (also 0 to 255 decimal). $+$\\\ INIT (Reinitialize program) The INIT command will re-initialize the test program. The drive and program variables are returned to default values, but the format variables remain unchanged. $\\ HELP [ name ] (Help menu/messages) HELP without a 'name' specified will print the list of valid test commands and prompt for a specific one to explain. If the 'name' of a command is given at this time or after the Command Prompt (HELP name), that command will be explained in more detail. Further names may be entered or alone to terminate the messages. $\\\\ IPL (Exit program and execute ROM IPL) The IPL command is used to exit the program and return to the operaring system by executing the IPL ROM. $\\ QUIT (Exit program) The QUIT command is used to exit the program by executing a warm boot. $\\ DMA [8237/8257] (Select DMA controller) The DMA command dynamically modifies the program to work with either an 8237 or 8257 DMA controller. $\\ LSTCMD (Display last 3 commands issued) The LSTCMD command is used to display the last 3 commands issued to the 765, in hex, in the order of occurrence. A '00' byte value indicates no command was issued. $\\ $$$$$$$$$$