mirror of
https://github.com/PDP-10/its.git
synced 2026-01-19 17:39:17 +00:00
662 lines
8.1 KiB
Plaintext
Executable File
662 lines
8.1 KiB
Plaintext
Executable File
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
|
||
|