1
0
mirror of https://github.com/PDP-10/its.git synced 2026-02-14 12:04:03 +00:00

Fix GTLOAD to allow lower case input.

This commit is contained in:
Lars Brinkhoff
2018-10-03 16:03:34 +02:00
parent c7413cef1d
commit 36786f01e4

291
src/syseng/gtload.14 Executable file
View File

@@ -0,0 +1,291 @@
TITLE LOADER
CHK=16
ERP=15
PPTR=14
C=4
D=11
CKSM=12
REG=13
F=7
S=10
SPNTR=10
P=6
PNTR=1
A=2
B=3
CMPTR=4
BCOUNT=5
O.SYMS=-100. ;GETS ADDED TO IN DEBUGGER
BUFF: BLOCK 40
RCH: MOVE PNTR,[10700,,BUFF-1] ;INITL BYTE PNTR TO BUFF
MOVEM PNTR,CMPTR
GCHR: PUSHJ P,TYI ;GET CHAR
CAIN A,177 ;RUBOUT?
JRST RUBOT
IDPB A,PNTR
CAIN A,33
JRST GCHR1 ;ALT MODE ALSO TERMINATES COMMAND
CAIE A,15 ;CR?
JRST GCHR
GCHR1: MOVEI A,0 ;IT WAS CR
IDPB A,PNTR ;MARK END OF STRNG
CPOPJ: POPJ P,
RUBOT: CAMN PNTR,[10700,,BUFF-1] ;RUBOUT AT BEG OF BUFFER?
JRST BRUB
LDB A,PNTR ;GET LAST CHAR TYPED
PUSHJ P,TYO ;ECHO IT
ADD PNTR,[70000,,] ;DECREMENT POINTER
JUMPGE PNTR,GCHR ;JUMP IF VALID
SUB PNTR,[430000,,1] ;WAS 440700,,SOMETHING, BACK IT UP
JRST GCHR
BRUB: PUSHJ P,CRR ;TYPE CR LF
JRST GCHR
TYI: .IOT TTI,A
JUMPE A,TYI
CAIE A,15
POPJ P,
PUSHJ P,CRR ;ECHO CR
MOVEI A,15
POPJ P,
TYO: .IOT TTO,A
POPJ P,
SCRS: MOVEI A,2
PUSHJ P,TYO
CRS: MOVEI A,"*
PUSHJ P,TYO
CRR: MOVEI A,15
PUSHJ P,TYO
MOVEI A,12
JRST TYO
LINE==1
TTO==1
TTI==2
DSK==3
ERRC==4
BEGIN: MOVE P,[-100,,PLD]
.OPEN TTO,STTO
.VALUE 0
.OPEN TTI,STTI
.VALUE 0
JRST BCMD
STTO: 45,,(SIXBIT /TTY/)
STTI: 20,,(SIXBIT /TTY/)
STTI1: 4,,(SIXBIT /TTY/)
PLD: BLOCK 100
BCMD: CLEARM PASS ;PASS 0 - LOAD NORMAL, -1 LOAD LOADER LOADER
PUSHJ P,SCRS
PUSHJ P,RCH ;GET TYPED IN COMMANND
MOVE PNTR,IP
SETZB F,S
COMND: ILDB A,CMPTR
CAIN A,^Q
JRST CMDQ
CAIN A,33 ;ALT MODE TERMINATES COMMAND
SOSA PASS ;AND SAYS TO USE LOADER LOADER (TO AVOID CLOBBERING)
CAIN A,15
JRST CMDE
CAIN A,^G
JRST BCMD
CAIN A,":
JRST CMDCOL
CAIN A,";
JRST CMDSC
CAIG A,40
JRST CMDS
SXBT: SUBI A,40
CAIL A,100
SUBI A,40
TLNE PNTR,770000 ;STOP AFTER POSITIN=0
IDPB A,PNTR
JRST COMND
CMDS: MOVE F,S
CMD1: MOVE PNTR,IP
MOVEI S,0
JRST COMND
CMDSC: MOVEM S,SNR
JRST CMD1
CMDCOL: JRST CMD1 ;FOR NOW IGNORE IT
IP: 440600,,S
CMDE: .SUSET [.SSNAM,,SNR]
JUMPE F,FZ
JUMPN S,SNZ
FZ: LSHC F,36. ;MOVE S TO F AND ZERO S
SZ: JUMPE F,BCMD ;TAKE IN NEW NAME
MOVE S,BIN
SNZ: MOVEM F,ADR+1
MOVEM S,ADR+2
PASS2: .OPEN DSK,ADR
JRST ERROR
SKIPGE PASS
JRST LLDR ;LOAD LOADER LOADER FIRST
LLDR1: .OPEN LINE,[45,,'TTY]
.VALUE ;SUPER-IMAGE OUT SO NO PADDING, ETC.
.OPEN TTI,STTI1 ;SWITCH INTO IMAGE MODE
.VALUE 0
MOVEI A,15
.SLEEP A,
MOVEI PNTR,0
JRST STBLK
LLDR: .CALL LLOPN
.VALUE
JRST LLDR1
ERROR: .OPEN ERRC,ERR0
.VALUE 0
ERR1: .IOT ERRC,A
CAIN A,3
JRST BCMD
JUMPL A,BCMD
PUSHJ P,TYO
JRST ERR1
PASS: 0 ;0 LOAD REGULAR THING, -1 LOAD LOADER LOADER
ERR0: SIXBIT / ERR/
1
0
SNR: 0
ADR: 2,,(SIXBIT /DSK/)
0
0
BIN: SIXBIT /BIN /
CMDQ: ILDB A,CMPTR
JRST SXBT
BTTO: 7,,(SIXBIT /TTY/)
LLOPN: SETZ
SIXBIT /OPEN/
5000,,2
1000,,DSK
[SIXBIT /DSK/]
[SIXBIT /GT40LL/]
[SIXBIT /BIN/]
SETZ+[SIXBIT /GT40/]
;PNTR HAS MINUS # LEFT SO ADRS(PNTR) GIVES NEXT WORD
;WHEN IT EQUALS 0, GET NEW BLOCK. IF RETURN WITH NEG
;POINTER, WRITE NEG 1 AS EOF CHAR
GETDSK: JUMPE PNTR,RELOD ;NEED NEW BLOCK
MOVE A,ADRS(PNTR)
ANDI A,377
AOJA PNTR,CPOPJ ;ADD ONE AND RET URN
RELOD: MOVE PNTR,DBUFP
.IOT DSK,PNTR
JUMPL PNTR,ENFIL
NPNTR: HLRE PNTR,DBUFP ;GET MIN WRD COUNT IN PNTR
JRST GETDSK
ENFIL: HRRZS PNTR ;ZERO LEFT HALF TO GET NEXT ADRESS
SETOM (PNTR) ;WRITE EOF CHAR
JRST NPNTR
DBUFP: -50,,BUFR
BUFR: BLOCK 50
ADRS=.
STBLK: .IOT LINE,[175]
.IOT LINE,["R]
.IOT LINE,[175]
.IOT LINE,["L]
SETZB B,C
STBLK4: .RESET TTI,
STBLK1: PUSHJ P,GETDSK
CAIE A,1 ;START OF BLOCK?
JRST STBLK1 ;NOT YET
PUSHJ P,SEND ;YES, SEND IT
PUSHJ P,GETDSK ;AND THE ZERO FOLLOWING
PUSHJ P,SEND
PUSHJ P,GWRD ;GET COUNT
MOVE D,C
CAIN D,6
JRST STBLK2
SUBI D,4
STBLK3: PUSHJ P,GETDSK
PUSHJ P,SEND
SOJGE D,STBLK3
MOVEI A,TTI
.LISTEN A,
JUMPE A,STBLK1
.IOT TTI,A
CAIE A,175
JRST STBLK4
JRST BEGIN
GWRD: PUSHJ P,GETDSK
MOVE C,A
PUSHJ P,SEND
PUSHJ P,GETDSK
PUSHJ P,SEND
LSH A,8.
ADD C,A
POPJ P,
STBLK2: PUSHJ P,GWRD
PUSHJ P,GETDSK
PUSHJ P,SEND
MOVEI A,0
PUSHJ P,SEND
AOSG PASS
JRST PASS2 ;NOW FOR THE REAL STUFF
.VALUE [ASCIZ /:LOGOUT
/]
SENDCH: TRNN F,40
TRO F,100
.IOT TTO,F
POPJ P,
SEND: JRST @SENDD(B)
SENDD: SEND1
SEND2
SEND3
SEND1: MOVE F,A
MOVEI S,0
LSHC F,-2
LSH S,-30.
AOS B
JRST SENDCH
SEND2: MOVE F,A
ANDI F,360
LSH F,-4
ADD F,S
MOVE S,A
ANDI S,17
LSH S,2
AOS B
JRST SENDCH
SEND3: MOVE F,A
LSH F,-6
ADD F,S
MOVE S,A
PUSHJ P,SENDCH
MOVE F,A
ANDI F,77
MOVEI B,0
JRST SENDCH
END BEGIN