Z-80 Floppy Disk Test Copyright (c) 1980 by Laboratory Microsystems 4147 Beethoven Street Los Angeles, California 90066 1.0 General description The Z-80 Floppy Disk Test is a general purpose utility for testing or initializing a diskette. It requires a Z-80 microprocessor, at least 16 kbytes of random access memory, two flexible disk drives, and the Digital Research CP/M 2.x operating system. Program mode and area of diskette to be tested are controlled from the keyboard. Errors may be audited on the console or the line printer. As supplied on the distribution diskette, the program is configured to test a soft-sectored, single density disk with 77 tracks, 26 sectors per track, and 128 byte sectors. If you are using a different type of disk drive, the number of tracks and/or sectors per track may be specified during the initialization dialogue. The program does not exhaustively check out the disk drive, and any errors detected by the program must be interpreted with care. Intermittent errors occurring throughout a broad range of disk addresses probably indicate a problem with the disk drive unit. Errors indicated at consistent addresses within adjacent tracks may result from a worn or damaged flexible disk. Error free execution of the test certainly indicates an intact and usable diskette, and also is fairly good evidence of proper operation of your disk drive. Note that the program is rather insensitive to drive problems related to head movement, since the diskette is addressed in a smooth sequential manner. 2.0 Installation Mount your system disk in drive A, and the distribution disk in drive B. Use the PIP utility to transfer the test program onto the system disk: A>pip a:=b:dtst.com [v] Now remove the distribution disk from drive B and store it as the backup copy. 3.0 Using the Test Program Put your system disk in drive A, boot up the CP/M operating system, and type: A>dtst The test program will load into memory and print the identifying message: Laboratory Microsystems Disk Test version 1.0 If there is inadequate memory in the transient program area, or if the operating system is not CP/M version 2.0 or greater, the program will immediately print a warning message and exit. Otherwise, the test proceeds to the initialization dialogue. The test mode is set via a series of questions presented on the system console. Answers calling for an alphabetic character may be upper or lower case; a carriage return is not required. Answers calling for a number must be two digits, or one digit followed by a carriage return. query responses explanation ----- --------- ----------- Itemize errors? Y or N If answered y, each error detected is audited on the selected device. If answered N, only the total error count is printed at the end of each pass. Console or Printer? C or P If itemizing errors, select the device on which the itemized error listing will be printed. Lock on read or write? N, R, or W N = no locks. R = lock on read mode (no data is written to the disk --- useful for detecting any damaged areas on the media). W = lock on write (all data on the disk is destroyed --- this may be used to erase a diskette by also locking on pattern) Restore original data? Y or N Y = restore existing data on diskette after testing each sector. N = do not restore existing data. Test runs much faster when restore mode is not used. Lock on data pattern? Y or N Y = user wishes to specify specific data to be used as the test pattern. N = random data pattern is generated by the test program. Enter data pattern hex 00-FF If you answered Y to Lock On Pattern, enter the eight bit data pattern to be used during disk testing. If you answered N, this question is bypassed. Drive to be tested B, C, or D Specify disk drive to be used for diskette testing. In order to prevent accidental destruction of the system disk, the use of drive A is not allowed. Test all tracks? Y or N Y = test all tracks (00-76) in sequence. N = user wishes to specify range of tracks (may be used to test only part of a diskette, or if disk drive is other than standard 8 inch single density). First track to test decimal 00-76 If you answered N to Test All Tracks, specify here the number of the first track to test. Last track to test decimal 00-76 If you answered N to Test All Tracks, specify here the number of the last track to test. Must be the same or greater than the number of the first track to test. Test all sectors? Y or N Y = test all sectors (1-26) in sequence. N = user wishes to specify range of sectors (may be used to test only part of each track, or if disk drive is other than standard 8 inch single density). First sector to test decimal 01-26 If you answered N to Test All Sectors, specify here the number of the first sector to test on each track. Last sector to test decimal 01-26 If you answered N to Test All Sectors, specify here the number of the last sector to test on each track. Must be the same or greater than the number of the first sector to test. How many test passes? decimal 01-99 Enter the number of test passes to be made on the diskette. At least one pass is always made even if you enter zero. After entry of the number of test passes, the program immediately begins executing. The program may be interrupted by pushing any key, however response may be delayed for several seconds depending on the speed of the processor and disk drive. Do not stop the test by resetting the computer system if you are using restore mode, or unpredictable amounts of data may be lost. 4.0 Error Listing Errors detected by the program may be itemized on the system console or the line printer. The pass, drive name, track, and sector where the error occurred are listed. All numbers are in decimal. The error type is designated at the right. In the explanations below, "hardware error" signifies an error status code returned from the low level disk driver, and usually means a CRC fault or seek incomplete. error type explanation ---------- ----------- read error - original data If running in restore mode, hardware read error noted as the original data was being loaded into memory. write error - test data Hardware error noted as the test data pattern was being written on the diskette. read error - test data Hardware error noted as the test data pattern was being read back from the diskette. compare error - test data Difference was found between the data pattern that was written to the diskette and the data that was read back. write error - restore phase Hardware error noted as the original data was being written back to the diskette. read error - restore phase Hardware error noted as the restored original data was being read back for verification. data cannot be restored Compare error found between the original data rewritten to the diskette and the same sectors read back for verification. 5.0 Program areas of interest to users To use the program on other types of disk drives, it may become necessary to change the first two locations given below. This may be done be reading in the COM file with DDT, patching the desired location, and SAVEing a new COM file. 0119H (8 bits) Sector skew flag. If byte=0, skew is not used. If byte=1, remap sector numbers as given in the sector translation table. On Z-80 systems at 4 mhz, skew is not needed and this byte may be left zero. On systems with slower processors, test speed may be improved by use of skew. 0121H (8 bits) Contains the number of digits to be accepted by the numeric input routines during the initialization dialogue, the value is two in the distributed version. If test is to run on a drive with greater than 99 tracks, change the value of this byte to three. 0122H (16 bits) Contains the address of the sector translation table. In the distributed program, the table is built with a skew factor of three, and is 26 bytes long. .