Diagnostic Microcode
Fully microcode driven machines such as the Wang 600 present a troubleshooting problem because many (perhaps most) hardware faults have the same symptom - no display and no keyboard response. The underlying problem could be fundamental such as no system clock or subtle such as failure of address bit 4 in the second level of hardware call stack and the machine gives no symptoms to help with diagnosis.
The ROM emulator can be loaded with custom-written diagnostic mcirocode which will test and diagnose the machine in a sectional manner. Initial tests focus on a small part of the hardware and later tests build on to test more of the machine. A set of diagnostics have been written that build up from a minimal machine test to a full keyboard, ALU and memory test.
The video shows the mcirocode tests in action, the individual tests are described below.
Full credit must be given to Douglas Miller for his help and support in developing these diagnostics and for his help and support more generally in repair of Wang 600s and 700s. Douglas has received the Harold Koplow Excellence in Microcoding Medal for two years now and will no doubt continue to dominate this field (!)
Wang 600 Running Diagnostic Microcode
600 Series Diagnostic Microcode Test (opens in new tab)
Detailed instructions for running and interpreting the diagnostics are in the Wang 600 Fault Finding document referred to on the previous page. A brief description of each test is provided below.
DISP6 - Basic Function and Display
This uses just six instructions to form a loop which accesses the top 16 RAM locations, this being the means by which the display is driven. Thus we have a very simple test of basic ALU functions and RAM operation. Two variants of this test use one- or two- levels of the hardware call stack, giving a basic test of call stack function.
DISPKEY - Keyboard and Button Test
This catches keypresses and displays the hardware keycode for each press. It also monitors and displays the status of all buttons, counts presses of the STEP key and reports which ROM restart key was used to launch the test. Thus, it tests all user input keys and buttons.
ALUTEST - Test all ALU Operations
This tests the ALU by setting up an ALU operation code and using the upper and lower 4-bit keypress values as inputs to the ALU. The ALU output and associated condition flags are displayed. This allows all ALU operations to be exercised with arbitrary data.
CONDITIONALS - Conditional Branches
This tests microcode conditional branch logic by setting up ‘must branch’ and ’no branch’ conditions and reporting if the expected branch or no-branch occurred. While not comprehensive, this test can demonstrate gross failures in branch-handling logic.
MEMTEST - Test RAM
This tests the full range of installed RAM by filling RAM with a computed value and then reading back to compare the stored value with the re-computed value.
ROMADD - Test ROM addressing
The microcode for the previous tests mostly resides in the lower part of the ROM address space. This test is designed to run in successively higher blocks of ROM address space to detect faulty higher-order address bits.