Wang 600 Keyboard Repair
Next Log Entry
Multiple bad ICs in keyboard and interface card
The keytest microcode showed that the selection buttons above the keyboard were able to be read and displayed, but there appeared to be no response to any of the general keyboard keys, and no response to pressing the Record Prog key
Troubleshooting Record Prog
This key (along with PRIME, Set PC and VERIFY PROG) has direct hardware effect, forcing a microcode restart from a specific address. Each of these keys has a dedicated output signal from the keyboard and probing showed that the !RPC signal was stuck high, despite keypresses.
Faulty 9946 IC
Probing the keyboard PCB with an old-school HP 545A Logic Probe was a quick and easy way to test if multiple points relevant to the suspect keys were producing valid, expected and changin logic levels. It was soon evident that showed that both !STS from the STEP key and !RPC from the Record Prog key were stuck high. Both of these signals derive from the same quad NAND gate, an F9946, a type that has so far shown a disappointing prevalence of failures. Further probing the 9946 showed indeterminate logic levels on a number of output pins, the typical failure mode for these ICs.
Care has to be taken when replacing 9946s. They have the same pinout as common 7400 quad NAND but 9946s outputs can be used in wire-OR, whereas 7400 cannot. 7401 can be used wire-OR but have a different (incompatible) pinout to 9946. Only the less common 74H01 is electrically and physically campatible. Therefore, each 9946 replacement must be individually considered. If no wire-OR is present then a common 7400 will most likely work. If wire-OR is present or any discrete component tricks, then 74H01 should be used, together with external pullup(s) calculated for each instance.
L2 on the 6187 board was replaced with a 74H01 and 4k7 pullups. This restored the !RPC and !STS outputs.
Troubleshooting Keycodes on 6184 Board
The 6184 board catches keycode data in latches and stores the codes until they are read by microcode. There is a complex keyboard enable circuit and similarly complex key-pressed latch and logic to signal that a key has been pressed.
Two Further Faulty 9946s
Monitoring the keyboard enable signal with the 545A showed that it was stuck disabled. Reviewing this signal on the schematic revealed a 9946 quad-NAND. Probing this IC (L5) showed outputs with bad (intermediate) logic levels, yet another failed 9946.
This 9946 was used without wire-OR or other tricks and so could be replaced with 74HCT00, which are in plentiful supply.
The keyboard enable signal did not recover and further probing showed another 9946, L22, to have a single gate with bad output level. This IC had two wire-ORs on outputs and so was replaced with a 74H01 using 6k8 pullups.
Suspect Solder Joints
After the replacements above, intermittent activity was seen on the keyboard enable line. Mostly, keypresses would be caught and displayed by the keytest microcode and in these cases the keyboard enable signal would toggle as expected. Sometimes however the keyboard enable signal remained stuck and the keyboard became unresponsive. Some time was spent trying to understand the complex circuit that managed the keyboard enable state, but it was not easy to get to a full understanding.
Going back to first principles and recalling the intermittent nature of the fault, a careful examination was made of the PCB to look for bad connections or deteriorated solder joints. While no obvious dry joints were found, many joints looked a bit crystalline. Therefore, all joints in the discrete component section were desoldered and resoldered. A number of joints turned out to be quite difficult to ‘wet’.
Testing again after this somewhat random intervention showed success, of a kind. The keytest routine now responded to all keypresses by incrementing its counter, showing that the keyboard enable circuit was not functioning reliably. However, no keycode data showed up in the display. The keycode data fields were 0-0 for most keypresses, while some others showed a code of 15-0.
Another Faulty IC
Since the keycode data was largely reading as zero, troubleshooting continued by examining the SR latches that catch the signals from the keyboard. There are eight latches all formed from (the notorious) 9946 quad NAND ICs. Probing all of these it was surprising to find that all had good logic levels and were toggling correctly with keypress inputs.
The data path was followed to a pair of 7494 shift register/latches and probing these ICs revealed that the clock input shared by both was at an indeterminate level. This signal arises from L18, a 7404 hex inverter and probing this IC showed that 5 of 6 outputs were bad.
Replacing this IC with a NOS 7404 restored full keyboard function.
Keyboard Repaired
The keycode routine now showed full keyboard function:
- the four microcode restart keys work correctly
- all numeric, function and register keys display their correct keycode
- SHIFT works correctly
- the selector buttons report correctly into registers D1 and D2