Google
 

Trailing-Edge - PDP-10 Archives - decuslib20-03 - decus/20-0094/pdp8.mac
There are 3 other files named pdp8.mac in the archive. Click here to see a list.
00100		TITLE	PDP8
00200	DEFINE WA
00300	<MOVE 1,[0,,000777]
00400	SOJG 1,.-1>
00500	DEFINE CLR
00600	<CLRBFI>
00700	DEFINE T
00800	<MOVE 2,[0,,0]
00900	>
01000	EXTERNAL START,FINISH,OPEN1,OPEN2,LOK1,ENT1,IN7,OUT7,CLOS1,CLOS2,REL
01100	ENTRY PD8
01200	AM1:DEFINE Z6
01300	<MOVE 1,[0,,0]
01400	MOVE 2,[0,,6]
01500	MOVEM 1,(2)
01600	SOJG 2,.-1
01700	T>
01800	DEFINE Z17
01900	<MOVE 1,[0,,0]
02000	MOVE 2,[0,,17]
02100	MOVEM 1,(2)
02200	SOJ 2,
02300	CAIE 2,6
02400	JUMPA .-3>
02500	DEFINE CR
02600	<OUTCHR [15]
02700	 OUTCHR [12]>
02800	DEFINE BL
02900	<OUTCHR [40]
03000	>
03100	DEFINE IN
03200	<INCHRW 1
03300	>
03400	DEFINE OUT
03500	<OUTCHR 1>
03600	AM7:DEFINE BL4
03700	<OUTCHR [40]
03800	OUTCHR [40]
03900	OUTCHR [40]
04000	OUTCHR [40]
04100	>
04200	AM8:DEFINE SPACE
04300	<OUTCHR [40]
04400	>
04500	DEFINE NUMB(A)
04600	<MOVE 12,A
04700	MOVE 11,[0,,0]
04800	ASHC 11,2
04900	ADDI 11,60
05000	OUTCHR 11
05100	MOVE 17,[0,,13]
05200	MOVE 11,[0,,0]
05300	ASHC 11,3
05400	ADDI 11,60
05500	OUTCHR 11
05600	SOJG 17,.-4
05700	OUTCHR [40]
05800	>
05900	AM10:DEFINE NUIN
06000	<MOVE 2,[0,,0]
06100	MOVE 1,[0,,0]
06200	INCHRW 1
06300	SUBI 1,60
06400	IMULI 2,10
06500	ADD 2,1
06600	INCHRW 1
06700	CAIE 1,15
06800	JUMPA .-5
06900	>
07000	A:JUMPA M1+1
07100	H:CR
07200	NUMB(2)
07300	CR
07400	Z17
07500	Z6
07600	IN
07700	V:NUIN
07800	BL
07900	V2:JSA 16,MN
08000	ARG 2
08100	CR
08200	NUMB(2)
08300	Z17
08400	Z6
08500	IN
08600	CR
08700	IN
08800	IN
08900	JSA 16,RUPT
09000	ARG 1
09100	ZT:CR
09200	CLR
09300	NUIN
09400	MOVEM 2,3
09500	CR
09600	CLR
09700	NUIN
09800	JSA 16,LIM
09900	ARG 3
10000	ARG 2
10100	CR
10200	NUMB(3)
10300	CR
10400	JUMPA IN1
10500	MN:0
10600	MOVE 6,@(16)
10700	ASHC 5,27
10800	ASH 6,-27
10900	MOVE 5,[0,,7777]
11000	TDCN 6,5
11100	HJ:AOJ 6,
11200	AOJ 6,
11300	MOVEM 6,@(16)
11400	JRA 16,1(16)
11500	RUPT:0
11600	MOVE 1,@(16)
11700	CAIE 1,41
11800	JRA 16,1(16)
11900	M200:OUTSTR [ASCIZ/!!!!...INTERUPTION...!!!/]
12000	CR
12100	M201:OUTSTR [ASCIZ/INPUT LOW LC TO TRANSLATE/]
12200	CR
12300	NUIN
12400	MOVEM 2,3
12500	CR
12600	M203:OUTSTR [ASCIZ/ UP LC TO TRANS./]
12700	CR
12800	IN
12900	NUIN
13000	JSA 16,TRANS
13100	ARG 3
13200	ARG 2
13300	CR
13400	JRA 16,1(16)
13500	TRANS:0
13600	CR
13700	MOVE 6,@(16)
13800	MOVE 7,@1(16)
13900	MOVE 10,[0,,PD8]
14000	ADD 6,6
14100	ADD 7,7
14200	ADD 6,10
14300	ADD 7,10
14400	A76:MOVE 10,[0,,3]
14500	CAMGE 7,6
14600	JUMPA OUT1
14700	CR
14800	BL4
14900	MOVE 12,@6
15000	NUMB (12)
15100	Y:BL
15200	BL
15300	MOVE 12,(6)
15400	AS12:MOVE 11,[0,,0]
15500	AS1:ASHC 11,10
15600	OUTCHR 11
15700	AS45:MOVE 11,[0,,0]
15800	AS43:ASHC 11,11
15900	OUTCHR 11
16000	SOJG 10,AS45
16100	BL
16200	BL
16300	AOJ 6,
16400	MOVE 12,@6
16500	NUMB(12)
16600	CR
16700	YZ:AOJ 6,
16800	JUMPA A76
16900	OUT1:MOVE 10,[0,,PD8]
17000	JRA 16,2(16)
17100	EXAM:0
17200	MOVE 14,@(16)
17300	KT:JSA 16,TRANS
17400	ARG 14
17500	ARG 14
17600	MOVE 14,@1(16)
17700	JSA 16,TRANS
17800	ARG 14
17900	ARG 14
18000	JRA 16,2(16)
18100	
18200	
18300	
18400	LIM:0
18500	MOVE 17,@(16)
18600	SX:CAIGE 17,200
18700	JUMPA L
18800	SUBI 17,200
18900	CAIL 17,200
19000	JUMPA .-2
19100	AX:MOVEM 17,15
19200	MOVE 17,@(16)
19300	SUB 17,15
19400	L1:MOVE 15,@1(16)
19500	SUB 15,17
19600	CAIGE 15,0
19700	JUMPA PZ
19800	CAIL 15,200
19900	JUMPA ER
20000	MOVE 17,[0,,1]
20100	OKA:MOVEM 15,@(16)
20200	MOVEM 17,@1(16)
20300	J0:JRA 16,2(16)
20400	L:MOVE 17,[0,,0]
20500	JUMPA L1
20600	PZ:MOVE 17,@1(16)
20700	MOVEM 17,@(16)
20800	MOVE 17,[0,,0]
20900	MOVEM 17,@1(16)
21000	JRA 16,2(16)
21100	ER:CR
21200	OUTSTR [ASCIZ/OUT OF PAGE ADRESS/]
21300	CR
21400	MOVE 17,@(16)
21500	MOVE 15,@1(16)
21600	KU:JSA 16,EXAM
21700	ARG 17
21800	ARG 15
21900	MOVE 17,[0,,0]
22000	MOVEM 17,@(16)
22100	MOVEM 17,@1(16)
22200	JRA 16,2(16)
22300	COM:101116104;		AND
22400	COMA:0000
22500	C01:124101104;		TAD
22600	C01A:1000
22700	C02:111123132;		ISZ
22800	C02A:2000
22900	C03:104103101;		DCA
23000	C03A:3000
23100	C04:112115123;		JMS
23200	C04A:4000
23300	C05:112115120;		JMP
23400	C05A:5000
23500	C06:111117124;		IOT
23600	C06A:6000
23700	C07:117120122;		OPR
23800	C07A:7000
23900	C08:116117120;		NOP
24000	C08A:7000
24100	C09:103114101;		CLA
24200	C09A:7200
24300	C10:103114114;		CLL
24400	C10A:7100
24500	C11:103115101;		CMA
24600	C11A:7040
24700	C12:102115114;		CML
24800	C12A:7020
24900	C13:122101122;		RAR
25000	C13A:7010
25100	C14:122101114;		RAL
25200	C14A:7004
25300	C15:122124122;		RTR
25400	C15A:7012
25500	C16:122124114;		RTL
25600	C16A:7006
25700	C17:111101103;		IAC
25800	C17A:7001
25900	C18:102123127;		BSW
26000	C18A:7002
26100	C19:123115101;		SMA
26200	C19A:7500
26300	C20:123132101;		SZA
26400	C20A:7440
26500	C21:123120101;		SPA
26600	C21A:7510
26700	C22:123116101;		SNA
26800	C22A:7450
26900	C23:123116114;		SNL
27000	C23A:7420
27100	C24:123132114;		SZL
27200	C24A:7430
27300	C25:123113120;		SKP
27400	C25A:7410
27500	C26:117123122;		OSR
27600	C26A:7404
27700	C27:110114124;		HLT
27800	C27A:7402
27900	C28:103114101;		CLA
28000	C28A:7600
28100	C29:113103106;		KCF
28200	C29A:6030
28300	C30:113123106;		KSF
28400	C30A:6031
28500	C31:113103103;		KCC
28600	C31A:6032
28700	C32:113122123;		KRS
28800	C32A:6034
28900	C33:113111105;		KIE
29000	C33A:6035
29100	C34:113122102;		KRB
29200	C34A:6036
29300	C35:123120106;		SPF
29400	C35A:6040
29500	C36:124123106;		TSF
29600	C36A:6041
29700	C37:124103106;		TCF
29800	C37A:6042
29900	C38:124120103;		TPC
30000	C38A:6044
30100	C39:123120111;		SPI
30200	C39A:6045
30300	C40:124114123;		TLS
30400	C40A:6046
30500	C41:123113117116;	SKON
30600	C41A:6000
30700	C42:111117116;		ION
30800	C42A:6001
30900	C43:111117106;		IOF
31000	C43A:6002
31100	C44:123122121;		SRQ
31200	C44A:6003
31300	C45:107124106;		GTF
31400	C45A:6004
31500	C46:122124106;		RTF
31600	C46A:6005
31700	C47:123107124;		SGT
31800	C47A:6006
31900	C48:103101106;		CAF
32000	C48A:6007
32100	C49:116117120;		NOP
32200	C49A:7000
32300	PD8:101102103104
32400	PD81:1000
32500	PD82:103104105106
32600	PD83:3000
32700	PD84:102102102102
32800	PD85:3400
32900	PD86:101101101061
33000	PD87:2000
33100	PD88:103103103062
33200	PD89:1010
33300	PD90:101060060060
33400	PD91:0000
33500	PD92:BLOCK 11000
33600	LMAX:0
33700	LAB:BLOCK 502
33800	LC:0
33900	ALC:0
34000	PD:0
34100	PD1:0
34200	CELL:10000
34300	ZER:0
34400	X1:0
34500	X2:0
34600	X3:0
34700	X4:0
34800	X5:0
34900	X6:0
35000	X7:0
35100	X8:0
35200	X9:0
35300	X10:0
35400	X11:0
35500	X12:0
35600	X13:0
35700	X22:0
35800	STA:0
35900	F500:5000
36000	CR
36100	CLR
36200	IN1:MOVE 10,[0,,LAB]
36300	MOVEM 10,X9
36400	MOVE 10,[0,,LC]
36500	MOVEM 10,ALC
36600	Z17
36700	Z6
36800	M0:OUTSTR [ASCIZ/INITIALIZATION WILL BE DONE NOW/]
36900	CR
37000	CLR
37100	A1:Z6
37200	AH:MOVEM 1,PD8(2)
37300	AOJ 2,
37400	MOVEM 3,PD8(2)
37500	AOJ 2,
37600	CAMGE 2,F500
37700	AOJA 1,AH
37800	MOVE 10,[0,,LAB]
37900	MOVE 2,LMAX
38000	ADD 2,2
38100	ADD 10,2
38200	MOVEM 10,X9
38300	M1:OUTSTR [ASCIZ/PD8 TABLE NUMBERED/]
38400	CR
38500	M2:OUTSTR [ASCIZ/INPUT PROGRAM     /]
38600	CR
38700	CLR
38800	A31:Z6
38900	A3:BL
39000	CLR
39100	IN
39200	CAIE 1,52
39300	JUMPA A3
39400	BL
39500	CLR
39600	A4:NUIN
39700	MOVEM 2,LC
39800	MOVEM 2,X1
39900	CR
40000	OUTSTR [ASCIZ/LC VALUE (*) KNOWN IS IN LC/]
40100	CR
40200	CLR
40300	MOVE 2,LC
40400	ADD 2,2
40500	CAIL 2,CELL
40600	JUMPA INVAL
40700	Z6
40800	JUMPA A60
40900	INVAL:CR
41000	MZ5:OUTSTR [ASCIZ/TOO HIGH !!!!!/]
41100	CR
41200	JUMPA A31
41300	A60:Z6
41400	A61:CR
41500	CLR
41600	Z6
41700	A6:IN
41800	MOVEM 1,X22
41900	JSA 16,RUPT
42000	ARG 1
42100	OUTCHR 5
42200	CLR
42300	MOVE 1,X22
42400	CAIN 1,41
42500	JUMPA A61
42600	CAIN 1,100
42700	JUMPA COMP
42800	CAIN 1,52
42900	JUMPA  A4
43000	TAB1:CAIN 1,11
43100	JUMPA LBEN
43200	LABL:MOVE 10,X9
43300	MOVE 13,[0,,2]
43400	A7:ASH 2,11   ;CHECK !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
43500	ADD 2,1
43600	SOJE 13,A8
43700	MOVE 1,[0,,0]
43800	IN
43900	JUMPA A7
44000	A8:MOVEM 2,(10)
44100	MOVEM 2,X2
44200	AOJ 10,
44300	MOVE 2,LC
44400	MOVEM 2,(10)
44500	AOJ 10,
44600	MOVEM 10,X9
44700	AOS ,LMAX
44800	JUMPA GAS
44900	LBEN:BL4
45000	GAS:BL4
45100	CLR
45200	Z17
45300	Z6
45400	A98:BL
45500	CLR
45600	A9:INCHRW 1
45700	CAIN 1,72
45800	JUMPA COMN
45900	CAIN 1,54
46000	JUMPA NUMER
46100	JUMPA A98
46200	NUMER:CLR
46300	IN
46400	CAIN 1,55
46500	JUMPA MINUS
46600	Z6
46700	PLUS:CLR
46800	IN
46900	CAIN 1,15
47000	JUMPA PUT1
47100	CAIGE 1,60
47200	JUMPA PLUS
47300	SUBI 1,60
47400	IMULI 2,10
47500	ADD 2,1
47600	JUMPA PLUS
47700	PUT1:MOVEM 2,X4
47800	Z6
47900	JUMPA A10
48000	MINUS:MOVE 17,[0,,6]
48100	M8:OUTSTR [ASCIZ/(MINUS)/]
48200	CLR
48300	Z6
48400	JUMPA PLUS
48500	A10:CAIE 17,6
48600	JUMPA PUT
48700	MOVE 17,[0,,0]
48800	MOVE 6,X4
48900	JSA 16,MN
49000	ARG 6
49100	MOVEM 6,X4
49200	PUT:BL
49300	CLR
49400	CLR
49500	Z17
49600	Z6
49700	MOVE 1,[0,,PD8]
49800	MOVE 2,LC
49900	ADD 2,2
50000	AOJ 2,
50100	ADD 2,1
50200	MOVE 3,X4
50300	MOVEM 3,(2)
50400	Z17
50500	Z6
50600	BL
50700	CLR
50800	A11:IN
50900	CAIN 1,100
51000	JUMPA COMP
51100	CAIE 1,15
51200	JUMPA  OPR
51300	BL
51400	CLR
51500	LC1:MOVE 2,LC
51600	AOJ 2,
51700	MOVEM 2,LC
51800	MOVEM 2,X1
51900	BL4
52000	
52100	CR
52200	CLR
52300	Z17
52400	Z6
52500	JUMPA A6
52600	COMN:BL
52700	CLR
52800	Z17
52900	Z6
53000	MOVE 3,[0,,3]
53100	A20:IN
53200	ASH 2,11
53300	ADD 2,1
53400	SOJG 3,A20
53500	MOVE 4,[0,,COM]
53600	MOVE 3,[0,,60]
53700	CN:CAMN 2,(4)
53800	JUMPA FIND
53900	AOJ 4,
54000	AOJ 4,
54100	SOJG 3,CN
54200	NOFND:BL
54300	MNOF:OUTSTR [ASCIZ/NO SUCH COMMAND,TRY AGAIN/]
54400	CLR
54500	JUMPA COMN
54600	FIND:AOJ 4,   
54700	MOVE 1,(4)
54800	MOVEM 1,X4
54900	Z17
55000	Z6
55100	JUMPA PUT
55200	COMP:CR
55300	M50:OUTSTR [ASCIZ/COMPILATION STARTS/]
55400	CR
55500	CLR
55600	Z17
55700	Z6
55800	MOVEM 1,X7
55900	MOVE 13,[0,,PD8]
56000	MOVE 10,X9
56100	MOVE 4,[0,,LAB]
56200	MOVE 1,[0,,PD8]
56300	K9:MOVE 3,(1)
56400	ASH 3,-13
56500	JUMPG 3,POD
56600	AJ1:EXCH 11,X7
56700	AOJ 11,
56800	EXCH 11,X7
56900	AJ:AOJ 1,
57000	AOJ 1,
57100	MOVE 3,[0,,0]
57200	CAIGE 1,4777
57300	JUMPA K9
57400	JUMPA ENCO
57500	POD:MOVE 4,[0,,LAB]
57600	POD1:MOVE 3,(1)
57700	CAMN 3,(4)
57800	JUMPA SET
57900	AOJ 4,
58000	AOJ 4,
58100	CAML 4,X9
58200	JUMPA NOLAB
58300	JUMPA POD1
58400	SET:AOJ 4,
58500	MOVE 5,(4)
58600	MOVE 13,X7
58700	JSA 16,LIM
58800	ARG 13
58900	ARG 5
59000	ASH 5,7
59100	ADD 5,13
59200	AOJ 1,
59300	ADD 5,(1)
59400	MOVEM 5,(1)
59500	SOJ 1,
59600	MOVE 13,X7
59700	MOVEM 13,(1)
59800	JUMPA    AJ1
59900	NOLAB:CR
60000	OUTSTR [ASCIZ/LABEL NOT FOUND/]
60100	CR
60200	CLR
60300	MOVE 15,X7
60400	JSA 16,TRANS
60500	ARG 15
60600	ARG 15
60700	CR
60800	JUMPA AJ1
60900	ENCO:CLR
61000	Z17
61100	Z6
61200	ENCO1:CR
61300	OUTSTR [ASCIZ/!!! TO INTERRUPT, ANYTHING TO CONTINUE/]
61400	CLR
61500	IN
61600	JSA 16,RUPT
61700	ARG 1
61800	JUMPA CENT
61900	EX:OUTSTR [ASCIZ/START EXEC. AT LABEL:/]
62000	BL
62100	Z17
62200	Z6
62300	CLR
62400	EX1:MOVE 3,[0,,2]
62500	KOP:IN
62600	ASH 2,11
62700	ADD 2,1
62800	SOJG 3,KOP
62900	MOVEM 2,X11
63000	MOVE 1,[0,,LAB]
63100	EX12:CAMN 2,(1)
63200	JUMPA STR
63300	AOJ 1,
63400	AOJ 1,
63500	CAMGE 1,X9
63600	JUMPA EX12
63700	OUTSTR [ASCIZ/      NO     SUCH LABEL /]
63800	JUMPA CENT
63900	STR:AOJ 1,
64000	MOVE 2,(1)
64100	MOVEM 2,STA
64200	MOVEM 2,X11
64300	JUMPA ST12
64400	OPR:CLR
64500	MOVEM 1,2
64600	CLR
64700	CAIN 2,111
64800	JUMPA I1
64900	OPR1:MOVE 3,[0,,1]
65000	Q97:ASH 2,11
65100	IN
65200	ADD 2,1
65300	SOJG 3,Q97
65400	MOVEM 2,X5
65500	MOVE 1,[0,,PD8]
65600	MOVE 3,LC
65700	ADD 3,3
65800	ADD 1,3
65900	MOVE 2,X5
66000	MOVEM 2,(1)
66100	BL
66200	CLR
66300	JUMPA LC1
66400	I1:BL
66500	MOVE 17,[0,,400]
66600	MOVE 1,[0,,PD8]
66700	MOVE 2,LC
66800	ADD 2,2
66900	AOJ 2,
67000	ADD 2,1
67100	MOVE 3,(2)
67200	ADD 3,17
67300	MOVEM 3,(2)
67400	CLR
67500	Z17
67600	Z6
67700	IN
67800	MOVEM 1,2
67900	JUMPA OPR1
68000	DEFINE MAP(AC,W)
68100	<MOVE 12,[0,,0]
68200	LDB 12,[POINT W,AC,35]
68300	MOVE AC,12>
68400	DEFINE LOC(%AK,%ZP,%YU)
68500	<MOVE 3,PD8(2)
68600	MOVE 6,[0,,0]
68700	MOVE 5,[0,,0]
68800	LDB 5,[POINT 7,3,35]
68900	LDB 6,[POINT 1,3,28]
69000	SOJL 6,%ZP
69100	MOVE 10,STA
69200	CAIGE 10,200
69300	JUMPA %AK
69400	SUBI 10,200
69500	JUMPA .-3
69600	%AK:MOVE 11,STA
69700	SUB 11,10
69800	ADD 5,11
69900	%ZP:IMULI 5,2
70000	MOVE 4,5
70100	SETZ 6
70200	LDB 6,[POINT 1,PD8(2),27]
70300	SOJL 6,%YU
70400	AOJ 5,
70500	MOVE 4,PD8(5)
70600	IMULI 4,2
70700	%YU:AOJ 4,>
70800	DEFINE DEBUG
70900	<
71000	MOVEM 2,X1
71100	MOVEM 4,X2
71200	MOVEM 15,X3
71300	OUTSTR [ASCIZ/!  TO DEBUG ANYTHING TO CONTINUE/]
71400	CLR
71500	IN
71600	JSA 16,RUPT
71700	ARG 1
71800	CLR
71900	MOVE 2,X1
72000	MOVE 4,X2
72100	MOVE 15,X3
72200	OUTSTR [ASCIZ/END OF DEBUG/]
72300	>
72400	DEFINE ACUM
72500	<LSH 15,27
72600	LSH 15,-27
72700	>
72800	DEFINE TYPE(A)
72900	<CLR
73000	NUMB(A)
73100	CR>
73200	CENTO:CLR
73300	CENT:OUTSTR[ASCIZ/CENT/]
73400	CR
73500	CLR
73600	IN
73700	MOVEM 1,0
73800	JSA 16,RUPT
73900	ARG 1
74000	MOVE 1,0
74100	CAIN 1,64
74200	JUMPA IN1
74300	CAIN 1,65
74400	JUMPA M2
74500	CAIN 1,61
74600	JSA 16,START
74700	CAIN 1,62
74800	JSA 16,FINISH
74900	CAIN 1,63
75000	JUMPA RD
75100	CAIN 1,66
75200	JUMPA RITE
75300	CAIN 1,77
75400	JUMPA RELI
75500	CAIN 1,102
75600	JUMPA COMP
75700	CAIN 1,103
75800	JUMPA EX
75900	CAIN 1,104
76000	JUMPA EX
76100	JUMPA CENT
76200	RD:JSA 16,OPEN1
76300	JSA 16,LOK1
76400	JSA 16,IN7
76500	JSA 16,CLOS1
76600	JUMPA CENT
76700	RITE:JSA 16,OPEN2
76800	JSA 16,ENT1
76900	JSA 16,OUT7
77000	JSA 16,CLOS2
77100	JUMPA CENT
77200	RELI:JSA 16,REL
77300	JUMPA CENT
77400	BEN:OUTSTR [ASCIZ/TYPE 1,2,3,4,5,6,7,A,B,C,D/]
77500	CR
77600	OUTSTR [ASCIZ/B: COMPILE, C OR D: EXECUTE, /]
77700	OUTSTR [ASCIZ/3: COPY FROM DISK, 6: WRITE ON DISK/]
77800	CR
77900	OUTSTR [ASCIZ/4: TO START WRITING PROGRAM WITH * (DESTROYS OTHER PROGRAMS ON FILE)/]
78000	CR
78100	OUTSTR [ASCIZ/5: START PROGRAM INPUT (PRESERVES OTHER PROGRAMS ON FILE/]
78200	CR
78300	OUTSTR [ASCIZ/UPPER CASE 1(!): INTERRUPT FACILITY TO EXAMINE COMPILATION ANYWHERE/]
78400	CR
78500	JUMPA CENT
78600	DEFINE CMA(%TMSK)
78700	<TDCN 15,%TMSK
78800	ARG 16
78900	JUMPA BAK2
79000	%TMSK:7777
79100	>
79200	ST12:Z17
79300	Z6
79400	ST:CLR
79500	CR
79600	CLR
79700	MOVE 2,STA
79800	ADD 2,2
79900	AOJ 2,
80000	BEG:LDB 1,[POINT 3,PD8(2),26]
80100	CAIN 1,7
80200	JUMPA OPM
80300	CAIN 1,6
80400	JUMPA TTY
80500	ME:MOVE 17,[0,,0]
80600	CAME 1,MRI(17)
80700	AOJA 17,.-1
80800	MOVEM 17,X11
80900	LOC
81000	MOVE 10,[0,,MEM]
81100	MOVE 17,X11
81200	ADD 10,17
81300	JUMPA 1,(10)
81400	BAC:ACUM
81500	ADDI 2,2
81600	JUMPA BEG
81700	OPM:MOVE 17,[0,,0]
81800	MOVE 3,[0,,0]
81900	MOVE 3,PD8(2)
82000	CAME 3,OMI(17)
82100	AOJA 17,.-1
82200	MOVE 10,[0,,OPER]
82300	ADD 10,17
82400	JUMPA 1,(10)
82500	BAK2:ACUM
82600	FD:ADDI 2,2
82700	GH:JUMPA .+1
82800	JUMPA BEG
82900	TTY:MOVE 17,[0,,0]
83000	MOVE 3,PD8(2)
83100	CAME 3,IOT(17)
83200	AOJA 17,.-1
83300	MOVE 10,[0,,TRN]
83400	ADD 10,17
83500	JUMPA 1,(10)
83600	BAC3:ADDI 2,2
83700	JUMPA BEG
83800	MRI:0
83900	1
84000	2
84100	3
84200	4
84300	5
84400	OMI:7010
84500	7004
84600	7200
84700	7100
84800	7402
84900	7450
85000	7420
85100	7510
85200	7000
85300	7040
85400	7020
85500	7001
85600	7002
85700	7012
85800	7006
85900	7500
86000	7440
86100	7430
86200	7410
86300	7404
86400	IOT:6030
86500	6031
86600	6032
86700	6034
86800	6035
86900	6036
87000	6040
87100	6041
87200	6042
87300	6044
87400	6045
87500	6046
87600	DEFINE AND(%A)
87700	<MOVEI 7,13
87800	MOVE  3,[0,,0]
87900	MOVE 5,[0,,0]
88000	MOVE 6,[0,,0]
88100	%A:ILDB 3,[POINT 1,15,23]
88200	ILDB 5,[POINT 1,PD8(4),23]
88300	ADD 3,5
88400	CAIN 3,2
88500	AOJ 6,
88600	LSH 6,1
88700	MOVE 3,[0,,0]
88800	SOJG 7,%A
88900	MOVE 15,6
89000	JUMPA BAC>
89100	DEFINE ISZ(%T)
89200	<MOVE 3,PD8(4)
89300	AOJ 3,
89400	MOVEM 3,PD8(4)
89500	CAIN 3,10000
89600	JUMPA %T
89700	CAIN 3,0
89800	%T:ADDI 2,2
89900	JUMPA BAC>
90000	DEFINE DCA
90100	<MOVE 3,15
90200	MAP(15,12)
90300	MOVEM 15,PD8(4)
90400	MOVE 15,[0,,0]
90500	LDB 15,[POINT 1,3,23]
90600	ROT 15,14
90700	JUMPA BAC>
90800	DEFINE JMS
90900	<ADDI 2,2
91000	MOVE 3,2
91100	MOVE 5,4
91200	IDIVI 3,2
91300	MOVE 4,5
91400	MOVEM 3,PD8(4)
91500	MOVE 2,4
91600	JUMPA BAC>
91700	DEFINE JMP
91800	<MOVE 2,4
91900	JUMPA GH>
92000	DEFINE ROTR
92100	<MAP(15,13)
92200	ARG 16
92300	ROT 15,-1
92400	MOVE 3,[0,,0]
92500	LDB 3,[POINT 1,15,0]
92600	DPB 3,[POINT 1,15,23]
92700	MAP(15,13)
92800	>
92900	DEFINE ROTL
93000	<LSH 15,27
93100	LSH 15,-27
93200	ROT 15,1
93300	MOVE 3,[0,,0]
93400	LDB 3,[POINT 1,15,22]
93500	DPB 3,[POINT 1,15,35]
93600	MAP(15,13)
93700	>
93800	DEFINE RAR
93900	<ROTR
94000	JUMPA BAK2>
94100	DEFINE RAL
94200	<ROTL
94300	JUMPA BAK2>
94400	DEFINE CLA
94500	<MOVE 3,15
94600	MOVE 15,[0,,0]
94700	LDB 15,[POINT 1,3,23]
94800	ROT 15,14
94900	JUMPA BAK2>
95000	DEFINE CLL
95100	<MOVE 3,[0,,0]
95200	DPB 3,[POINT 24,15,23]
95300	JUMPA BAK2>
95400	DEFINE SNA(%B)
95500	<CAIN 15,0
95600	JUMPA %B
95700	CAIN 15,10000
95800	JUMPA %B
95900	ADDI 2,2
96000	%B:JUMPA BAK2>
96100	DEFINE SNL
96200	<MOVE 3,[0,,0]
96300	LDB 3,[POINT 1,15,23]
96400	CAIE 3,0
96500	ADDI 2,2
96600	JUMPA BAK2>
96700	DEFINE TAD
96800	<ADD 15,PD8(4)
96900	JUMPA BAC>
97000	DEFINE HLT(%ENQ)
97100	<CR
97200	OUTSTR [ASCIZ/AC AT END OF EXECUTION: /]
97300	TYPE(15)
97400	%ENQ:CLR
97500	DEBUG
97600	OUTCHR [15]
97700	OUTCHR [12]
97800	OUTSTR [ASCIZ/UPPERCASE L(\) TO EXIT, ANYTHING TO DEBUG AGAIN/]
97900	OUTCHR [15]
98000	OUTCHR [12]
98100	CLRBFI
98200	IN
98300	CAIN 1,134
98400	JUMPA OVER
98500	JUMPA %ENQ>
98600	MEM:JUMPA ANDS
98700	JUMPA TADS
98800	JUMPA ISZS
98900	JUMPA DCAS
99000	JUMPA JMSS
99100	JUMPA JMPS
99200	ANDS:AND
99300	TADS:TAD
99400	ISZS:ISZ
99500	DCAS:DCA
99600	JMSS:JMS
99700	JMPS:JMP
99800	RARS:RAR
99900	RALS:RAL
     
00100	CLAS:CLA
00200	CLLS:CLL
00300	HLTS:HLT
00400	SNAS:SNA
00500	SNLS:SNL
00600	DEFINE SPA(%R)
00700	<MOVEM 15,X3
00800	ACUM
00900	CAIL 15,4000
01000	JUMPA %R
01100	ADDI 2,2
01200	%R:MOVE 15,X3
01300	JUMPA BAK2>
01400	DEFINE ZERO
01500	<MOVE 3,[0,,0]
01600	DPB 3,[POINT 23,15,22]>
01700	DEFINE CML
01800	<MOVE 5,[0,,0]
01900	MOVE 3,[0,,0]
02000	LDB 3,[POINT 1,15,23]
02100	CAIN 3,0
02200	MOVEI 5,1
02300	DPB 5,[POINT 1,15,23]
02400	JUMPA BAK2>
02500	DEFINE RTR
02600	<ROTR
02700	ROTR
02800	JUMPA BAK2>
02900	DEFINE RTL
03000	<ROTL
03100	ROTL
03200	JUMPA BAK2>
03300	DEFINE IAC
03400	<ZERO
03500	AOJ 15,
03600	JUMPA BAK2>
03700	DEFINE SMA
03800	<ZERO
03900	CAIL 15,4000
04000	ADDI 2,2
04100	JUMPA BAK2>
04200	DEFINE SZA
04300	<ZERO
04400	CAIE 15,0
04500	CAIN 15,10000
04600	ADDI 2,2
04700	JUMPA BAK2>
04800	DEFINE SZL
04900	<MOVE 3,[0,,0]
05000	LDB 3,[POINT 1,15,23]
05100	CAIN 3,0
05200	ADDI 2,2
05300	JUMPA BAK2>
05400	DEFINE SKP
05500	<ADDI 2,2
05600	JUMPA BAK2>
05700	DEFINE CLEAR
05800	<MOVE 3,15
05900	MOVE 15,[0,,0]
06000	LDB 15,[POINT 1,3,23]
06100	ROT 15,14>
06200	DEFINE KCF
06300	<JUMPA BAC3>
06400	DEFINE KSF
06500	<CLR
06600	ADDI 2,2
06700	JUMPA BAC3>
06800	DEFINE KCC
06900	<CLEAR
07000	CLR
07100	JUMPA BAC3>
07200	DEFINE KRS
07300	<CR
07400	OUTSTR [ASCIZ/ENTER CHARACTER: /]
07500	INCHRW 15
07600	ADDI 15,200
07700	CR
07800	CLR
07900	JUMPA BAC3>
08000	DEFINE KRB
08100	<CLEAR
08200	CLR
08300	KRS>
08400	DEFINE TFL
08500	<JUMPA BAC3>
08600	DEFINE TSF
08700	<CLR
08800	ADDI 2,2
08900	JUMPA BAC3>
09000	DEFINE TCF
09100	<CLR
09200	JUMPA BAC3>
09300	DEFINE TPC
09400	<MOVE 5,[0,,0]
09500	MOVE 5,15
09600	MAP(5,7)
09700	OUTCHR 5
09800	JUMPA BAC3
09900	>
10000	DEFINE TLS<TPC>
10100	SPAS:SPA
10200	NOPS:JUMPA BAC
10300	CMAS:CMA
10400	CMLS:CML
10500	IACS:IAC
10600	BSWS:0
10700	RTRS:RTR
10800	RTLS:RTL
10900	SMAS:SMA
11000	SZAS:SZA
11100	SZLS:SZL
11200	SKPS:SKP
11300	OSRS:0
11400	KCFS:KCF
11500	KSFS:KSF
11600	KCCS:KCC
11700	KRSS:KRS
11800	KIES:0
11900	KRBS:KRB
12000	SPFS:0
12100	TSFS:TSF
12200	TCFS:TCF
12300	TPCS:TPC
12400	SPIS:0
12500	TLSS:TLS
12600	OPER:JUMPA RARS
12700	JUMPA RALS
12800	JUMPA CLAS
12900	JUMPA CLLS
13000	JUMPA HLTS
13100	JUMPA SNAS
13200	JUMPA SNLS
13300	JUMPA SPAS
13400	JUMPA NOPS
13500	JUMPA CMAS
13600	JUMPA CMLS
13700	JUMPA IACS
13800	JUMPA BSWS
13900	JUMPA RTRS
14000	JUMPA RTLS
14100	JUMPA SMAS
14200	JUMPA SZAS
14300	JUMPA SZLS
14400	JUMPA SKPS
14500	JUMPA OSRS
14600	TRN:JUMPA KCFS
14700	JUMPA KSFS
14800	JUMPA KCCS
14900	JUMPA KRSS
15000	JUMPA KIES
15100	JUMPA KRBS
15200	JUMPA SPFS
15300	JUMPA TSFS
15400	JUMPA TCFS
15500	JUMPA TPCS
15600	JUMPA SPIS
15700	JUMPA TLSS
15800	OVER:JUMPA CENT
15900	END BEN