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

KS10: Run ITS #235

Closed larsbrinkhoff closed 2 years ago

larsbrinkhoff commented 3 years ago

Opening this issue to communicate the state of ITS running on KS10.

larsbrinkhoff commented 3 years ago

As of today: DDT, NSALV, and DSKDMP seem to work.

When I start ITS, I get to BEG7+13 (currently 116633) which is WREBR 020000+<EPT/1000> ; Paging on and set EBR. but no longer.

Setting a SIMH breakpoint at 116632 and single step from there, I get:

Breakpoint, PC: 116632
sim> ex -m 116630-116640
116630: WRCSTM 114540
116631: LPMR 115153
116632: WRUBR 117365
116633: WREBR 20000
116634: MOVE 15,113773
116635: MOVEI 1,1
116636: CAML 1,117265
116637: CAIL 1,400
116640: PUSHJ 15,70266
sim> s

Step expired, PC: 116633
sim> s

Step expired, PC: 116634
sim> s

Step expired, PC: 201473
larsbrinkhoff commented 3 years ago

On the first call to page_loopup, we go on to load_tlb. Since PC is in low exec moby, load_tlb takes the page table from dbr4. But that's 0, so the TLB isn't filled properly.

So, next question. Is it supposed to be 0 here? And if so, does that mean no mapping?

larsbrinkhoff commented 3 years ago

Ok, we found the typo in LDBR4. Fixing that gives BUGHALT in CKLM1A.

larsbrinkhoff commented 3 years ago

SET CPU 512K gets us further, to:


DZ11 NOT RESPONDING (CHECK THE BREAKER ON THE UNIBUS). LINE 7  
BUGHALT.  FIND A WIZARD OR CONSIDER TAKING A CRASH DUMP.
THE SYSTEM HAS CRASHED AND CANNOT BE REVIVED WITHOUT EXPERT ATTENTION.
IF YOU CAN'T FIND HELP, RELOAD THE SYSTEM.
YOU ARE NOW IN DDT.
BUGPC/   CAI DZINI1+16   $Q-2/   CAIA 0
larsbrinkhoff commented 2 years ago

A problem with one-proceed.

Boot as per ITS pdp10-ks configuration.

 DSKDMP

Simulation stopped, PC: 776432
sim> at tua0 out/pdp10-ks/dskdmp.tape 
%SIM-INFO: TUA0: Tape Image 'out/pdp10-ks/dskdmp.tape' scanned as SIMH format
sim> b tua0
ITS MTBOOT.176
$G
 DSKDMP
its
$G
[...]
DB ITS 1651 SYSTEM JOB USING THIS CONSOLE.
^Z
lisp^K(Please Log In)
!
LISP 2156
Alloc? n
* (load "comlap; ccload")
;Loading DEFMAX 98
^Z
11475)   EXCH 11,@(6)   
^N
ONE-PROCEED IN EXEC MODE 700000,,1241  
PI LEVEL 7 BUGHALT.

http://lars.nocrew.org/tmp/disk.zip

rcornwell commented 2 years ago

Fixed this issue. It now makes it up to maxim Compilation begun on ((DSK TENSOR) CTENSR TRLISP).

$MOTION Compiled:INPUSH PURPG; IFORCE+11>>.CALL SIOT (SIOT)

If you can make a disk and steps to reproduce this I will fix this.

larsbrinkhoff commented 2 years ago

The message suggests the SIOT call tries to write to a read-only page. Maybe the address is off, or maybe the page should be writable.

This one is trickier because it may or may not happen at one of the compile_lisp_file steps. But hopefully it should pop up if you retry a few times.

Boot ITS as per above. Macsyma requires a logged in user.

DB ITS 1651 SYSTEM JOB USING THIS CONSOLE.
^Z
DB$U
macsym^K!
This is MACSYMA 1001
(C1) compile_lisp_file(translate_file("sharem\;packg >")[2]);
[...]
(C2) compile_lisp_file(translate_file("tensor\;ctensr funcs")[2]);
[...]
quit();
:link share;ctensr fasl,tensor;
macsym^K!
This is MACSYMA 1001
(C1) compile_lisp_file(translate_file("share\;eigen >")[2]);

http://lars.nocrew.org/tmp/disk2.zip

larsbrinkhoff commented 2 years ago

Maybe this provides some information.

iforce+11/   .CALL SIOT (SIOT)   :calprt
Arg #1: MOVE R(TT) -> 323605/   AR1   0,,4   $1'     $$
Arg #2: T/   LER3 D,323713   4400,,323713   $1' D :?+$
Arg #3: D/   KA10P   0,,200   $1'    "$

The code is in L; QIO:

;; INTERNAL OUTPUT BUFFER FORCE ROUTINE. EXPECTS USER
;;; INTERRUPTS OFF, AND FILE ARRAY TTSAR IN TT.
;;; CLOBBERS T, TT, D, AND F.

IFORCE: TLNE TT,TTS.CL
         LERR [SIXBIT \CAN'T FORCE OUTPUT ON CLOSED FILE!\]
        SKIPGE F,F.MODE(TT)     .SEE FBT.CM     ;CAN'T FORCE A CHARMODE FILE
         POPJ P,
        MOVE F,FB.BFL(TT)
IFN ITS,[
        SUB F,FB.CNT(TT)
        JUMPE F,IFORC1
        MOVE D,F                ;NUMBER OF BYTES TO TRANSFER
        MOVE T,FB.IBP(TT)       ;INITIAL BYTE POINTER
        .CALL SIOT              ;OUTPUT THE (PARTIAL) BUFFER
         .LOSE 1400
IFORC1:
]               ;END OF IFN ITS
SIOT:   SETZ
        SIXBIT \SIOT\           ;STRING I/O TRANSFER
              ,,F.CHAN(TT)      ;CHANNEL #
              ,,T               ;BYTE POINTER
        400000,,D               ;BYTE COUNT
larsbrinkhoff commented 2 years ago

Apparently T is a 36-bit byte pointer to address 323713. This should be the cause of the PURPG interrupt.

rcornwell commented 2 years ago

What is a PURPG interrupt?

larsbrinkhoff commented 2 years ago

"Puge page", write to read-only page.

larsbrinkhoff commented 2 years ago

The steps are copied directly from the build script:
https://github.com/PDP-10/its/blob/master/build/macsyma.tcl#L290-L300

rcornwell commented 2 years ago

Ok. Try it with the latest patch. I can get to the saving of the tape.