|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 43776 (0xab00) Types: RcTekst Names: »99110094.WP«
└─⟦7fab0c8ae⟧ Bits:30005866/disk3.imd Dokumenter i RcTekst format (RCSL 99-1-*) └─⟦this⟧ »99110094.WP«
╱04002d4e0a0006000000000201413100000000000000000000000000000000000000000000000000050f19232d37414b555f69737d8791ff04╱ ════════════════════════════════════════════════════════════════════════ ↓ ┆a1┆┆a1┆↲ ↲ ╞ Edition:╞ May 1985↲ ╞ Author: Peter Lundbo / Dinh Nuong Quang↲ ╞ RCSL No.:╞ 991 10094↲ ↲ ↲ ↲ ↲ ↲ ↲ ↲ ↲ INTERNAL DOCUMENT↲ ↲ ↲ ↲ ↲ ↲ ↲ ↲ Title:↲ ↲ ┆06┆┆84┆RC 3902 (CPU 691) hardware selftest↲ user's manual↲ ════════════════════════════════════════════════════════════════════════ ↓ ════════════════════════════════════════════════════════════════════════ ↓ KEYWORDS:↲ ╞ ╞ ┆84┆RC 39, XENIX, Hardware Selftest, CPU 691, MEM 602, ↓ ┆19┆┆8e┆┄┄MEM 603, Multibus Configuration.↲ ↲ ↲ ↲ ↲ ↲ ↲ ↲ ABSTRACT:↲ ╞ ╞ ┆84┆This manual covers the hardware selftest included ↓ ┆19┆┆8e┆┄┄in the RC3902 product. The EPROMS is installed on a ↓ ┆19┆┆8e┆┄┄CPU 691 board, and is responsible for the ↓ ┆19┆┆8e┆┄┄verification of the attached MEM 602/603 boards as ↓ ┆19┆┆8e┆┄┄well. The CPU 691 is the "test-master" board, which ↓ ┆19┆┆8e┆┄┄is able to communicate with all other intelligent ↓ ┆19┆┆8e┆┄┄controllers in the RC 39 product in order to ↓ ┆19┆┆8e┆┄┄concentrate the outcome of all the concurrently ↓ ┆19┆┆8e┆┄┄running selftests on one console. The "test-master" ↓ ┆19┆┆8e┆┄┄is also responsible for directing all other ↓ ┆19┆┆8e┆┄┄intelligent controllers to their bootload phase.↲ ↲ ↲ ↲ ════════════════════════════════════════════════════════════════════════ ↓ ╱04002d4e0a0006000000000201413100000000000000000000000000000000000000000000000000050f19232d37414b555f69737d8791ff04╱ ╱04002d4e0a0006000000000201413100000000000000000000000000000000000000000000000000050f19232d37414b555f69737d8791ff04╱ ↓ i↲ ┆a1┆TABLE OF CONTENT╞ ╞ ╞ PAGE ↲ ↲ 1. INTRODUCTION ............................. 1↲ ↲ 2. THE BAUD RATE DETERMINATION MODE ......... 2↲ ↲ 3. THE INITIAL MEMORY TEST .................. 3↲ 3.1 Initial RAM Test ..................... 3↲ 3.1.1 Memory Test Flow ............... 4↲ 3.1.2 Loop On Error .................. 4↲ ↲ 4. INTERRUPT HANDLING AND PVAM SWITCH ....... 5↲ 4.1 Valid Interrupts ..................... 5↲ ╞ 4.2 Instruction Violations and Instructions↲ Exceptions ........................... 6↲ ↲ 5. TEST 0 = RAM test ........................ 8↲ ↲ 6. TEST 1 = Chip Select Test ................ 10↲ ↲ 7. TEST 2 = 8254 Programmable Interval Timer↲ test ............................ 11↲ ↲ 8. TEST 3 = Disk Channel Test ............... 12↲ ↲ 9. TEST 4 = Numeric Processor Extension Test 14↲ ↲ 10. TEST 5 = Multibus Configuration .......... 15↲ ↲ 11. TEST 6 = Parallel Port Test .............. 17↲ ↲ 12. TEST 7 = Extended RAM Test ............... 18↲ 12.1 Test Variables ...................... 18↲ 12.1.1 Operating Mode ............... 19↲ 12.1.2 Address Range ................ 19↲ 12.1.3 Change Pattern ............... 20↲ 12.1.4 Execute Subtest Alone ........ 20↲ 12.1.5 Bus LOCK ..................... 20↲ 12.2 Subtest 0 = Pattern test - WORD mode,↲ EVEN alignment ...................... 20↲ 12.3 Subtest 1 = Pattern test - WORD mode,↲ ODD alignment ....................... 21↲ 12.4 Subtest 2 = Pattern test - BYTE mode,↲ ALL bytes ........................... 22↲ 12.5 Subtest 3 = Pattern test - BYTE mode,↲ EVEN bytes only ..................... 22↲ 12.6 Subtest 4 = Pattern test - BYTE mode,↲ ODD bytes only ...................... 23↲ ════════════════════════════════════════════════════════════════════════ ↓ ii ╞ ╞ ↲ ┆a1┆TABLE OF CONTENTS (continued) PAGE↲ 12.7 Subtest 5 = ECC Error Correction Test 24↲ 12.8 Subtest 6 = ECC Error Detection Test 25↲ ↲ 13. TEST 8 = Floppy Test ..................... 27↲ ↲ 14. TEST 9 = Printer Test .................... 30↲ ↲ 15. LED OUTPUT ............................... 31↲ ↲ ↲ ┆a1┆APPENDICES↲ ↲ A. REFERENCES ................................ 33╞ ↲ ↲ B. COMPLETE ERROR LIST ....................... 34↲ ════════════════════════════════════════════════════════════════════════ ↓ ════════════════════════════════════════════════════════════════════════ ↓ ┆14┆┆b3┆╞ ╞ ╞ ╞ ┆0b┆┆a1┆↲ ┆a1┆┆a1┆┆b0┆1. INTRODUCTION↲ ↲ The CPU 691 is an Intel Manufactured iAPX 286 processor board, ↓ used as the main CPU in early RC 39 products. The CPU 691 is ↓ going to be replaced by an RC Manufactured board called CPU 610.↲ ↲ This manual assumes the reader is familiar with the RC 39 ↓ selftest concept as described in the manual called "The RC 39 ↓ Selftest Concept". The CPU 691 selftest includes 10 different ↓ tests which may be run in several modes. Six of these tests are ↓ ┆b0┆default┆f0┆ tests which allways execute after a power on. One test ↓ ┆19┆┄┆81┆┄is an ┆b0┆extended┆b0┆┆f0┆ test which may be appended to the default set when ↓ ┆19┆┄┆83┆┄requested explicit by an operator. The last three tests are ↓ ┆19┆┄┆83┆┄┆b0┆seperate┆b0┆l┆f0┆┆b0┆y┆f0┆ run tests, which may each be requested to execute as ↓ ┆19┆┄┆86┆┄stand alone programs.↲ ════════════════════════════════════════════════════════════════════════ ↓ ┆a1┆┆a1┆┆a1┆┆b0┆2. THE BAUD RATE ┆a1┆DETERMINATION MODE↲ ↲ If a terminal is connected to the V.24 line 1 interface (CTS ↓ activ) then the selftest enters the automatic Baud Rate ↓ Determination mode. The USART is initialized to 9600 Baud and ↓ stars (*****) are written to line 1. These stars may be seen as ↓ stars, other mixed characters or not seen at all depending on the ↓ Baud Rate of the attached console. The selftest waits for the ↓ operator to enter one or two upper case U. One upper case U is ↓ enough if the Baud Rate is 9600, 4800 or 2400 Baud. Baud Rates of ↓ 1200, 600 or 300 requires two upper case U.↓ ════════════════════════════════════════════════════════════════════════ ↓ ┆b0┆┆a1┆3. THE INITIAL MEMORY TEST↲ ↲ After a power on the selftest at first initializes the peripheral ↓ devices, and then enters the initial memory test. This very first ↓ part of the selftest executes in 8086 mode with interrupts ↓ disabeled.↲ ↲ The initial memory test of the CPU 691 SBC selftest consists of ↓ two parts, a PROM checksum test and a RAM memory test. The ↓ contents of both the odd and the even PROM's are summarized ↓ ewise and the result must be a zero. For that reason the ↓ PROM's contain a compensation byte which is used to bring the sum ↓ to zero. The checksum test may produce the following errortext.↲ ┆a1┆↲ ┆b0┆┆f0┆1. ┆b0┆checksum test: sum error exp.:<0000> rec.:<xyzw>↲ ↲ Checksum error usually means that the content of the PROM has ↓ been damaged and that the PROM must be changed.↲ ↲ ↲ ┆a1┆┆b0┆3.1 Initial RAM Test.↲ ↲ The initial RAM test verifies the first 64 kbytes of RAM ↓ addresses 000000-00FFFF hexadecimal. This part of RAM is used to ↓ hold the protection tables plus selftest and monitor variables ↓ when the processor enters the protected mode of operation.↲ ↲ The memory test is a register based test and uses no memory space ↓ at all, neither for variables nor stack.↲ ↲ ┆a1┆┆e1┆The test pattern is the convenient modulus 3 pattern consisting ↓ of three times 0000 followed by three times FFFF ( hexadecimal ).↲ ↲ ↲ ════════════════════════════════════════════════════════════════════════ ↓ ┆a1┆┆b0┆3.1.1 Memory Test Flow.↲ ↲ The test starts in the highest RAM address of the lowes 64 K byte ↓ memory block (FFFF hex.) and inserts the pattern towards lower ↓ addresses.↲ ↲ When all initial memory words have been written and verified, ↓ they are tested again with the inversed pattern, this means, that ↓ all bits are tested for "zero" and "one" insertion. If an error ↓ occur the following message is written to the console.↲ ↲ ↲ ┆a1┆┆b0┆┆f0┆┆b0┆2. ┆b0┆Initial RAM Test: RAM error segm.:<ssss> addr.:<aaaa>↲ ┆19┆┄┆82┆┆82┆┆b0┆ exp.:<eeee>┆b0┆ rec.:<rrrr>↲ ↲ The secondary text is interpreted like this :↲ ↲ <ssss> is the segment address (allways 0000)↲ <aaaa> is the segment offset↲ <eeee> is the expected pattern, should allways be 0000 or FFFF.↲ <rrrr> is the received pattern.↲ ↲ ↲ ┆a1┆┆b0┆3.1.2 Loop On Error.↲ ↲ When a fault occur during the initial RAM test an error message ↓ is written to the console, and the RAM test starts from the ↓ beginning again. This will be the case until no error is ↓ discovered. If there is a RAM error and if an L is typed from the ↓ keyboard, then the RAM test will not start from the beginning ↓ again, but proceed trough the RAM test and write all RAM errors ↓ to the console, and finally enter the "test-administrator" to ↓ execute other tests if possible.↲ ════════════════════════════════════════════════════════════════════════ ↓ ┆a1┆┆b0┆┆b0┆4. INTERRUPT HANDLING AND PVAM SWITCH↲ ↲ When the CPU 691 SBC selftest has terminated the initial memory ↓ test the protection tables are copied from EPROM to RAM. Then the ↓ iAPX 286 CPU and the board as well is switched into the Protected ↓ Virtual Address Mode, and a message is written to the console ↓ like this:↲ ↲ ┆b0┆******* PVAM ENTERED *******↲ ↲ If an 80827 Numeric Coprocessor is present, then it is also ↓ switched into the protected mode and another message written to ↓ the console:↲ ↲ ┆b0┆80287 NPX Found↲ ↲ ↲ ┆a1┆┆b0┆4.1 Valid interrupts.↲ ↲ A few interrupts are allways considered valid during the ↓ selftest:↲ ↲ ┆a1┆Request line Interrupt name Vector type Event type ↲ ↲ internal Step interrupt 1╞ ┆84┆instruction executed ↓ ┆19┆┆ac┆┄┄with trap flag set↲ ↲ internal╞ Break interrupt╞ 3╞ ┆84┆software interrupt ↓ ┆19┆┆ac┆┄┄(debugger entry)↲ ↲ CNTR0╞ Timer 0╞ ╞ 40╞ Timer 0 interrupt↲ ↲ SER INTR╞ USART receive int.╞ 34╞ Keyboard interrupt↲ ↲ ↲ ════════════════════════════════════════════════════════════════════════ ↓ ┆a1┆┆b0┆4.2 Protection Violations and Instruction Exceptions.↲ ↲ The protection violations and instruction exceptions will cause ↓ the selftest to write a message to the console and then execute ↓ a HALT instruction. The only way to get out of these exception is ↓ to hardware reset the CPU.↲ ↲ ┆a1┆Vector type Error Text ↲ ↲ 0 Interrupt 0 at 'CS:IP' Divide By Zero↲ ╞ ╞ HALTED - Hardware RESET required↲ ↲ 2╞ ╞ Interrupt 2 at 'CS:IP' NMI↲ ╞ ╞ HALTED - Hardware RESET required↲ ↲ 4╞ ╞ Interrupt 4 at 'CS:IP' Overflow↲ ╞ ╞ HALTED - Hardware RESET required↲ ↲ 5╞ ╞ Interrupt 5 at 'CS:IP' Bounds Check↲ ╞ ╞ HALTED - Hardware RESET required↲ ↲ 6╞ ╞ Interrupt 6 at 'CS:IP' Undefined Operation↲ ╞ ╞ HALTED - Hardware RESET required↲ ↲ 7╞ ╞ Interrupt 7 at 'CS:IP' Device Not Available↲ ╞ ╞ HALTED - Hardware RESET required↲ ↲ 8╞ ╞ Interrupt 8 at 'CS:IP' Double Fault↲ ╞ ╞ HALTED - Hardware RESET required↲ ↲ 9╞ ╞ Interrupt 9 at 'CS:IP' Math Address Error↲ ╞ ╞ HALTED - Hardware RESET required↲ ↲ 10╞ ╞ Interrupt 10 at 'CS:IP' Invalid Task State Segment↲ - ECODE = XXXX↲ ╞ ╞ HALTED - Hardware RESET required↲ ↲ ════════════════════════════════════════════════════════════════════════ ↓ 11╞ ╞ Interrupt 11 at 'CS:IP' Not Present - ECODE = XXXX↲ ╞ ╞ HALTED - Hardware RESET required↲ ↲ 12╞ ╞ Interrupt 12 at 'CS:IP' Stack Protection↲ ╞ ╞ - ECODE = XXXX↲ ╞ ╞ HALTED - Hardware RESET required↲ ↲ 13╞ ╞ Interrupt 13 at 'CS:IP' General Protection↲ ╞ ╞ - ECODE = XXXX↲ ╞ ╞ HALTED - Hardware RESET required↲ ↲ 14╞ ╞ Interrupt 14 at 'CS:IP'↲ ╞ ╞ HALTED - Hardware RESET required↲ ↲ 15╞ ╞ Interrupt 15 at 'CS:IP'↲ ╞ ╞ HALTED - Hardware RESET required↲ ↲ 16╞ ╞ Interrupt 16 at 'CS:IP' Math Error↲ ╞ ╞ HALTED - Hardware RESET required↲ ↲ The term 'CS:IP' refers to the logical location in the program, ↓ where the exception came. The errorcode pushed onto the stack by ↓ some exceptions (ECODE) may be hard to decode, and no attempt to ↓ document them in this manual will be done. Consult INTEL manuals ↓ for further description of the exceptions and their errorcodes.↲ ↲ All other interrupts that either refer to a NULL descriptor in ↓ the Interrupt Descriptor Table (IDT) or to a descriptor outside ↓ the IDT limit will cause one of the protection violations above. ↓ If a test uses interrupt vectors not mentioned above, then the ↓ test is responsible for loading the appropiate descriptor into ↓ the IDT prior to the test and to nullify the descriptor at the ↓ end of the test.↲ ════════════════════════════════════════════════════════════════════════ ↓ ┆a1┆┆b0┆5. ┆b0┆TEST 0 =┆f0┆ RAM test.↲ ↲ After the switching of the iAPX 286 processor to the protected ↓ mode of operation this RAM test is responsible for verifying the ↓ rest of the CPU 691 memory. The memory size is variable between ↓ 512 K bytes and 8 M bytes and a maximum of 4 memory boards may be ↓ connected to a CPU 691 (iLBX BUS width is 5 slots). The memory ↓ must be contiguous from address 0 (the XENIX operating system ↓ assumes this).↲ ↲ This RAM test, of course, dont verify the lowest part of memory ↓ addresses 0-FFFF hexadecimal, which is covered by the initial ↓ memory test and used to hold selftest variables.↲ ↲ This test divides the available memory space into 64 K byte ↓ blocks, the first starting at address 10000 hexadecimal and the ↓ last ending at address 7FFFFF hexadecimal. For every possible 64 ↓ K byte block the RAM test does:↲ ↲ 1. ┆84┆Writes a pattern to the first byte of that block. Reads the ↓ ┆19┆┆83┆┄┄byte back, and if the same pattern is read back memory is ↓ ┆19┆┆83┆┄┄considered present and the verification of that block ↓ ┆19┆┆83┆┄┄continues, otherwise the next 64 K byte block is tried.↲ ↲ 2. ┆84┆The 64 K byte block considered present in step 1 is filled ↓ ┆19┆┆83┆┄┄with ones. The content is read back, and if not all ones an ↓ ┆19┆┆83┆┄┄error message is generated and the test terminated.↲ ↲ 3. ┆84┆The 64 K byte block of memory is filled with zeroes. The ↓ ┆19┆┆83┆┄┄content is read back, and if not all zeroes an error message ↓ ┆19┆┆83┆┄┄is generated and the test terminated.↲ ↲ 4. ┆84┆Step 1 is entered again until the last possible 64 K byte ↓ ┆19┆┆83┆┄┄block has been checked.↲ ↲ ════════════════════════════════════════════════════════════════════════ ↓ ┆b0┆┆f0┆The RAM test may produce the following error message:↲ ↲ 1. ┆b0┆RAM test: RAM error segm.:<ssss> addr.:<aaaa> exp.:<eeee>↲ ╞ ╞ ╞ ╞ ┆b0┆ rec.:<rrrr>↲ ↲ The secondary text is interpreted like this :↲ ↲ <ssss> ┆84┆is the segment LDT selector (use RC 39 Monitor to ↓ ┆19┆┆87┆┄┄determine the physical address - XLDT <ssss>)↲ <aaaa> is the segment offset↲ <eeee> is the expected pattern, should allways be 0000 or FFFF.↲ <rrrr> is the received pattern.↲ ↲ The memory size is handed over to the Multibus configuration ↓ program and displayed in the Multibus Configuration Schedule.↲ ════════════════════════════════════════════════════════════════════════ ↓ ┆a1┆┆81┆┆a1┆┆b0┆6. ┆b0┆TEST 1 = ┆f0┆Chip Select Test.↲ ↲ To ease complex debugging, a simple chip select loop, combined ↓ with a RAM write/read, is supplied. ↲ ↲ This test generates chip selects to all peripheral devices by ↓ executing input instructions to all relevant I/O-devices. These ↓ are :↲ ↲ Port ┆84┆0C0, 0C2, 0C4, 0C6, 0C8, 0CA, 0CC, 0CE, 0D0, 0D2, 0D4, 0D6, ↓ ┆19┆┆85┆┄┄0D8, 0DA, 0DC, 0DE.↲ ↲ When all the chip selects are made, a pattern AA55 hex. is ↓ written to a RAM cell and immediately read back.↲ ↲ This test is unable to generate any error messages. It is meant ↓ only as a special fast scope loop test.↲ ════════════════════════════════════════════════════════════════════════ ↓ ┆a2┆┆e2┆┆a1┆┆b0┆7. ┆b0┆TEST 2┆f0┆ = 8254 Programmable Interval Timer Test.↲ ↲ This test verifies the ability of the 8254 PIT timer 0, used as a ↓ real time clock in XENIX, to generate interrupts. Timer 0 is ↓ initialized as a real time clock which generates interrupt every ↓ 20 millisecond. If no timer interrupt is generated then an error ↓ message is generated like this.↲ ↲ ┆a1┆┆a1┆┆a1┆┆e1┆┆b0┆┆f0┆1. ┆b0┆PIT Test : missing timer 0 interrupt↲ ════════════════════════════════════════════════════════════════════════ ↓ ┆a1┆┆b0┆8. ┆b0┆TEST 3┆f0┆ = Disk Channel Test.↲ ↲ This test is used to exercise and verify the data channel between ↓ CPU 691 and the disk controller.↲ ↲ The first part of this test executes a "disc diagnostic command" ↓ to the disc controller. This command orders the disc controller ↓ to verify its sector buffer by the use of several critical data ↓ patterns. If the disc controller responds with an error to this ↓ command an error message is generated.↲ ↲ 1. ┆b0┆Disc Channel test: disc diagnostic error↲ ↲ If the disc does'nt respond to the disc diagnostic command within ↓ 800 milliseconds an error message is generated.↲ ↲ 2. ┆b0┆Disc Channel test: transfer timeout or interrupt missing↲ ↲ The second part of this test executes a "write sector buffer ↓ command " followed by a "read sector buffer command". The data ↓ read back are compared to the written pattern and if not equal an ↓ error message is generated.↲ ↲ ┆b0┆┆b0┆┆f0┆3. ┆b0┆Disc Channel test: disc channel error segm.:<ssss> addr.:<aaaa>↲ ┆b0┆exp.:<eeee> rec.:<rrrr>↲ ↲ The secondary error text is interpreted like this :↲ ↲ <ssss> ┆84┆is the segment LDT selector (use RC 39 Monitor to ↓ ┆19┆┆87┆┄┄determine the physical address - XLDT <ssss>)↲ <aaaa> is the segment offset↲ <eeee> is the expected pattern, should allways be 0000 or FFFF.↲ <rrrr> is the received pattern.↲ ↲ Otherwise. If an error of the disc is discovered an error message ↓ like this is written to the console.↲ ↲ ════════════════════════════════════════════════════════════════════════ ↓ ┆82┆4. ┆b0┆Disc Channel test: disc command error↲ ↲ This error might be caused by malfunction of the disc, by a fault ↓ of the interface circuits , or by something else. ↲ ════════════════════════════════════════════════════════════════════════ ↓ ┆a1┆┆b0┆9. ┆b0┆TEST 4 =┆f0┆ Numeric Processor Extension Test.↲ ↲ The Numeric Processor Extension test program applies to the ↓ verification of the 80287 coprocessor and its interface circuits. ↓ If no 80287 coprocessor is present (bit 2 Machine Status Word ↓ "0") then a message is written to the console like this.↓ ↲ 1. ┆b0┆80287 NPX Test: NPX not present: OK↲ ↲ Otherwise if the NPX is present the test proceeds and verifies ↓ the NPX's function. If an error is discovered an error message ↓ like this is written to the console.↲ ↲ 2. ┆b0┆80287 NPX Test: 80287 NPX not OK↲ ↲ This error might be caused by malfunction of the 80278 chip, by ↓ a fault of the interface circuits , or by something else. ↲ ↲ ════════════════════════════════════════════════════════════════════════ ↓ ┆a1┆┆b0┆10. ┆b0┆TEST 5 =┆f0┆ Multibus Configuration.↲ ↲ When the CPU 691 has finished its own selftest it will make a ↓ Multibus configuration. Every RC-manufactured SBC card is located ↓ with its Dual-Ported RAM ending on a 64 KB boundary address. When ↓ a RC 39 SBC starts the execution of its selftest program it ↓ immediately initializes the last word in its Dual-Ported RAM with ↓ a special pattern corresponding to "not-ready". When the test is ↓ terminated with or without an error the pattern is changed to ↓ "ready". Ready indicates to the "test-master" that the SBC is ↓ ready to communicate. Both the "not-ready" pattern and the ↓ "ready" pattern must of course be different from the pattern ↓ which is read by the "test-master" when reading from a Multibus ↓ address with non-existing RAM (bus acknowledge timeout assumed).↲ ↲ The hardware configuration process is possible due to the fact ↓ that all the "test-slaves" communicates with the "test-master" ↓ trough DP-RAM located to end on 64 K boundaries. This minimizes ↓ the configuration attempts to a maximum of 32 entries ↓ (controllers are placed between Multibus addresses 800000-A00000 ↓ hexedecimal). During the configuration process the "test-master" ↓ starts reading from the top of the controller address space ↓ (address 9FFFFF hexadecimal). If a pattern equal to "not-ready" ↓ or "ready" is found the selftest assumes that an intelligent SBC ↓ card is present, and reads som further parameters such as card-↓ type, RAM-size and selftest execution time in seconds. If the ↓ card is marked "not-ready" the "test-master" may use the selftest ↓ execution time to decide how long to wait for that card to become ↓ "ready". Also a handshake protocol is executed to reassure that ↓ the "ready" pattern was not read by random. From the knowledge to ↓ the RAM-size the "test-master" calculates the address where to ↓ continue the Multibus configuration. If no "ready" or "not-ready" ↓ pattern is received then the "test-master" configuration writes ↓ to and reads back from the RAM cell to find out if some RAM ↓ really exists on that Multibus address. The configuration program ↓ ════════════════════════════════════════════════════════════════════════ ↓ ends with writing a configuration schedule to the console. The ↓ schedule might look like this:↲ ┆b0┆↲ ╱04002d4e0c000600000000020147310000000000000000000000000000000000000000000000000008101820283038404b555f69737dffff04╱ ╱04002d4e0a0006000000000201413100000000000000000000000000000000000000000000000000050f19232d37414b555f69737d8791ff04╱ ↓ ┆b0┆Multibus Configuration:↲ ┆b0┆======================================================================↲ ┆b0┆┆b0┆MB entry - MB address - Card State - Card ID - MB RAM size - error no.↲ ┆b0┆======================================================================↲ ┆b0┆00000╞ 000000 master╞ CPU 691 02048 00000↲ ┆b0┆┆b0┆00001╞ 9E0000╞ ready╞ ITC 602 00064╞ 00000↲ ┆b0┆00002 8E0000╞ ready╞ COM 601 00064 00000↲ ┆b0┆00003 800000 ready ETC 611 00512 00000↲ ╱04002d4e0a000600000000030141310000000000000000000000000000000000000000000000000008101820283038404b555f69737dffff04╱ ╱04002d4e0c000600000000020147310000000000000000000000000000000000000000000000000008101820283038404b555f69737dffff04╱ ↓ ↲ The configuration data is stored in a specific data structure ↓ where it may be accessed by the system software.↲ ↲ The bootload is not inhibited if a "test-slave" has found an ↓ error during its default selftest, but a message is written to ↓ the console. The reason for this is that an incremental part of ↓ the system may still be running, and this might be sufficient for ↓ many users.↲ ↲ The default selftest terminates with directing all the "test-↓ slaves" found during the multibus configuration to their bootload ↓ phase and it may look like this.↲ ↲ ┆b0┆<00001> sent to bootload↲ ┆b0┆<00002> sent to bootload↲ ┆b0┆<00003> sent to bootload↲ ↲ If some slave dosen't respond correctly to the boot command a ↓ message is written to the console like this.↲ ↲ ┆b0┆<00002> slave answer timeout↲ ↲ Consult the manual called "The RC39 selftest concept" for further ↓ ┆19┆┄┆81┆┄information about the Multibus configuration and details about ↓ ┆19┆┄┆81┆┄how to run further diagnostics on the "test-slaves".↲ ════════════════════════════════════════════════════════════════════════ ↓ ╱04002d4e0a000600000000030141314000000000000000000000000000000000000000000000000008101820283038404b555f69737dffff04╱ ╱04002d4e0a000600000000030141310000000000000000000000000000000000000000000000000008101820283038404b555f69737dffff04╱ ↓ ┆a1┆┆b0┆11.┆b0┆ TEST 6 =┆f0┆ Parallel Port Test.↲ ↲ The 8255A PPI test writes a pattern 10100000 binary to the output ↓ port A (I/O addr. C8H). Then it reads the pattern back and ↓ verifies it. If no error is detected the pattern is shifted one ↓ bit to the right, and the write/read verify procedure is repeated ↓ until the pattern becomes zero. The test may generate this error ↓ message:↲ ↲ ┆b0┆┆e1┆┆a1┆┆e1┆┆f0┆1. ┆b0┆PPI test: port error exp.:00ee, rec.:00rr↲ ↲ Expected and received pattern tells you what bits went wrong with ↓ the test.↲ ↲ This error might be caused by malfunction of the 8255A chip, by ↓ an initialization fault (I/O space error), or by something else. ↓ ════════════════════════════════════════════════════════════════════════ ↓ ┆a1┆┆b0┆12. ┆b0┆TEST 7┆f0┆ = Extended RAM Test.↲ ↲ This ┆b0┆seperately┆f0┆ run test is supplied to verify the functionality ↓ ┆19┆┄┆81┆┄of the INTEL iSBC 012X or the RC MEM 602/603 memory boards. The ↓ ┆19┆┄┆81┆┄test is divided into 6 different subtests, which must either ↓ ┆19┆┄┆81┆┄execute alone or in a big sequential loop. The first time the ↓ ┆19┆┄┆81┆┄test is run several variables must be supplied to the test.↲ ↲ ↲ ┆a1┆┆b0┆12.1 Test Variables.↲ ↲ The first time the test is selected a menu is written to the ↓ console like this.↲ ↲ ╱04002d4e0c00060000000003014d314000000000000000000000000000000000000000000000000008101820283038404b555f69737dffff04╱ ╱04002d4e0a000600000000030141314000000000000000000000000000000000000000000000000008101820283038404b555f69737dffff04╱ ↓ ┆b0┆MEM 60X Test: ************** Extended RAM test - Operating Instructions↓ ╱04002d4e0a000600000000030141314000000000000000000000000000000000000000000000000008101820283038404b555f69737dffff04╱ ╱04002d4e0c00060000000003014d314000000000000000000000000000000000000000000000000008101820283038404b555f69737dffff04╱ ↓ ┆b0┆Press <ctl><X>= start MEM 60X test↲ ┆b0┆Press <ctl><A>= Enter Debugger Loader↲ ┆b0┆Press <escape>= Return to Test Administrator↲ ↲ ┆b0┆SUBTEST↲ ┆b0┆ 0. Pattern test - WORD mode, EVEN alignment↲ ┆b0┆ 1. Pattern test - WORD mode, ODD alignment↲ ┆b0┆ 2. Pattern test - BYTE mode, ALL bytes↲ ┆b0┆ 3. Pattern test - BYTE mode, EVEN bytes only↲ ┆b0┆ 4. Pattern test - BYTE mode, ODD bytes only↲ ┆b0┆ 5. ECC error correction test↲ ┆b0┆ 6. ECC error detection test↲ ↲ When a <ctl><X> is entered the questions below will be asked line ↓ by line by the test program. Questions in paranthesis is only ↓ asked if the former question was answered with yes (Y).↲ ↲ ════════════════════════════════════════════════════════════════════════ ↓ ┆b0┆Enter normal MEM 60X operating mode (ECR port) ? 0FH/↲ ┆b0┆Enter test START 64 KB Block number ? <1-FF>, 1H/↲ ┆b0┆Enter test START Offset address ? <0-FFFF>, 0H/↲ ┆b0┆Enter test END 64 KB Block number ? <1-FF>, 1H/↲ ┆b0┆Enter test END Offset address ? <0-FFFF>, 0H/↲ ┆b0┆Enter MEM 60X PORT address ? <0-FFFF>, 1C0/↲ ┆b0┆Change pattern ? <Y/N>, N/↲ ┆b0┆(Enter Your Pattern !! /)↲ ┆b0┆Run Subtest ? <Y/N>, N/↲ ┆b0┆(Enter Subtest Number ? <0-7>, 0/)↲ ┆b0┆Bus LOCK active ? <Y/N>, N/↲ ↲ Valid answers is shown in brackets (<>), except for the operating ↓ mode. If a carriage return is entered the value left to the slash ↓ is taken by default.↲ ↲ ↲ ┆a1┆┆b0┆12.1.1 Operating Mode.↲ ↲ It is not recommended to change the operating mode, except for ↓ disabeling the error correction logic (mode 0BH) during the ↓ execution of subtest 0-4. Subtest 5 is unable to execute ↓ succesfully with error correction disabeled.↲ ↲ ↲ ┆a1┆┆b0┆12.1.2 Address Range.↲ ↲ This test divides the 16 M Byte physical memory space into 256 ↓ blocks of 64 K byte each. It is impossible to execute this test ↓ in the lowest 64 K byte block. That block is used for selftest ↓ stack and variables. The physical start or end address for the ↓ test is given as a block number 1-255 plus an offset 0-65536 ↓ which must be entered in hexadecimal. Normally the address range ↓ is selected not to go across Multibus memory board boundaries, ↓ but if subtest 0-4 is executed alone it is possible to execute ↓ the test across contiguous memory board boundaries.↲ ↲ ↲ ════════════════════════════════════════════════════════════════════════ ↓ ┆a1┆┆b0┆12.1.3 Change Pattern.↲ ↲ The pattern used by the selftest is by default 6 words long (3 ↓ times 0000 and 3 times FFFF hexadecimal). If the change pattern ↓ question is answered with a yes, then it will be possible to ↓ change the pattern itself and the length of the pattern also. The ↓ minimum length of the pattern is one word and the maximum length ↓ is six words. The "Enter your pattern" question may be terminated ↓ by the <escape> button after 1,2,3,4 or 5 words, the number of ↓ words giving the length of the pattern.↲ ↲ ↲ ┆a1┆┆b0┆12.1.4 Execute Subtest Alone.↲ ↲ If the Run Subtest question is answered with a yes, an additional ↓ question about the subtest number is asked.↲ ↲ ↲ ┆a1┆┆b0┆12.1.5 Bus LOCK.↲ ↲ If the Bus Lock question is answered with a yes, then subtest 0-4 ↓ executes all memory read or write commands with the Bus Lock ↓ Prefix. It is impossible to lock the bus for more than the ↓ duration of one instruction.┆a1┆↲ ↲ ↲ ┆a1┆┆b0┆12.2 Subtest 0 = Pattern test - WORD mode, EVEN alignment.↲ ↲ Subtest 0 writes the pattern word by word from the pattern buffer ↓ to memory from the start address to the end address. EVEN ↓ alignment is forced on the start address (start address ↓ decremented if ODD). The pattern is read back and compared to the ↓ original one, and if equal the test is repeated with the inversed ↓ pattern, otherwise an error message is generated.↲ ↲ ↲ ┆8c┆┆83┆┆b0┆↓ 1. ┆b0┆MEM 60X Test: Subtest: 0 - RAM error segm.:<ssss> addr.:<aaaa>↲ ┆19┆┄┆81┆┆82┆ exp.:<eeee> rec.:<rrrr>↲ ↲ The secondary text is interpreted like this :↲ ↲ <ssss> ┆84┆is the 64 K byte block number (1-FF).↲ <aaaa> is the offset within the block (0-FFFF).↲ <eeee> is the expected pattern.↲ <rrrr> is the received pattern.↲ ↲ ↲ ┆a1┆┆b0┆12.3 Subtest 1 = Pattern test - WORD mode, ODD alignment.↲ ↲ Subtest 1 writes the pattern word by word from the pattern buffer ↓ to memory from the start address to the end address. ODD ↓ alignment is forced on the start address (start address ↓ incremented if EVEN). The pattern is read back and compared to ↓ the original one, and if equal the test is repeated with the ↓ inversed pattern, otherwise an error message is generated.↲ ↲ 1. ┆b0┆MEM 60X Test: Subtest: 1 - RAM error segm.:<ssss> addr.:<aaaa>↲ ┆19┆┄┆81┆┆82┆ exp.:<eeee> rec.:<rrrr>↲ ↲ The secondary text is interpreted like this :↲ ↲ <ssss> ┆84┆is the 64 K byte block number (1-FF).↲ <aaaa> is the offset within the block (0-FFFF).↲ <eeee> is the expected pattern.↲ <rrrr> is the received pattern.↲ ↲ ↲ ════════════════════════════════════════════════════════════════════════ ↓ ┆a1┆┆b0┆12.4 Subtest 2 = Pattern test - BYTE mode, ALL bytes.↲ ↲ Subtest 2 writes the pattern byte by byte from the pattern buffer ↓ to memory from the start address to the end address. The pattern ↓ is read back and compared to the original one, and if equal the ↓ test is repeated with the inversed pattern, otherwise an error ↓ message is generated.↲ ↲ 1. ┆b0┆MEM 60X Test: Subtest: 2 RAM error segm.:<ssss> addr.:<aaaa>↲ ┆b0┆ exp.:<eeee> rec.:<rrrr>↲ ↲ The secondary text is interpreted like this :↲ ↲ <ssss> ┆84┆is the 64 K byte block number (1-FF).↲ <aaaa> is the offset within the block (0-FFFF).↲ <eeee> is the expected pattern.↲ <rrrr> is the received pattern.↲ ↲ ↲ ┆a1┆┆b0┆12.5 Subtest 3 = Pattern test - BYTE mode, EVEN bytes only.↲ ↲ Subtest 3 writes the pattern byte by byte from the pattern buffer ↓ to the EVEN memory cells from the start address to the end ↓ address. EVEN alignment is forced on the start address (start ↓ address decremented if ODD). Before the EVEN byte is written the ↓ inversed pattern is written to the ODD byte (EVEN address + 1). ↓ The pattern is read back and compared to the original one, and if ↓ equal the test is repeated with the inversed pattern, otherwise ↓ an error message is generated. It is also checked if the writing ↓ of the EVEN memory cell disturbed the content of the ODD memory ↓ cell and if true an error message is generated.↲ ↲ ════════════════════════════════════════════════════════════════════════ ↓ 1. ┆b0┆MEM 60X Test: Subtest: 3 - RAM error segm.:<ssss> addr.:<aaaa>↲ ┆b0┆ exp.:<eeee> rec.:<rrrr>↲ ↲ The secondary text is interpreted like this :↲ ↲ <ssss> ┆84┆is the 64 K byte block number (1-FF).↲ <aaaa> is the offset within the block (0-FFFF).↲ <eeee> is the expected pattern.↲ <rrrr> is the received pattern.↲ ↲ ↲ ┆a1┆┆b0┆12.6 Subtest 4 = Pattern test - BYTE mode, ODD bytes only.↲ ↲ Subtest 4 writes the pattern byte by byte from the pattern buffer ↓ to the ODD memory cells from the start address to the end ↓ address. ODD alignment is forced on the start address (start ↓ address incremented if ODD). Before the ODD byte is written the ↓ inversed pattern is written to the EVEN byte (ODD address - 1). ↓ The pattern is read back and compared to the original one, and if ↓ equal the test is repeated with the inversed pattern, otherwise ↓ an error message is generated. It is also checked if the writing ↓ of the ODD memory cell disturbed the content of the EVEN memory ↓ cell and if true an error message is generated.↲ ↲ 1. ┆b0┆MEM 60X Test: Subtest: 4 - RAM error segm.:<ssss> addr.:<aaaa>↲ ┆b0┆ exp.:<eeee> rec.:<rrrr>↲ ↲ The secondary text is interpreted like this :↲ ↲ <ssss> ┆84┆is the 64 K byte block number (1-FF).↲ <aaaa> is the offset within the block (0-FFFF).↲ <eeee> is the expected pattern.↲ <rrrr> is the received pattern.↲ ↲ ↲ ┆8c┆┆83┆┆a4┆↓ ┆a1┆┆a1┆┆b0┆12.7 Subtest 5 = ECC Error Correction Test.↲ ↲ Subtest 5 verifies the ability of the ECC hardware circiutry to ↓ correct single bit errors.↲ ↲ First the test resets all memory cells from the start address to ↓ the end address, and if unable to reset memory generates an error ↓ message like this.↲ ↲ 1. ┆b0┆MEM 60X Test: Subtest: 5 - Could not reset RAM↲ ↲ If RAM is reset succesfully the then test proceeds and makes the ↓ start address EVEN aligned (decrement start address if ODD). Then ↓ a pattern equal to 0000000000000001 binary is written to the ↓ first memory cell in diagnostic mode (writing of checkbits ↓ inhibited), the checkbits is read and saved for an eventually ↓ error message. The operating mode is restored and the data is ↓ read back. The syndrome bits are read and if they does'nt ↓ indicate an error correct correction (the bit set in the pattern ↓ should get corrected to a 0) then an error message is written to ↓ the console.↲ ↲ 2. ┆b0┆MEM 60X Test: Subtest: 5 - error correction error↲ ┆b0┆synbit <yyyy> chkbit <cccc> segm.:<ssss> addr.:<aaaa>↲ ┆19┆┄┆81┆┆82┆ exp.:<eeee> rec.:<rrrr>↲ ┆a1┆↲ The secondary text is interpreted like this :↲ ↲ <yyyy> ┆84┆is the syndrome bits that shoud indicate a one bit error ↓ ┆19┆┆87┆┄┄correction.↲ <cccc> ┆84┆is the checkbits that was not written because diagnostic ↓ ┆19┆┆87┆┄┄mode was selected.↲ <ssss> ┆84┆is the 64 K byte block number (1-FF).↲ <aaaa> is the offset within the block (0-FFFF).↲ <eeee> is the expected pattern, always 0000.↲ <rrrr> is the received pattern.↲ ↲ ════════════════════════════════════════════════════════════════════════ ↓ If no error occur then the pattern is shifted one position left ↓ until a carry and the test is repeated for every memory cell from ↓ the start address to the end address.↲ ┆a1┆┆82┆↲ ↲ ┆a1┆┆b0┆12.8 Subtest 6 = ECC Error Detection Test.↲ ↲ Subtest 6 verifies the ability of the ECC hardware circiutry to ↓ detect double bit errors.↲ ↲ First the test resets all memory cells from the start address to ↓ the end address, and if unable to reset memory generates an error ↓ message like this.↲ ↲ 1. ┆b0┆MEM 60X Test: Subtest: 6 - Could not reset RAM↲ ↲ If RAM is reset succesfully then the test proceeds and makes the ↓ start address EVEN aligned (decrement start address if ODD). Then ↓ a pattern equal to 0000000000000101 binary is written to the ↓ memory in diagnostic mode (writing of checkbits inhibited), the ↓ checkbits is read and saved for an eventually error message. The ↓ operating mode is restored and the data is read back. The ↓ syndrome bits are read and if they does'nt indicate a double ↓ error detection then an error message is written to the console.↲ ↲ 2. ┆b0┆MEM 60X Test: Subtest: 6 - error detection error↲ ┆b0┆ synbit <yyyy> chkbit <cccc> segm.:<ssss> addr.:<aaaa> ↲ ┆19┆┄┆81┆┆82┆ exp.:<eeee> rec.:<rrrr>↲ ┆a1┆↲ The secondary text is interpreted like this :↲ ↲ <yyyy> ┆84┆is the syndrome bits that shoud indicate a double bit ↓ ┆19┆┆87┆┄┄error detection↲ ════════════════════════════════════════════════════════════════════════ ↓ <cccc> ┆84┆is the checkbits that was not written because diagnostic ↓ ┆19┆┆87┆┄┄mode was selected.↲ <ssss> ┆84┆is the 64 K byte block number (1-FF).↲ <aaaa> is the offset within the block (0-FFFF).↲ <eeee> is the expected pattern, always 0000.↲ <rrrr> is the received pattern.↲ ↲ If no error occur then the pattern is shifted one position left ↓ until a carry and the test is repeated for every memory cell from ↓ the start address to the end address.↲ ┆a1┆┆82┆↓ ════════════════════════════════════════════════════════════════════════ ↓ ┆a1┆┆b0┆13. ┆b0┆TEST 8┆f0┆ = Floppy Test.↲ ↲ This is a ┆b0┆seperately ┆f0┆run test supplied to verify the ↓ ┆19┆┄┆81┆┄functionality of the floppy disk drive, not the floppy media ↓ ┆19┆┄┆81┆┄itself.↲ ↲ This test will, if not terminated before the end, verify every ↓ single sector on the floppy disc. The format of the floppy disc, ↓ which must be formatted properly prio to the test, is fixed and ↓ is.↲ ↲ ╞ ╞ ╞ ┆84┆1024 bytes/sector.↲ ╞ ╞ ╞ 8 sectors/track.↲ ╞ ╞ ╞ 2 heads/cylinder.↲ ╞ ╞ ╞ 77 cylinders/disk.↲ ↲ This test verifies the floppy drive sector for sector, beginning ↓ with sector 0 (head 0 track 0 sector 0). Before the sector is ↓ written the content of the sector is read to a save buffer, which ↓ is restored if no disk error occur. This makes the floppy test, ↓ if the floppy drives is ok, non media destructive. If the test ↓ cannot read a sector an error message is generated.↲ ↲ 1. ┆b0┆Floppy test: Floppy can not read ╞ ╞ rec.:<rrrr>↲ ↲ <rrrr> is the error code from the disc controller. The OMTI Reference ↓ Manual (SDC 691) Appendix B gives the information about this ↓ error code.↲ ↲ If the disk controller does'nt respond to a disk's command within ↓ 1 second an error message is generated.↲ ↲ 2. ┆b0┆Floppy test: transfer timeout↲ ↲ ════════════════════════════════════════════════════════════════════════ ↓ If the first step went succesfull, then a pattern is written to ↓ the sector, and the disc controller may respond with an error ↓ which makes the test program write an error message.↲ ↲ 3. ┆b0┆Floppy test: Floppy can not write ╞ ╞ rec.:<rrrr>↲ ↲ If no error has happend until now the sector is read back and ↓ compared to the original one, and if equal the test is repeated ↓ on the next sector until end of disk, otherwise an error message ↓ is generated.↲ ↲ 4. ┆b0┆Floppy test: bad sector sector:<dddd>, segm.:<ssss>,↲ ╞ ╞ ┆b0┆addr.:<aaaa>, exp.:<eeee>, rec.:<rrrr>↲ ↲ The secondary error text is interpreted like this :↲ ↲ <dddd> gives the address of the bad sector.↲ <ssss> ┆84┆is the segment LDT selector (use RC 39 Monitor to ↓ ┆19┆┆87┆┄┄determine the physical address - XLDT <ssss>).↲ <aaaa> is the segment offset.↲ <eeee> is the expected pattern.↲ <rrrr> is the received pattern.↲ ↲ Otherwise. If an error of the disk controller or of the disk ↓ drive is discovered an error message like this is written to the ↓ console.↲ ↲ ┆82┆5. ┆b0┆Floppy test: floppy command error↲ ↲ This error might be caused by malfunction of the disc, by a fault ↓ of the interface circuits , or by something else. ↲ ↲ If no error happens, then the floppy test writes a '.' (period) ↓ to the console output for every cylinder verified like this.↲ ↲ ════════════════════════════════════════════════════════════════════════ ↓ ┆b0┆Floppy test: ........... and so on↲ ↲ The Floppy test is terminated by the escape button.↲ ════════════════════════════════════════════════════════════════════════ ↓ ┆a1┆┆b0┆14.┆b0┆ TEST 9┆f0┆ = Printer Test.↲ ↲ A ┆b0┆seperately ┆f0┆run test is supplied to verify the functionality of ↓ ┆19┆┄┆81┆┄the Centronix Printer Interface. The test writes a pattern to the ↓ ┆19┆┄┆81┆┄printer like this:↲ ↲ ╱04002d4e0c00060000000002014b314000000000000000000000000000000000000000000000000008101820283038404a4b555f69737dff04╱ ╱04002d4e0a000600000000030141314000000000000000000000000000000000000000000000000008101820283038404b555f69737dffff04╱ ↓ !"#$%&'()*+,-./0123456789!"#$%&'()*+,-./0123456789!"#$%&'()*+,-./0123456↲ 789!"#$%&'()*+,-./0123456789!"#$%&'()*+,-./0123456789!"#$%&'()*+,-./012↲ 3456789!"#$%&'()*+,-./0123456789!"#$%&'()*+,-./0123456789!"#$%&'()*+,-.↲ /0123456789!"#$%&'()*+,-./0123456789!"#$%&'()*+,-./0123456789!"#$%&'()*↲ +,-./0123456789!"#$%&'()*+,-./0123456789!"#$%&'()*+,-./0123456789!"#$%&↲ '()*+,-./0123456789!"#$%&'()*+,-./0123456789!"#$%&'()*+,-./0123456789!"↲ #$%&'()*+,-./0123456789!"#$%&'()*+,-./0123456789!"#$%&'()*+,-./0123456789↲ !"#$%&'()*+,-./0123456789!"#$%&'()*+,-./0123456789!"#$%&'()*+,-./0123456↲ 789!"#$%&'()*+,-./0123456789!"#$%&'()*+,-./0123456789!"#$%&'()*+,-./012↲ 3456789!"#$%&'()*+,-./0123456789!"#$%&'()*+,-./0123456789!"#$%&'()*+,-.↲ /0123456789!"#$%&'()*+,-./0123456789!"#$%&'()*+,-./0123456789!"#$%&'()*↲ +,-./0123456789!"#$%&'()*+,-./0123456789!"#$%&'()*+,-./0123456789!"#$%&↲ '()*+,-./0123456789!"#$%&'()*+,-./0123456789!"#$%&'()*+,-./0123456789!"↲ #$%&'()*+,-./0123456789!"#$%&'()*+,-./0123456789!"#$%&'()*+,-./0123456789↲ ↲ and so on.↲ ╱04002d4e0a000600000000030141314000000000000000000000000000000000000000000000000008101820283038404a4b555f69737dff04╱ ╱04002d4e0c00060000000002014b314000000000000000000000000000000000000000000000000008101820283038404a4b555f69737dff04╱ ↓ ↲ The printer test is terminated by the escape button.↲ ↲ If the printer is'nt selected an error message is generated.↲ ↲ 1. ┆b0┆Printer Test: printer not selected↲ ↲ If the does'nt respond to a character (STROBE signal) with an ↓ acknowledge interrupt then an error message is generated.↲ ↲ 2. ┆b0┆Printer Test: missing interrupt↲ ↲ If the printer is busy for more than 1 minute an error message is ↓ generated.↲ ↲ 3. ┆b0┆Printer Test: printer busy↲ ↓ ↓ ════════════════════════════════════════════════════════════════════════ ↓ ┆a1┆┆b0┆15. LED OUTPUT.↲ ↲ During the execution of selftest the LED named "TEST" connected ↓ to bit 1 on the 8255 PPI port C (I/O address CC hex.) is lit. If ↓ an error occur, except checksum error and initial RAM error, then ↓ the LED is made flashing. This LED is placed on the front of the ↓ RC 39 cabinet.↲ ════════════════════════════════════════════════════════════════════════ ↓ ↲ ════════════════════════════════════════════════════════════════════════ ↓ ┆a1┆┆b0┆A. REFERENCES↲ ↲ (1) RCSL. 991 10092↲ RC 39 Selftest Concept, ↲ User's manual ╞ ↲ ↲ (2) RCSL. 991 10096↲ RC 3931 ETC611 hardware selftest, ↲ User's manual ↲ ↲ (3) RCSL. 991 10097↲ F641 COM 601 hardware selftest, ↲ User's manual ↲ ↲ (4) RCSL. 991 10095↲ ┆a1┆┆e1┆ ITC 602 hardware selftest, ↲ User's manual╞ ↲ ↲ (5) RCSL. 991 10134↲ RC39 monitor 8086 version, ↲ Reference manual╞ ↲ ↲ (6) RCSL. 991 10093↲ RC39 monitor 80286 version, ↲ Reference manual ↲ ↲ (7) RCSL. 991 10083↲ MEM 602, MEM 603 ↲ General Information╞ ╞ ↲ ↲ (8) RCSL. 991 10084↲ MEM 602, MEM 603 ↲ Technical Description╞ ╞ ↲ ════════════════════════════════════════════════════════════════════════ ↓ ╱04002d4e0c000600000000020150314000000000000000000000000000000000000000000000000008101820283038404a4b555f69737dff04╱ ╱04002d4e0a000600000000030141314000000000000000000000000000000000000000000000000008101820283038404a4b555f69737dff04╱ ↓ ┆a1┆┆b0┆B. ┆a1┆COMPLETE ERROR LIST↲ ↲ !-----------------------------------------------------------------------------!↲ ! Err. No !╞ ╞ ╞ ╞ Error Text ╞ ╞ !↲ !-----------------------------------------------------------------------------!↲ ! 0 ! OK╞ ╞ ╞ ╞ ╞ ╞ ╞ ╞ ╞ ╞ ╞ ╞ !↲ !-----------------------------------------------------------------------------!↲ ↲ !-----------------------------------------------------------------------------!↲ ! 1 ! Checksum Test: sum error ╞ ╞ ╞ ╞ ╞ ╞ ╞ ╞ ╞ !↲ !-----------------------------------------------------------------------------!↲ ↲ !-----------------------------------------------------------------------------!↲ ! 2╞ ! Initial Memory Test: RAM error╞ ╞ ╞ ╞ ╞ ╞ ╞ ╞ !↲ !-----------------------------------------------------------------------------!↲ ↲ !-----------------------------------------------------------------------------!↲ ! 2╞ ! RAM Test: RAM error╞ ╞ ╞ ╞ ╞ ╞ ╞ ╞ !↲ !-----------------------------------------------------------------------------!↲ ↲ !-----------------------------------------------------------------------------!↲ ! 5 ! PPI test: port error ╞ ╞ ╞ ╞ ╞ ╞ !↲ !-----------------------------------------------------------------------------!↲ ↲ !-----------------------------------------------------------------------------!↲ ! 6 ! PIT test: missing timer 0 interrupt╞ ╞ ╞ ╞ ╞ ╞ ╞ !↲ !-----------------------------------------------------------------------------!↲ ↲ !-----------------------------------------------------------------------------!↲ ! 10 ! Printer Test: missing interrupt╞ ╞ ╞ ╞ ╞ ╞ ╞ !↲ !-----------------------------------------------------------------------------!↲ ↲ !-----------------------------------------------------------------------------!↲ ! 11 ! Printer Test: printer not selected╞ ╞ ╞ ╞ ╞ ╞ ╞ !↲ !-----------------------------------------------------------------------------!↲ ↲ !-----------------------------------------------------------------------------;↲ ! 12 ! Printer Test: printer busy╞ ╞ ╞ ╞ ╞ ╞ ╞ ╞ ╞ !↲ !-----------------------------------------------------------------------------!↲ ↲ !-----------------------------------------------------------------------------!↲ ! 20 ! MEM 60X Test: Subtest: n - RAM error╞ ╞ ╞ ╞ ╞ ╞ !↲ !-----------------------------------------------------------------------------!↲ ↲ !-----------------------------------------------------------------------------!↲ ! 21 ! MEM 60X Test: Subtest: n - Could not reset RAM !↲ !-----------------------------------------------------------------------------!↲ ↲ !-----------------------------------------------------------------------------!↲ ! 22 ! MEM 60X Test: Subtest: 5 - data correction error ╞ !↲ !-----------------------------------------------------------------------------!↲ ↲ !-----------------------------------------------------------------------------!↲ ! 23 ! MEM 60X Test: Subtest: 6 - error detection error ╞ ╞ ╞ ╞ ╞ !↲ !-----------------------------------------------------------------------------!↲ ════════════════════════════════════════════════════════════════════════ ↓ ↲ !-----------------------------------------------------------------------------!↲ ! 40 ! Disc Channel test: transfer timeout or interrupt missing╞ ╞ !↲ !-----------------------------------------------------------------------------!↲ ↲ !-----------------------------------------------------------------------------!↲ ! 41 ! Disc Channel test: disc diagnostic error╞ ╞ !↲ !-----------------------------------------------------------------------------!↲ ↲ !-----------------------------------------------------------------------------!↲ ! 42 ! Disc Channel test: disc command error╞ !↲ !-----------------------------------------------------------------------------!↲ ↲ !-----------------------------------------------------------------------------!↲ ! 43 ! Disc Channel test: disc channel error╞ ╞ !↲ !-----------------------------------------------------------------------------!↲ ↲ !-----------------------------------------------------------------------------!↲ ! 50 ! 80287 NPX test: 80287 not OK ╞ ╞ !↲ !-----------------------------------------------------------------------------!↲ ↲ !-----------------------------------------------------------------------------!↲ ! 80 ! Floppy test: transfer timeout╞ ╞ ╞ !↲ !-----------------------------------------------------------------------------!↲ ↲ !-----------------------------------------------------------------------------!↲ ! 81 ! Floppy test: floppy command error ╞ !↲ !-----------------------------------------------------------------------------!↲ ↲ !-----------------------------------------------------------------------------!↲ ! 82 ! Floppy test: floppy can not read !↲ !-----------------------------------------------------------------------------!↲ ↲ !-----------------------------------------------------------------------------!↲ ! 83 ! Floppy test: floppy can not write ╞ ╞ ╞ ╞ !↲ !-----------------------------------------------------------------------------!↲ ↲ !-----------------------------------------------------------------------------!↲ ! 84 ! Floppy test: bad sector╞ ╞ ╞ ╞ ╞ ╞ !↲ !-----------------------------------------------------------------------------!↲ ↲ ════════════════════════════════════════════════════════════════════════ ↓ ↲ ↓ ↓ ┆1a┆┆1a┆!↲ ↲ !-----------------------------------------------------------------------------