billdeg
Technician
But that is weird. It should jump to 5624 but instead it jumps off to 5570. There is some basic problem with jump/mov ins the CPU I would say. You need to start replacing cards to find the faulty one and then dig out the logic analyzer.
Is it possible to trace the microsteps using the 11/40 console somehow? It sure could be interesting to follow the microcode flow when executing that first instruction.
If you just assemble your own testprograms. JMP, JSR and MOV. Do they execute correctly when single stepping. Can there be a pattern somehow to be seen? One strange thing is that I am pretty sure that the M9312 tests some instructions before attempting to run the console emulator.
It is indeed testing som jumps at least. So it shouldn't be all wrong...Code:66 165020 005003 T1: clr r3 ; R3=000000 C=0 67 165022 005203 inc r3 ; R3=000001 C=0 68 165024 005103 com r3 ; R3=177776 C=1 69 165026 006203 asr r3 ; R3=177777 C=0 70 165030 006303 asl r3 ; R3=177776 C=1 71 165032 006003 ror r3 ; R3=177777 C=0 72 165034 005703 tst r3 ; R3=177777 C=0 73 165036 005403 neg r3 ; R3=000001 C=1 74 165040 005303 dec r3 ; R3=000000 C=1 75 165042 005603 sbc r3 ; R3=177777 C=1 76 165044 006103 rol r3 ; R3=177777 C=1 77 165046 005503 adc r3 ; R3=000000 C=1 78 165050 000303 swab r3 ; R3=000000 C=0 79 165052 001377 bne . ; br . if FAIL 80 81 ; ------------------------------------------------------------ 82 83 165054 012702 165000 T2: mov #data0,r2 ; R2=165000 84 165060 011203 mov (r2),r3 ; R2=165000 R3=165000 85 165062 022203 cmp (r2)+,r3 ; R2=165002 R3=165000 86 165064 001377 bne . ; br . if FAIL 87 165066 063203 add @(r2)+,r3 ; R2=165004 R3=152000 88 165070 165203 sub @-(r2),r3 ; R2=165002 R3=165000 89 165072 044203 bic -(r2),r3 ; R2=165000 R3=000000 90 165074 056203 000012 bis 12(r2),r3 ; R2=165000 R3=165006 91 165100 037203 000012 bit @12(r2),r3 ; R2=165000 R3=165006 92 165104 001777 beq . ; br . if FAIL 93 94 ; ------------------------------------------------------------ 95 96 165106 010703 T3: mov pc,r3 ; R3=165110 97 165110 000123 jmp (r3)+ ; jmp self, R3=165112 98 165112 012703 165122 mov #T3B,r3 ; R3=165122 99 165116 000133 jmp @(r3)+ ; R3=165124 PC=165120 100 165120 000113 T3A: jmp (r3) ; R3=165124 PC=165124 101 165122 165120 T3B: .word T3A ; point to previous instr 102 103 ; ------------------------------------------------------------ 104 105 165124 105767 165004' T4: tstb data1 ; test a byte, if we get here... 106 165130 001377 bne . ; br . if FAIL 107 165132 022222 cmp (r2)+,(r2)+ ; (R2)+=165000 (R2)+=165002 R2=165004 108 165134 105722 tstb (r2)+ ; (R2)+=000 R2=165005 109 165136 001377 bne . ; br . if FAIL 110 165140 105712 tstb (r2) ; R2=165005 (R2)=200 111 165142 100377 bpl . ; br . if fail
But you maybe isn't running the diagnostics? If I remember correctly this is depending on the switches on the M9312 board.
I know that you have verified the memory contents using PDP11GUI and it all matches. But what if you test the diagnostic with MOS memory instead of CORE just as a quick test?
My MOS is not reliable enough for testing. I started but got DC LO AC LO on the front panel. I put the core back in.