I had a bit of a memory problem with the Nova 4.

The VC (Virtual Console) works okay when you hit the reset button, but when the computer is powered on I do not get the

OK
!000000
!

indication that indicates successful self-test completion. Instead, I only get

O

The VC does not respond at that point. Once I hit the reset button, I do get

O000000
!

But the K is still missing. The VC then responds as expected.

If I remove the memory board, the behavior is exactly the same, except that every memory address reads back as 177777 of course.

Accumulators with and without memory board:

  • without - 177777 125252 076000 000701
  • with - 127252 125252 076041 000701

This lead me to suspect that the memory at word 41 was incorrect.

Memory locations 0 - 40 were 052525, 41, 45, 51 were 127252, 42 and up (except those with the lowest bits being 01) were 125252.

So, it looks like the entire memory is written with 125252 (1010101010101010) first, then each word is first read, then written with 052525 (0101010101010101).

Sure enough, when I wrote 125252 to word 41, it looked fine, but when I wrote 052525 to word 1, it changed word 41 to 127252!

So, it looks like the memory chip that controls bit 10 for addresses ending in 01 (binary) is at fault here. I did some wire tracing, and came up with the following picture of the board

 +-----------------------------------------------------------+
 |          15  14              bit                   1   0  |
 |         +u+ +u+ ................................. +u+ +u+ |
 |         | | | |                                   | | | | |
 | 0xxxx00 | | | |                                   | | | | |
 |         +-+ +-+                                   +-+ +-+ |
 |                                                           |
 |         +u+ +u+                                   +u+ +u+ |
 |         | | | |                                   | | | | |
 | 1xxxx00 | | | |                                   | | | | |
 |         +-+ +-+                                   +-+ +-+ |
 |                                                           |
 |         :                                               : |
 |         :                                               : |
 | word    :                                               : |
 |         :                                               : |
 |         :                                               : |
 |                                                           |
 |         +u+ +u+                                   +u+ +u+ |
 |         | | | |                                   | | | | |
 | 0xxxx11 | | | |                                   | | | | |
 |         +-+ +-+                                   +-+ +-+ |
 |                                                           |
 |         +u+ +u+                                   +u+ +u+ |
 |         | | | |                                   | | | | |
 | 1xxxx11 | | | |                                   | | | | |
 |         +-+ +-+ ................................. +-+ +-+ |
 |                                                           |
 |                                                           |
 |                                                           |
 +-+                         +---+                         +-+
   +-------------------------+   +-------------------------+ 

So at least I can now trace an error bit to a chip. However, I must have damaged something in the process (believe me, I've been careful), because for all addresses ending in xxxx10, the data reads back as 000000 now. I hooked up my logic analyzer, and found that data is written to the memory chips in this row correctly. The data read from these chips is also correct. The data is then fed to a few 74153 4-to-1 MUXes. I checked the selection inputs to the MUXes, and these are wrong for row 2. The input for this comes from a 74S38 (which generates the two select lines to the MUXes). My suspicion is that the '38 was marginal to begin with. I Replaced this, then found 3 RAM chips that were bad. Replaced those too, and I now get the full

OK
!000000
!

On startup.