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 <n...@nf6x.net>
http://www.nf6x.net/

Reply via email to