Previous Log Entry Back to Log Index

Wang 600 Microcode Tracing Next Log Entry

Seeking any meaningful microcode activity

The machine was now loading microcode from ROM and executing some sort of microcode sequence but the display remained dark and other microcode-based functions such as Shift key illumination did not respond. This situation does not offer much diagnostic information as it could be caused by:

  • ROM failure delivering incorrect microcode instructions
  • Execution engine failing to process one or more microinstructions incorrectly e.g. wrong conditional branch processing, ALU error, status codes stuck/failed
  • RAM not storing or retrieving data correctly, thus messing up microcode operation

Microcode Tracing

The microcode ROM was already hooked up to the HP 16500C logic analyzer which has a pretty deep sample memory. Therefore, it was easy to take a long trace of microcode address data to determine what the 600 was doing over the first several hundred (or several thousand) microinstructions after Prime.

At this stage Douglas Miller’s Wang 600 Simulator is again very useful - the simulator has a debug mode where the microcode can be single stepped while observing the microcode address and the internal state registers. This provides a way to home in on the area of failure by comparing the sequence from the faulty machine with that of the simulator and investigating in detail if/when the sequences diverge.

Tracing showed that execution matched for 74 steps and then diverged at a conditional address based on the ALU Z0 flag. The simulator executed on the basis of Z0=zero while the machine acted as if Z0=1. Furthermore, the 600 then fell into a loop of 20 or so instructions that repeated for the duration of the trace, and the repeating sequence included a conditional address based on Z0.


Z0 Status Flag Testing

Z0 is an ALU status flipflop that reports if the ALU operation has produced a zero result. In a bit-serial ALU it’s a pretty simple status to capture, simply connect the flip flop’s set line to the ALU output stream and if any bit is set, the flip flop will also be set and remain so after the output stream has ended. If the Z0 status flipflop was stuck in the on state, this could lead to the behavior described above.

Instrumenting the 5964 ALU board shows microcode cycles as defined by CL, the Z bus which carries the four Z bits as a serial stream and the Z0 flipflop which clears if any Z bit is set. This trace shows that the Z0 flipflop is set at the start of each cycle and correctly resets if any bit in the Z stream is set.

Therefore, Z0 status flipflop is being correctly set by the ALU logic on the 5964 board. It does however leave open the possibility that conditional addresses based on Z0 may be incorrect due to logic faults in ROM address generation (6182 board).

Previous Log Entry Back to Log Index Next Log Entry