Disk testing update:
I have the controller in slot 11 still, and the drive interface cable is connected to the
edge paddle that appears to be wire-wrapped to slot 11. I haven't tried it in slot 10
using edge connector P4 yet, because I think I might need to fiddle with the two blue
wires (bus grant? interrupt?) I see patched between the slots to do that, and I
haven't studied what they do yet. Pictures of the backplane can be found on my blog:
http://www.nf6x.net/2016/06/data-general-nova-3-backplane/
Bootstrap from the drive channel still doesn't seem to work. The bootstrap loader does
appear to be loaded into RAM, and the loader remains looping at 000377, which never gets
overwritten with a word from the drive channel.
Reading the drive status register always returns 0 so far. But, I do seem to be talking to
the drive, because I think I can make it seek!
I cobbled together the following program and assembled it with Toby Thain's assembler
found here:
http://www.telegraphics.com.au/sw/info/dpa.html
02 .TITL dsktst1
03 .LOC 0
05 00000 062477 START: IORST ; Reset I/O channels
06 00001 060633 DIAC 0, DKP ; Drive status register to AC0
07 00002 065433 DIB 1, DKP ; Drive mem addr register to AC1
08 00003 072433 DIC 2, DKP ; Drive disk addr register to AC2
09 00004 034010 LDA 3, SEEK ; Load seek command to AC3
10 00005 075133 DOAS 3, DKP ; Do seek
11 00006 074433 POLL: DIA 3, DKP ; Poll drive status to AC3...
12 00007 000006 JMP POLL ; ...forever
14 00010 003220 SEEK: 003220 ; Seek cyl 620(8):
15 ; 0 0000 1 10 10010000
16 ; -> 0 000 011 010 010 000
17 .END START
This resets the I/O channel, reads the three drive registers into AC0-AC2, issues a near
full seek command, then repeatedly polls the drive status register into AC0. I think.
Running the program after a fresh drive load->ready sequence causes the drive to emit
an audible clunk, so I believe that it is performing the seek! However, stopping the
program and examining the accumulators shows that they all contain 0.
Incidentally, I see that the assembler I used assembles IORST as 062477, thus clearing the
start and done flags. However, other sample programs I have seen show IORST as 062677,
which issues a pulse instead of clearing start/done. I did not observe any difference in
behavior in my test program when I tried both IORST varieties. Can any Nova experts chime
in on any hidden gotchas that might lurk around this?
So, back to the task at hand: It seems that the CPU can talk to the drive, but maybe the
drive can't talk back to the CPU? I think I'll work on bringing up a memory test
next before I look at the hard drive some more.
BTW, the console is running at 4800 baud, while I expected it to be at 9600 baud based on
the strapping. That needs some more investigation, too.
--
Mark J. Blair, NF6X <nf6x at nf6x.net>
http://www.nf6x.net/