Introduction to Diagnostics I General Operating Instructions Memory test Operating Instructions Standard Output CPU test Operating Instructions Standard Output Disk test Operating Instructions Standard Output Printer test Operating Instructions Standard Output Terminal test Operating Instructions Standard Output : Introduction to Diagnostics I Diagnostics-I is a set of five test programs plus support files which is designed to check every major area of your 8080/8085/Z80 microcomputer system. All the tests are self explanatory and require no special knowledge to use. Of course the more one knows about microcomputer systems, the more helpful error reports will be. Using Diagnostics-I should enable the user to pin down a trouble to a specific area, that is, disk drive or memory. After this, the faulty unit can be removed and fixed by a service technician. Remember, these tests assume that the computer is operable enough to load and execute programs. If it is not, then we suggest that you have the entire machine examined by qualified personnel. : General Operating Instructions Before you do anything make a copy of the Diagnostics-I discette for your own use. Never, never alter the master in any way. Doing so will completely void any responsiblity on the part of SuperSoft for the operation of the software.  In general, the recommended test sequence is: 1. Memory, 2. CPU, 3. Disk, 4. Terminal, 5. Printer.  : Memory test The memory test will perform the following: 1). Perform a quick test on any memory region that is not part of the CP/M {TRS-80} operating system. 2). Perform a thorough "walking bit test" on the same region. 3). Display any errors at the time of detection by their memory address, by the byte value that was written, and by the byte value that was read. 4). Display a bit by bit error summary and an error total.  You are provided with two versions of the memory test. The first is the general version that can be used to test any memory region bounded by the region 1000H {8000H} to FFFFH. It is called "MTEST". The second test provided is a relocated version of "MTEST", called "MTEST2", that will check only that region of memory that held "MTEST", that is, 0100H through 0FFFH {5000H through 7FFFH}. Aside from this relocation, both tests perform the same functions.  To determine fbase, you can examine the word at location 0005H: this word contains fbase. Fbase and cpmend can also be determined by examining the message that CP/M prints when it reboots. The following table will help you translate between CP/M sizes in k and the fbase and cpmend values. (Cpmend may extend farther on some systems such as Northstar. For more information, see your CP/M manual.) CP/M size fbase cmpend 16k 3200H 5FFFH 24k 5200H 7FFFH 32k 7200H 9FFFH 48k 9200H BFFFH 56k B200H DFFFH 64k D200H FFFFH : Operating Instructions 1). Type "MTEST" or "MTEST2" in response to the CP/M {TRSDOS} prompt. You will see the following: DIAGNOSTICS I - MEMORY TEST COPYRIGHT (C) 1980 - SUPERSOFT ASSOCIATES ANY MEMORY FROM 1000H UPWARD CAN BE TESTED. {8000H} TEST WILL RUN UNTIL A KEY IS PRESSED. WHEN A KEY IS PRESSED TOTAL ERRORS WILL BE PRINTED BY BIT POSITION WITHIN 1K BOUNDARIES. ALL USER INPUTS AND OUTPUTS MUST BE IN HEX. QUICK TEST ONLY? (Y/N): _  2). At this point you must indicate whether you want to execute just the quick test or the more time consuming walking bit test. If you wish to perform the time consuming walking bit test, type "Y" here. Otherwise, type "N". 3). Next, you will be asked for the starting (smallest numbered) address of the memory region that you wish to test: ENTER START ADDRESS |< ____ You must enter the address as four hexidecimal digits. Only the characters "0" through "9" and "A" through "F" are allowed. For instance, backspaces and rubouts are not allowed. If you make a mistake you must start the memory test over again. If you wish to terminate the test, type a "T" at this point.  4). Then you must enter the end (largest numbered) address of the memory region to be tested: ENTER END ADDRESS |< ____ This format is exactly the same as the one for the start address, above. 5). After you type the end address, the test will start running. It will run until any key is struck. : Standard Ouput for the Memory test The memory test will produce the following output: 1). If the region under test is good: PASS COMPLETE 0000 ERRORS This means that no errors have been found. 2). For each error that is detected, the following is displayed: LOCATION DATA WRITTEN DATA READ xxxxH xxH xxH Here, as throughout the memory test, all numeric output is in hexidecimal. The error report will continue as long as errors are discovered. This means that transient errors will produce only sporadiac output whereas dead memory will produce constant output. : CPU test The CPU test will: 1). Determine whether you are using a Z80 or an 8080/8085. 2). Check the speed at which your CPU runs. 3). Test each of the instructions that your CPU is able to execute, check all results, and report any errors. The CPU test ("CPU") interprets a program that is designed to execute all single instruction sequences and many multiple instruction sequences. After each instruction sequence, the program tests all of the CPU registers to see that the proper registers changed correctly, and only those registers changed. This will detect, for instance, if storing into the A register affects the B register. : CPU Test Operating Instructions 1). In response to the system prompt, type "CPU". You will see: Diagnostics I CPU Test Copyright (c) 1980 SuperSoft Associates 2). At the completion of a successful pass you will see: CPU TESTS OK At this point, the test waits for input. Strike any key. A "C" will cause the program to run uninterupted, a control-C will exit. An "S" will cause the program enter another pass without the bell sounding; anything else will start one more pass. : Standard Output for the CPU Test 1). After the copyright notice the following line is displayed: ABCDEFGHIJKLMNOPQRSTUVWXYZ Each character represents a short preliminary test of the CPU. If this sequence is not printed, the CPU is faulty, perhaps too faulty to give reliable results on the rest of the test. Included in the preliminary tests are tests of the jump instructions and various other instructions that are crucial to the performance of the test. Also included is a checksum of the test itself. This helps to determine if the test is residing in memory correctly. 2). Next will be displayed the type of CPU that you have. If this is wrong, then your CPU is faulty.  3). The timing test follows. You will see an "BEGIN TIMING TEST" and hear a bell (if your terminal has one). After a period of time the message "END TIMING TEST" will be printed and a second bell sounded. If your system runs a 2 mhz then the interval between the first and second should be nearly two minutes. At 4 mhz the interval is nearly one minute, and at 5 mhz approximately 40 seconds. If the timing is radically different then your system may be malfunctioning. (If you have added wait states or run an interrupt driven system, the timing test may not give the results described above.) 4). If the CPU passes the test: CPU TESTS OK is printed.  5). Otherwise, if errors are found they will be reported in the following format as discovered: CPU FAILED TEST: ERROR COUNT XXXXH INSTRUCTION SEQUENCE SEQUENCE WAS XXXXXXH REGISTER U CONTAINS XXH BUT SHOULD CONTAIN XXH REGISTER VALUE BEFORE INSTRUCTION SEQUENCE WAS XXH TEST NUMBER XXXXH : The Disk Test The Disk Test will check the following: 1). The correct operation of the read and write functions. 2). That the seek function is accurate and its latency is within tolerance in both directions. 3). The integrity of data after transmission. : Operating Instructions for the Disk Test 1). Type "DISK" in response to the system prompt.  2). You will see the following: Diagnostics I - Disk Test. Copyright (c) 1980 - SuperSoft Associates Enter number of sectors: ___ At this point you will need to respond with the number of disk sectors to test. This number MUST NOT exceed the capacity of the disk system you are using. Also, if you are executing the test with a discette that contains files, you must not specify a greater number of sectors than are free. You can actually test a drive with a discette that has files on it as long as you do not exceed the number of free sectors on the discette. Note, however, that we DO NOT recomend this procedure if you suspect that the discette is not operating correctly: a discette error can still wipe out valid files. Due to a deficiency in CP/M {TRSDOS}, the disk test program has no way of knowing whether it has run off the end of the disk, so you must know the capacity of your disk system. In general, one hundred sectors are usually adequate to thoroughly exercise the disk. In fact, just to see if it is alive at all, as little as five will do. More sectors will give a more accurate test via long pseudo-random seeks. 3). The next prompt is for the number of repetitions of the test: Enter the number of repetitions: __ This will allow you to run the test for a long period of time without operator interaction.  4). Then you will be asked for the number of errors allowed before the test terminates: Enter the number of errors allowed: __ This number must be zero or greater. The program records the total number of the errors discovered. Once this number equals the allowed limit the test is aborted. In general, one should enter zero, except for servicing purposes where it may be advantageous to set the number higher.  5). Next you will be asked for the disk drive you wish to test: Drive? [A,B,C,D] _ You must always use a discette that has been formatted and initialized (contains at least an empty directory), otherwise false disk errors will result! Opening the drive door, disconnecting cables, and so on, will also produce false disk errors. : Standard Output for the Disk Test Output occurs during the operation of the test in the following manner: 1). First, the program will create a file on the specified disk called "DISKTST.TST". If the drive is so inoperative as not to allow this, an error will be indicated. 2). Next the read/write test will be done. This test writes a string, 128 bytes long, on the specified number of sectors. After this the sectors are read back. If the data read is not the same as the data written an error is detected and the program will print this on the terminal.  3). Once the read/write test has successfully terminated, the random seek test will take place. In this test, the sector number is written on each sector in a sequential write operation. Then, a seek is done to opposite ends of the file and the sector number read is compared against what was expected. If they are not the same an error has resulted. In this way, the head is forced to move back and forth many times (i.e. twice the number of sectors written). If a seek does not reach its destination correctly, this test will detect that error. This sequence is repeated for the specified repetition number. When the test terminates, a cumulative total of read/write errors and seek errors will be displayed on the console. : Printer Test The Printer Test will check the following: 1). Each ASCII character in each position. 2). Both UPPER and lower case. 3). Form feed command. : Operating Instructions for the Printer Test 1). To run "PRINTER" using CP/M type: "PRINTER" in response to the CP/M prompt. 2). You will see the following: Diagnostics I - Printer Test Copyright (c) 1980 - SuperSoft Associates Enter line length of printer [1..132] ___ At this point you must respond with the number of characters per line that your printer accomodates.  3). Next you will be prompted with the following: Lower case too? [y/n] _ At this answer either "y" or "n". (Upper and lower case are accepted) 4). Then you will be asked for the number of repetitions: Number of repetitions: ___ Usually once is enough, but intermittent problems may require several. At this point the test will begin and no further input is needed. : Standard Output The printer test will produce a "barber pole" pattern. That is, each letter and character will be printed in each print head position. This is done by printing a one line patter, then rotating the pattern one character and printing again. The number of lines printed to equal the number of characters per line so that each character will be printed in every position. After this portion of the test has been completed, a form feed will be executed. This particular feature is dependent on the exact hardware used. Certain printers keep track of the number of lines printed and will only form feed to the top on next page, whereas others will actually execute say 66 line feeds. : Terminal Test This program will check the following: 1). All printing ASCII characters in all fields 2). Clear screen terminal command 3). Cursor addressing terminal commands 4). Foreground and background mode 5). Clear foreground terminal commands (Soroc, ADM-3, Hazeltine 1500 & compatible only) 6). Clear to end of line terminal command : Operating Instructions for Terminal Test 1). There are three programs supplied on your discette: "SOROC", "HAZEL", and "TERM". If you have a Soroc or ADM-3, or compatible, you should use the program called "SOROC". {TRSDOS users: you are supplied only with one program called "TRSTERM" which will completely test your display.} If you have a Hazeltine 1500 or compatible, then use the program called "HAZEL", otherwise you must use the program called "TERM". In other words, we have supplied versions that will test the above mentioned terminals without user definition of terminal command codes. If you do not have one of the above then you will have to patch your terminal command codes using the "CUR" program. Users with one of the prepatched terminals should skip ahead to section 3.  2). The program "TERM" will read the terminal information from the file called "CRT.DAT". This file can be set using the program "CUR". You will be asked for various items of information needed so that TERM can fully test you terminal. When you run "CUR" you will be asked for various control codes for your specific terminal. You should enter the codes in decimal. That is, if the code to clear screen is a control-Z then you would enter a 26, etc. At each prompt you are expected to enter one and only one number (of course that number may have up to three digits). If the clear screen command, for example, has a lead-in code, do not enter the lead-in code again. You are asked for the lead-in code at the start of the program, and it is expected to be the same for all terminal commands.  Note that term cannot accomodate all possible terminal types Enter 0's for options that your terminal does not have. You will have to have the file "CRT.DAT" on the same discette as "TERM" when you run it.  3). From the system level, type the name of the program that is right for your system. {TRSDOS users: "TRSTERM" is in BASIC, hence you must load BASIC, LOAD "TRSTERM" and RUN it.} You will be prompted by the following: Diagnostics I - Terminal Test Copyright (c) 1980 - SuperSoft Associates Lower case too? [y/n] _ {TRSDOS: this query is not present} Respond with the appropriate answer. 4). Next you will be asked for the number of repetitions. Normally once is enough. Enter the number of repetitions: __  5). As the test runs, you must watch the display, looking for any discrepancies. Before each screen clear, the program will pause for user input. : Standard Output for the Terminal Test A sequence of screens will appear, each testing some function of the terminal. 1). First, all ASCII printing characters will be displayed in each character position in a "barber pole" pattern. This screen will hold until user input. 2). {TRSDOS users only. A test of the graphics function is performed. Starting with the top of the screen, the display will white out. That is, each graphics location will be turned on.}  3). Next, a cursor addressing test is run. In this test a row of "X"'s is printed on the terminal screen from the bottom up. On some terminals, the bottom row may have the last "X" cause an unwanted line feed. Do not worry about this. After the "X"s have been printed in reverse scroll fashion, the message SuperSoft Associates Terminal Test Program 0123456789...... will be printed with alternating character positions being printed each time. This should create the effect of four cursors acting simultaneously.  4). The last line of the terminal will print a message for user input and will test the backspace five times. The cursor will move out and then back repeatedly. After the cursor comes to rest, hit return. 5). At this point the foreground/background test begins. First, the screen is cleared using repeated CLEARLINE commands instead of clear screen and the cursor is addressed in the home position. If you screen does not clear properly, then CLEARLINE is not functioning properly. 6). The screen will be filled with alternating foreground and background messages. 7). The cursor will jump back to the top of screen and ask for input. After input, foreground will clear.  8). Then, the user will again be asked for input. After input, the background will clear and the test is terminated. will