I am new (1 week to PDP 11, writing my own emulator for fun) using CAPS11 as my starting point. I am confused by this from the very first bit of bootup code
000110: 012703 000130 mov #130,r3 ; C.X. 000114: 005002 clr r2 ; .. 000116: 012701 000200 mov #200,r1 ; A... 000122: 112710 000005 movb #5,(r0) ; H... 000126: 004713 call (r3) ; K.
(output from pdpdasm, J post)
At 126 there is 004713, which is
JSR PC,(R3). I am sure it means JSR to 0130 (since R3 got loaded with 0130 a few lines above and 0130 seems to have the next code to execute) by why is it address mode 1 and not 0. Addr mode 1 means the address of the target of the instruction is where R3 points. So then it should fetch the contents of R3 and go get the address from there, ie the new PC value should be whatever is contained where R3 points. Which clearly not the intent of this code.
I mean if
JSR PC,(R3) means jump to 0130 what would what would
JSR PC,R3 mean?
EDIT: I think I found the answer :-)
JSR PC,R3 is illegal - OK. Is it just jump and jsr instructions where mode 0 is illegal?