Back to Machine Log Main Page Log Previous

Wang 600 ROM Readout and Verify Log Next


Read and verify the entire ROM to determine if microcode is valid

With suspicion now firmly on the ROM being likely to have a dead bit it seemed like the time to bite the bullet and construct a ROM reader that could be used to read out any 600 (or 700) series ROM. This offers two benefits:

  • verification of the entire ROM by comparison with ROM dumps that are available
  • preservation of ROM contents if different models or microcode levels are encountered.

Design of ROM Reader

Reading wire ROMs is a dynamic process requiring that the address be presented and then the sense circuits be clocked in a fairly tight time frame to reset the output latches and then apply a pulse of well-defined duration to stimulate the output transformers and generate ROM data. The pulse must be long enough to generate an output but not so long as to damage the fine ROM wires by excessive current.

The minimum timing resolution was around 15nS and this is within what a mid-range PIC microcontroller can achieve. Reading 40+ bits of ROM output can’t be done directly, instead the ROM outputs are bufered by six 74HC244 tristate drivers which reduces the requirement to 8 input bits and 3 output bits to select the drivers. Host interface is over RS232 serial with a simple protocol to read one or more locations and to output the ROM data as raw hex, raw octal or as a basic text disassembly. A few jumpers were provided to enable the reader to be reconfigured to read 700 series ROMs. The entire design fitted onto a small PCB that could be manufactured quickly and cheaply at one of the Chinese volume PCB fabs.

ROM Reader Output

The ROM reader worked first time and the entire ROM was dumped.

Dead ROM Rows

Examination of the dump showed zeros at locations 85, 584, 850, 1298 and 2048.

Comparing with known ROM dumps shows that the first three locations are meant to return data. This suggests a broken ROM wire or faulty steering diode for each of these locations. Both are challenging to repair but clearly stringing new ROM wires is probably the most challenging of all!

Dead ROM Column

The entire ROM dump was then put through a frequency analysis to see the relative use of all microcode combinations. This is shown below - some fields such as AC, BC, SUB and highJAD are single-bit and so can only take values of 0 or 1. Other fields are three- or four- bit and so can take values from 0-7 or 0-F.

Inspection of the KK field shows a fault pattern, KK never returns 2 or 3, 6 or 7, A or B, E or F. That is, KK field bit 1 with binary value of 2 is always returning zero. So it appears that in addition to three dead rows, there is also one dead column in this ROM which can occur if the column sense IC is faulty. Fortunately this is not so challenging a repair and spare ICs are available.

Val  AI    BI    ZO   AOP   AC    BC    MOP   KK    ST    SUB   JAD   JAD  JAD  JH   JL  
 0   1280  1256  581  1468  1319  1740  1373  1001  1533  1848  804   199  175  928  945
 1	 26    675   65   254   729   308   72    209   26    200   1244  108  111  842  690
 2	 25    4     128  65     -     -    128   0     7      -     -    138  119	65	 77
 3	 208   7     445  70     -	   -	127	  0	    62	   -     -    100  101 	82   77
 4	 103   47    205  33     -     -    79	  128 	68	   -  	 -    103  135	1	 180
 5	 62    23    138  52     -     -    82	  99	5	   -     -    106  126  124  1
 6   337   35    486  106    -     -    147   0     6	   -     -    102  144  5    17
 7   7     1     0    0      -     -    4     0     40     -     -    98   123  1    61
 8	  -     -     -    -	 -	   -    3     131	37	   -	 -	  146  117	 -    -
 9	  -     -     -    -     -     -	0	  107	7      -     -    177  123	 -    -
 A    -     -     -    -     -     -	7     0     19     -     -    189  128   -    -
 B    -     -     -    -     -     -    1     0     29     -     -    152  157   -    -
 C    -     -     -    -     -     -    3     216   26     -     -    121  140   -    -
 D    -     -     -    -     -     -    3     157   121    -     -    105  138   -    -
 E    -     -     -    -     -     -    3     0     3      -     -    106  103   -    -
 F    -     -     -    -     -     -    16    0     59     -     -    98   108   -    -

Conclusion - Multiple ROM Faults

This looks like pretty convincing evidence that the ROM has three local faults affecting three individual locations as well as a global fault affecting a single bit in every location.

No progress can be made towards bringing the 600 back to life until the ROM is repaired, or substituted.