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:
291
src/syseng/gtload.14
Executable file
291
src/syseng/gtload.14
Executable 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
|
||||
|
||||
Reference in New Issue
Block a user