Previous Log Entry Back to Log Index

Wang 600 Diagnostic Microcode - MAV Fault Next Log Entry

Custom microcode reveals failed IC

The ROM emulator provided the ability to simplify the problem of diagnosing microcode execution faults by the use of custom diagnostic microcode. Rather than tracing the execution of the Wang code and attempting to test all of the machine functions that each step depended upon, one could craft specific microcodes that could test specific sections of the machine.

Consider the following one-line diagnostic microcode, with thanks to Douglas Miller:

000: V = 0 + 0 + 1; CA = RAM(15,15,V); JUMP 000

This single line increments the 4-bit V register, reads RAM into CA register from a location where the lower 4 bits are defined by the V register, and then jumps to itself. The result is an endless loop that generates a repeating 4-bit count in V and a repeating cycle of RAM reads from 16 consecutive locations. All in one line of microcode. As an added bonus, the V register also gives rise to the N0 register which is exposed on the 38-pin IO connector. Monitoring this connector for an incrementing count provides a convenient way of monitoring this microcode.

This single line nevertheless tests quite a number of machine functions:

  • ROM address forced to zero after Prime
  • ROM delivers correct microcode word
  • ALU sources set to zero
  • ALU performs zero + zero with carry-in
  • ALU output stored in V
  • RAM address generated from 15, 15 and V
  • CA loaded with RAM data
  • ROM next address set to zero to produce endless loop

It was straightforward to burn this miniature microcode image into the EPROM emulator and run it.

Results - N0 Register Fault

A logic analyser state trace was set up on the N0 register, triggered by the end of Prime and clocked by the Ros signal. This was designed to give one state sample per microcode cycle, captured after ALU operations were complete and before the ROM address was updated to the next address.

The trace shows an immediate problem, the two high order bits of N0 show an incrementing pattern but the two lower bits are stuck. Referring to the schematics, it’s very unlikely that a pattern of this kind can arise from the serial ALU or the V shift register. It’s more likely that the two stuck bits arise where the V-register data is handled in parallel i.e. where (serial) V has become parallel MAVx or Nx or N0x.

MAVx is part of RAM addressing and Nx is part of —–. Clearly, faults in these registers are showstoppers and would explain the machine being dead

Results - MAV gating Fault

As this fault was investigated more deeply, thoughts turned to how much more difficult it would have been with the tools of the 1970s. DoPECC has an HP 1600A, introduced in 1976 and perhaps the first recognisable Logic Analyzer. While this was too late to assist the 600 series developers it would have been a very welcome tool for Service Engineers. The 1600A was connected to the gates where the V register becomes the MAVx 4-bit low order RAM address and was readily able to show that the low-order 4 bits still show a corrupted count with the two lowest bits stick high.

Moving the analyzer to the parallel outputs of the V shift register showed a correct 4-bit count and pointed to the gates that transferred the V register to the MAV. The schematic showed that the two stuck signals were associated with a single 9945 quad NAND gate. Logic probing confirmed that this chip was defective.

Vintage Tools

During the analysis of this fault a fellow restorer commented on how difficult this would have been with the tools available in the early 1970s.

This prompted the dusting-off of the HP1600A, probably the first recognisable Logic Analyzer. The 1600A was introduced in 1976, too late to help with the design and development of the 600 series but perhaps a great assistance to the Service Engineers who did the chip-level diagnosis and repairs.

The 1600A was connected to the gates where the V register becomes the MAVx 4-bit low order RAM address and was readily able to show that the low-order 4 bits still show a corrupted count with the two lowest bits stick high.

Faulty 9946 IC - Replacement Options

The 9946 is an unusual IC, a member of Fairchild’s short lived DTuL family. DTuL was an immediate predecessor to TTL that was overtaken by the 7400 TTL family, examples are very rare today. Fortunately DTuL is electrically similar to TTL and 7400 parts can often be substituted.

The venerable 7400 quad NAND gate is logically equivalent to the 9946. This looked like an easy substitution except that the 9946 is used with outputs connected together in a wire-OR configuration. The 74HCT00’s on-hand cannot be used in this configuration. A moment’s thought recalled the less common 7401 TTL IC, a quad NAND with open collector outputs, well suited to wire-OR configuration. Checking the TTL databooks was rewarded with a feeling of luck on finding that the 7401 appeared to be exactly pin-compatible with the 9946 and then disappointment on finding that there are multiple 7401 variations and only the (uncommon) 74H01 is pin-compatible. Substituting more common 7401 variants requires four pin pairs to be swapped.

It’s not clear why an uncommon IC like the 9946 was used in this case. First thought was that the 7401 may not have been available in the early 1970s, but the 7401 was used (in the wire ROM) of the the Wang 700 series and so was available to the 600 designers. Perhaps something as simple as the 9946 being cheaper at the time.

Work will pause while 74H01s are sourced from NOS

Previous Log Entry Back to Log Index Next Log Entry