perm filename ARC[3,PMP] blob
sn#012955 filedate 1972-11-16 generic text, type T, neo UTF8
00100 TITLE ARC
00200
00300 ↓A←1
00400 ↓B←2 ↓C←3 ↓D←4 ↓E←5 ↓F←6 ↓G←7 ↓H←10 ↓J←11
00500 ↓P←17 ↓T←15 ↓T1←16 ↓X←13 ↓Y←14 ↓Z←12
00600
00700 FSIZE←←=10
00800 PDLEN←←200
00900 PDL: BLOCK PDLEN
01000 ZLIST: .+2
01100 ZPNT: XWD -=400,.
01200 BLOCK =400
01300 FSTPNT: 0
01400 STRTDS:
01500 DZL: 0
01600 CURZL: 0
01700 DZU: 10.0
01800 DSCL: 4.0
01850 DOSCAL: 300.0
01900 XOFF: 0
02000 YOFF: 0
02020 CLPNT1: 0
02040 CLPNT2: 0
02100 CURX: 0
02200 CURY: 0
02210 CCENTX: 0
02220 CCENTY: 0
02225 MANX: 0
02230 MANY: -70.0
02232 MANZ: 0
02235 COS: 1.0
02240 SIN: 0
02245 TPNT: 0
02250 TBUF: BLOCK 400
02300 DBLEN←←400
02400 DSP: DBUF-1
02500 0
02600 0
02700 DBUF: BLOCK DBLEN+2
02800 CURB: .+2
02900 22
03000 0
03100 CURV: 0
03200 BYTE (11)10,10(3)5,0(8)46
03300 BYTE (11)0-20,-20(14)6
03400 BYTE (11)0,20(14)46
03500 BYTE (11) 20,-20(14)6
03600 BYTE (11)0,0(3)3,0(8)46
03700 CURG: 0
03800 0
03900 BLOCK 12
04000
04100
04200 STRT: CALLI
04300 MOVE P,[XWD -PDLEN,PDL-1]
04400 EXTERN JOBREL,JOBSYM
04500 DPYPOS -400
04600 DPYSIZ 4002
04700 MOVE A,JOBSYM
04800 HLRE B,A
04900 SUB A,B
05000 ADDI A,2
05100 HRRZM A,NXTF#
05200 PUSHJ P,CORGET
05300 SETZM WCUR#
05350 SETZM FCLS#
05400 JRST MAIN
05500
00100 DEFINE TONEXT (A)
00200 { ADDI A,1
00300 MOVE X,(A)
00400 TLNE X,-1
00500 JRST .+6
00550 JUMPE X,.+5
00600 CAIN X,-1
00700 JRST .+4
00800 HRRZ A,X
00900 JRST .-7}
01000 ;→→ NEXT OK
01100 ;→→ NO NEXT
01200
01300 DEFINE GETFST (A,B)
01400 { SKIPN A,FSTPNT
01500 JSR NOFST
01600 MOVE B,(A)
01700 MOVEM B,FSTPNT}
01800
01900 DEFINE MM (AC,OFF1,I1,OFF2,I2)
02000 { MOVE AC,OFF1(I1)
02100 MOVEM AC,OFF2,(I2)}
02200
00100 CORGET: HRRZ T,JOBREL
00200 ADDI T,2000
00300 CALLI T,11
00400 JRST 4,.
00500 HRRZ T,NXTF
00600 MOVEM T,FSTPNT
00700 CG1: ADDI T,FSIZE
00800 HRRZM T,-FSIZE(T)
00900 CAMG T,JOBREL
01000 JRST CG1
01100 SUBI T,FSIZE
01200 SETZM -FSIZE(T)
01300 MOVEM T,NXTF
01400 POPJ P,
01403 NOFST: 0
01404 PUSH P,T
01406 PUSHJ P,CORGET
01407 POP P,T
01409 SOS NOFST
01412 SOS NOFST
01415 JRST @NOFST
01500
01600 DISP: MOVE A,ZLIST
01700 HRRZ B,ZPNT
01800 CAMLE A,B
01900 POPJ P,
02000 MOVE E,[XWD -DBLEN,DBUF+1]
02060 MOVEI C,14146
02080 MOVEM C,DBUF
02100 DN1: MOVE C,(A)
02200 MOVE D,(C) ;GET OBJECT TYPE
02220 SETZM 11(C)
02300 JRST @DTAB1(D) ;GO TO ROUTINE FOR OBJECT
02400 DTAB1: .-1
02500 DWALL
02600 DFLOOR
02700 DDOOR
02800 DWIND
02900 DSTAIR
03000
03100
03200 DFLOOR: MOVE D,1(C) ;GET Z LEVEL
03300 CAMGE D,DZL ;IS THIS FLOOR IN THE RANGE?
03400 JRST DNXT ;NO
03500 CAMLE D,DZU ;?
03600 JRST DNXT ;NO
03700 MOVE D,10(C) ;GET POINTER TO CORNER LIST
03800 JUMPE D,DNXT ;NONE?
03820 SETOM 11(C)
03900 MOVEM D,SAVEXY# ;SAVE POINTER TO FIRST X,Y
04000 MOVE X,(D) ;GET X
04100 MOVE Y,1(D) ;GET Y
04200 PUSHJ P,IVECT ;PUT VECTOR THERE
04300 DFL2: ADDI D,1
04400 TONEXT(D)
04500 SKIPA Y,1(D) ;GET NEXT Y
04600 JRST DFL1 ;NO NEXT
04700 PUSHJ P,VECT ;PUT VISIBLE VECTOR THERE
04800 JRST DFL2
04900 DFL1: MOVE D,SAVEXY ;GET STARTING X,Y
05000 MOVE X,(D)
05100 MOVE Y,1(D)
05200 PUSHJ P,VECT
05300 DNXT: ADDI A,1
05400 CAMG A,B
05500 JRST DN1
05600 SETZM (E)
05700 SUBI E,DBUF-2
05800 HRRZM E,DSP+1
05900 UPGIOT 5,DSP
06000 POPJ P,
06100
06200 XYVECT: FAD X,XOFF
06300 FAD Y,YOFF
06400 FMP X,DSCL
06500 FMP Y,DSCL
06600 FIX X,233000
06700 FIX Y,233000
06800 ASH X,=25
06900 DPB Y,[POINT 11,X,21]
07000 POPJ P,
07100 IVECT: PUSHJ P,XYVECT
07200 TROA X,40
07300 VECT: PUSHJ P,XYVECT
07400 TRO X,106
07500 MOVEM X,(E)
07600 AOBJN E,.+2
07700 SUBI E,1
07800 POPJ P,
07900
08000 DWALL: MOVE D,1(C) ;GET Z LEVEL
08100 CAMLE D,DZU ;WALL TOO HIGH?
08200 JRST DNXT ;YES
08300 CAMGE D,DZL ;WALL TOO LOW?
08400 JRST DNXT ;YES
08500 MOVEI F,3(C) ;POINT TO X,Y,X,Y
08600 MOVE G,2(C) ;GET THICKNESS
08650 SETOM 11(C)
08700 PUSHJ P,WALDIS ;DISPLAY THE WALL
08800 JRST DNXT
08900 WALDIS: MOVE X,(F)
09000 MOVE Y,1(F)
09100 FSB X,2(F)
09200 FSB Y,3(F)
09300 MOVEM Y,DY#
09400 MOVEM X,DX#
09500 MOVMS X
09600 MOVMS Y
09700 CAMGE X,Y
09800 EXCH X,Y
09900 FMPR Y,[0.5]
10000 FAD X,Y
10100 MOVEM X,LEN#
10200 MOVE Y,DY
10300 MOVE X,DX
10400 FMPR X,G
10500 FMPR Y,G
10600 FDVR X,LEN
10700 FDVR Y,LEN
10800 MOVEM X,DY
10900 MOVEM Y,DX
11000 DEFINE TEMP $(T1,T2,OFF,TYP)
11100 { MOVE X,OFF(F)
11200 MOVE Y,OFF+1(F)
11300 F$T1 X,DX
11400 F$T2 Y,DY
11500 PUSHJ P,TYP$VECT}
11600
11700 TEMP (AD,SB,0,I)
11800 TEMP (SB,AD,0)
11900 TEMP (SB,AD,2)
12000 TEMP (AD,SB,2)
12100 TEMP (AD,SB,0)
12200 TEMP (SB,AD,2)
12300 TEMP (AD,SB,2,I)
12400 TEMP (SB,AD,0)
12500 POPJ P,
12600
12700 CURDIS: MOVE X,CURX
12800 MOVE Y,CURY
12820 SKIPN A,CMOVE
12840 JRST .+3
12860 MOVEM X,(A)
12880 MOVEM Y,1(A)
12900 MOVEI E,CURV
13000 PUSHJ P,IVECT
13100 SETZM CURG
13200 SKIPE E,WCUR
13300 PUSHJ P,@(E)[0
13400 WCWAL
13500 WCFLR]
13600 UPGIOT 4,CURB
13700 POPJ P,
13800 WCFLR: MOVEI E,CURG
13900 MOVE B,SAVB#
14000 HLRZ C,B
14100 ADD C,B
14200 MOVE X,-2(C)
14300 MOVE Y,-1(C)
14400 PUSHJ P,IVECT
14500 MOVE B,CURV
14600 TRZ B,40
14700 MOVEM B,CURG+1
14800 MOVEI E,CURG+2
14900 MOVE B,WCUR1#
15000 MOVE X,(B)
15100 MOVE Y,1(B)
15200 PUSHJ P,VECT
15300 SETZM CURG+3
15400 POPJ P,
15500 WCWAL: MOVEI E,CURG
15600 HRLI E,400000
15700 MOVE F,WCUR1
15800 ADDI F,3
15900 MOVEI G,2(F)
16000 HRLI G,CURX
16100 BLT G,3(F)
16200 MOVE G,-1(F)
16300 PUSHJ P,WALDIS
16400 SETZM (E)
16500 POPJ P,
16600
16700 NUMDIS: SETZM DBUF
16800 AOS DBUF
16900 MOVE T,[XWD DBUF,DBUF+1]
17000 BLT T,DBUF+100
17100 MOVEI T,DBUF
17200 MOVE X,[BYTE(11)100,-700(3)4,3(8)146]
17300 MOVEI Y,STRTDS
17400 MOVEI C,3
17500 NDS1: MOVE A,(Y)
17600 FIX A,233000
17700 MOVEM X,(T)
17800 ADDI T,1
17900 HRLI T,440700
18000 PUSHJ P,NUMC
18100 ADDI T,1
18200 ADDI Y,1
18300 ADD X,[BYTE(11)200]
18400 SOJG C,NDS1
18500 SETZM (T)
18600 SUBI T,DBUF-2
18700 HRRZM T,DSP+1
18800 UPGIOT 6,DSP
18900 POPJ P,
19000 NUMC: IDIVI A,12
19100 JUMPE A,.+4
19200 HRLM B,(P)
19300 PUSHJ P,NUMC
19400 HLRZ B,(P)
19500 ADDI B,60
19600 IDPB B,T
19700 POPJ P,
19800
19900 INSCUR: MOVE X,CURX
20000 MOVE Y,CURY
20100 INSXY: HLRZ E,B
20200 ADDI E,2
20300 CAIL E,FSIZE
20400 JRST INSXN
20500 HRL B,E
20600 ADD E,B
20700 MOVEM X,-2(E)
20800 MOVEM Y,-1(E)
20900 SETZM (E)
21000 HLLOS (E)
21100 POPJ P,
21200 INSXN: PUSH P,D
21300 GETFST T,D
21400 POP P,D
21500 ADD E,B
21600 HRRZM T,-2(E)
21700 HRRZ B,T
21800 JRST INSXY
21900
22000 INTERS: MOVE T,(B)
22100 FSB T,(A) ;DX1
22200 MOVEM T,DX1#
22300 MOVE X,1(B)
22400 FSB X,1(A) ;DY1
22500 MOVEM X,DY1#
22600 FDVR T,X ;M1
22700 MOVE T1,(D)
22800 FSB T1,(C) ;DX2
22900 MOVE Y,1(D)
23000 FSB Y,1(C) ;DY2
23100 MOVEM T1,DX2#
23200 MOVEM Y,DY2#
23300 FDVR T1,Y ;M2
23400 JUMPE X,DY1ZER
23500 JUMPE Y,DY2ZER
23600 MOVE X,T
23700 FSB X,T1
23800 JUMPE X,NOI1
23900 MOVE Y,1(A)
24000 FMPR Y,T
24100 FMPR T1,1(C)
24200 FSB Y,T1
24300 FSB Y,(A)
24400 FAD Y,(C)
24500 FDVRB Y,X
24600 FSB X,1(A)
24700 FMPR X,T
24800 MOVEM X,DX
24900 FAD X,(A)
25000 DEFINE TEMP (Q,QQ)
25050 { CAMN X,(Q)
25100 CAME Y,1(Q)
25150 SKIPA
25200 JRST QQ}
25250 GOTXY: TEMP (A,EP3)
25300 TEMP (B,EP3)
25350 TEMP (C,EP4)
25400 TEMP (D,EP4)
25450 SKIPN DX1
25500 JRST IN1
25550 DEFINE TEMP (A,B,XY,XYN)
25600 { MOVE T,XYN(A)
25650 MOVE T1,XYN(B)
25700 CAML T,T1
25750 EXCH T,T1
25800 CAMGE XY,T
25850 JRST NOI1
25900 CAMLE XY,T1
25950 JRST NOI1}
26000 TEMP (A,B,X)
26050 JRST IN2
26100 IN1: TEMP (A,B,Y,1)
26150 IN2: SKIPN DX2
26200 JRST IN3
26250 TEMP (C,D,X)
26300 JRST INT1
26350 IN3: TEMP (C,D,Y,1)
27050 INT1: AOS (P)
27100 EP2: AOS (P)
27200 EP1: AOS (P)
27300 NOI1: POPJ P,
27305 EP3: SKIPN DX2
27310 JRST EPP1
27315 TEMP (C,D,X)
27320 JRST EP1
27325 EPP1: TEMP(C,D,Y,1)
27330 JRST EP1
27335 EP4: SKIPN DX1
27340 JRST EPP2
27345 TEMP (A,B,X)
27346 JRST EP2
27347 EPP2: TEMP (A,B,Y,1)
27348 JRST EP2
27350 DY1ZER: JUMPE Y,NOI1
27400 MOVE Y,1(A)
27450 MOVE X,Y
27500 FSB X,1(C)
27550 FMPR X,DX2
27600 FDVR X,DY2
27650 FAD X,(C)
27700 JRST GOTXY
27750 DY2ZER: MOVE Y,1(C)
27800 MOVE X,Y
27850 FSB X,1(A)
27900 FMPR X,DX1
27950 FDVR X,DY1
28000 FAD X,(A)
28050 JRST GOTXY
29500
29600 SQRTX: LDB T,[POINT 5,X,7]
29700 MOVNS T
29800 MOVE Y,X
29850 TLNE X,200000
29900 FSC X,(T)
30000 MOVEI T,10
30100 MOVE T1,Y
30200 FDVR T1,X
30300 FAD T1,X
30400 FDVR T1,[2.0]
30500 MOVE X,T1
30600 SOJG T,.-5
30700 POPJ P,
30800
30900 CORNL: BLOCK 10
31000 WCORN: MOVE X,3(C)
31100 MOVE Y,4(C)
31200 FSB X,5(C)
31300 FSB Y,6(C)
31400 MOVEM Y,DY
31500 MOVEM X,DX
31600 FMPR X,X
31700 FMPR Y,Y
31800 FAD X,Y
31900 PUSHJ P,SQRTX
32000 MOVEM X,LEN
32100 MOVE X,DX
32200 MOVE Y,DY
32300 FMPR X,2(C)
32400 FMPR Y,2(C)
32500 FDVR X,LEN
32600 FDVR Y,LEN
32700 DEFINE TEMP $(A,B,C)
32800 { MOV$A$M B,CORNL+C
32900 MOV$A$M B,CORNL+C+4}
33000 TEMP (E,Y,0)
33100 TEMP (N,X,1)
33200 TEMP (N,Y,2)
33300 TEMP (E,X,3)
33400 MOVE X,3(C)
33500 MOVE Y,4(C)
33600 FADM X,CORNL
33700 FADM Y,CORNL+1
33800 FADM X,CORNL+2
33900 FADM Y,CORNL+3
34000 MOVE X,5(C)
34100 MOVE Y,6(C)
34200 FADM X,CORNL+4
34300 FADM Y,CORNL+5
34400 FADM X,CORNL+6
34500 FADM Y,CORNL+7
34600 POPJ P,
34700
34800 CLDISP: SKIPN A,FCLS
34900 JRST CLDON
35000 TRZN A,10
35100 JRST @(A)[0
35200 CLDW
35300 CLDF]
35400 JRST @(A)[CLDP
35500 CLDL]
35600 CLDON: UPGIOT 7,.+3
35650 SETZM CLPNTR
35700 CPOPJ: POPJ P,
35800 PGC: .+1
35900 0
36000 0
36100 CLBP: CLBUF
36200 10
36300 CLBUF: 0
36400 0
36500 BYTE (11)0-11,-11(3)7,0(8)46
36600 BYTE (11) 22, 0(14) 6
36700 BYTE (11) 0, 22(14) 6
36800 BYTE (11)0-22, 0(14) 6
36900 BYTE (11)0 ,-22(14) 6
37000 0
37100
37200 CLDW: JSR CLCOM
37300 MOVEI D,1
37400 CLP1: MOVE C,(A)
37500 CAME D,(C)
37600 JRST CLWD
37700 SKIPN 11(C) ;DOES IT DISPLAY?
37800 JRST CLWD
37900 MOVEI E,3(C)
38000 MOVEI F,5(C)
38100 PUSHJ P,CLINE
38200 CLWD: ADDI A,1
38300 SOJG B,CLP1
38400 MOVE E,CLPNT1
38500 SKIPN CLPNTR
38600 JRST CLDON
38700 MOVE X,2(E)
38800 MOVE Y,3(E)
38900 FINLN: FAD X,(E)
39000 FAD Y,1(E)
39100 FSC X,-1
39200 FSC Y,-1
39300 CLEND: MOVEI E,CLBUF+1
39340 MOVEM X,CLSX#
39380 MOVEM Y,CLSY#
39400 PUSHJ P,IVECT
39500 UPGIOT 7,CLBP
39600 POPJ P,
39700 CLCOM: 0
39800 HRRZ A,ZLIST
39900 MOVE B,ZPNT
40000 SUBI B,-1(A)
40100 HRRZS B
40200 SETZM CLPNTR#
40300 MOVSI D,277700
40400 MOVEM D,CLDIS#
40500 JUMPE B,CLDON
40600 JRST @CLCOM
40700 CLDF: JSR CLCOM
40800 MOVEI D,2
40900 CLP2: MOVE C,(A)
41000 CAME D,(C)
41100 JRST CLFD
41200 SKIPN 11(C)
41300 JRST CLFD
41400 MOVE E,10(C) ;GET CORNER POINTER
41420 CLP3: MOVE G,E
41500 PUSHJ P,CLPNT
41550 ADDI E,1
41600 TONEXT(E)
41700 JRST CLP3
41800 CLFD: ADDI A,1
41900 SOJG B,CLP2
42000 FINPN: SKIPN CLPNTR
42100 JRST CLDON
42300 MOVE X,CLPNT1
42400 MOVE Y,CLPNT2
42500 JRST CLEND
42600 CLDP: JSR CLCOM
42700 MOVEI D,1
42800 CLP4: MOVE C,(A)
42900 CAME D,(C)
43000 JRST CLPD
43100 SKIPN 11(C)
43200 JRST CLPD
43300 PUSHJ P,WCORN
43340 MOVEI G,3(C)
43380 MOVEI H,
43400 MOVEI F,4
43500 MOVEI E,CORNL
43600 PUSHJ P,CLPNT
43700 ADDI E,2
43740 ADD G,H
43780 TRC H,2
43800 SOJG F,.-4
43900 CLPD: ADDI A,1
44000 SOJG B,CLP4
44100 JRST FINPN
44200 CLDL: JSR CLCOM
44300 MOVEI D,2
44400 CLP5: MOVE C,(A)
44500 CAME D,(C)
44600 JRST CLLD
44700 SKIPN 11(C)
44800 JRST CLLD
44900 MOVE E,10(C)
45000 MOVE G,E
45100 MOVEI F,1(E)
45200 TONEXT (F)
45300 SKIPA
45400 JRST CLLD
45500 CLP6: PUSHJ P,CLINE
45600 MOVE E,F
45650 ADDI F,1
45700 TONEXT (F)
45800 JRST CLP6
45900 MOVE F,G
46000 PUSHJ P,CLINE
46100 CLLD: ADDI A,1
46200 SOJG B,CLP5
46300 SKIPN CLPNTR
46400 JRST CLDON
46500 MOVE E,CLPNT1
46600 MOVE F,CLPNT2
46700 MOVE X,(F)
46800 MOVE Y,1(F)
46900 JRST FINLN
47000 CLPNT: MOVE X,(E)
47100 MOVE Y,1(E)
47200 FSB X,CURX
47300 FSB Y,CURY
47400 MOVMS X
47500 MOVMS Y
47600 CAMG X,Y
47700 EXCH X,Y
47800 FMPR Y,[0.5]
47900 FAD X,Y
48000 CAML X,CLDIS
48100 POPJ P,
48200 MOVEM C,CLPNTR
48300 MOVEM X,CLDIS
48350 MOVEM G,CLSPNT#
48400 HRL X,E
48420 HRRI X,CLPNT1
48440 BLT X,CLPNT2
48500 POPJ P,
48600
48700 CLINE: MOVE X,(E)
48800 MOVE Y,1(E)
48900 FSB X,(F)
49000 FSB Y,1(F)
49100 JUMPE Y,CLYZER
49200 FDVR X,Y
49300 MOVEM X,DX
49400 FMPR X,X
49500 FAD X,[1.0]
49600 PUSHJ P,SQRTX
49700 MOVEM X,LEN
49800 MOVN Y,CURY
49900 FMPR Y,DX
50000 FAD Y,CURX
50100 MOVE X,1(E)
50200 FMPR X,DX
50300 FAD X,Y
50400 FSB X,(E)
50500 FDVR X,LEN
50550 GOTLEN: MOVMS X
50600 CAML X,CLDIS
50700 POPJ P,
50800 MOVEM C,CLPNTR
50900 MOVEM X,CLDIS
51000 MOVEM E,CLPNT1
51100 MOVEM F,CLPNT2
51200 POPJ P,
51300 CLYZER: MOVE X,CURY
51400 FSB X,1(E)
51500 JRST GOTLEN
00100
00200 ;CALL WITH J POINTS TO POLYGON CORNER LIST
00300 ; G,H IS X,Y OF POINT
00400 ; USES A,B,C,D,T,T1,X,Y
00500 INSIDE: DEFINE INSID $(XYLEN,NAME)
00600 { MOVE T,(J)
00700 MOVEI A,XYLEN(J)
00800 INS$NAME$1: TONEXT(A)
00900 SKIPA
01000 JRST .+5
01100 CAMG T,(A)
01200 MOVE T,(A)
01300 ADDI A,XYLEN
01400 JRST INS$NAME$1
01500 FAD T,[2.0]
01600 MOVEM T,SAV2
01700 MOVEM H,SAV2+1
01800 MOVEI B,SAV2
01900 MOVEI A,G
02000 INS$NAME$3: MOVE D,J
02100 SETZM INTCNT#
02200 INS$NAME$2: MOVE C,D
02300 ADDI D,XYLEN
02400 TONEXT(D)
02500 SKIPA
02600 JRST TRYNX$NAME
02700 PUSHJ P,INTERS
02800 JRST INS$NAME$2
02900 JRST NOGO
03000 JRST TRYAG$NAME
03100 AOS INTCNT
03200 JRST INS$NAME$2
03300 TRYAG$NAME: MOVE T,[2.0]
03400 FADM T,SAV2+1
03500 JRST INS$NAME$3
03700 TRYNX$NAME: MOVE D,J
03800 PUSHJ P,INTERS
03900 JRST .+4
04000 JRST NOGO
04100 JRST TRYAG$NAME
04200 AOS INTCNT
04300 MOVE A,INTCNT
04400 TRNN A,1
04500 POPJ P,
04600 AOS (P)
04630 AOS (P)
04660 POPJ P,}
04690 INSID (1,A)
04700 NOGO: AOS (P)
04800 POPJ P,
04900 SAV2: BLOCK 2
05000 INSIDS: INSID(2,B)
05100
05200 ;ZORD: ORDER ZLIST BY Z LEVEL
05300 ZORD: MOVE A,ZLIST
05400 MOVE B,ZPNT
05500 SUBI B,-1(A)
05600 HRRZS B
05700 ZR2: MOVEI C,-1(B)
05800 ZR1: MOVE X,(A)
05900 MOVE Y,1(X)
06000 MOVEI D,1(A)
06100 MOVE E,C
06200 MOVE F,(D)
06300 CAMLE Y,1(F)
06400 JRST DOEX
06500 ADDI D,1
06600 SOJG E,.-4
06700 ADDI A,1
06800 SOJG C,ZR1
06900 POPJ P,
07000 DOEX: MOVE E,(A)
07100 EXCH E,(D)
07200 MOVEM E,(A)
07300 MOVE A,ZLIST
07400 JRST ZR2
07500 FRETW: JUMPE E,CPOPJ
07600 MOVE F,FSTPNT
07700 MOVEM F,(E)
07800 MOVEM E,FSTPNT
07900 HRRZ E,7(E)
08000 JUMPN E,FRETW+1
08100 POPJ P,
08200 ;WALFIX -- CALL ZORD FIRST
08300 ; CALL WITH ZLIST PNTR TO WALL IN C
08400 WALFIX: MOVE D,(C)
08500 HRRZ E,7(D)
08600 PUSHJ P,FRETW
08700 HLRZ E,7(D)
08800 PUSHJ P,FRETW
08900 SETZM LPNT#
09000 MOVE G,3(D)
09100 MOVE H,4(D)
09200 WALF6: MOVEI A,-1(C)
09300 WALF1: CAMGE A,ZLIST
09400 JRST NOAL
09500 MOVE B,(A)
09600 PUSHJ P,WALF
09700 SOJA A,WALF1
09800 GETFST (T,T1)
09900 SETZM (T)
10000 MOVE T1,1(B)
10100 MOVEM T1,1(T)
10200 MOVEM B,2(T)
10300 MOVEM G,3(T)
10400 MOVEM H,4(T)
10500 MOVEM X,5(T)
10600 MOVEM Y,6(T)
10700 MOVE G,X
10800 MOVE H,Y
10900 MOVE T1,LPNT
11000 MOVEM T1,7(T)
11100 MOVEM T,LPNT
11200 CAMN G,5(D)
11300 CAME H,6(D)
11400 JRST WALF6
11500 WALF7: MOVEM T,7(D)
11600 POPJ P,
11700
11800 NOAL: MOVE T,LPNT
11900 JRST WALF7
12000
12100 WALF: MOVE T,(B)
12200 CAIE T,2
12300 POPJ P,
12400 HRRZ J,10(B)
12500 MOVE T,[A,,SAVA]
12600 BLT T,SAVA+3
12700 PUSHJ P,INSIDE
12800 JRST WALF4
12900 JFCL
13000 MOVE D,SAVA+3
13100 MOVEI B,5(D)
13200 MOVEI A,G
13300 MOVE X,(B)
13400 MOVEM X,SV1
13500 MOVE Y,1(B)
13600 MOVEM Y,SV2
13700 FSB X,G
13800 FSB Y,H
13900 FMPR X,X
14000 FMPR Y,Y
14100 PUSHJ P,SQRTX
14200 MOVEM X,SV3
14300 MOVE D,J
14400 WALF3: MOVE C,D
14500 ADDI D,1
14600 TONEXT (D)
14700 SKIPA
14800 JRST WALF2
14900 PUSHJ P,WALINT
15000 JRST WALF3
15100 WALF2: MOVE D,J
15200 PUSHJ P,WALINT
15300 MOVEM G,SAVE
15400 MOVEM H,SAVE+1
15500 FAD G,SV1
15600 FAD H,SV2
15700 FSC G,-1
15800 FSC H,-1
15900 PUSHJ P,INSIDE
16000 JRST [MOVE G,SAVE
16100 MOVE H,SAVE+1
16200 JRST WALF4]
16300 JRST 4,.
16400 MOVE G,SAVE
16500 MOVE H,SAVE+1
16600 WASIN: MOVE X,SV1
16700 MOVE Y,SV2
16800 AOS (P)
16900 WALF4: MOVE D,[SAVA,,A]
17000 BLT D,D
17100 POPJ P,
17200
17300 SAVE: BLOCK 10
17400
17500 SAVA: BLOCK 4
17600 SV1: 0
17700 SV2: 0
17800 SV3: 0
17900
18000 WALINT: PUSHJ P,INTERS
18100 POPJ P,
18200 JRST .+2
18300 JFCL
18400 PUSH P,X
18500 PUSH P,Y
18600 FSB X,G
18700 FSB Y,H
18800 FMPR X,X
18900 FMPR Y,Y
19000 PUSHJ P,SQRTX
19100 JUMPE X,POOP
19200 CAML X,SV3
19300 JRST POOP
19400 MOVEM X,SV3
19500 POP P,SV2
19600 POP P,SV1
19700 POPJ P,
19800 POOP: POP P,X
19900 POP P,X
20000 POPJ P,
20100
20200 DO: MOVEI T,TBUF
20300 MOVEM T,TPNT#
20400 MOVE J,ZLIST
20500 MOVE A,ZPNT
20600 SUBI A,-1(J)
20700 HRRZM A,DCNT#
20800 SKIPN DCNT
20900 POPJ P,
21000 DOL1: MOVE C,(J)
21100 MOVE B,(C)
21200 CAIE B,1
21300 JRST DONEXT
21400 PUSHJ P,PWALL
21500 DONEXT: SOSLE DCNT
21600 AOJA J,DOL1
21700 MOVE A,TPNT
21800 CAIG A,TBUF
21900 POPJ P,
21950 PUSHJ P,HL
22000 MOVE E,[XWD -DBLEN,DBUF]
22100 MOVE C,Z
22200 DOL3: MOVE X,2(C)
22300 MOVE Y,3(C)
22400 PUSHJ P,DIVCT
22500 MOVE X,5(C)
22600 MOVE Y,6(C)
22700 PUSHJ P,DVCT
22800 MOVE A,FSTPNT
22900 MOVEM A,(C)
23000 MOVEM C,FSTPNT
23100 HRRZ C,1(C)
23200 JUMPN C,DOL3
23300 SETZM (E)
23400 SUBI E,DBUF-2
23500 HRRZM E,DSP+1
23600 UPGIOT 5,DSP
23700 POPJ P,
23800 DXYV: FMP X,DOSCAL
23900 FMP Y,DOSCAL
24000 FIX X,233000
24100 FIX Y,233000
24200 ASH X,=25
24300 DPB Y,[POINT 11,X,21]
24400 POPJ P,
24500 DIVCT: PUSHJ P,DXYV
24600 TROA X,40
24700 DVCT: PUSHJ P,DXYV
24800 TRO X,106
24900 MOVEM X,(E)
25000 AOBJN E,.+2
25100 SUBI E,1
25200 POPJ P,
25300
25400 ;PNTR TO WALL IN C
25500 PWALL: MOVN X,MANX
25600 MOVN Y,MANY
25700 MOVE G,5(C)
25800 MOVE H,6(C)
25900 FAD G,X
26000 FAD H,Y
26100 FAD X,3(C)
26200 FAD Y,4(C)
26300 MOVE A,G
26400 MOVE B,H
26500 MOVE E,X
26600 MOVE F,Y
26700 FMPR H,COS
26800 FMPR F,COS
26900 FMPR A,SIN
27000 FMPR X,SIN
27100 FAD H,A
27200 FAD F,X
27300 JUMPG H,.+2
27400 JUMPLE F,BEHIND
27500 FMPR G,COS
27600 FMPR E,COS
27700 FMPR Y,SIN
27800 FMPR B,SIN
27900 FSB G,B
28000 FSB E,Y ;NOW X,Y,X,Y IN E,F,G,H
28100 MOVE X,E
28200 MOVE Y,F
28300 FSB X,G
28400 FSB Y,H
28500 MOVM A,X
28600 MOVM B,Y
28700 CAMG A,B
28800 EXCH A,B
28900 FSC B,-1
29000 FAD A,B
29100 FDVR X,A
29200 FDVR Y,A
29300 JUMPL X,.+3
29400 MOVNS X
29500 MOVNS Y
29600 HRRZ D,7(C)
29700 JUMPE D,CPOPJ
29800 GETFST (Z,T1)
29900 MOVEM Z,@TPNT
30000 AOS TPNT
30100 PWA1: MOVE E,3(D)
30200 MOVE F,4(D)
30300 PUSHJ P,OFR
30400 MOVE G,E
30500 MOVE H,F
30600 MOVE E,5(D)
30700 MOVE F,6(D)
30800 PUSHJ P,OFR
30900 FAD E,Y
31000 FSB F,X
31100 FAD G,Y
31200 FSB H,X
31300 FDVR E,F
31400 FDVR G,H
31500 MOVE A,1(D)
31600 FSB A,MANZ
31700 MOVE B,A
31800 FDVR A,F
31900 FDVR B,H
31910 MOVE F
31920 MOVE F,[1.0]
31930 FDVR F,
31940 MOVE H
31950 MOVE H,[1.0]
31960 FDVR H,
32000 PUSHJ P,INSXYZ
32100 HRRZ D,7(D)
32200 JUMPN D,PWA1
32300 HLRZ D,7(C)
32400 JUMPN D,PWA2
32500 MOVE A,[100.0]
32600 FSB A,MANZ
32700 MOVE B,A
32800 MOVE E,5(C)
32900 MOVE F,6(C)
33000 PUSHJ P,OFR
33100 MOVE G,E
33200 MOVE H,F
33300 MOVE E,3(C)
33400 MOVE F,4(C)
33500 PUSHJ P,OFR
33600 FAD E,Y
33700 FSB F,X
33800 FAD G,Y
33900 FSB H,X
34000 FDVR E,F
34100 FDVR G,H
34200 FDVR A,F
34300 FDVR B,H
34310 MOVE F
34320 MOVE F,[1.0]
34330 FDVR F,
34340 MOVE H
34350 MOVE H,[1.0]
34360 FDVR H,
34400 PUSHJ P,INSXYZ
34500 POPJ P,
34600 OFR: FSB E,MANX
34700 FSB F,MANY
34800 MOVE T,E
34900 MOVE T1,F
35000 FMPR E,COS
35100 FMPR F,COS
35200 FMPR T,SIN
35300 FMPR T1,SIN
35400 FAD F,T
35500 FSB E,T1
35600 POPJ P,
35700 INSXYZ: HLRZ T,Z
35800 ADDI T,6
35900 CAIL T,FSIZE
36000 JRST INZ1
36100 HRL Z,T
36200 ADD T,Z
36300 MOVEM E,-6(T)
36400 MOVEM F,-4(T)
36500 MOVEM A,-5(T)
36600 MOVEM G,-3(T)
36700 MOVEM H,-1(T)
36800 MOVEM B,-2(T)
36900 SETZM (T)
37000 HLLOS (T)
37100 POPJ P,
37200 INZ1: PUSH P,D
37300 GETFST (T1,D)
37400 POP P,D
37500 ADD T,Z
37600 HRRZM T1,-6(T)
37700 HRRZ Z,T1
37800 JRST INSXYZ
37900
38000 BEH: FMPR G,AAA
38100 FMPR H,BBB
38200 FAD G,H
38300 FAD G,CCC
38400 POPJ P,
38500 ZCALC: MOVE T,2(F)
38600 FSB T,5(F)
38700 JUMPE T,ZC1
38800 MOVE T1,4(F)
38900 FSB T1,7(F)
39000 FDVR T1,T
39100 FSB X,2(F)
39200 FMPR X,T1
39300 FAD X,4(F)
39400 POPJ P,
39500 ZC1: MOVE T,3(F)
39600 FSB T,6(F)
39700 MOVE T1,4(F)
39800 FSB T1,7(F)
39900 FDVR T1,T
40000 FSB Y,3(F)
40100 FMPR Y,T1
40200 FAD Y,4(F)
40300 MOVE X,Y
40400 POPJ P,
40500 ABCCAL: MOVE F,J
40600 MOVE G,F
40650 ADDI G,2
40700 TONEXT (G)
40800 SKIPA H,G
40900 JRST WHAT
40950 DEZER: ADDI H,2
41000 TONEXT (H)
41100 SKIPA
41200 JRST WHAT
41300 MOVE X,(H)
41400 FSB X,(F)
41500 MOVE Y,1(H)
41600 FSB Y,1(F)
41700 MOVE A,(G)
41800 FSB A,(F)
41900 MOVE B,1(G)
42000 FSB B,1(F)
42100 MOVE C,B
42200 FMPR C,X
42300 MOVE D,A
42400 FMPR D,Y
42500 FSB C,D
42600 JUMPE C,DEZER
42700 MOVEM C,LEN
42800 MOVE C,2(G)
42900 FSB C,2(F)
43000 MOVE D,2(H)
43100 FSB D,2(F)
43200 FMPR X,C
43300 FMPR A,D
43400 FMPR Y,C
43500 FMPR B,D
43600 FSB X,A
43700 FSB Y,B
43800 FDVR X,LEN
43900 FDVR Y,LEN
43950 MOVNS Y
44000 MOVEM X,BBB#
44100 MOVEM Y,AAA#
44200 FMPR Y,(F)
44300 FMPR X,1(F)
44400 FAD X,Y
44500 FSB X,2(F)
44600 MOVNM X,CCC#
44650 AOS (P)
44700 WHAT: POPJ P,
44900
45000 HL: MOVEI A,TBUF
45100 MOVEI B,
45200 HL3: MOVE C,(A)
45300 MOVE D,C
45400 HL1: MOVE E,C
45450 ADDI C,2
45500 TONEXT (C)
45600 SKIPA
45700 JRST HL2
45800 PUSHJ P,PUTIN
45900 JRST HL1
46000 PUTIN: MOVE X,(C)
46100 FSB X,(E)
46200 JUMPE X,[MOVE X,1(C)
46300 FSB X,1(E)
46400 JUMPE X,CPOPJ
46500 JRST .+1]
46600 MOVE X,(C)
46700 GETFST (T,T1)
46800 SETZM (T)
46900 MOVEM B,1(T)
47000 HRRZ B,T
47100 MOVEM X,2(T)
47200 MOVE X,1(C)
47300 MOVEM X,3(T)
47400 MOVE X,2(C)
47500 MOVEM X,4(T)
47600 MOVE X,(E)
47700 MOVEM X,5(T)
47800 MOVE X,1(E)
47900 MOVEM X,6(T)
48000 MOVE X,2(E)
48100 MOVEM X,7(T)
48200 MOVEM A,10(T)
48300 POPJ P,
48400 HL2: MOVE C,D
48500 PUSHJ P,PUTIN
48600 ADDI A,1
48700 CAMGE A,TPNT
48800 JRST HL3
48900 MOVEI E,TBUF
49000 MOVEM B,LSPNT#
49100 HL24: MOVE J,(E)
49200 PUSHJ P,ABCCAL
49250 JRST HL30
49300 MOVE F,LSPNT
49400 MOVEI Z,
49500 HL19: SETZM BEHFLG#
49600 MOVE A,Z
49700 CAMN E,10(F)
49800 JRST HL26
49900 MOVE G,2(F)
50000 MOVE H,3(F)
50100 PUSHJ P,BEH
50200 FSB G,4(F)
50300 JUMPL G,INF1
50400 JUMPE G,ON1
50500 MOVE G,5(F)
50600 MOVE H,6(F)
50700 PUSHJ P,BEH
50800 FSB G,7(F)
50900 JUMPL G,HL4
51000 SETOM BEHFLG
51100 JRST HL4
51200 ON1: MOVE G,5(F)
51300 MOVE H,6(F)
51400 PUSHJ P,BEH
51500 FSB G,7(F)
51600 JUMPLE G,LVIN
51700 SETOM BEHFLG
51800 JRST HL4
51900 INF1: MOVE G,5(F)
52000 MOVE H,6(F)
52100 PUSHJ P,BEH
52200 FSB G,7(F)
52300 JUMPLE G,LVIN
52400 HL4: MOVEI A,2(F)
52500 MOVEI B,5(F)
52600 MOVEM Z,ZSAV#
52700 MOVEI Z,PTAB
52800 MOVE C,J
52900 HL5: MOVE D,C
53000 ADDI C,2
53100 TONEXT (C)
53200 SKIPA
53300 JRST HL6
53400 PUSHJ P,INTERS
53500 JRST HL5
53600 JRST HL5
53700 JFCL
53800 MOVEM X,(Z)
53900 MOVEM Y,1(Z)
54000 PUSHJ P,ZCALC
54100 MOVEM X,2(Z)
54200 ADDI Z,3
54300 JRST HL5
54400 HL6: MOVE C,J
54500 PUSHJ P,INTERS
54600 JRST .+10
54700 JRST .+7
54800 JFCL
54900 MOVEM X,(Z)
55000 MOVEM Y,1(Z)
55100 PUSHJ P,ZCALC
55200 MOVEM X,2(Z)
55300 ADDI Z,3
55400 CAIN Z,PTAB
55500 JRST NOINTH
55600 MOVE A,2(F)
55700 MOVEM A,(Z)
55800 MOVE B,3(F)
55900 MOVEM B,1(Z)
56000 MOVE B,4(F)
56100 MOVEM B,2(Z)
56200 MOVE C,5(F)
56300 MOVEM C,3(Z)
56400 MOVE B,6(F)
56500 MOVEM B,4(Z)
56600 MOVE B,7(F)
56700 MOVEM B,5(Z)
56800 ADDI Z,6
56900 MOVEI B,PTAB
57000 CAME A,C
57100 JRST .+3
57200 MOVEI A,1
57300 AOJA B,.+2
57400 MOVEI A,
57500 HL11: MOVEI C,3(B)
57600 HL9: MOVE D,(B)
57700 HL7: CAMLE D,(C)
57800 JRST HL8
57900 ADDI C,3
58000 CAMGE C,Z
58100 JRST HL7
58200 ADDI B,3
58300 MOVEI C,3(B)
58400 CAMGE C,Z
58500 JRST HL9
58600 JRST HL10
58700 HL8: SUB B,A
58800 SUB C,A
58900 MOVE D,(C)
59000 EXCH D,(B)
59100 MOVEM D,(C)
59200 MOVE D,1(C)
59300 EXCH D,1(B)
59400 MOVEM D,1(C)
59500 MOVE D,2(C)
59600 EXCH D,2(B)
59700 MOVEM D,2(C)
59800 MOVEI B,PTAB
59900 ADD B,A
60000 JRST HL11
60100 HL10: MOVEI B,PTAB
60200 MOVE D,(B)
60300 CAMN D,3(B)
60400 JRST HL12
60500 HL13: ADDI B,3
60600 CAMGE B,Z
60700 JRST .-5
60750 SUBI Z,3
60800 MOVEM Z,PEND#
60900 MOVEI Z,PTAB
61000 HL17: SKIPN BEHFLG
61100 JRST HL15
61200 HL16: MOVE G,(Z)
61300 MOVE H,1(Z)
61400 FAD G,3(Z)
61500 FAD H,4(Z)
61600 FSC G,-1
61700 FSC H,-1
61800 PUSHJ P,INSIDS
61900 JRST .+3
62000 JFCL
62100 JRST LVOUT
62200 LVINSK: MOVE A,ZSAV
62300 GETFST (B,0)
62400 MOVEM A,1(B)
62500 MOVEM B,ZSAV
62600 MOVEI A,2(B)
62700 HRLI A,(Z)
62800 BLT A,7(B)
62840 MOVE A,10(F)
62880 MOVEM A,10(B)
62900 LVOUT: ADDI Z,3
63000 CAMGE Z,PEND
63100 JRST HL17
63200 HL21: MOVE A,FSTPNT
63300 MOVEM A,(F)
63400 MOVEM F,FSTPNT
63500 HRRZ F,1(F)
63600 MOVE Z,ZSAV
63700 JUMPN F,HL19
63800 JRST HL23
63900 HL12: MOVE D,1(B)
64000 CAME D,4(B)
64100 JRST HL13
64200 MOVE C,B
64300 HRLI C,2(B)
64400 BLT C,(Z)
64500 SUBI Z,2
64600 JRST HL13+1
64700 PTAB: BLOCK =200
64800 HL15: MOVE A,2(Z)
64900 MOVE G,(Z)
65000 MOVE H,1(Z)
65100 FAD A,5(Z)
65200 FAD G,3(Z)
65300 FAD H,4(Z)
65400 FSC A,-1
65500 FSC G,-1
65600 FSC H,-1
65700 PUSHJ P,BEH
65800 FSB G,A
65900 JUMPG G,HL16
66000 JRST LVINSK
66100 NOINTH: SKIPN BEHFLG
66200 JRST HL20
66300 MOVE G,2(F)
66400 FAD G,5(F)
66500 FSC G,-1
66600 MOVE H,3(F)
66700 FAD H,6(F)
66800 FSC H,-1
66900 PUSHJ P,INSIDS
67000 JRST HL20
67100 JFCL
67200 JRST HL21
67300 LVIN: SKIPA A,Z
67400 HL20: MOVE A,ZSAV
67500 HL26: EXCH A,1(F)
67600 MOVE Z,F
67700 MOVE F,A
67800 JUMPN F,HL19
67900 HL23: MOVEM Z,LSPNT
68000 HL30: ADDI E,1
68100 CAMGE E,TPNT
68200 JRST HL24
68300 POPJ P,
68400
00100 FOR @$ I←0,177
00200 { DEFINE FOO$I{JFCL}
00300 }
00400 DEFINE FO (A,B)
00500 {FO2(→"A",B)}
00600 DEFINE FO2 $(A,B)
00700 {DEFINE FOO$A{JRST B}}
00800 DEFINE CBBIT $(A,B,C,Q,E)
00900 { JRST @(D).+1
00950 IFE B,<MERR;>A$0
01000 IFE C,<MERR;>A$1
01100 IFE Q,<MERR;>A$2
01200 IFE E,<MERR;>A$3
01300 }
01350 DEFINE MOVDEF $(M)
01400 {FO(<(>,M$CL1)
01500 FO(<[>,M$CL2)
01600 FO(<)>,M$CR1)
01700 FO(<]>,M$CR2)
01800 FO(</>,M$CU1)
01900 FO(<∂>,M$CU2)
02000 FO(<\>,M$CD1)
02100 FO(<∞>,MC$D2)}
02150 MOVDEF(M)
02200 FO(<*>,MAKS)
02300 FO(<⊗>,MAKL)
02400 FO(F,CF)
02500 FO(+,CPLS)
02600 FO2(175,CALT)
02700 FO(W,CW)
02800 FO(∩,CMUB)
02900 FO(∪,CMLB)
03000 FO(↑,CUPA)
03100 FO(↓,CDNA)
03200 FO(<≡>,CMBB)
03300 FO(P,CP)
03400 FO(M,CM)
03500 FO(D,CD)
03600 FO(C,CC)
03700 FO(R,CR)
03710 FO(L,CL)
03715 FO(U,CU)
03720 FO(< >,CSPC)
03725 FO(S,CS)
03800
03900
04000 CMUB: CBBIT(CMUB,0,1,1,0)
04100 CMLB: CBBIT(CMLB,0,1,1,0)
04200 CMBB: CBBIT(CMBB,0,1,1,1)
04210 CC: CBBIT(CC,0,1,1,1)
04220 CR: CBBIT(CR,0,1,1,0)
04230 CF: CBBIT(CF,0,1,1,0)
04240 CW: CBBIT(CW,0,1,1,0)
04250 CP: CBBIT(CP,0,0,1,0)
04260 CM: CBBIT(CM,0,1,1,0)
04270 CD: CBBIT(CD,0,1,0,0)
04280 CL: CBBIT(CL,0,0,1,0)
04285 CU: CBBIT(CU,0,0,1,0)
04287 CS: CBBIT(CS,0,1,1,0)
04290
04300
04400
04500 DTAB2:
04600 FOR @$ I←0,177
04700 { FOO$I
04800 }
04900 FOR @$ I←0,177
05000 {DEFINE FOO$I {JFCL}
05100 }
05200 FO(S,DOS)
05300 MOVDEF(D)
05400 DOS: CBBIT(DOS,0,1,1,0)
05500
05600
05700 DTAB3: FOR @$ I←0,177
05800 {FOO$I
05900 }
06000
00100 GETCOM: INCHRW C
00200 POPJ P,
00300 DISTAB: DTAB2(C)
00400
00500 MAIN: PUSHJ P,CURDIS
00600 PUSHJ P,NUMDIS
00700 PUSHJ P,DISP
00750 PUSHJ P,CLDISP
00800 PUSHJ P,GETCOM
00900 LDB D,[POINT 2,C,28]
01000 ANDI C,177
01100 XCT @DISTAB
01200 MERR: OUTSTR [ASCIZ /???/]
01300 JRST MAIN
01400
01500 DEFINE TEMP (A,B,C,Q)
01600 { MOVE X,MCSA(D)
01700 IFN A,<MOVNS X>
01800 IFN B,<FMPR X,[16.0]>
01900 FADM X,C
02000 SKIPE CIRMOD
02100 JRST Q
02200 JRST MAIN}
02300 MCSA: 1.000
02400 2.00
02500 4.0
02600 8.0
02700
02750 DEFINE MOVER A(M,CUR,Y)
02800 {MACL1: TEMP(1,0,CURAX,CIRX)
02900 MACL2: TEMP(1,1,CURAX,CIRX)
03000 MACR1: TEMP(0,0,CURAX,CIRX)
03100 MACR2: TEMP(0,1,CURAX,CIRX)
03200 MACU1: TEMP(0,0,CURAY,CIRY)
03300 MACU2: TEMP(0,1,CURAY,CIRY)
03400 MACD1: TEMP(1,0,CURAY,CIRY)
03500 MACD2: TEMP(1,1,CURAY,CIRY)}
03550 MOVER (M,CUR,Y)
03600
03700 DEFINE TEMP $(XY,YX)
03800 { MOVE X,CUR$XY
03900 FSB X,CCENT$XY
04000 FMPR X,X
04100 MOVE Y,CRAD
04200 FSBM Y,X
04210 JUMPL X,[MOVE X,Y
04220 PUSHJ P,SQRTX
04230 MOVE Y,CCENT$XY
04240 FSB Y,CUR$XY
04250 SKIPL Y
04260 MOVNS X
04270 FAD X,CCENT$XY
04280 MOVEM X,CUR$XY
04290 MOVEI X,
04295 JRST .+1]
04300 PUSHJ P,SQRTX
04400 MOVE Y,CCENT$YX
04500 FSB Y,CUR$YX
04600 JUMPL Y,.+2
04700 MOVNS X
04800 FAD X,CCENT$YX
04850 MOVEM X,CUR$YX
04900 JRST MAIN}
05000 CIRX: TEMP (X,Y)
05100 CIRY: TEMP (Y,X)
05200
05300
05400 MAKL: MOVE X,[1.4142317]
05500 FMPRM X,DSCL
05600 JRST MAIN
05700 MAKS: MOVE X,DSCL
05800 FDVR X,[1.4142317]
05900 MOVEM X,DSCL
06000 JRST MAIN
06100
06600 CF1: SKIPE WCUR
06700 JRST MERR
06800 GETFST (A,B)
06900 MOVE C,ZPNT
07000 MOVEI T,2
07100 MOVEM T,(A)
07200 MOVE T,[8.0]
07300 MOVEM T,2(A)
07400 MOVE T,CURZL
07500 MOVEM T,1(A)
07600 GETFST (B,D)
07700 HRRZM B,10(A)
07800 HRRZM B,WCUR1#
07900 PUSHJ P,INSCUR
08000 PUSH C,A
08100 MOVEM C,ZPNT
08200 MOVEM B,SAVB
08300 MOVEI B,2
08400 MOVEM B,WCUR
08500 JRST MAIN
08600 CPLS: SKIPN B,WCUR
08700 JRST MAIN
08800 JRST @(B)[0
08900 MERR
09000 CPLSF]
09100 CPLSF:
09200 SKIPN B,SAVB
09300 JRST MAIN
09400 PUSHJ P,INSCUR
09500 MOVEM B,SAVB
09600 JRST MAIN
09700 CALT: SETZM UDMODE#
09800 MOVE B,WCUR
09900 JRST @(B)[MAIN
10000 WALT
10100 FALT]
10200 WALT: MOVE C,CURZL
10300 MOVE B,WCUR1
10400 MOVEM C,1(B)
10450 SETZM 7(B)
10500 MOVE C,ZPNT
10600 PUSH C,B
10700 MOVEM C,ZPNT
10800 FALT: SETZM WCUR
10900 JRST MAIN
11400 CW1: SKIPE WCUR
11500 JRST MERR
11600 GETFST (B,C)
11700 MOVEM B,WCUR1
11800 MOVEI C,1
11900 MOVEM C,(B)
12000 MOVE C,[3.0]
12100 MOVEM C,2(B)
12200 SETZM 10(B)
12300 MOVEI X,3(B)
12400 HRLI X,CURX
12500 BLT X,4(B)
12600 MOVEI X,1
12700 MOVEM X,WCUR
12800 JRST MAIN
12900
13000 CUDS: MOVSI A,201400
13100 JUMPE D,.+3
13200 FSC A,1
13300 SOJG D,.-1
13400 MOVE B,UDMODE
13500 TRNE B,2
13600 FMPR A,[7.0]
13700 POPJ P,
13800 CUPA: PUSHJ P,CUDS
13900 JRST .+3
14000 CDNA: PUSHJ P,CUDS
14100 MOVNS A
14200 TRNN B,14
14300 JRST MCURUD
14400 TRNE B,4
14500 FADM A,DZU
14600 TRNE B,10
14700 FADM A,DZL
14800 MOVE A,DZL
14900 CAMLE A,DZU
15000 MOVEM A,DZU
15100 JRST MAIN
15200 MCURUD: FADM A,CURZL
15300 JRST MAIN
15400 CMBB1:
15500 CMBB2: TRO D,14
15600 CMUB1:
15700 CMUB2: TROA D,4
15800 CMLB1:
15900 CMLB2: TRO D,10
16000 MOVEM D,UDMODE
16100 JRST MAIN
16200 CMBB3: MOVEI A,2
16300 MOVEM D,UDMODE
16400 JRST MAIN
16500
16600 CC1: MOVE T,[XWD CURX,CCENTX]
16700 BLT T,CCENTY
16800 JRST MAIN
16900 CR1: SETOM CIRMOD#
17000 FOR @$ A IN (X,Y)
17100 { MOVE A,CCENT$A
17200 FSB A,CUR$A
17300 FMPR A,A
17350 }
17400 FAD X,Y
17500 MOVEM X,CRAD#
17600 JRST MAIN
17700 CR2: SETZM CIRMOD
17800 JRST MAIN
17900 CC2: MOVE T,[XWD CCENTX,CURX]
18000 BLT T,CURY
18100 JRST MAIN
18200 CC3: SETZM CURX
18300 SETZM CURY
18400 JRST MAIN
18500 DEFINE TEMP(A)
18600 { MOVEI T,A
18700 MOVEM T,FCLS
18800 JRST MAIN}
18900 CW2: TEMP(1)
19000 CF2: TEMP(2)
19100 CL2: TEMP(11)
19200 CP2: TEMP(10)
19300 CU2: TEMP(0)
19400 CSPC: SETZM CMOVE#
19500 JRST MAIN
19600 CM1: SKIPE FCLS
19700 SKIPN CLPNTR
19800 JRST MERR
19900 MOVE X,CLSX
20000 MOVE Y,CLSY
20100 CM12: MOVEM X,CURX
20200 MOVEM Y,CURY
20300 JRST MAIN
20400 CM2: SKIPE CLPNTR
20500 SKIPN A,FCLS
20600 JRST MERR
20700 CAIE A,10
20800 CAIN A,2
20900 SKIPA B,CLSPNT
21000 JRST MERR
21100 MOVEM B,CMOVE
21200 MOVE X,(B)
21230 MOVE Y,1(B)
21260 JRST CM12
21300 CD1TB: MERR
21400 DELWAL
21500 DELFP
21600 0
21700 0
21800 0
21900 0
22000 0
22100 MERR
22200 DELFLR
22300 CD1: MOVE A,FCLS
22400 SKIPN B,CLPNTR
22500 JRST MERR
22600 JRST @CD1TB(A)
22700 DELFLR:
22800 DELWAL: MOVE A,ZLIST
22900 CAME B,(A)
23000 AOJA A,.-1
23100 HRLI A,1(A)
23200 MOVE B,ZPNT
23300 BLT A,(B)
23400 SUB B,[1,,1]
23500 MOVEM B,ZPNT
23600 JRST MAIN
23700 DELFP: MOVE C,CLSPNT
23800 MOVE D,C
23900 ADDI D,2
24000 MOVE T,(D)
24100 TLNE T,-1
24200 JRST .-3
24300 JUMPE T,.-4
24400 HRLI C,2(C)
24500 BLT C,(D)
24600 JRST MAIN
24700
00100 DOS2: MOVE A,MANX
00200 MOVEM A,CURX
00300 MOVE A,MANY
00400 MOVEM A,CURY
00500 MOVE A,MANZ
00600 MOVEM A,CURZL
00700 DOS1: JRST MAIN
00800 DEFINE TEMP (A,B,C,Q)
00900 { MOVE X,MCSA(D)
01000 IFN A,<MOVNS X>
01100 IFN B,<FMPR X,[16.0]>
01200 FADM X,C
01300 JRST DMAIN}
01400 MOVER(D,MAN,Z)
01500
01600 CS2: MOVE A,CURX
01700 MOVEM A,MANX
01800 MOVE A,CURY
01900 MOVEM A,MANY
02000 MOVE A,CURZL
02100 MOVEM A,MANZ
02200 CS1: PUSHJ P,ZORD
02300 MOVE C,ZLIST
02400 HRRZ B,ZPNT
02500 CSS1: MOVE A,(C)
02600 MOVE D,(A)
02700 CAIE D,1
02800 JRST .+4
02900 PUSH P,B
03000 PUSHJ P,WALFIX
03100 POP P,B
03200 ADDI C,1
03300 CAMG C,B
03400 JRST CSS1
03500 UPGIOT 7,PGC
03600 UPGIOT 4,PGC
03700 UPGIOT 6,PGC
03800 DMAIN: PUSHJ P,DO
03900 PUSHJ P,GETCOM
04000 LDB D,[POINT 2,C,28]
04100 ANDI C,177
04200 XCT DTAB3(C)
04300 OUTSTR [ASCIZ /???/]
04400 JRST DMAIN
04500
04600 END STRT