I've been restoring a PDP-11/05 recently and after replacing several faulty ICs I have it mostly working. I've run into a bit of a problem whilst running MAINDEC-11-D0NB (T14 TRAP TEST) though.
The failing instruction sequence is: 7200: MOV #6340,R0 7204: MOV R0,(R0)+ 7206: CMP 6340,#6342 7214: BEQ 7220 7216: HALT This halts at 7216 with: R0 = 6342 6340 = 6340 I tried this same set of instructions on a PDP-11/84 and also on Simh and the result is: R0 = 6342 6340 = 6342 which is what the diagnostic seems to expect. I've carefully looked through the PDP-11/05 microprogram listing but I'm having difficulty seeing where this is going wrong. Here is a brief extract of the microprogram in the context of the MOV R0,(R0)+ instruction along with my interpretation of what I think is going on: LOC NXT * SOURCE MODE 0 (REGISTER), GET SOURCE DATA 201 007 S0-1 B=R[S]; BUT BYTE 007 001 S0-2 R[10]=B; BUT DESTINATION / IF IR<5:3> = 2 GOTO D2-1 B = R0 = 6340 // B = source register R10 = B = 6340 // Source data stored in sratch pad register R10 LOC NXT * DEST MODE 2 (AUTO-INC) GET DEST DATA, OP AND REPLACE 105 331 D2-1 BA=R[D]; DATAIP; ALBYT 331 341 D2-2 B=R[D]+1+BYTE.BAR 341 200 D2-3 R[D]=B; BUT JSRMP; GOTO D1-2; CKOFF / IF INST NOT JMP OR JSR FALL THROUGH TO D1-2 BA = R0 = 6340 // Bus address = destination register B = R0 + 2 = 6342 // Auto-increment and store in B R0 = B = 6342 // Update destination register LOC NXT * DEST MODE 1 (REG,DEFERRED) GET DEST DATA, OP AND REPLACE 200 210 D1-2 B=UNIBUS DATA; BUT BYTE 210 143 D1-3 R[11]=B; BUT UNARY 163 334 D1-4 B=R[10] OP B; BUT NOMOD 334 065 D1-5 DATO; ALBYT; CKOFF 065 305 D1-5 DRIVERS=B; GOTO S2-2 (BUT SERVICE) B = (6340) = 0 // B = value at location pointed to by bus address R11 = B = 0 // R11 is only used for unary instructions B = R10 = 6340 // B = source data stored previously in R10 (6340) = B = 6340 // B is written to the address pointed to by bus address Where have I gone wrong with this? I can't see from the above how the value at 6340 can possibly be 6342 Matt