1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-29 05:11:14 +00:00

Added CROSS.

Resolves #141.
This commit is contained in:
Eric Swenson
2016-12-18 15:17:05 -08:00
parent ce4f8a168c
commit d64ba80388
5 changed files with 5274 additions and 0 deletions

662
src/syseng/cross.38 Executable file
View File

@@ -0,0 +1,662 @@
TITLE CROSS
F==0
A=1
B=2
C=3
D=4
E=5
LC=6
PG=7
R=7
N=10
LL=10
PL=11
CN=12
TP=13
L=14
L2=15
PD=16
P=17
TYI==1
TYO==2
I==3
O==4
ERRC==5
BUFL==400
SYML==4400
JCRY=JFCL 6,
JRSTF=JRST 2,
LOC 40
0
JRST CSYM
LOC 100
MAIN: JFCL 17,.+1
MOVSI A,400000
MOVNI B,6
LOOP: ILDB C,P
XCT DTAB(C)
JUMPE B,LOOP
MOVEI B,1(B)
JRST LOOP
CSYM: SETZB C,F
MOVEI L,JNEW
JCRY SYM
JRST @40
SYM: TLZ A,740000
MOVE B,A
TSC B,B
MOVMS D,B
IDIVI B,SYML
HRLI C,-SYML(C)
SYMLUP: SKIPN B,ST(C)
JRST (L)
CAMN B,A
JRST 1(L)
SL: AOBJN C,SYMLUP
TLOE F,1
.VALUE
MOVN B,D
IDIVI B,SYML
HRLZI C,-1(C)
JRST SL
NEW: MOVEM A,ST(C)
AOBJP LC,CORE
C1: HRRZM LC,ST2(C)
HRLZM PG,(LC)
JRST @40
JNEW: JRST NEW
OLD: HLRZ D,ST2(C)
XCT TTAB(D) ;NORMAL CASE DOES HRRZ D,ST2(C)
HLRZ B,(D)
CAIN PG,(B)
JRST @40
AOBJP LC,CORE
C2: HRRZM D,(LC)
HRLM PG,(LC)
HRRM LC,ST2(C)
MOVEI D,(LC)
JRST @40
TTAB: HRRZ D,ST2(C)
JRST @40
JRST TXT
JRST IGCR
CORE: MOVEI A,2000(LC)
LSH A,-10.
.CORE (A)
.VALUE
ADD LC,[-2000,,]
JUMPE B,C1 ;?????
JRST C2
TXT: LDB C,P
CAIE C,40 ;SPACE
JRST .+4
ILDB C,P
CAIN C,3
JSP L,CC1
SKIPA B,C
IGCR: MOVEI B,15
ILDB C,P
CAIN C,^L
JRST FF
CAIN C,3
JSP L,CC1
CAME C,B ;CR
JRST IGCR+1
JRST MAIN
CC1: SOS L
CC: MOVEI P,(P)
CAIE P,BUFE
JRST SORT
MOVE E,[-BUFL,,BUF]
.IOT I,E
MOVE P,[350700,,BUF]
LDB C,P
JRSTF -1(L)
;READ IN A COMMAND, PROCESSING RUBOUTS, PROMPTING WITH "*".
TTILIN: .IOT TYO,[^M]
;COME HERE AFTER NULL LINE.
TTILI2: .IOT TYO,["*]
SETZM TTICNT ;NO CHARS READ YET.
MOVE B,[440700,,TTIBUF]
MOVEM B,TTIPNT
TTILUP: .IOT TYI,B ;READ A CHAR.
CAIN B,^M
JRST TTICR ;^M MEANS ALL READ.
CAIN B,177
JRST TTIRUB
CAIN B,^U
JRST TTILIN ;^U - CANCEL COMMAND.
IDPB B,TTIPNT ;NORMAL CHAR.
AOS TTICNT
JRST TTILUP
TTICR: SKIPN TTICNT ;IF READING CMD, ON NULL LINE, RETRY.
JRST TTILI2
IDPB B,TTIPNT
MOVE B,[440700,,TTIBUF]
MOVEM B,TTIPNT ;SET UP FOR REMOVAL OF CHARS.
JRST CLUP3 ;RETURN.
TTIRUB: SOSGE TTICNT ;IF NO CHAR TO RUB, RETRY.
JRST TTILIN
LDB B,TTIPNT
.IOT TYO,B ;PRINT RUBBED CHAR.
MOVSI B,070000
ADD B,TTIPNT
JUMPGE B,TTIRU1 ;IF STILL IN SAME WD.
MOVEI B,-1(B) ;ELSE, MOVE TO END OF PREV. WD.
HRLI B,010700
TTIRU1: MOVEM B,TTIPNT
JRST TTILUP
TTICNT: 0 ;NUM CHARS READ.
TTIPNT: 0 ;PTR INTO BUFFER.
TTIBUF: BLOCK 40
BEG: .OPEN TYI,[0,,(SIXBIT /TTY/)]
.VALUE
.OPEN TYO,[1,,(SIXBIT /TTY/)]
.VALUE
IN: .CORE <FS+LEN>/2000
.VALUE
.SUSET [.RSNAM,,N]
MOVEM N,OUTFIL+3
MOVSI A,(SIXBIT /TPL/)
MOVEM A,OUTFIL
.BREAK 12,[5,,TTIBUF] ;TRY GETTING :JCL COMMAND.
SKIPN TTIBUF
JRST TTILIN ;IF NONE, READ LINE FROM TTY.
.BREAK 12,[SETZ [0](5)];FLUSH :JCL COMMAND
CLUP3: MOVE A,[440700,,TTIBUF]
MOVEM A,TTIPNT ;SET UP FOR READING COMMAND.
CLUP2: MOVEM N,INFIL+3
MOVSI A,(SIXBIT /DSK/)
MOVEM A,INFIL
MOVSI A,(SIXBIT />/)
MOVEM A,INFIL+2
MOVNI C,2
CLUP: MOVEI A,0
MOVE P,[440600,,A]
CLUP1: ILDB B,TTIPNT
CAIN B,40
JRST CMSP
CAIN B,":
JRST CMCOL
CAIN B,";
JRST CMSEM
CAIN B,"_
JRST CBAK
CAIN B,15
JRST CMCR
CAIN B,^Q
ILDB B,TTIPNT
SUBI B,40
TLNE P,770000
IDPB B,P
JRST CLUP1
CMCR: TDZA B,B
CBAK: SETO B,
CMSP: JUMPE A,CMSP2
MOVEM A,INFIL+3(C)
AOJL C,CMSP2
MOVNI C,3
CMSP2: JUMPG B,CLUP
JUMPE B,OPEN
MOVE A,[INFIL,,OUTFIL]
BLT A,OUTFIL+3
JRST CLUP2
CMCOL: MOVEM A,INFIL
JRST CLUP
CMSEM: MOVEM A,INFIL+3
JRST CLUP
ERR: .SUSET [.SSNAM,,N]
.LOGOUT
.OPEN ERRC,ERRFIL
.VALUE
ERR0: .IOT ERRC,B ;COPY ERR DEV TO TTY.
CAIN B,^L
JRST ERR1
.IOT TYO,B
JRST ERR0
ERR1: .RESET TYI,
JRST IN
ERRFIL: SIXBIT/ ERR/
1?0
OPEN: MOVEI A,2
HLL A,INFIL
MOVSM A,INFIL
CAME N,INFIL+3
.SUSET [.SSNAM,,INFIL+3]
.OPEN I,INFIL
JRST ERR
MOVEI A,3
HLL A,OUTFIL
MOVSM A,OUTFIL
MOVE A,OUTFIL+3
CAME A,INFIL+3
.SUSET [.SSNAM,,OUTFIL+3]
.OPEN O,OUTFIL
JRST ERR
CAME A,N
.SUSET [.SSNAM,,N] MOVSI A,-SYML
SETZM ST(A)
SETZM ST2(A)
AOBJN A,.-2
MOVEI E,ISYMT+1
ISL: MOVE A,-1(E)
JSP L,SYM
SKIPA B,-1(E)
.VALUE
LSH B,-16
ADD B,[1,,]
MOVEM A,ST(C)
HLLZM B,ST2(C)
TEST: CAIE E,TSS
AOJA E,ISL
MOVEI PG,1
MOVE LC,[-LEN-1,,FS-1]
MOVE E,[-BUFL,,BUF]
.IOT I,E
MOVE P,[440700,,BUF]
JRST MAIN
FF: AOS PG
U MAIN
SORT: MOVEI B,SYML/2
SORT1: MOVE C,[ST(B)]
SORT3: MOVE A,(C)
MOVEI D,@C
CAMG A,(D)
AOJA C,SORT2
EXCH A,(D)
MOVEM A,(C)
MOVE A,ST2-ST(C)
EXCH A,ST2-ST(D)
MOVEM A,ST2-ST(C)
TLO C,400000
AOS C
SORT2: CAIE D,ST+SYML-1
JRST SORT3
TLZE C,400000
JRST SORT1
CAIN B,1
JRST PH3
AOS B
LSH B,-1
JRST SORT1
PH3: MOVEI PD,PDL-1
MOVSI A,-SYML
MOVEI LL,60.
MOVEI CN,BUFL*5
MOVE P,[440700,,BUF]
PLOOP: SKIPE B,ST2(A)
TRNN B,777777
JRST PEND
MOVE TP,LL
IMULI TP,11
HRRZ C,(B)
HLLZS (B)
JUMPE C,REND
RLOOP: HRRZ D,(C)
SOS TP
HRRM B,(C)
MOVE B,C
MOVE C,D
JUMPN C,RLOOP
REND: CAIG LL,10.
SOJL TP,PAGE
MOVEI R,50
MOVE C,ST(A)
PUSHJ PD,UNDO
JRST .+5
JUMPE D,CPOPJ
MOVE D,RTAB(D)
JSP L,OUT
CPOPJ: POPJ PD,
MOVEI R,10.
MOVEI PL,11.
PENT: SOJGE PL,.+3
JSP L2,CR
MOVEI PL,10.
MENT: MOVEI D,11
JSP L,OUT
HLRZ C,(B)
PUSHJ PD,UNDO
JRST .+4
ADDI D,60
JSP L,OUT
POPJ PD,
HRRZ B,(B)
JUMPN B,PENT
JSP L2,CR
PEND: AOBJN A,PLOOP
MOVEI D,3
JSP L,OUT
JRST .-1
DONE: .CLOSE O, ;DONE!!!
.CLOSE I,
.LOGOUT
.BREAK 16,140000
UNDO: MOVE D,(PD)
AOS D
HRRM D,UNDI
UND1: IDIVI C,(R)
HRLM D,(PD)
JUMPE C,UNDI
PUSHJ PD,UND1
HLRZ D,(PD)
UNDI: JRST .
PAGE: MOVEI D,14
JSP L,OUT
MOVEI LL,60.
JRST REND+2
CR: MOVEI D,15
JSP L,OUT
MOVEI D,12
JSP L,OUT
SOSG LL
MOVEI LL,60.
JRST (L2)
OUT: SOJL CN,OUT1
IDPB D,P
JRST (L)
OUT1: MOVE E,[-BUFL,,BUF]
.IOT O,E
CAIN D,3
JRST DONE
MOVE P,[440700,,BUF]
MOVEI CN,BUFL*5
JRST OUT
U=1000,,
DTAB: REPEAT 3,U MAIN
JSP L,CC
REPEAT 10,U MAIN
JRST FF
REPEAT 27,U MAIN
ADD A,SQ.$(B)
ADD A,SQ.%(B)
REPEAT 10,U MAIN
ADD A,SQ..(B)
U MAIN
IRPC Z,,0123456789
ADD A,SQ.!Z(B)
TERMIN
U MAIN
U IGCR
REPEAT 5,U MAIN
IRPC Z,,ABCDEFGHIJKLMNOPQRSTUVWXYZ
ADD A,SQ.!Z(B)
TERMIN
REPEAT 45,U MAIN
IFN .-200-DTAB,PRINTX /LOSE LOSE/
DEFINE SQT A,B
SQUOZE 0,B+A_40
SQUOZE 0,B/50+A_40
SQUOZE 0,B/50/50+A_40
SQUOZE 0,B/50/50/50+A_40
SQUOZE 0,B/50/50/50/50+A_40
SQUOZE 0,B/50/50/50/50/50+A_40
SQ.!B: A_40
TERMIN
IRPC Z,,ABCDEFGHIJKLMNOPQRSTUVWXYZ$%
SQT 10,Z
TERMIN
SQT 4,.
IRPC Z,,0123456789
SQT 0,Z
TERMIN
RTAB: 0
IRPC Z,,0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ.$%
"Z
TERMIN
CONSTANTS
VARIABLES
INFIL: BLOCK 4
OUTFIL: BLOCK 4
PDL: BLOCK 10
DEFINE S A
SQUOZE 0,A
TERMIN
DEFINE T A
SQUOZE 4,A
TERMIN
DEFINE II A
SQUOZE 10,A
TERMIN
DEFINE MS FOO/
DEFINE M X
IRP Z,,[,FOO]
S X!!Z
TERMIN
TERMIN
TERMIN
ISYMT: S UFA
S DFN
S FSC
S IBP
S ILDB
S LDB
S IDPB
S DPB
MS L,M,B,R,RL,RM,RB
M FAD
M FSB
M FMP
M FDV
MS I,M,S
M MOVE
M MOVS
M MOVN
M MOVM
MS I,M,B
M IMUL
M MUL
M IDIV
M DIV
S ASH
S ROT
S LSH
S JFFO
S ASHC
S ROTC
S LSHC
S EXCH
S BLT
S AOBJP
S AOBJN
S JRST
S JFCL
S XCT
S PUSHJ
S PUSH
S POP
S POPJ
S JSR
S JSP
S JSA
M ADD
M SUB
MS L,E,LE,A,GE,N,G
M CAI
M CAM
M JUMP
M SKIP
M AOJ
M AOS
M SOJ
M SOS
MS I,M,B
M SETZ
M AND
M ANDCA
M SETM
M ANDCM
M SETA
M XOR
M IOR
M ANDCB
M EQV
M SETCA
M ORCA
M SETCM
M ORCM
M ORCB
M SETO
MS I,M,S,Z,ZI,ZM,ZS,O,OI,OM,OS,E,EI,EM,ES
M HLL
M HRL
M HLR
M HRR
MS N,NE,NA,NN,Z,ZE,ZA,ZN,C,CE,CA,CN,O,OE,OA,ON
M TR
M TL
M TD
M TS
S BLKI
S DATAI
S BLKO
S DATAO
S CONO
S CONI
S CONSZ
S CONSO
S APR
S PI
S PTP
S PTR
S TTY
S LPT
S DIS
S DC
S UTC
S UTS
S IBM
MS I,M,B
M CLEAR
S END
S LOC
S XWORD
S RIM1
S RIM10
S SBLK
S RIM
II TITLE
S SQUOZE
S EXP
S XWD
S .BEGIN
S REPEAT
S .END
S OCT
S CONSTA
T SIXBIT
T ASCII
S RADIX
S BLOCK
S NOSYMS
S EXPUNGE
S NULL
S EQUALS
S DEFINE ;UGH
II IRP ;UGH
II IRPC ;UGH
II IRPS ;UGH
S TERMIN
S .QUOTE
S WORD
S RELOCA
S 1PASS
S OFFSET
S IFG
S IFGE
S IFE
S IFLE
S IFN
S IFSE ;UGH
S IFSN ;UGH
S IF1
S IF2
S IFL
T PRINTX
T PRINTC
S VARIAB
S .LIBRA
T .LENGTH
S .LIFS
S .ELDC
S .LIFE
S .LIFN
S .LIFG
S .LIFLE
S .LIFGE
S .LIFL
S .SLDR
S .OP
S .FORMAT
S .STOP
S .ISTOP
S .RPCNT
S .LOP
S $.
S $R.
S .LVAL1
S .LVAL2
S .LNKOT
S .NSTGW
S .YSTGW
S .GSSET
S .TYPE
S .LIBRQ
S .GLOBAL
S .GO
S .TAG
T .ASCII
T ASCIZ
S .BYTC
S .BYTE
S .WALGN
S .IRPCNT
S .FNAM1
S .FNAM2
II .INSRT
II .I
II .F
TSS:
BUF: BLOCK BUFL
BUFE: 3_35
ST: BLOCK SYML
ST2: BLOCK SYML
FS:
LOC .\1777+4000
LEN==.-FS+1
END BEG