Closed larsbrinkhoff closed 2 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
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?
Ok, we found the typo in LDBR4. Fixing that gives BUGHALT in CKLM1A.
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
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.
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.
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]);
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
Apparently T
is a 36-bit byte pointer to address 323713. This should be the cause of the PURPG
interrupt.
What is a PURPG interrupt?
"Puge page", write to read-only page.
The steps are copied directly from the build script:
https://github.com/PDP-10/its/blob/master/build/macsyma.tcl#L290-L300
Ok. Try it with the latest patch. I can get to the saving of the tape.
Opening this issue to communicate the state of ITS running on KS10.