rcornwell / sims

Burroughs B5500, ICL1900, SEL32, IBM 360/370, IBM 7000 and DEC PDP10 KA10/KI10/KL10/KS10, PDP6 simulators for SimH
http://sky-visions.com
95 stars 20 forks source link

maybe sim> step doesn't always work for xct ? #309

Closed jeffgunter closed 1 year ago

jeffgunter commented 1 year ago

trying to debug some sort of oddity in our version of dec's BOOT program. i think boot is trying to type something, maybe "page fault" but that's a guess.

when i try to single step from the console, i get hung up in this code: 6172 221374 541 04 0 00 000455 HRRI T3,DTEMTD ;PUT WORD OFFSET IN RH 6173 221375 402 00 0 04 201000 DODTE: SETZM EPT(T3) ;CLEAR DONE FLAG 6174 221376 556 04 0 00 201451 HLRZM T3,EPT+DTECMD ;PUT INTO COMMAND LOCATION 6176 221377 256 00 0 00 206030 XCT DTECNO ; RING DOORBELL 6177 221400 336 00 0 04 201000 SKIPN EPT(T3) ;WAIT TILL MONITOR OUTPUT DONE 6178 221401 254 00 0 00 221400 JRST .-1 ;LOOP 6179 221402 263 01 0 00 000000 POPJ P,0 ;DONE.

Step expired, PC: 221374 (HRRI 4,455) sim> st

Step expired, PC: 221375 (SETZM 0,201000(4)) sim> st

Step expired, PC: 221376 (HLRZM 4,201451) sim> st

Step expired, PC: 221377 (XCT 0,206030) sim> st

Step expired, PC: 221377 (XCT 0,206030) sim> st

Step expired, PC: 221377 (XCT 0,206030) sim> st

Step expired, PC: 221377 (XCT 0,206030) sim> st

Step expired, PC: 221377 (XCT 0,206030) sim> st

Step expired, PC: 221377 (XCT 0,206030) sim> e 206030 206030: 720200020000

sim> e -m 206030 206030: CONO 200,20000 sim> dep 206030 255000000000 sim> st

Step expired, PC: 221377 (XCT 0,206030) sim> st

Step expired, PC: 221377 (XCT 0,206030) sim> e -m 206030 206030: JFCL 0,0 sim> e 206030 206030: 255000000000 sim> dep 206030 201240031415 sim> e 5 5: 777777777777 sim> st

Step expired, PC: 221377 (XCT 0,206030) sim> e 5 5: 777777777777 sim> step

Step expired, PC: 221377 (XCT 0,206030) sim> e 5 5: 777777777777 sim> e 206030 206030: 201240031415 sim> e -m 206030 206030: MOVEI 5,31415 sim> e fm5 FM5: 777777777777

it seems as if when i try to STEP through an xct the pc never gets incremented? this happens even if the instruction is a no-op like jfcl. i'm also not convinced that the instruction gets executed. at least, ac5 doesn't seem to have 31415 in it.

i might be confused about at what point the step exits to console, maybe just the pc isn't incrementing and the pc and the instruction displayed have already happened?

-jfg p.s.: sorry to be so dim -- suppose i wanted to look at physical unmapped memory location 5, how do i do that? am i missing something like >exam -physical 5 ?

rcornwell commented 1 year ago

STEP does not work over xct since XCT is handled as two instructions. I will see what I can do about this, but this might be a quick fix.

larsbrinkhoff commented 1 year ago

There's a similar problem with ILDB and IDPB. I think a user might reasonably expect a single STEP to proceed past those.

rcornwell commented 1 year ago

Yeah... I realized that my fix would not work correctly. There is also extend instruction.

rcornwell commented 1 year ago

Try replacing line 12260 in kx10_cpu.c with: if (f_load_pc && !pi_cycle && instr_count != 0 && --instr_count == 0) {

If it works let me know

larsbrinkhoff commented 1 year ago

I did a quick test with the KA10 emulator, stepping over the ILDB at BEG3+2 in ITS. It worked. Thanks!

larsbrinkhoff commented 1 year ago

To test XCT I entered these instrucitons:

sim> dep -m 77 jfcl
sim> dep -m 100 xct 200
sim> dep -m 101 jfcl
sim> dep -m 200 jrst 300
sim> dep -m 300 jrst 100

I started from 77 with a breakpoint there. Stepping at 100 went to 300 as expected. The next loop I changed 200 to JFCL, and this time stepping the XCT went to 101. All good.

jeffgunter commented 1 year ago

i agree it seems to work, better. however, something quite odd is still happening at that same place later on. probably my fault. i'll confess what i was doing wrong when i figure it out.

-jfg

rcornwell commented 1 year ago

Ok, then I will push the change out.