I'm getting a little time to go back and work on my 11/45 project...
Tony wrote...
> So, I would propose the following tests :
>
> 1) Make sure you can read/write all bits from external memort. Just write
> 1, 2, 4 ,8, 16,.... to successive locations using the panel and examing
> them. Jsut to eliminate a silly fault like a dead data buffer.
If there was a
dead data buffer, how on earth could the machine sucessfully
boot and run xxdp+? I will try this test anyways.
True enough. I'd forgotten you were running XXDP+. OK, it would appear
that the data buffers (and for that matter most instructions) must be
working correcrtly.
> 3) If
possible, try some other interrupting device. An obvious one is the
> console receiver. Wirre a program to : Load all the vectors with .+2,
> HALT
> as you did for the line time clock test that's failing.; Read the
> Console
> Rx data register to clear the data received bit (if necessary); then
> enable the receiver interrupt; and go into an endless loop. Then you
> press
> a key on the conosle. The processor should halt, but _where_ does it
> halt. If 4, then it appears the processor is ignoring all vectors.
I think I
see what you're saying. After I try the first two tests, I will
need some clarification on this and post again :)
Let me explain ;
We know that one particular device (the Line Time Clock) is nut
interrupting correctly -- in particular the vector is being treated as 0
(it's halting with 4 in the PC, IIRC). You've (ugh!) swapped out the
DL11-W board, so it would appear it's not a fault with that particular
device, but what I want to see is if another interrupt has its vector
treated as 0 too.
The easiest device to try (and one I know you have) is the receiver
interrupt from your console port). This will generate an interrupt if
a character has been received from, the console.
So, what I am suggesting is :
1) Set all the vectors so that they contain .+2, HALT. That is, so when
the 11/45 fetches a particular vector, the PC gets loaded with the
address of the second word of that vector, which is actually a halt
instruction. The machine should therefore halt with the PC containing the
address of the first word of the next vector (as it did for the Line time
clock test -- it halted at 4, which is the address of the first word of
the next vector after 0, if you see what I mean)
2) Clear any received chracters from the console port. That way it's not
going to generate an interrupt. yet
3) Enable interrupts on on the console port receiver
4) Loop endlessely
5) You press a key on the console terminal .That sends a character to the
console port, which then generates a receiver interrupt. The machine
_should_ then halt, since all vectors effectively point to halt
instructions (see (1)). What interests me is _where_ it halts. I will
guess the PC will contain 4 (that is, it's totally ignored the vector
again), but I don't want to assume anything.
-tony