mirror of
https://github.com/PDP-10/its.git
synced 2026-04-26 12:17:41 +00:00
KLDCP - KL10 diagnostics console program.
This commit is contained in:
473
src/kldcp/apt11.2
Executable file
473
src/kldcp/apt11.2
Executable file
@@ -0,0 +1,473 @@
|
||||
;;;MODIFICATION HISTORY
|
||||
;;;
|
||||
;;; 15 NOV 75 OBTAINED FROM DEC (KLDCP REV 7)
|
||||
;;; 15 NOV 75 CONVERTED TO PALX FORMAT
|
||||
;;;
|
||||
|
||||
.SBTTL APT10 PDP-11 PROCESS, 13-AUG-75
|
||||
|
||||
ACTFIL: CMP #5,LDCNTL ;LOADING ".BIN" ?
|
||||
BNE 1$
|
||||
MOV #1,LDCNTL ;YES, ACT10 CONVERTS TO ".A11"
|
||||
1$: COMENQ ;REQUEST APT10 SERVICE
|
||||
MOV #$INBUF,R0
|
||||
COMCMD ;SEND COMMAND TO REMOTE
|
||||
BCS 2$ ;C-BIT SET, FILE NOT FOUND
|
||||
CLR ARETRY ;CLEAR RETRY COUNTER
|
||||
BR ACTLD1 ;GO TO LOAD PROCESS
|
||||
2$: JMP $NONXF
|
||||
|
||||
ACTLD2: TST DEVTYP
|
||||
BMI 1$ ;ACT10
|
||||
JMP LLD2 ;DECTAPE/RP04
|
||||
1$: COMACK ;ACK PREVIOUS LINE
|
||||
BCS ACTEOF ;C-BIT SET, EOF
|
||||
CLR ARETRY ;CLEAR RETRY COUNTER
|
||||
|
||||
ACTLD1: INC DEVLC ;COUNT LINE
|
||||
MOV DEVLC,SWR ;DISPLAY
|
||||
TST LDCNTL ;DOING A "HELP" ?
|
||||
BPL 1$ ;NO
|
||||
DAHLP=.
|
||||
TST DIAFLG ;DOING DIAMON
|
||||
BEQ 30$ ;NO
|
||||
TST DEVLC ;YES, FIRST LINE ?
|
||||
BNE 31$ ;NO
|
||||
JMP DIAFND ;YES, DIAMON FILE FOUND
|
||||
31$: JMP DIARNL ;DIAMON READ NEW LINE
|
||||
30$: TST IFILEF ;DOING AN INDIRECT FILE ?
|
||||
BEQ 4$
|
||||
JMP IFILEP ;YES, STORE INPUT
|
||||
4$: SETFLG
|
||||
HLPPNT ;NORMAL BACKSLASHES
|
||||
MOV #$INBUF,R0 ;YES, PRINT INPUT LINE
|
||||
TST DEVTYP
|
||||
BPL 41$
|
||||
MOV #CINBF,R0
|
||||
41$: PNTAL
|
||||
CLR HLPPNT
|
||||
BR ACTLD2 ;REPEAT TILL "EOT"
|
||||
|
||||
1$: JMP LDPROC ;GO TO LOAD PROCESS
|
||||
|
||||
ACTEOF: COMCLR
|
||||
|
||||
DAHLPD=.
|
||||
TST DIAFLG ;DOING DIAMON ?
|
||||
BEQ 10$ ;NO
|
||||
JMP DIAEOF ;YES, SEND DIAMON END OF FILE
|
||||
10$: TST IFILEF ;INDIRECT/DOUBLE INDIRECT ?
|
||||
BNE 21$ ;YES
|
||||
PCRLF ;NO, JUST HELP
|
||||
BR 23$ ;BACK TO CONSOLE
|
||||
|
||||
21$: TST JFILEF ;DOUBLE INDIRECT ?
|
||||
BPL 22$ ;NO
|
||||
TSTB JFILEF ;PRESENT JUST INDIRECT ?
|
||||
BEQ 22$ ;YES
|
||||
CLRB JFILEF ;SET DONE WITH READING "J"
|
||||
MOV #TOUTBF+5000,JFINP ;SET "J" POINTER TO BEGINNING
|
||||
JMP CONSL ;START RUNNING
|
||||
|
||||
22$: MOV #TOUTBF,IFINP ;SET POINTER TO BEGINNING
|
||||
CLRB IFILEF
|
||||
23$: JMP $CONSL ;GO PROCESS INDIRECT FILE
|
||||
|
||||
ACTDON: COMACK ;ACK TRANSFER BLOCK
|
||||
BCC 3$
|
||||
DADONE=.
|
||||
TST SRTFLG ;SELF START ?
|
||||
BEQ 1$
|
||||
JMP $$GO ;YES
|
||||
1$: JMP $CONSL ;NO
|
||||
|
||||
3$: PMSG <?EOF,ERR>
|
||||
$$C2: JMP $CNTLC
|
||||
|
||||
ACTLDC: PMSG <?LOAD CHR>
|
||||
BR ACTERR
|
||||
|
||||
ACTBCK: PMSG <?CKSUM>
|
||||
BR ACTERR
|
||||
|
||||
ACTLDF: PMSG <?FORMAT>
|
||||
|
||||
ACTERR: PMSG < ERR: LOAD LINE >
|
||||
MOV DEVLC,R0
|
||||
PNTDEC ;PRINT LOAD LINE NUMBER
|
||||
PCRLF
|
||||
TST DEVTYP
|
||||
BPL 2$ ;DECTAPE/RP04
|
||||
INC ARETRY
|
||||
CMP #4,ARETRY ;REACHED RETRY LIMIT ?
|
||||
BEQ 1$ ;YES
|
||||
COMNAK ;NO, NAK MESSAGE & TRY AGAIN
|
||||
DEC DEVLC ;DECREMENT LINE COUNT
|
||||
JMP ACTLD1
|
||||
|
||||
1$: PMSG <CAN'T LOAD>
|
||||
2$: BR $$C2
|
||||
|
||||
.SBTTL COMMUNICATIONS ROUTINES
|
||||
|
||||
$COMACK:INC MSGNBR ;COUNT MESSAGE
|
||||
$$CMACK:MOV #ACKMSG,R5 ;MESSAGE ACKNOWLEDGE
|
||||
BR $COMCX
|
||||
|
||||
$COMNAK:MOV #NAKMSG,R5 ;MESSAGE NEGATIVE ACKNOWLEDGE
|
||||
BR $COMCX
|
||||
|
||||
$COMCMD:CLR R5 ;MESSAGE COMMAND
|
||||
|
||||
$COMCX: MOV #3,R4 ;RETRY 3 TIMES
|
||||
|
||||
1$: TST R5
|
||||
BNE 2$
|
||||
|
||||
COMSND ;COMMAND SEND
|
||||
BR 3$
|
||||
|
||||
2$: MOV R5,R0
|
||||
COMCTL ;CONTROL SEQUENCE SEND
|
||||
|
||||
3$: COMLIN ;GET REPLY
|
||||
BCS 5$ ;ERROR
|
||||
BPL 7$ ;CONTROL SEQUENCE
|
||||
|
||||
MOV #136,R3 ;NORMAL MESSAGE
|
||||
BIT #1,MSGNBR ;ODD OR EVEN MESSAGE NUMBER
|
||||
BEQ 4$
|
||||
MOV #041,R3
|
||||
4$: CMP R3,COMNBR ;CORRECT MESSAGE NUMBER ?
|
||||
BNE $$CMACK ;NO, MUST BE REPEAT
|
||||
CLR R0
|
||||
41$: EXIT ;NEW MESSAGE READY FOR PROCESS
|
||||
|
||||
5$: DEC R4 ;EXCEEDED RETRY LIMIT ?
|
||||
BNE 6$ ;NO, TRY AGAIN
|
||||
JMP $COMERR ;YES, REPORT ERROR & ABORT
|
||||
|
||||
6$: TST R5
|
||||
BNE 61$ ;CONTROL REPEAT
|
||||
CMP #-5,R0 ;RECIEVED CHECKSUM ERROR ?
|
||||
BEQ 61$ ;YES, SEND NAK
|
||||
COMRTRY ;COMMAND RETRY
|
||||
BR 3$
|
||||
|
||||
61$: MOV #NAKMSG,R5
|
||||
BR 2$
|
||||
|
||||
7$: TTICHR ;GET CONTROL SEQUENCE CHARACTER
|
||||
CMPB #'A,R0
|
||||
BEQ 41$ ;A, ACKNOWLEDGE
|
||||
CMPB #'Z,R0
|
||||
BEQ 8$ ;Z, END OF TRANSMISSION
|
||||
CMPB #'N,R0
|
||||
BNE 71$
|
||||
MOV #-7,R0 ;N, NEGATIVE ACKNOWLEDGE
|
||||
BR 5$
|
||||
|
||||
71$: MOV #-10,R0 ;UNKNOWN RESPONSE
|
||||
BR 5$
|
||||
|
||||
8$: EXITERR ;END OF FILE
|
||||
|
||||
$COMERR:PUSH R0
|
||||
PMSG <?COMM ERR >
|
||||
POP R0
|
||||
NEG R0
|
||||
MOV R0,R1
|
||||
PNTOCS
|
||||
PNTCI
|
||||
",
|
||||
DEC R1
|
||||
SL R1,1
|
||||
MOV CMERTB(R1),R0
|
||||
PNTAL
|
||||
JMP $CNTLC
|
||||
|
||||
CMERTB: CMER1
|
||||
CMER2
|
||||
CMER3
|
||||
CMER4
|
||||
CMER5
|
||||
CMER6
|
||||
CMER7
|
||||
CMER10
|
||||
|
||||
CMER1: .ASCIZ %NO RESPONSE%
|
||||
CMER2: .ASCIZ %LONG LINE%
|
||||
CMER3: .ASCIZ %MSG NBR%
|
||||
CMER4: .ASCIZ %NO CR%
|
||||
CMER5: .ASCIZ %MSG CKSUM%
|
||||
CMER6: .ASCIZ %FORMAT%
|
||||
CMER7: .ASCIZ %NAK%
|
||||
CMER10: .ASCIZ %UNKNOWN%
|
||||
.EVEN
|
||||
|
||||
$COMSND:MOV #COUTBF,R5
|
||||
CLR R3
|
||||
|
||||
1$: CMPB (R0),#CR ;REACHED CR YET ?
|
||||
BEQ 2$ ;YES
|
||||
CMPB (R0),#ALTMOD ;OR ALTMODE ?
|
||||
BEQ 12$ ;YES, SUBSTITUTE CR
|
||||
|
||||
TSTB (R0) ;REACHED NULL BYTE ?
|
||||
BNE 11$
|
||||
MOV #-6,R0 ;YES, INCORRECT MESSAGE FORMAT
|
||||
BR $COMERR
|
||||
|
||||
11$: MOVB (R0),R2
|
||||
ADD R2,R3 ;ACCUMULATE CHECKSUM
|
||||
MOVB (R0)+,(R5)+ ;TRANSFER MSG TO OUTPUT BUFFER
|
||||
BR 1$
|
||||
|
||||
12$: MOV #ALTMOD,(R5)+
|
||||
BR 22$
|
||||
2$: MOVB (R0)+,(R5)+ ;PUT CR IN OUTPUT
|
||||
22$: CLRB (R5) ;FOLLOW WITH NULL
|
||||
|
||||
MOV #COUTBF-4,R5 ;SETUP MESSAGE START
|
||||
MOVB #136,(R5)
|
||||
BIT #1,MSGNBR ;SET UP MESSAGE NUMBER CHAR
|
||||
BEQ 21$
|
||||
MOVB #041,(R5)
|
||||
21$: INC R5
|
||||
|
||||
NEG R3 ;NEGATE CHECKSUM
|
||||
|
||||
MOV R3,R0
|
||||
SWAB R0
|
||||
BIC #177400,R0
|
||||
SHIFTR
|
||||
4
|
||||
JSR PC,COMASC
|
||||
MOVB R0,(R5)+ ;INSERT 1ST CHECK CHAR
|
||||
|
||||
MOV R3,R0
|
||||
SHIFTR
|
||||
6
|
||||
JSR PC,COMASC
|
||||
MOVB R0,(R5)+ ;INSERT 2ND CHECK CHAR
|
||||
|
||||
MOV R3,R0
|
||||
JSR PC,COMASC
|
||||
MOVB R0,(R5)+ ;INSERT 3RD CHECK CHAR
|
||||
|
||||
$CMRTRY:MOV #COUTBF-4,R0 ;SETUP MESSAGE POINTER
|
||||
|
||||
$COMCTL:TSTB @$CMTKS ;ANY OLD CHARS ?
|
||||
BPL 1$
|
||||
MOVB @$CMTKB,$TTYIN ;YES, GET GET OF IT
|
||||
BR $COMCTL
|
||||
|
||||
1$: TSTB @$CMTPS ;WAIT TILL OUTPUT IS READY
|
||||
BPL $COMCTL
|
||||
|
||||
MOV #2,R1 ;SEND 2 SYNC CHARACTERS
|
||||
2$: MOVB #SYN,@$CMTPB
|
||||
3$: TSTB @$CMTPS
|
||||
BPL 3$
|
||||
DEC R1
|
||||
BNE 2$
|
||||
|
||||
4$: MOVB (R0)+,R1 ;GET MESSAGE CHAR
|
||||
BEQ 6$ ;IF NULL, DONE
|
||||
|
||||
MOVB R1,@$CMTPB ;SEND CHAR
|
||||
5$: TSTB @$CMTPS ;WAIT TILL OUTPUT READY
|
||||
BPL 5$
|
||||
BR 4$ ;SEND TILL NULL
|
||||
|
||||
6$: EXIT ;COMPLETED
|
||||
|
||||
COMASC: BIC #177700,R0 ;KEEP 6 BITS
|
||||
CMP R0,#74 ;LEAVE 75,76,77 ALONE
|
||||
BGT 1$
|
||||
BIS #100,R0 ;SET BIT 7 FOR ASCIIZE
|
||||
1$: RTS PC
|
||||
|
||||
$COMLIN:MOV #CINBF-4,R1 ;START BUFFER ADDRESS
|
||||
CLR $TTYTIM ;CLEAR TIMEOUT
|
||||
CLR R5 ;CLEAR IN SYNC FLAG
|
||||
|
||||
1$: JSR PC,C10COP ;PERFORM CLOCK OPERATIONS
|
||||
CMP $TTYTIM,#<20.*60.> ;20 SECS
|
||||
BGT 90$ ;TIMED OUT
|
||||
|
||||
TSTB @$CMTKS ;COMM IN FLAG SET ?
|
||||
BMI 2$ ;YES
|
||||
|
||||
JSR PC,$PTTYC ;ANY OPERATOR INTERRUPT ?
|
||||
BR 1$ ;NO
|
||||
|
||||
2$: MOVB @$CMTKB,(R1) ;MOVE CHAR TO BUFFER
|
||||
BICB #200,(R1)
|
||||
TSTB (R1)
|
||||
BEQ 1$ ;IGNORE NULLS
|
||||
|
||||
CMPB (R1),#SYN ;SYNC CHAR ?
|
||||
BEQ 21$ ;YES
|
||||
|
||||
TST R5 ;RECIEVED SYNC YET ?
|
||||
BEQ 1$ ;NO, DUMP GARBAGE CHARS
|
||||
|
||||
CMPB (R1),#ALTMOD
|
||||
BEQ 3$ ;ALTMODE, CONTROL SEQUENCE
|
||||
|
||||
CMPB (R1),#'$ ;DOLLAR, PDP-10 SENDS THIS FOR ALTMODE
|
||||
BNE 22$
|
||||
CMP R1,#CINBF ;LEGAL ONLY IF IN CONTROL SEQUENCE
|
||||
BLT 3$
|
||||
|
||||
22$: CMPB (R1),#LF
|
||||
BEQ 4$ ;LF, MESSAGE SEGMENT
|
||||
|
||||
INC R1
|
||||
CMP R1,#CINBF+140.
|
||||
BLE 1$ ;STILL ROOM
|
||||
BR 91$ ;NO, LINE TOO LONG
|
||||
|
||||
21$: MOV #-1,R5 ;SYNC, SET IN SYNC FLAG
|
||||
BR 1$
|
||||
|
||||
3$: INC R1 ;NULL TO END BUFFER
|
||||
CLRB (R1)
|
||||
MOV R1,$INPTR ;SETUP INPUT POINTERS
|
||||
MOV #CINBF-4,$INPTC
|
||||
EXIT ;CONTROL SEQUENCE RETURN
|
||||
|
||||
4$: INC R1
|
||||
CLRB (R1)
|
||||
MOV R1,$INPTR ;SETUP INPUT POINTERS
|
||||
MOV #CINBF-4,R1
|
||||
CMPB #041,(R1)
|
||||
BEQ 41$
|
||||
CMPB #136,(R1)
|
||||
BEQ 41$
|
||||
BR 92$ ;MESSAGE NUMBER INCORRECT
|
||||
|
||||
41$: MOVB (R1)+,COMNBR ;SAVE MESSAGE NUMBER
|
||||
CLR R0 ;SETUP FOR MESSAGE CHECKSUM
|
||||
MOV #3,R5 ;CHARS 2,3,4 ARE CHECKSUM
|
||||
|
||||
42$: SL R0,6
|
||||
MOVB (R1)+,R4 ;GET 1ST CHECK CHAR
|
||||
BIC #100,R4 ;CLEAR ASCIIZE BIT
|
||||
BIS R4,R0 ;INSERT IN 16 BIT CHECKSUM
|
||||
DEC R5
|
||||
BGT 42$ ;DO 3 CHARS
|
||||
|
||||
43$: CMPB (R1),#CR ;REACHED EOL ?
|
||||
BEQ 44$ ;YES
|
||||
TSTB (R1) ;PAST EOL WITHOUT CR ?
|
||||
BEQ 93$ ;YES, NO CR ERROR
|
||||
|
||||
MOVB (R1)+,R3
|
||||
ADD R3,R0 ;ACCUMULATE CHECKSUM
|
||||
BR 43$
|
||||
|
||||
44$: TST R0 ;DID CHECKSUM COMPUTE TO 0 ?
|
||||
BNE 94$ ;NO, CHECKSUM ERROR
|
||||
|
||||
MOV #CINBF,$INPTC ;MESSAGE SEGMENT OK
|
||||
BIS #NBIT,14(SP) ;SET NORMAL MESSAGE INDICATOR
|
||||
EXIT
|
||||
|
||||
90$: MOV #-1,R0 ;NO RESPONSE ERROR
|
||||
BR 99$
|
||||
|
||||
91$: MOV #-2,R0 ;LINE TOO LONG ERROR
|
||||
BR 99$
|
||||
|
||||
92$: CMPB #'?,(R1) ;IS MESSAGE NUMBER QUESTION MARK ?
|
||||
BEQ COMQ ;YES, HOST ERROR
|
||||
MOV #-3,R0 ;MESSAGE NUMBER CHAR ERROR
|
||||
BR 99$
|
||||
|
||||
93$: MOV #-4,R0 ;NO CARRIAGE RETURN ERROR
|
||||
BR 99$
|
||||
|
||||
94$: MOV #-5,R0 ;MESSAGE CHECKSUM ERROR
|
||||
|
||||
99$: EXITERR ;ERROR EXIT, C-BIT SET, CODE IN R0
|
||||
|
||||
COMQ: $PMSG ;PRINT ERROR REPLY
|
||||
CINBF-4
|
||||
JMP $CNTLC
|
||||
|
||||
$COMENQ:COMCLR ;CLEAR COMMUNICATIONS
|
||||
SETFLG
|
||||
ENQFLG ;SET APT10 IN PROGRESS
|
||||
MOV #3,R4
|
||||
10$: CLR MSGNBR ;INITIALIZE MESSAGE NUMBER
|
||||
MOV #ENQMSG,R0
|
||||
COMCTL ;SEND "ENQ" MESSAGE
|
||||
|
||||
COMLIN ;WAIT FOR REPLY
|
||||
BCS 1$ ;ERROR, CODE IN R0
|
||||
BMI 3$ ;NORMAL MESSAGE REPLY ?
|
||||
TTICHR
|
||||
CMPB #'A,R0 ;A, ACKNOWLEDGE
|
||||
BNE 1$
|
||||
EXIT ;ACKED, GO AHEAD
|
||||
|
||||
1$: TST R0 ;IS REPLY CODE NEGATIVE ?
|
||||
BMI 4$ ;YES, COMLIN ERROR
|
||||
|
||||
CMPB #'Z,R0 ;IS REPLY EOT, WAIT ?
|
||||
BNE 3$ ;NO
|
||||
|
||||
CLR $TTYTIM ;YES, WAIT 10 SECONDS
|
||||
2$: JSR PC,$PTTYC
|
||||
JSR PC,C10COP
|
||||
CMP $TTYTIM,#<10.*60.>
|
||||
BLE 2$
|
||||
BR $COMENQ ;THEN TRY AGAIN
|
||||
|
||||
3$: PMSG <?APT10 ENQ>
|
||||
JMP $CNTLC
|
||||
|
||||
4$: DEC R4
|
||||
BNE 10$ ;RETRY
|
||||
JMP $COMERR ;COMMUNICATIONS ERROR
|
||||
|
||||
$COMEOT:MOV #EOTMSG,R0
|
||||
COMCTL
|
||||
EXIT
|
||||
|
||||
$COMCLR:CLR ENQFLG
|
||||
MOV #CANMSG,R0
|
||||
COMCTL
|
||||
MOV #100000,R1
|
||||
1$: TSTB @$CMTKS ;ANY INPUT IN PROGRESS ?
|
||||
BPL 2$
|
||||
MOVB @$CMTKB,R0 ;IF SO, GET RID OF IT
|
||||
BR 1$
|
||||
2$: DEC R1
|
||||
BNE 1$ ;A LITTLE DELAY
|
||||
EXIT
|
||||
|
||||
ENQMSG: .BYTE 'E,33,0
|
||||
ACKMSG: .BYTE 'A,33,0
|
||||
NAKMSG: .BYTE 'N,33,0
|
||||
CANMSG: .BYTE 'C,33,0
|
||||
EOTMSG: .BYTE 'Z,33,0
|
||||
|
||||
.EVEN
|
||||
|
||||
IFILEP: MOV #$INBUF,R0 ;SETUP POINTERS
|
||||
TST DEVTYP
|
||||
BPL 10$
|
||||
MOV #CINBF,R0
|
||||
10$: MOV IFINP,R1
|
||||
1$: MOVB (R0)+,(R1)+ ;TRANSFER CHARS TO STORAGE
|
||||
BNE 1$ ;TILL NULL
|
||||
CLRB (R1) ;THEN STORE 2ND NULL
|
||||
MOV R1,IFINP ;RESAVE POINTER
|
||||
CMP R1,#TOUTBF+10000-200
|
||||
BLE 2$ ;EXCEEDED BUFFER ROOM ?
|
||||
JMP $LINERR ;YES
|
||||
2$: JMP ACTLD2 ;REPEAT TILL EOF
|
||||
|
||||
Reference in New Issue
Block a user