Home » Recent acquisitions » Acorn ADFS disks » adfs_AcornUser_199512_2.adf » !Regulars » Regulars/StarInfo/Vlietinck/3DSwarm

Regulars/StarInfo/Vlietinck/3DSwarm

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Recent acquisitions » Acorn ADFS disks » adfs_AcornUser_199512_2.adf » !Regulars
Filename: Regulars/StarInfo/Vlietinck/3DSwarm
Read OK:
File size: 40C2 bytes
Load address: 0000
Exec address: 0000
File contents
   10REM >3DSWARM
   20REM (c) Jan Vlietinck
   21REM vlietin@intec.rug.ac.be
   40
   50REMON ERROR:PRINT "Error at line ";ERL:END
   51ON ERROR:END
   60MODE13+128:MODE 13
   70
   80ND=150
   90SH=4:FIX=2^SH
  100box=160
  110
  120DIM PIX ND*6*4+4
  130DIM PIXPROJ ND*4*4+100
  140DIM BOX 4*(8*5+1)
  150PROCass
  160PROCbuildpix
  170PROCbuildbox
  190OFF:CALL main
  200END
  210
  220
  230DEF PROCmain
  240!DNRD=4000*16:!DITH=DITABLE:!BIAS=200<<12:CALL calc_divtable
  250!DNRD=400*16:!DITH=DITABLE3:!BIAS=256<<12:CALL calc_divtable
  260VT=2
  270!DHXD=(-1)^RND(2)*(RND(VT*2)+VT)
  280!DHYD=(-1)^RND(2)*(RND(VT*2)+VT)
  290!DHZD=(-1)^RND(2)*(RND(VT*2)+VT)
  300!TXD=0:!TYD=0:!TZD=440*16
  310FOR PASS=0 TO 2 STEP 2
  320P%=Q%
  330[OPT PASS
  340.bank EQUD 2
  350.main
  360STMFD 13!,{14}
  370BL calc_rot_matrix
  380BL adjustpix
  390BL transformpix
  400.mainloop
  410BL calc_rot_matrix
  440BL adjustpix
  450BL transformpix
  460MOV R0,#&70:LDR R1,bank:SWI "OS_Byte"
  470SWI &10C
  480BL set
  490BL transformbox
  500BL drawbox_back
  530BL drawpix
  540BL drawbox_front
  550MOV R0,#&13:SWI "OS_Byte"
  560MOV R0,#&71:LDR R1,bank:SWI "OS_Byte"
  570LDR R1,bank:EOR R1,R1,#3:STR R1,bank
  590SWI "OS_ReadEscapeState"
  600BCC mainloop
  610LDMFD 13!,{PC}
  620]
  630NEXT
  640Q%=P%
  650ENDPROC
  660
  670
  680DEF PROCass
  690DIM Q% 130000
  700DIM INVERS 4*1024
  710DIM DITABLE 4000*16*4
  720DIM DITABLE3 400*16*4
  730DIM CSTABLE 4096*8
  740DIM CTABLE 100*16
  750PROCcalc_invers
  760PROCcalc_cstable
  770PROCcalc_divtable
  780PROCtransform
  790PROCline
  800PROCcalc_rot_matrix
  810PROCadjustposition
  820PROCdrawbox
  830PROCmain
  840ENDPROC
  850
  860DEF PROCbuildpix
  870P%=PIX
  880SP=20
  890[OPT 0
  900EQUD (RND(100)-50)<<SH
  910EQUD (RND(100)-50)<<SH
  920EQUD (RND(100)-50)<<SH
  930EQUD (-1)^RND(2)*RND(SP)+10
  940EQUD (-1)^RND(2)*RND(SP)+10
  950EQUD (-1)^RND(2)*RND(SP)+10
  960]
  970SP=10
  980FOR I=1 TO ND-1
  990[OPT 0
 1000EQUD RND(100*FIX)-50*FIX:EQUD RND(100*FIX)-50*FIX:EQUD RND(100*FIX)-50*FIX
 1010EQUD RND(2*SP)-SP:EQUD RND(2*SP)-SP:EQUD RND(2*SP)-SP
 1020]
 1030NEXT
 1040[OPT 0:EQUD 1<<30:]
 1050ENDPROC
 1060
 1070DEF PROCbuildbox
 1080P%=BOX
 1090BO=box*FIX
 1100NO=100*FIX
 1110[OPT 0
 1120EQUD  BO:EQUD -BO:EQUD -BO:EQUD 0:EQUD 0
 1130EQUD  BO:EQUD  BO:EQUD -BO:EQUD 0:EQUD 0
 1140EQUD -BO:EQUD  BO:EQUD -BO:EQUD 0:EQUD 0
 1150EQUD -BO:EQUD -BO:EQUD -BO:EQUD 0:EQUD 0
 1160EQUD  BO:EQUD -BO:EQUD  BO:EQUD 0:EQUD 0
 1170EQUD  BO:EQUD  BO:EQUD  BO:EQUD 0:EQUD 0
 1180EQUD -BO:EQUD  BO:EQUD  BO:EQUD 0:EQUD 0
 1190EQUD -BO:EQUD -BO:EQUD  BO:EQUD 0:EQUD 0
 1200EQUD 1<<30
 1210]
 1220ENDPROC
 1230
 1240DEF PROCdrawbox
 1250LOCAL X1,Y1,X2,Y2,T,BOXR
 1260X1=0:Y1=1:X2=2:Y2=3:BOXR=8:NX=9:NY=10:NZ=11:T=12
 1270FOR PASS=0 TO 2 STEP 2
 1280P%=Q%
 1290[OPT PASS
 1300
 1310.BOXD EQUD BOX
 1320.drawbox_front
 1330STMFD 13!,{14}
 1340LDR T,C1D
 1350MOV NX,T,ASR #16
 1360MOV T,T,LSL #16
 1370MOV NY,T,ASR #16
 1380LDR T,C2D
 1390MOV NZ,T,ASR #16
 1400LDR BOXR,BOXD
 1410ADD BOXR,BOXR,#12
 1420CMP NX,#0:RSBLTS T,NZ,#0
 1430ADD T,BOXR,#0*20:LDMLTIA T,{X1,Y1}
 1440ADD T,BOXR,#1*20:LDMLTIA T,{X2,Y2}
 1450BLLT line
 1460CMP NY,#0:RSBLTS T,NZ,#0
 1470ADD T,BOXR,#1*20:LDMLTIA T,{X1,Y1}
 1480ADD T,BOXR,#2*20:LDMLTIA T,{X2,Y2}
 1490BLLT line
 1500RSBS T,NX,#0:RSBLTS T,NZ,#0
 1510ADD T,BOXR,#2*20:LDMLTIA T,{X1,Y1}
 1520ADD T,BOXR,#3*20:LDMLTIA T,{X2,Y2}
 1530BLLT line
 1540RSBS T,NY,#0:RSBLTS T,NZ,#0
 1550ADD T,BOXR,#3*20:LDMLTIA T,{X1,Y1}
 1560ADD T,BOXR,#0*20:LDMLTIA T,{X2,Y2}
 1570BLLT line
 1580
 1590CMP NX,#0:CMPLT NZ,#0
 1600ADD T,BOXR,#4*20:LDMLTIA T,{X1,Y1}
 1610ADD T,BOXR,#5*20:LDMLTIA T,{X2,Y2}
 1620BLLT line
 1630CMP NY,#0:CMPLT NZ,#0
 1640ADD T,BOXR,#5*20:LDMLTIA T,{X1,Y1}
 1650ADD T,BOXR,#6*20:LDMLTIA T,{X2,Y2}
 1660BLLT line
 1670RSBS T,NX,#0:CMPLT NZ,#0
 1680ADD T,BOXR,#6*20:LDMLTIA T,{X1,Y1}
 1690ADD T,BOXR,#7*20:LDMLTIA T,{X2,Y2}
 1700BLLT line
 1710RSBS T,NY,#0:CMPLT NZ,#0
 1720ADD T,BOXR,#7*20:LDMLTIA T,{X1,Y1}
 1730ADD T,BOXR,#4*20:LDMLTIA T,{X2,Y2}
 1740BLLT line
 1750
 1760RSBS T,NY,#0:CMPLT NX,#0
 1770ADD T,BOXR,#0*20:LDMLTIA T,{X1,Y1}
 1780ADD T,BOXR,#4*20:LDMLTIA T,{X2,Y2}
 1790BLLT line
 1800CMP NX,#0:CMPLT NY,#0
 1810ADD T,BOXR,#1*20:LDMLTIA T,{X1,Y1}
 1820ADD T,BOXR,#5*20:LDMLTIA T,{X2,Y2}
 1830BLLT line
 1840CMP NY,#0:RSBLTS T,NX,#0
 1850ADD T,BOXR,#2*20:LDMLTIA T,{X1,Y1}
 1860ADD T,BOXR,#6*20:LDMLTIA T,{X2,Y2}
 1870BLLT line
 1880RSBS T,NX,#0:RSBLTS T,NY,#0
 1890ADD T,BOXR,#3*20:LDMLTIA T,{X1,Y1}
 1900ADD T,BOXR,#7*20:LDMLTIA T,{X2,Y2}
 1910BLLT line
 1920LDMFD 13!,{PC}
 1930
 1940.drawbox_back
 1950STMFD 13!,{14}
 1960LDR T,C1D
 1970MOV NX,T,ASR #16
 1980MOV T,T,LSL #16
 1990MOV NY,T,ASR #16
 2000LDR T,C2D
 2010MOV NZ,T,ASR #16
 2020LDR BOXR,BOXD
 2030ADD BOXR,BOXR,#12
 2040CMP NX,#0:RSBLTS T,NZ,#0
 2050ADD T,BOXR,#0*20:LDMGEIA T,{X1,Y1}
 2060ADD T,BOXR,#1*20:LDMGEIA T,{X2,Y2}
 2070BLGE line
 2080CMP NY,#0:RSBLTS T,NZ,#0
 2090ADD T,BOXR,#1*20:LDMGEIA T,{X1,Y1}
 2100ADD T,BOXR,#2*20:LDMGEIA T,{X2,Y2}
 2110BLGE line
 2120RSBS T,NX,#0:RSBLTS T,NZ,#0
 2130ADD T,BOXR,#2*20:LDMGEIA T,{X1,Y1}
 2140ADD T,BOXR,#3*20:LDMGEIA T,{X2,Y2}
 2150BLGE line
 2160RSBS T,NY,#0:RSBLTS T,NZ,#0
 2170ADD T,BOXR,#3*20:LDMGEIA T,{X1,Y1}
 2180ADD T,BOXR,#0*20:LDMGEIA T,{X2,Y2}
 2190BLGE line
 2200
 2210CMP NX,#0:CMPLT NZ,#0
 2220ADD T,BOXR,#4*20:LDMGEIA T,{X1,Y1}
 2230ADD T,BOXR,#5*20:LDMGEIA T,{X2,Y2}
 2240BLGE line
 2250CMP NY,#0:CMPLT NZ,#0
 2260ADD T,BOXR,#5*20:LDMGEIA T,{X1,Y1}
 2270ADD T,BOXR,#6*20:LDMGEIA T,{X2,Y2}
 2280BLGE line
 2290RSBS T,NX,#0:CMPLT NZ,#0
 2300ADD T,BOXR,#6*20:LDMGEIA T,{X1,Y1}
 2310ADD T,BOXR,#7*20:LDMGEIA T,{X2,Y2}
 2320BLGE line
 2330RSBS T,NY,#0:CMPLT NZ,#0
 2340ADD T,BOXR,#7*20:LDMGEIA T,{X1,Y1}
 2350ADD T,BOXR,#4*20:LDMGEIA T,{X2,Y2}
 2360BLGE line
 2370
 2380RSBS T,NY,#0:CMPLT NX,#0
 2390ADD T,BOXR,#0*20:LDMGEIA T,{X1,Y1}
 2400ADD T,BOXR,#4*20:LDMGEIA T,{X2,Y2}
 2410BLGE line
 2420CMP NX,#0:CMPLT NY,#0
 2430ADD T,BOXR,#1*20:LDMGEIA T,{X1,Y1}
 2440ADD T,BOXR,#5*20:LDMGEIA T,{X2,Y2}
 2450BLGE line
 2460CMP NY,#0:RSBLTS T,NX,#0
 2470ADD T,BOXR,#2*20:LDMGEIA T,{X1,Y1}
 2480ADD T,BOXR,#6*20:LDMGEIA T,{X2,Y2}
 2490BLGE line
 2500RSBS T,NX,#0:RSBLTS T,NY,#0
 2510ADD T,BOXR,#3*20:LDMGEIA T,{X1,Y1}
 2520ADD T,BOXR,#7*20:LDMGEIA T,{X2,Y2}
 2530BLGE line
 2540LDMFD 13!,{PC}
 2550]
 2560NEXT
 2570Q%=P%
 2580ENDPROC
 2590
 2600
 2610DEF PROCcalc_invers
 2620K=2<<20
 2630FOR I=1 TO 1023:INVERS!(4*I)=K/I+.5:NEXT
 2640ENDPROC
 2650
 2660DEF PROCcalc_cstable
 2670F=2*PI/4096:V=2^15
 2680T2=CSTABLE+8*1024
 2690T3=CSTABLE+8*2048
 2700T4=CSTABLE+8*3072
 2710FOR H=0 TO 1023
 2720K=F*H
 2730CS=COS(K)*V:SN=SIN(K)*V
 2740CSTABLE!(8*H)=CS
 2750CSTABLE!(8*H+4)=SN
 2760T2!(8*H)=-SN
 2770T2!(8*H+4)=CS
 2780T3!(8*H)=-CS
 2790T3!(8*H+4)=-SN
 2800T4!(8*H)=SN
 2810T4!(8*H+4)=-CS
 2820NEXT
 2830ENDPROC
 2840
 2850DEF PROCcalc_divtable
 2860T=0:N=1:Q=2:I=3:J=4:DIT=5
 2870FOR PASS=0 TO 2 STEP 2
 2880P%=Q%
 2890[OPT PASS
 2900.DNRD EQUD 0
 2910.DITH EQUD 0
 2920.BIAS EQUD 0
 2930.calc_divtable
 2940STMFD 13!,{0-12,14}
 2950LDR DIT,DITH
 2960LDR I,DNRD
 2970.DVLOOP2
 2980LDR T,BIAS
 2990MOV N,I
 3000MOV J,#0
 3010MOV Q,#0
 3020.DVLOOP3
 3030CMP N,T
 3040MOVLO N,N,LSL #1
 3050ADDLO J,J,#1
 3060BLO DVLOOP3
 3070MOV N,N,LSR J
 3080.DVLOOP1
 3090CMP T,N,LSL J
 3100SUBHS T,T,N,LSL J
 3110ADC Q,Q,Q
 3120SUBS J,J,#1
 3130BPL DVLOOP1
 3140STR Q,[DIT,I,LSL #2]
 3150SUBS I,I,#1
 3160BNE DVLOOP2
 3170LDMFD 13!,{0-12,PC}
 3180]
 3190NEXT
 3200Q%=P%
 3210ENDPROC
 3220
 3230DEF PROCcalc_rot_matrix
 3240CHX=0:SHX=1
 3250CHY=2:SHY=3
 3260CHZ=4:SHZ=5
 3270T=6:S=7:H=8
 3280DHX=3:DHY=4:DHZ=5
 3290HX=9:HY=10:HZ=11
 3300TX=9:TY=10:TZ=11
 3310CS=12
 3320SCR=0:COL=1
 3330FOR PASS=0 TO 2 STEP 2
 3340P%=Q%
 3350[OPT PASS
 3360.DHXD EQUD 0:.DHYD EQUD 0:.DHZD EQUD 0
 3370.HXD EQUD 0:.HYD EQUD 0:.HZD EQUD 0
 3380.CSD EQUD CSTABLE
 3390.TXD EQUD 0:.TYD EQUD 0:.TZD EQUD 0
 3420.calc_rot_matrix
 3430STMFD 13!,{0-12,14}
 3440SWI "OS_Mouse"
 3450SUB R0,R0,#640:MOV R0,R0,LSL #3:STR R0,TXD
 3460SUB R1,R1,#512:MOV R1,R1,LSL #3:STR R1,TYD
 3461LDR R0,TZD:TST R2,#1:SUBEQ R0,R0,#64:TST R2,#4:ADDEQ R0,R0,#64:STR R0,TZD
 3660ADR T,DHXD:LDMIA T,{DHX,DHY,DHZ,HX,HY,HZ,CS}
 3670ADD DHX,DHX,HX:ADD DHY,DHY,HY:ADD DHZ,DHZ,HZ
 3680ADD T,T,#3*4:STMIA T,{DHX,DHY,DHZ}
 3690MOV S,#4096:SUB S,S,#1
 3700CMP HX,#0:RSBMI HX,HX,#0:AND HX,HX,S:ADD T,CS,HX,LSL #3
 3710LDMIA T,{CHX,SHX}:RSBMI SHX,SHX,#0
 3720CMP HY,#0:RSBMI HY,HY,#0:AND HY,HY,S:ADD T,CS,HY,LSL #3
 3730LDMIA T,{CHY,SHY}:RSBMI SHY,SHY,#0
 3740CMP HZ,#0:RSBMI HZ,HZ,#0:AND HZ,HZ,S:ADD T,CS,HZ,LSL #3
 3750LDMIA T,{CHZ,SHZ}:RSBMI SHZ,SHZ,#0
 3760ADR T,TXD:LDMIA T,{TX,TY,TZ}
 3770MUL T,CHY,CHZ:MOV T,T,ASR #15
 3780MUL S,CHY,SHZ:MOV S,S,LSR #15
 3790ADD T,S,T,LSL #16:STR T,A1D
 3800ADD T,TX,SHY,LSL #16:STR T,A2D
 3810
 3820MUL T,SHX,SHY:MOV T,T,ASR #15:MOV S,T
 3830MUL H,CHX,SHZ:MLA T,CHZ,T,H:RSB T,T,#0:MOV T,T,ASR #15
 3840MUL H,CHX,CHZ:MUL S,SHZ,S:SUB S,H,S:MOV S,S,LSR #15
 3850
 3860ADD T,S,T,LSL #16:STR T,B1D
 3870MUL T,SHX,CHY:MOV T,T,ASR #15
 3880ADD T,TY,T,LSL #16:STR T,B2D
 3890MUL T,CHX,SHY:MOV T,T,ASR #15:MOV S,T
 3900MUL T,CHZ,T:MUL H,SHX,SHZ:SUB T,H,T:MOV T,T,ASR #15
 3910MUL S,SHZ,S:MLA H,SHX,CHZ,S:RSB S,H,#0:MOV S,S,LSR #15
 3920ADD T,S,T,LSL #16:STR T,C1D
 3930MUL T,CHX,CHY:MOV T,T,ASR #15
 3940ADD T,TZ,T,LSL #16:STR T,C2D
 3950LDMFD 13!,{0-12,PC}
 3960]
 3970NEXT
 3980Q%=P%
 3990ENDPROC
 4000
 4010
 4020
 4030DEF PROCtransform
 4040A1=0:A2=1:B1=2:B2=3:C1=4:C2=5:T=6:DIT=7:U=8:V=9:W=10:X=10:Y=11:Z=12
 4050A=13:B=14
 4060FOR PASS=0 TO 2 STEP 2
 4070P%=Q%
 4080[OPT PASS
 4090.A1D EQUD 0:.A2D EQUD 0
 4100.B1D EQUD 0:.B2D EQUD 0
 4110.C1D EQUD 0:.C2D EQUD 0
 4120.DITD EQUD DITABLE
 4130
 4140.VD EQUD 0
 4150.SP EQUD 0
 4160.LK EQUD 0
 4170
 4180.PIXD EQUD PIX
 4190.PIXT EQUD PIXPROJ
 4200.TG EQUD 0
 4210.transformpix
 4220STMFD 13!,{0-12,14}
 4230STR 13,SP
 4240ADR T,A1D
 4250LDMIA T,{A1,A2,B1,B2,C1,C2,DIT}
 4260LDR A,PIXD:LDR B,PIXT
 4270LDR T,TG:CMP T,#0:MOVNE T,#0:MOVEQ T,#1:ADDNE B,B,#2*4:STR T,TG
 4280LDMIA (A)!,{X,Y,Z}:ADD A,A,#3*4
 4290BAL TRANS
 4300
 4310
 4320.transform
 4330STMFD 13!,{0-12,14}
 4340STR 13,SP
 4350ADR T,A1D
 4360LDMIA T,{A1,A2,B1,B2,C1,C2,DIT,A,B}
 4370LDMIA (A)!,{X,Y,Z}:ADD A,A,#3*4
 4380.TRANS
 4390MOV T,A1,ASR #16
 4400MUL U,X,T
 4410MOV T,A1,LSL #16
 4420MOV T,T,ASR #16
 4430MLA U,Y,T,U
 4440MOV T,A2,ASR #16
 4450MLA U,Z,T,U
 4460MOV T,A2,LSL #16
 4470MOV T,T,ASR #16
 4480ADD U,T,U,ASR #15
 4490MOV T,B1,ASR #16
 4500MUL V,X,T
 4510MOV T,B1,LSL #16
 4520MOV T,T,ASR #16
 4530MLA V,Y,T,V
 4540MOV T,B2,ASR #16
 4550MLA V,Z,T,V
 4560MOV T,B2,LSL #16
 4570MOV T,T,ASR #16
 4580ADD V,T,V,ASR #15
 4590MOV T,C1,ASR #16
 4600MUL W,T,X
 4610MOV T,C1,LSL #16
 4620MOV T,T,ASR #16
 4630MLA W,Y,T,W
 4640MOV T,C2,ASR #16
 4650MLA W,Z,T,W
 4660MOV T,C2,LSL #16
 4670MOV T,T,ASR #16
 4680ADD W,T,W,ASR #15
 4690; CMP W,#0
 4700; MOVMI W,#1
 4710LDR W,[DIT,W,LSL #2]
 4720MUL U,W,U
 4730MUL V,W,V
 4740MOV U,U,ASR #12
 4750MOV V,V,ASR #12
 4760ADD U,U,#160
 4770ADD V,V,#128
 4780STMIA (B)!,{U,V}:ADD B,B,#2*4
 4790LDMIA (A)!,{X,Y,Z}:ADD A,A,#3*4
 4800CMP X,#1<<30
 4810BNE TRANS
 4820LDR 13,SP
 4830LDMFD 13!,{0-12,PC}
 4840
 4850
 4860.BOXD EQUD BOX
 4870.transformbox
 4880STMFD 13!,{0-12,14}
 4890STR 13,SP
 4900ADR T,A1D
 4910LDMIA T,{A1,A2,B1,B2,C1,C2,DIT}
 4920LDR A,BOXD
 4930LDMIA (A)!,{X,Y,Z}
 4940.TRANSB
 4950MOV T,A1,ASR #16
 4960MUL U,X,T
 4970MOV T,A1,LSL #16
 4980MOV T,T,ASR #16
 4990MLA U,Y,T,U
 5000MOV T,A2,ASR #16
 5010MLA U,Z,T,U
 5020MOV T,A2,LSL #16
 5030MOV T,T,ASR #16
 5040ADD U,T,U,ASR #15
 5050MOV T,B1,ASR #16
 5060MUL V,X,T
 5070MOV T,B1,LSL #16
 5080MOV T,T,ASR #16
 5090MLA V,Y,T,V
 5100MOV T,B2,ASR #16
 5110MLA V,Z,T,V
 5120MOV T,B2,LSL #16
 5130MOV T,T,ASR #16
 5140ADD V,T,V,ASR #15
 5150MOV T,C1,ASR #16
 5160MUL W,T,X
 5170MOV T,C1,LSL #16
 5180MOV T,T,ASR #16
 5190MLA W,Y,T,W
 5200MOV T,C2,ASR #16
 5210MLA W,Z,T,W
 5220MOV T,C2,LSL #16
 5230MOV T,T,ASR #16
 5240ADDS W,T,W,ASR #15
 5250LDR W,[DIT,W,LSL #2]
 5260MUL U,W,U
 5270MUL V,W,V
 5280MOV U,U,ASR #12
 5290MOV V,V,ASR #12
 5300ADD U,U,#160
 5310ADD V,V,#128
 5320STMIA (A)!,{U,V}
 5330LDMIA (A)!,{X,Y,Z}
 5340CMP X,#1<<30
 5350BNE TRANSB
 5360LDR 13,SP
 5370LDMFD 13!,{0-12,PC}
 5400]
 5410NEXT
 5420Q%=P%
 5430ENDPROC
 5690
 5700
 5710DEF PROCadjustposition
 5720P=0:CP=1:X=2:Y=3:Z=4:VX=5:VY=6:VZ=7:T=8:GX=9:GY=10:GZ=11:DT=12
 5730FO=4+4*SH
 5740FOR PASS=0 TO 2 STEP 2
 5750P%=Q%
 5760[OPT PASS
 5770
 5780
 5790.DITD EQUD DITABLE
 5800.adjustpix
 5810STMFD 13!,{0-12,14}
 5820LDR P,PIXD
 5830LDR DT,DITD
 5840MOV CP,#ND
 5850LDMIA P,{X,Y,Z,VX,VY,VZ}
 5860 ADD X,X,VX
 5870ADD T,X,#box<<SH
 5880CMP T,#2*box<<SH
 5890RSBHI VX,VX,#0
 5900ADDHI X,X,VX,LSL #1
 5910 ADD Y,Y,VY
 5920ADD T,Y,#box<<SH
 5930CMP T,#2*box<<SH
 5940RSBHI VY,VY,#0
 5950ADDHI Y,Y,VY,LSL #1
 5960 ADD Z,Z,VZ
 5970ADD T,Z,#box<<SH
 5980CMP T,#2*box<<SH
 5990RSBHI VZ,VZ,#0
 6000ADDHI Z,Z,VZ,LSL #1
 6010STMIA (P)!,{X,Y,Z,VX,VY,VZ}
 6020SUBS CP,CP,#1
 6030MOV GX,X:MOV GY,Y:MOV GZ,Z
 6040
 6050.adjust2
 6060LDMIA P,{X,Y,Z,VX,VY,VZ}
 6070 ADD X,X,VX
 6080; ADD T,X,#box<<SH
 6090; CMP T,#2*box<<SH
 6100;  RSBHI VX,VX,#0
 6110; ADDHI X,X,VX,LSL #1
 6120
 6130 ADD Y,Y,VY
 6140; ADD T,Y,#box<<SH
 6150; CMP T,#2*box<<SH
 6160; RSBHI VY,VY,#0
 6170; ADDHI Y,Y,VY,LSL #1
 6180
 6190 ADD Z,Z,VZ
 6200; ADD T,Z,#box<<SH
 6210; CMP T,#2*box<<SH
 6220; RSBHI VZ,VZ,#0
 6230; ADDHI Z,Z,VZ,LSL #1
 6240STMIA (P)!,{X,Y,Z}
 6250
 6260SUBS X,GX,X
 6270MOV T,X
 6280RSBMI T,T,#0
 6290
 6300SUBS Y,GY,Y
 6310ADDPL T,T,Y
 6320SUBMI T,T,Y
 6330
 6340SUBS Z,GZ,Z
 6350ADDPL T,T,Z
 6360SUBMI T,T,Z
 6370
 6380ADD VX,VX,X,ASR #9
 6390ADD VY,VY,Y,ASR #9
 6400ADD VZ,VZ,Z,ASR #9
 6410MOV T,#20<<SH
 6420CMP VX,T:MOVGT VX,T
 6430CMN VX,T:RSBLT VX,T,#0
 6440CMP VY,T:MOVGT VY,T
 6450CMN VY,T:RSBLT VY,T,#0
 6460CMP VZ,T:MOVGT VZ,T
 6470CMN VZ,T:RSBLT VZ,T,#0
 6480
 6490STMIA (P)!,{VX,VY,VZ}
 6500
 6510SUBS CP,CP,#1
 6520BNE adjust2
 6530LDMFD 13!,{0-12,PC}
 6540
 6550]
 6560Q%=P%
 6570ENDPROC
 6580
 6590
 6600DEF PROCline
 6610
 6620DIM DITABLE2 1024*4
 6630P%=DITABLE2+4
 6640FOR I=1 TO 1024
 6650[OPT 0
 6660EQUD (2^20/I)
 6670]
 6680NEXT
 6690
 6700DIM CTABLE2 16
 6710P%=CTABLE2
 6720[OPT 0
 6730EQUB %11111111
 6740EQUB %11111110
 6750EQUB %11111101
 6760EQUB %11111100
 6770EQUB %11010011
 6780EQUB %11010010
 6790EQUB %11010001
 6800EQUB %11010000
 6810EQUB %00101111
 6820EQUB %00101110
 6830EQUB %00101101
 6840EQUB %00101100
 6850EQUB %00000011
 6860EQUB %00000010
 6870EQUB %00000001
 6880EQUB %00000000
 6890]
 7110
 7120X1=0:Y1=1:X2=2:Y2=3:XL=4:XR=5:YB=6:YT=7:K1=8:K2=9:DT=10:S=11:T=12
 7140LL=0:RR=1:A=2:B=3:C=4:O=5:D=6:CT=7
 7150FOR PASS=0 TO 2 STEP 2
 7160P%=Q%
 7170[OPT PASS
 7180\-------------------------------------------------------------------------
 7190.screen1 EQUD 148:EQUD -1
 7200.screen EQUD 0
 7210.CTABLED EQUD CTABLE2
 7220
 7230.BOXD EQUD 1:EQUD 318:EQUD 1:EQUD 254
 7240.DITABLED EQUD DITABLE2
 7250.set
 7260ADR R0,screen1:ADR R1,screen:SWI "OS_ReadVduVariables"
 7270MOV PC,R14
 7271
 7280REM Anti-aliased lines, with Sutherland clipping
 7281REM Parameters  (X1,Y1) => (R0,R1); (X2,Y2) => (R2,R3)
 7300.line
 7310STMFD 13!,{8-11}
 7320ADR T,BOXD
 7330LDMIA T,{XL,XR,YB,YT,DT}
 7340MOV K1,#0
 7350CMP X1,XL
 7360ORRLT K1,K1,#1
 7370CMP X1,XR
 7380ORRGT K1,K1,#2
 7390CMP Y1,YB
 7400ORRLT K1,K1,#4
 7410CMP Y1,YT
 7420ORRGT K1,K1,#8
 7430MOV K2,#0
 7440CMP X2,XL
 7450ORRLT K2,K2,#1
 7460CMP X2,XR
 7470ORRGT K2,K2,#2
 7480CMP Y2,YB
 7490ORRLT K2,K2,#4
 7500CMP Y2,YT
 7510ORRGT K2,K2,#8
 7520ORRS T,K1,K2
 7530BEQ endwhile  \ Line completely inside box
 7540ANDS T,K1,K2
 7550LDMNEFD 13!,{8-11}
 7560MOVNE PC,R14  \ Line completely outside box
 7570
 7580.while
 7590CMP K1,#0     \ Swap (x1,y1) outside box
 7600MOVEQ T,X1:MOVEQ X1,X2:MOVEQ X2,T
 7610MOVEQ T,Y1:MOVEQ Y1,Y2:MOVEQ Y2,T
 7620MOVEQ T,K1:MOVEQ K1,K2:MOVEQ K2,T
 7630
 7640TST K1,#1:BEQ sk1
 7650SUBS T,X2,X1:RSBMI T,T,#0:LDR S,[DT,T,LSL #2]
 7660SUB  T,Y2,Y1:RSBMI T,T,#0:MUL S,T,S:MOV S,S,ASR #10
 7670SUB  T,XL,X1:MUL S,T,S
 7680ADD  Y1,Y1,S,ASR #10
 7690MOV  X1,XL
 7700.sk1
 7710TST K1,#2:BEQ sk2
 7720SUBS T,X2,X1:RSBMI T,T,#0:LDR S,[DT,T,LSL #2]
 7730SUB  T,Y2,Y1:RSBMI T,T,#0:MUL S,T,S:MOV S,S,ASR #10
 7740SUB  T,XR,X1:MUL S,T,S
 7750ADD  Y1,Y1,S,ASR #10
 7760MOV  X1,XR
 7770.sk2
 7780
 7790MOV K1,#0
 7800CMP Y1,YB
 7810ORRLT K1,K1,#4
 7820CMP Y1,YT
 7830ORRGT K1,K1,#8
 7840ANDS T,K1,K2
 7850LDMNEFD 13!,{8-11}
 7860MOVNE PC,R14  \ Line completely outside box
 7870ORRS T,K1,K2
 7880BEQ endwhile  \ Line completely inside box
 7890
 7900TST K1,#4:BEQ sk3
 7910SUBS T,Y2,Y1:RSBMI T,T,#0:LDR S,[DT,T,LSL #2]
 7920SUB  T,X2,X1:RSBMI T,T,#0:MUL S,T,S:MOV S,S,ASR #10
 7930SUB  T,YB,Y1:MUL S,T,S
 7940ADD  X1,X1,S,ASR #10
 7950MOV  Y1,YB
 7960.sk3
 7970TST K1,#8:BEQ sk4
 7980SUBS T,Y2,Y1:RSBMI T,T,#0:LDR S,[DT,T,LSL #2]
 7990SUB  T,X2,X1:RSBMI T,T,#0:MUL S,T,S:MOV S,S,ASR #10
 8000SUB  T,YT,Y1:MUL S,T,S
 8010ADD  X1,X1,S,ASR #10
 8020MOV  Y1,YT
 8030.sk4
 8040
 8050MOV K1,#0
 8060CMP X1,XL
 8070ORRLT K1,K1,#1
 8080CMP X1,XR
 8090ORRGT K1,K1,#2
 8100ANDS T,K1,K2
 8110LDMNEFD 13!,{8-11}
 8120MOVNE PC,R14  \ Line completely outside box
 8130ORRS T,K1,K2
 8140BNE while
 8150.endwhile     \ Line completely inside box
 8160
 8170ADR T,screen
 8180LDMIA T,{O,CT}
 8190RSB T,Y1,#255
 8200ADD T,T,T,LSL #2
 8210ADD T,X1,T,LSL #6
 8220ADD O,O,T
 8230SUB A,X2,X1
 8240SUB B,Y2,Y1
 8250MOV LL,#1
 8260MOV RR,#320
 8270RSB RR,RR,#0
 8280CMP A,#0
 8290 RSBLT A,A,#0
 8300 RSBLT LL,LL,#0
 8310CMP B,#0
 8320 RSBLT B,B,#0
 8330 RSBLT RR,RR,#0
 8340CMP A,B
 8350 MOVLT T,A
 8360 MOVLT A,B
 8370 MOVLT B,T
 8380 MOVLT T,LL
 8390 MOVLT LL,RR
 8400 MOVLT RR,T
 8410LDRB C,[CT]
 8420STRB C,[O]
 8430CMP A,#0
 8440LDMEQFD 13!,{8-11}
 8450 MOVEQ PC,R14
 8460LDR T,[DT,A,LSL #2]
 8470MUL B,T,B
 8480MOV D,#1<<20
 8490.line_loop
 8500SUBS D,D,B
 8510ADDLE D,D,#1<<20
 8520ADDLE O,O,RR
 8530RSB  T,D,#1<<20
 8540LDRB C,[CT,T,LSR #17]
 8550STRB C,[O,LL]!
 8560LDRB C,[CT,D,LSR #17]
 8570STRB C,[O,RR]
 8580SUBS A,A,#1
 8590BNE line_loop
 8600LDMFD 13!,{8-11}
 8610MOV PC,R14
 8620
 8630
 8640]
 8650NEXT
 8660Q%=P%
 8670
 8680
 8690NL=0:    :TAB=2:FREE=3:NR=4:INV=5:CO=6:   N=7:     X1=9:Y1=10:X2=11:Y2=12
 8700LE=0:RE=1:  L=2:   R=3:XL=4: XR=5:DXL=6:DXR=7: O=8:C1=9:C2=10:C3=11:C4=12
 8710PL=0:PR=1
 8720 Q=13:T=14
 8730PO=13
 8740FOR PASS=0 TO 2 STEP 2
 8750P%=Q%
 8760[OPT PASS
 8770
 8780.PIXL EQUD PIXPROJ
 8790.drawpix
 8800STMFD 13!,{14}
 8810LDR 5,PIXL
 8820MOV 4,#%11111100
 8830MOV 6,#ND
 8840.pixloop
 8850LDMIA 5!,{0,1,2,3}
 8860STMFD 13!,{4-6}
 8870BL line
 8880LDMFD 13!,{4-6}
 8890SUBS 6,6,#1
 8900BNE pixloop
 8910LDMFD 13!,{PC}
 8920
 8930]
 8940NEXT
 8950Q%=P%
 8960ENDPROC

� >3DSWARM
� (c) Jan Vlietinck
� vlietin@intec.rug.ac.be
(
2,�ON ERROR:PRINT "Error at line ";ERL:END
3	� �:�
<�13+128:� 13
F
P
ND=150
ZSH=4:FIX=2^SH
dbox=160
n
x� PIX ND*6*4+4
�� PIXPROJ ND*4*4+100
�� BOX 4*(8*5+1)
��ass
�
�buildpix
�
�buildbox
��:� main
��
�
�
�� �main
�=!DNRD=4000*16:!DITH=DITABLE:!BIAS=200<<12:� calc_divtable
�=!DNRD=400*16:!DITH=DITABLE3:!BIAS=256<<12:� calc_divtable
VT=2
 !DHXD=(-1)^�(2)*(�(VT*2)+VT)
 !DHYD=(-1)^�(2)*(�(VT*2)+VT)
" !DHZD=(-1)^�(2)*(�(VT*2)+VT)
,!TXD=0:!TYD=0:!TZD=440*16
6� PASS=0 � 2 � 2
@	P%=Q%
J
[OPT PASS
T.bank EQUD 2
^	.main
hSTMFD 13!,{14}
rBL calc_rot_matrix
|BL adjustpix
�BL transformpix
�
.mainloop
�BL calc_rot_matrix
�BL adjustpix
�BL transformpix
�)MOV R0,#&70:LDR R1,bank:SWI "OS_Byte"
�SWI &10C
�
BL set
�BL transformbox
�BL drawbox_back
BL drawpix
BL drawbox_front
&MOV R0,#&13:SWI "OS_Byte"
0)MOV R0,#&71:LDR R1,bank:SWI "OS_Byte"
:&LDR R1,bank:� R1,R1,#3:STR R1,bank
NSWI "OS_ReadEscapeState"
XBCC mainloop
bLDMFD 13!,{PC}
l]
v�
�	Q%=P%
��
�
�
�
� �ass
�� Q% 130000
�� INVERS 4*1024
�� DITABLE 4000*16*4
�� DITABLE3 400*16*4
�� CSTABLE 4096*8
�� CTABLE 100*16
��calc_invers
��calc_cstable
�calc_divtable
�transform
	�line
 �calc_rot_matrix
*�adjustposition
4�drawbox
>	�main
H�
R
\� �buildpix
f
P%=PIX
p	SP=20
z
[OPT 0
�EQUD (�(100)-50)<<SH
�EQUD (�(100)-50)<<SH
�EQUD (�(100)-50)<<SH
�EQUD (-1)^�(2)*�(SP)+10
�EQUD (-1)^�(2)*�(SP)+10
�EQUD (-1)^�(2)*�(SP)+10
�]
�	SP=10
�� I=1 � ND-1
�
[OPT 0
�HEQUD �(100*FIX)-50*FIX:EQUD �(100*FIX)-50*FIX:EQUD �(100*FIX)-50*FIX
�3EQUD �(2*SP)-SP:EQUD �(2*SP)-SP:EQUD �(2*SP)-SP
�]
�
[OPT 0:EQUD 1<<30:]
�
$
.� �buildbox
8
P%=BOX
BBO=box*FIX
LNO=100*FIX
V
[OPT 0
`,EQUD  BO:EQUD -BO:EQUD -BO:EQUD 0:EQUD 0
j,EQUD  BO:EQUD  BO:EQUD -BO:EQUD 0:EQUD 0
t,EQUD -BO:EQUD  BO:EQUD -BO:EQUD 0:EQUD 0
~,EQUD -BO:EQUD -BO:EQUD -BO:EQUD 0:EQUD 0
�,EQUD  BO:EQUD -BO:EQUD  BO:EQUD 0:EQUD 0
�,EQUD  BO:EQUD  BO:EQUD  BO:EQUD 0:EQUD 0
�,EQUD -BO:EQUD  BO:EQUD  BO:EQUD 0:EQUD 0
�,EQUD -BO:EQUD -BO:EQUD  BO:EQUD 0:EQUD 0
�EQUD 1<<30
�]
��
�
�� �drawbox
�� X1,Y1,X2,Y2,T,BOXR
�4X1=0:Y1=1:X2=2:Y2=3:BOXR=8:NX=9:NY=10:NZ=11:T=12
�� PASS=0 � 2 � 2
	P%=Q%


[OPT PASS

.BOXD EQUD BOX
(.drawbox_front
2STMFD 13!,{14}
<
LDR T,C1D
FMOV NX,T,ASR #16
PMOV T,T,LSL #16
ZMOV NY,T,ASR #16
d
LDR T,C2D
nMOV NZ,T,ASR #16
xLDR BOXR,BOXD
�ADD BOXR,BOXR,#12
�CMP NX,#0:RSBLTS T,NZ,#0
�&ADD T,BOXR,#0*20:LDMLTIA T,{X1,Y1}
�&ADD T,BOXR,#1*20:LDMLTIA T,{X2,Y2}
�
BLLT line
�CMP NY,#0:RSBLTS T,NZ,#0
�&ADD T,BOXR,#1*20:LDMLTIA T,{X1,Y1}
�&ADD T,BOXR,#2*20:LDMLTIA T,{X2,Y2}
�
BLLT line
�RSBS T,NX,#0:RSBLTS T,NZ,#0
�&ADD T,BOXR,#2*20:LDMLTIA T,{X1,Y1}
�&ADD T,BOXR,#3*20:LDMLTIA T,{X2,Y2}
�
BLLT line
RSBS T,NY,#0:RSBLTS T,NZ,#0
&ADD T,BOXR,#3*20:LDMLTIA T,{X1,Y1}
&ADD T,BOXR,#0*20:LDMLTIA T,{X2,Y2}
"
BLLT line
,
6CMP NX,#0:CMPLT NZ,#0
@&ADD T,BOXR,#4*20:LDMLTIA T,{X1,Y1}
J&ADD T,BOXR,#5*20:LDMLTIA T,{X2,Y2}
T
BLLT line
^CMP NY,#0:CMPLT NZ,#0
h&ADD T,BOXR,#5*20:LDMLTIA T,{X1,Y1}
r&ADD T,BOXR,#6*20:LDMLTIA T,{X2,Y2}
|
BLLT line
�RSBS T,NX,#0:CMPLT NZ,#0
�&ADD T,BOXR,#6*20:LDMLTIA T,{X1,Y1}
�&ADD T,BOXR,#7*20:LDMLTIA T,{X2,Y2}
�
BLLT line
�RSBS T,NY,#0:CMPLT NZ,#0
�&ADD T,BOXR,#7*20:LDMLTIA T,{X1,Y1}
�&ADD T,BOXR,#4*20:LDMLTIA T,{X2,Y2}
�
BLLT line
�
�RSBS T,NY,#0:CMPLT NX,#0
�&ADD T,BOXR,#0*20:LDMLTIA T,{X1,Y1}
�&ADD T,BOXR,#4*20:LDMLTIA T,{X2,Y2}
�
BLLT line
CMP NX,#0:CMPLT NY,#0
&ADD T,BOXR,#1*20:LDMLTIA T,{X1,Y1}
&ADD T,BOXR,#5*20:LDMLTIA T,{X2,Y2}
&
BLLT line
0CMP NY,#0:RSBLTS T,NX,#0
:&ADD T,BOXR,#2*20:LDMLTIA T,{X1,Y1}
D&ADD T,BOXR,#6*20:LDMLTIA T,{X2,Y2}
N
BLLT line
XRSBS T,NX,#0:RSBLTS T,NY,#0
b&ADD T,BOXR,#3*20:LDMLTIA T,{X1,Y1}
l&ADD T,BOXR,#7*20:LDMLTIA T,{X2,Y2}
v
BLLT line
�LDMFD 13!,{PC}
�
�.drawbox_back
�STMFD 13!,{14}
�
LDR T,C1D
�MOV NX,T,ASR #16
�MOV T,T,LSL #16
�MOV NY,T,ASR #16
�
LDR T,C2D
�MOV NZ,T,ASR #16
�LDR BOXR,BOXD
�ADD BOXR,BOXR,#12
�CMP NX,#0:RSBLTS T,NZ,#0
&ADD T,BOXR,#0*20:LDMGEIA T,{X1,Y1}
&ADD T,BOXR,#1*20:LDMGEIA T,{X2,Y2}

BLGE line
 CMP NY,#0:RSBLTS T,NZ,#0
*&ADD T,BOXR,#1*20:LDMGEIA T,{X1,Y1}
4&ADD T,BOXR,#2*20:LDMGEIA T,{X2,Y2}
>
BLGE line
HRSBS T,NX,#0:RSBLTS T,NZ,#0
R&ADD T,BOXR,#2*20:LDMGEIA T,{X1,Y1}
\&ADD T,BOXR,#3*20:LDMGEIA T,{X2,Y2}
f
BLGE line
pRSBS T,NY,#0:RSBLTS T,NZ,#0
z&ADD T,BOXR,#3*20:LDMGEIA T,{X1,Y1}
�&ADD T,BOXR,#0*20:LDMGEIA T,{X2,Y2}
�
BLGE line
�
�CMP NX,#0:CMPLT NZ,#0
�&ADD T,BOXR,#4*20:LDMGEIA T,{X1,Y1}
�&ADD T,BOXR,#5*20:LDMGEIA T,{X2,Y2}
�
BLGE line
�CMP NY,#0:CMPLT NZ,#0
�&ADD T,BOXR,#5*20:LDMGEIA T,{X1,Y1}
�&ADD T,BOXR,#6*20:LDMGEIA T,{X2,Y2}
�
BLGE line
�RSBS T,NX,#0:CMPLT NZ,#0
�&ADD T,BOXR,#6*20:LDMGEIA T,{X1,Y1}
	&ADD T,BOXR,#7*20:LDMGEIA T,{X2,Y2}
	
BLGE line
	RSBS T,NY,#0:CMPLT NZ,#0
	$&ADD T,BOXR,#7*20:LDMGEIA T,{X1,Y1}
	.&ADD T,BOXR,#4*20:LDMGEIA T,{X2,Y2}
	8
BLGE line
	B
	LRSBS T,NY,#0:CMPLT NX,#0
	V&ADD T,BOXR,#0*20:LDMGEIA T,{X1,Y1}
	`&ADD T,BOXR,#4*20:LDMGEIA T,{X2,Y2}
	j
BLGE line
	tCMP NX,#0:CMPLT NY,#0
	~&ADD T,BOXR,#1*20:LDMGEIA T,{X1,Y1}
	�&ADD T,BOXR,#5*20:LDMGEIA T,{X2,Y2}
	�
BLGE line
	�CMP NY,#0:RSBLTS T,NX,#0
	�&ADD T,BOXR,#2*20:LDMGEIA T,{X1,Y1}
	�&ADD T,BOXR,#6*20:LDMGEIA T,{X2,Y2}
	�
BLGE line
	�RSBS T,NX,#0:RSBLTS T,NY,#0
	�&ADD T,BOXR,#3*20:LDMGEIA T,{X1,Y1}
	�&ADD T,BOXR,#7*20:LDMGEIA T,{X2,Y2}
	�
BLGE line
	�LDMFD 13!,{PC}
	�]
�

	Q%=P%
�

(
2� �calc_invers
<K=2<<20
F&� I=1 � 1023:INVERS!(4*I)=K/I+.5:�
P�
Z
d� �calc_cstable
nF=2*�/4096:V=2^15
xT2=CSTABLE+8*1024
�T3=CSTABLE+8*2048
�T4=CSTABLE+8*3072
�� H=0 � 1023
�	K=F*H
�CS=�(K)*V:SN=�(K)*V
�CSTABLE!(8*H)=CS
�CSTABLE!(8*H+4)=SN
�T2!(8*H)=-SN
�T2!(8*H+4)=CS
�T3!(8*H)=-CS
�T3!(8*H+4)=-SN
�T4!(8*H)=SN
�T4!(8*H+4)=-CS
�
�

"� �calc_divtable
,T=0:N=1:Q=2:I=3:J=4:DIT=5
6� PASS=0 � 2 � 2
@	P%=Q%
J
[OPT PASS
T.DNRD EQUD 0
^.DITH EQUD 0
h.BIAS EQUD 0
r.calc_divtable
|STMFD 13!,{0-12,14}
�LDR DIT,DITH
�LDR I,DNRD
�.DVLOOP2
�LDR T,BIAS
�MOV N,I
�MOV J,#0
�MOV Q,#0
�.DVLOOP3
�CMP N,T
�MOVLO N,N,LSL #1
�ADDLO J,J,#1
�BLO DVLOOP3
�MOV N,N,LSR J
.DVLOOP1
CMP T,N,LSL J
SUBHS T,T,N,LSL J
&
ADC Q,Q,Q
0SUBS J,J,#1
:BPL DVLOOP1
DSTR Q,[DIT,I,LSL #2]
NSUBS I,I,#1
XBNE DVLOOP2
bLDMFD 13!,{0-12,PC}
l]
v�
�	Q%=P%
��
�
�� �calc_rot_matrix
�CHX=0:SHX=1
�CHY=2:SHY=3
�CHZ=4:SHZ=5
�T=6:S=7:H=8
�DHX=3:DHY=4:DHZ=5
�HX=9:HY=10:HZ=11
�TX=9:TY=10:TZ=11
�	CS=12
�SCR=0:COL=1

� PASS=0 � 2 � 2

	P%=Q%


[OPT PASS

 *.DHXD EQUD 0:.DHYD EQUD 0:.DHZD EQUD 0

*'.HXD EQUD 0:.HYD EQUD 0:.HZD EQUD 0

4.CSD EQUD CSTABLE

>'.TXD EQUD 0:.TYD EQUD 0:.TZD EQUD 0

\.calc_rot_matrix

fSTMFD 13!,{0-12,14}

pSWI "OS_Mouse"

z.SUB R0,R0,#640:MOV R0,R0,LSL #3:STR R0,TXD

�.SUB R1,R1,#512:MOV R1,R1,LSL #3:STR R1,TYD

�MLDR R0,TZD:TST R2,#1:SUBEQ R0,R0,#64:TST R2,#4:ADDEQ R0,R0,#64:STR R0,TZD
L0ADR T,DHXD:LDMIA T,{DHX,DHY,DHZ,HX,HY,HZ,CS}
V0ADD DHX,DHX,HX:ADD DHY,DHY,HY:ADD DHZ,DHZ,HZ
`&ADD T,T,#3*4:STMIA T,{DHX,DHY,DHZ}
jMOV S,#4096:SUB S,S,#1
t9CMP HX,#0:RSBMI HX,HX,#0:� HX,HX,S:ADD T,CS,HX,LSL #3
~&LDMIA T,{CHX,SHX}:RSBMI SHX,SHX,#0
�9CMP HY,#0:RSBMI HY,HY,#0:� HY,HY,S:ADD T,CS,HY,LSL #3
�&LDMIA T,{CHY,SHY}:RSBMI SHY,SHY,#0
�9CMP HZ,#0:RSBMI HZ,HZ,#0:� HZ,HZ,S:ADD T,CS,HZ,LSL #3
�&LDMIA T,{CHZ,SHZ}:RSBMI SHZ,SHZ,#0
� ADR T,TXD:LDMIA T,{TX,TY,TZ}
�!MUL T,CHY,CHZ:MOV T,T,ASR #15
�!MUL S,CHY,SHZ:MOV S,S,LSR #15
�ADD T,S,T,LSL #16:STR T,A1D
�"ADD T,TX,SHY,LSL #16:STR T,A2D
�
�)MUL T,SHX,SHY:MOV T,T,ASR #15:MOV S,T
�:MUL H,CHX,SHZ:MLA T,CHZ,T,H:RSB T,T,#0:MOV T,T,ASR #15
7MUL H,CHX,CHZ:MUL S,SHZ,S:SUB S,H,S:MOV S,S,LSR #15


ADD T,S,T,LSL #16:STR T,B1D
!MUL T,SHX,CHY:MOV T,T,ASR #15
( ADD T,TY,T,LSL #16:STR T,B2D
2)MUL T,CHX,SHY:MOV T,T,ASR #15:MOV S,T
<7MUL T,CHZ,T:MUL H,SHX,SHZ:SUB T,H,T:MOV T,T,ASR #15
F:MUL S,SHZ,S:MLA H,SHX,CHZ,S:RSB S,H,#0:MOV S,S,LSR #15
PADD T,S,T,LSL #16:STR T,C1D
Z!MUL T,CHX,CHY:MOV T,T,ASR #15
d ADD T,TZ,T,LSL #16:STR T,C2D
nLDMFD 13!,{0-12,PC}
x]
��
�	Q%=P%
��
�
�
�
�� �transform
�GA1=0:A2=1:B1=2:B2=3:C1=4:C2=5:T=6:DIT=7:U=8:V=9:W=10:X=10:Y=11:Z=12
�
A=13:B=14
�� PASS=0 � 2 � 2
�	P%=Q%
�
[OPT PASS
�.A1D EQUD 0:.A2D EQUD 0
.B1D EQUD 0:.B2D EQUD 0
.C1D EQUD 0:.C2D EQUD 0
.DITD EQUD DITABLE
"
,.VD EQUD 0
6.SP EQUD 0
@.LK EQUD 0
J
T.PIXD EQUD PIX
^.PIXT EQUD PIXPROJ
h.TG EQUD 0
r.transformpix
|STMFD 13!,{0-12,14}
�
STR 13,SP
�
ADR T,A1D
�#LDMIA T,{A1,A2,B1,B2,C1,C2,DIT}
�LDR A,PIXD:LDR B,PIXT
�@LDR T,TG:CMP T,#0:MOVNE T,#0:�Q T,#1:ADDNE B,B,#2*4:STR T,TG
�#LDMIA (A)!,{X,Y,Z}:ADD A,A,#3*4
�
BAL TRANS
�
�
�.transform
�STMFD 13!,{0-12,14}
�
STR 13,SP
�
ADR T,A1D
'LDMIA T,{A1,A2,B1,B2,C1,C2,DIT,A,B}
#LDMIA (A)!,{X,Y,Z}:ADD A,A,#3*4

.TRANS
&MOV T,A1,ASR #16
0
MUL U,X,T
:MOV T,A1,LSL #16
DMOV T,T,ASR #16
NMLA U,Y,T,U
XMOV T,A2,ASR #16
bMLA U,Z,T,U
lMOV T,A2,LSL #16
vMOV T,T,ASR #16
�ADD U,T,U,ASR #15
�MOV T,B1,ASR #16
�
MUL V,X,T
�MOV T,B1,LSL #16
�MOV T,T,ASR #16
�MLA V,Y,T,V
�MOV T,B2,ASR #16
�MLA V,Z,T,V
�MOV T,B2,LSL #16
�MOV T,T,ASR #16
�ADD V,T,V,ASR #15
�MOV T,C1,ASR #16
�
MUL W,T,X
MOV T,C1,LSL #16
MOV T,T,ASR #16
MLA W,Y,T,W
 MOV T,C2,ASR #16
*MLA W,Z,T,W
4MOV T,C2,LSL #16
>MOV T,T,ASR #16
HADD W,T,W,ASR #15
R; CMP W,#0
\; MOVMI W,#1
fLDR W,[DIT,W,LSL #2]
p
MUL U,W,U
z
MUL V,W,V
�MOV U,U,ASR #12
�MOV V,V,ASR #12
�ADD U,U,#160
�ADD V,V,#128
�!STMIA (B)!,{U,V}:ADD B,B,#2*4
�#LDMIA (A)!,{X,Y,Z}:ADD A,A,#3*4
�CMP X,#1<<30
�
BNE TRANS
�
LDR 13,SP
�LDMFD 13!,{0-12,PC}
�
�
�.BOXD EQUD BOX
.transformbox
STMFD 13!,{0-12,14}

STR 13,SP
$
ADR T,A1D
.#LDMIA T,{A1,A2,B1,B2,C1,C2,DIT}
8LDR A,BOXD
BLDMIA (A)!,{X,Y,Z}
L.TRANSB
VMOV T,A1,ASR #16
`
MUL U,X,T
jMOV T,A1,LSL #16
tMOV T,T,ASR #16
~MLA U,Y,T,U
�MOV T,A2,ASR #16
�MLA U,Z,T,U
�MOV T,A2,LSL #16
�MOV T,T,ASR #16
�ADD U,T,U,ASR #15
�MOV T,B1,ASR #16
�
MUL V,X,T
�MOV T,B1,LSL #16
�MOV T,T,ASR #16
�MLA V,Y,T,V
�MOV T,B2,ASR #16
�MLA V,Z,T,V
MOV T,B2,LSL #16

MOV T,T,ASR #16
ADD V,T,V,ASR #15
MOV T,C1,ASR #16
(
MUL W,T,X
2MOV T,C1,LSL #16
<MOV T,T,ASR #16
FMLA W,Y,T,W
PMOV T,C2,ASR #16
ZMLA W,Z,T,W
dMOV T,C2,LSL #16
nMOV T,T,ASR #16
xADDS W,T,W,ASR #15
�LDR W,[DIT,W,LSL #2]
�
MUL U,W,U
�
MUL V,W,V
�MOV U,U,ASR #12
�MOV V,V,ASR #12
�ADD U,U,#160
�ADD V,V,#128
�STMIA (A)!,{U,V}
�LDMIA (A)!,{X,Y,Z}
�CMP X,#1<<30
�BNE TRANSB
�
LDR 13,SP
�LDMFD 13!,{0-12,PC}
]
"�
,	Q%=P%
6�
:
D
N� �adjustposition
XBP=0:CP=1:X=2:Y=3:Z=4:VX=5:VY=6:VZ=7:T=8:GX=9:GY=10:GZ=11:DT=12
b
FO=4+4*SH
l� PASS=0 � 2 � 2
v	P%=Q%
�
[OPT PASS
�
�
�.DITD EQUD DITABLE
�.adjustpix
�STMFD 13!,{0-12,14}
�LDR P,PIXD
�LDR DT,DITD
�MOV CP,#ND
�LDMIA P,{X,Y,Z,VX,VY,VZ}
� ADD X,X,VX
�ADD T,X,#box<<SH
�CMP T,#2*box<<SH
RSBHI VX,VX,#0
ADDHI X,X,VX,LSL #1
 ADD Y,Y,VY
 ADD T,Y,#box<<SH
*CMP T,#2*box<<SH
4RSBHI VY,VY,#0
>ADDHI Y,Y,VY,LSL #1
H ADD Z,Z,VZ
RADD T,Z,#box<<SH
\CMP T,#2*box<<SH
fRSBHI VZ,VZ,#0
pADDHI Z,Z,VZ,LSL #1
zSTMIA (P)!,{X,Y,Z,VX,VY,VZ}
�SUBS CP,CP,#1
�MOV GX,X:MOV GY,Y:MOV GZ,Z
�
�.adjust2
�LDMIA P,{X,Y,Z,VX,VY,VZ}
� ADD X,X,VX
�; ADD T,X,#box<<SH
�; CMP T,#2*box<<SH
�;  RSBHI VX,VX,#0
�; ADDHI X,X,VX,LSL #1
�
� ADD Y,Y,VY
�; ADD T,Y,#box<<SH
; CMP T,#2*box<<SH
; RSBHI VY,VY,#0
; ADDHI Y,Y,VY,LSL #1
$
. ADD Z,Z,VZ
8; ADD T,Z,#box<<SH
B; CMP T,#2*box<<SH
L; RSBHI VZ,VZ,#0
V; ADDHI Z,Z,VZ,LSL #1
`STMIA (P)!,{X,Y,Z}
j
tSUBS X,GX,X
~MOV T,X
�RSBMI T,T,#0
�
�SUBS Y,GY,Y
�ADDPL T,T,Y
�SUBMI T,T,Y
�
�SUBS Z,GZ,Z
�ADDPL T,T,Z
�SUBMI T,T,Z
�
�ADD VX,VX,X,ASR #9
�ADD VY,VY,Y,ASR #9
ADD VZ,VZ,Z,ASR #9

MOV T,#20<<SH
CMP VX,T:MOVGT VX,T
CMN VX,T:RSBLT VX,T,#0
(CMP VY,T:MOVGT VY,T
2CMN VY,T:RSBLT VY,T,#0
<CMP VZ,T:MOVGT VZ,T
FCMN VZ,T:RSBLT VZ,T,#0
P
ZSTMIA (P)!,{VX,VY,VZ}
d
nSUBS CP,CP,#1
xBNE adjust2
�LDMFD 13!,{0-12,PC}
�
�]
�	Q%=P%
��
�
�
�� �line
�
�� DITABLE2 1024*4
�P%=DITABLE2+4
�� I=1 � 1024
�
[OPT 0
EQUD (2^20/I)
]
�
"
,� CTABLE2 16
6P%=CTABLE2
@
[OPT 0
JEQUB %11111111
TEQUB %11111110
^EQUB %11111101
hEQUB %11111100
rEQUB %11010011
|EQUB %11010010
�EQUB %11010001
�EQUB %11010000
�EQUB %00101111
�EQUB %00101110
�EQUB %00101101
�EQUB %00101100
�EQUB %00000011
�EQUB %00000010
�EQUB %00000001
�EQUB %00000000
�]
�
�EX1=0:Y1=1:X2=2:Y2=3:XL=4:XR=5:YB=6:YT=7:K1=8:K2=9:DT=10:S=11:T=12
�&LL=0:RR=1:A=2:B=3:C=4:O=5:D=6:CT=7
�� PASS=0 � 2 � 2
�	P%=Q%

[OPT PASS
N\-------------------------------------------------------------------------
.screen1 EQUD 148:EQUD -1
 .screen EQUD 0
*.CTABLED EQUD CTABLE2
4
>).BOXD EQUD 1:EQUD 318:EQUD 1:EQUD 254
H.DITABLED EQUD DITABLE2
R.set
\:ADR R0,screen1:ADR R1,screen:SWI "OS_ReadVduVariables"
fMOV PC,R14
g
p2� Anti-aliased lines, with Sutherland clipping
q8� Parameters  (X1,Y1) => (R0,R1); (X2,Y2) => (R2,R3)
�	.line
�STMFD 13!,{8-11}
�ADR T,BOXD
�LDMIA T,{XL,XR,YB,YT,DT}
�
MOV K1,#0
�
CMP X1,XL
��RLT K1,K1,#1
�
CMP X1,XR
��RGT K1,K1,#2
�
CMP Y1,YB
��RLT K1,K1,#4
�
CMP Y1,YT
��RGT K1,K1,#8

MOV K2,#0

CMP X2,XL
�RLT K2,K2,#1
$
CMP X2,XR
.�RGT K2,K2,#2
8
CMP Y2,YB
B�RLT K2,K2,#4
L
CMP Y2,YT
V�RGT K2,K2,#8
`�RS T,K1,K2
j.BEQ endwhile  \ Line completely inside box
t�S T,K1,K2
~LDMNEFD 13!,{8-11}
�/MOVNE PC,R14  \ Line completely outside box
�
�
.while
�,CMP K1,#0     \ Swap (x1,y1) outside box
��Q T,X1:�Q X1,X2:�Q X2,T
��Q T,Y1:�Q Y1,Y2:�Q Y2,T
��Q T,K1:�Q K1,K2:�Q K2,T
�
�TST K1,#1:BEQ sk1
�1SUBS T,X2,X1:RSBMI T,T,#0:LDR S,[DT,T,LSL #2]
�7SUB  T,Y2,Y1:RSBMI T,T,#0:MUL S,T,S:MOV S,S,ASR #10
�SUB  T,XL,X1:MUL S,T,S
ADD  Y1,Y1,S,ASR #10

MOV  X1,XL
.sk1
TST K1,#2:BEQ sk2
(1SUBS T,X2,X1:RSBMI T,T,#0:LDR S,[DT,T,LSL #2]
27SUB  T,Y2,Y1:RSBMI T,T,#0:MUL S,T,S:MOV S,S,ASR #10
<SUB  T,XR,X1:MUL S,T,S
FADD  Y1,Y1,S,ASR #10
PMOV  X1,XR
Z.sk2
d
n
MOV K1,#0
x
CMP Y1,YB
��RLT K1,K1,#4
�
CMP Y1,YT
��RGT K1,K1,#8
��S T,K1,K2
�LDMNEFD 13!,{8-11}
�/MOVNE PC,R14  \ Line completely outside box
��RS T,K1,K2
�.BEQ endwhile  \ Line completely inside box
�
�TST K1,#4:BEQ sk3
�1SUBS T,Y2,Y1:RSBMI T,T,#0:LDR S,[DT,T,LSL #2]
�7SUB  T,X2,X1:RSBMI T,T,#0:MUL S,T,S:MOV S,S,ASR #10
�SUB  T,YB,Y1:MUL S,T,S
ADD  X1,X1,S,ASR #10
MOV  Y1,YB
.sk3
"TST K1,#8:BEQ sk4
,1SUBS T,Y2,Y1:RSBMI T,T,#0:LDR S,[DT,T,LSL #2]
67SUB  T,X2,X1:RSBMI T,T,#0:MUL S,T,S:MOV S,S,ASR #10
@SUB  T,YT,Y1:MUL S,T,S
JADD  X1,X1,S,ASR #10
TMOV  Y1,YT
^.sk4
h
r
MOV K1,#0
|
CMP X1,XL
��RLT K1,K1,#1
�
CMP X1,XR
��RGT K1,K1,#2
��S T,K1,K2
�LDMNEFD 13!,{8-11}
�/MOVNE PC,R14  \ Line completely outside box
��RS T,K1,K2
�
BNE while
�..endwhile     \ Line completely inside box
�
�ADR T,screen
�LDMIA T,{O,CT}
�RSB T,Y1,#255
 ADD T,T,T,LSL #2
 ADD T,X1,T,LSL #6
 
ADD O,O,T
 &SUB A,X2,X1
 0SUB B,Y2,Y1
 :
MOV LL,#1
 DMOV RR,#320
 NRSB RR,RR,#0
 XCMP A,#0
 b RSBLT A,A,#0
 l RSBLT LL,LL,#0
 vCMP B,#0
 � RSBLT B,B,#0
 � RSBLT RR,RR,#0
 �CMP A,B
 � MOVLT T,A
 � MOVLT A,B
 � MOVLT B,T
 � MOVLT T,LL
 � MOVLT LL,RR
 � MOVLT RR,T
 �LDRB C,[CT]
 �STRB C,[O]
 �CMP A,#0
 �LDMEQFD 13!,{8-11}
! �Q PC,R14
!LDR T,[DT,A,LSL #2]
!
MUL B,T,B
! MOV D,#1<<20
!*.line_loop
!4SUBS D,D,B
!>ADDLE D,D,#1<<20
!HADDLE O,O,RR
!RRSB  T,D,#1<<20
!\LDRB C,[CT,T,LSR #17]
!fSTRB C,[O,LL]!
!pLDRB C,[CT,D,LSR #17]
!zSTRB C,[O,RR]
!�SUBS A,A,#1
!�BNE line_loop
!�LDMFD 13!,{8-11}
!�MOV PC,R14
!�
!�
!�]
!��
!�	Q%=P%
!�
!�
!�MNL=0:    :TAB=2:FREE=3:NR=4:INV=5:CO=6:   N=7:     X1=9:Y1=10:X2=11:Y2=12
!�MLE=0:RE=1:  L=2:   R=3:XL=4: XR=5:DXL=6:DXR=7: O=8:C1=9:C2=10:C3=11:C4=12
"
PL=0:PR=1
" Q=13:T=14
"	PO=13
"$� PASS=0 � 2 � 2
".	P%=Q%
"8
[OPT PASS
"B
"L.PIXL EQUD PIXPROJ
"V.drawpix
"`STMFD 13!,{14}
"jLDR 5,PIXL
"tMOV 4,#%11111100
"~
MOV 6,#ND
"�.pixloop
"�LDMIA 5!,{0,1,2,3}
"�STMFD 13!,{4-6}
"�BL line
"�LDMFD 13!,{4-6}
"�SUBS 6,6,#1
"�BNE pixloop
"�LDMFD 13!,{PC}
"�
"�]
"��
"�	Q%=P%
#�
�
00000000  0d 00 0a 0e f4 20 3e 33  44 53 57 41 52 4d 0d 00  |..... >3DSWARM..|
00000010  14 17 f4 20 28 63 29 20  4a 61 6e 20 56 6c 69 65  |... (c) Jan Vlie|
00000020  74 69 6e 63 6b 0d 00 15  1d f4 20 76 6c 69 65 74  |tinck..... vliet|
00000030  69 6e 40 69 6e 74 65 63  2e 72 75 67 2e 61 63 2e  |in@intec.rug.ac.|
00000040  62 65 0d 00 28 04 0d 00  32 2c f4 4f 4e 20 45 52  |be..(...2,.ON ER|
00000050  52 4f 52 3a 50 52 49 4e  54 20 22 45 72 72 6f 72  |ROR:PRINT "Error|
00000060  20 61 74 20 6c 69 6e 65  20 22 3b 45 52 4c 3a 45  | at line ";ERL:E|
00000070  4e 44 0d 00 33 09 ee 20  85 3a e0 0d 00 3c 10 eb  |ND..3.. .:...<..|
00000080  31 33 2b 31 32 38 3a eb  20 31 33 0d 00 46 04 0d  |13+128:. 13..F..|
00000090  00 50 0a 4e 44 3d 31 35  30 0d 00 5a 11 53 48 3d  |.P.ND=150..Z.SH=|
000000a0  34 3a 46 49 58 3d 32 5e  53 48 0d 00 64 0b 62 6f  |4:FIX=2^SH..d.bo|
000000b0  78 3d 31 36 30 0d 00 6e  04 0d 00 78 12 de 20 50  |x=160..n...x.. P|
000000c0  49 58 20 4e 44 2a 36 2a  34 2b 34 0d 00 82 18 de  |IX ND*6*4+4.....|
000000d0  20 50 49 58 50 52 4f 4a  20 4e 44 2a 34 2a 34 2b  | PIXPROJ ND*4*4+|
000000e0  31 30 30 0d 00 8c 13 de  20 42 4f 58 20 34 2a 28  |100..... BOX 4*(|
000000f0  38 2a 35 2b 31 29 0d 00  96 08 f2 61 73 73 0d 00  |8*5+1).....ass..|
00000100  a0 0d f2 62 75 69 6c 64  70 69 78 0d 00 aa 0d f2  |...buildpix.....|
00000110  62 75 69 6c 64 62 6f 78  0d 00 be 0c 87 3a d6 20  |buildbox.....:. |
00000120  6d 61 69 6e 0d 00 c8 05  e0 0d 00 d2 04 0d 00 dc  |main............|
00000130  04 0d 00 e6 0b dd 20 f2  6d 61 69 6e 0d 00 f0 3d  |...... .main...=|
00000140  21 44 4e 52 44 3d 34 30  30 30 2a 31 36 3a 21 44  |!DNRD=4000*16:!D|
00000150  49 54 48 3d 44 49 54 41  42 4c 45 3a 21 42 49 41  |ITH=DITABLE:!BIA|
00000160  53 3d 32 30 30 3c 3c 31  32 3a d6 20 63 61 6c 63  |S=200<<12:. calc|
00000170  5f 64 69 76 74 61 62 6c  65 0d 00 fa 3d 21 44 4e  |_divtable...=!DN|
00000180  52 44 3d 34 30 30 2a 31  36 3a 21 44 49 54 48 3d  |RD=400*16:!DITH=|
00000190  44 49 54 41 42 4c 45 33  3a 21 42 49 41 53 3d 32  |DITABLE3:!BIAS=2|
000001a0  35 36 3c 3c 31 32 3a d6  20 63 61 6c 63 5f 64 69  |56<<12:. calc_di|
000001b0  76 74 61 62 6c 65 0d 01  04 08 56 54 3d 32 0d 01  |vtable....VT=2..|
000001c0  0e 20 21 44 48 58 44 3d  28 2d 31 29 5e b3 28 32  |. !DHXD=(-1)^.(2|
000001d0  29 2a 28 b3 28 56 54 2a  32 29 2b 56 54 29 0d 01  |)*(.(VT*2)+VT)..|
000001e0  18 20 21 44 48 59 44 3d  28 2d 31 29 5e b3 28 32  |. !DHYD=(-1)^.(2|
000001f0  29 2a 28 b3 28 56 54 2a  32 29 2b 56 54 29 0d 01  |)*(.(VT*2)+VT)..|
00000200  22 20 21 44 48 5a 44 3d  28 2d 31 29 5e b3 28 32  |" !DHZD=(-1)^.(2|
00000210  29 2a 28 b3 28 56 54 2a  32 29 2b 56 54 29 0d 01  |)*(.(VT*2)+VT)..|
00000220  2c 1d 21 54 58 44 3d 30  3a 21 54 59 44 3d 30 3a  |,.!TXD=0:!TYD=0:|
00000230  21 54 5a 44 3d 34 34 30  2a 31 36 0d 01 36 14 e3  |!TZD=440*16..6..|
00000240  20 50 41 53 53 3d 30 20  b8 20 32 20 88 20 32 0d  | PASS=0 . 2 . 2.|
00000250  01 40 09 50 25 3d 51 25  0d 01 4a 0d 5b 4f 50 54  |.@.P%=Q%..J.[OPT|
00000260  20 50 41 53 53 0d 01 54  10 2e 62 61 6e 6b 20 45  | PASS..T..bank E|
00000270  51 55 44 20 32 0d 01 5e  09 2e 6d 61 69 6e 0d 01  |QUD 2..^..main..|
00000280  68 12 53 54 4d 46 44 20  31 33 21 2c 7b 31 34 7d  |h.STMFD 13!,{14}|
00000290  0d 01 72 16 42 4c 20 63  61 6c 63 5f 72 6f 74 5f  |..r.BL calc_rot_|
000002a0  6d 61 74 72 69 78 0d 01  7c 10 42 4c 20 61 64 6a  |matrix..|.BL adj|
000002b0  75 73 74 70 69 78 0d 01  86 13 42 4c 20 74 72 61  |ustpix....BL tra|
000002c0  6e 73 66 6f 72 6d 70 69  78 0d 01 90 0d 2e 6d 61  |nsformpix.....ma|
000002d0  69 6e 6c 6f 6f 70 0d 01  9a 16 42 4c 20 63 61 6c  |inloop....BL cal|
000002e0  63 5f 72 6f 74 5f 6d 61  74 72 69 78 0d 01 b8 10  |c_rot_matrix....|
000002f0  42 4c 20 61 64 6a 75 73  74 70 69 78 0d 01 c2 13  |BL adjustpix....|
00000300  42 4c 20 74 72 61 6e 73  66 6f 72 6d 70 69 78 0d  |BL transformpix.|
00000310  01 cc 29 4d 4f 56 20 52  30 2c 23 26 37 30 3a 4c  |..)MOV R0,#&70:L|
00000320  44 52 20 52 31 2c 62 61  6e 6b 3a 53 57 49 20 22  |DR R1,bank:SWI "|
00000330  4f 53 5f 42 79 74 65 22  0d 01 d6 0c 53 57 49 20  |OS_Byte"....SWI |
00000340  26 31 30 43 0d 01 e0 0a  42 4c 20 73 65 74 0d 01  |&10C....BL set..|
00000350  ea 13 42 4c 20 74 72 61  6e 73 66 6f 72 6d 62 6f  |..BL transformbo|
00000360  78 0d 01 f4 13 42 4c 20  64 72 61 77 62 6f 78 5f  |x....BL drawbox_|
00000370  62 61 63 6b 0d 02 12 0e  42 4c 20 64 72 61 77 70  |back....BL drawp|
00000380  69 78 0d 02 1c 14 42 4c  20 64 72 61 77 62 6f 78  |ix....BL drawbox|
00000390  5f 66 72 6f 6e 74 0d 02  26 1d 4d 4f 56 20 52 30  |_front..&.MOV R0|
000003a0  2c 23 26 31 33 3a 53 57  49 20 22 4f 53 5f 42 79  |,#&13:SWI "OS_By|
000003b0  74 65 22 0d 02 30 29 4d  4f 56 20 52 30 2c 23 26  |te"..0)MOV R0,#&|
000003c0  37 31 3a 4c 44 52 20 52  31 2c 62 61 6e 6b 3a 53  |71:LDR R1,bank:S|
000003d0  57 49 20 22 4f 53 5f 42  79 74 65 22 0d 02 3a 26  |WI "OS_Byte"..:&|
000003e0  4c 44 52 20 52 31 2c 62  61 6e 6b 3a 82 20 52 31  |LDR R1,bank:. R1|
000003f0  2c 52 31 2c 23 33 3a 53  54 52 20 52 31 2c 62 61  |,R1,#3:STR R1,ba|
00000400  6e 6b 0d 02 4e 1c 53 57  49 20 22 4f 53 5f 52 65  |nk..N.SWI "OS_Re|
00000410  61 64 45 73 63 61 70 65  53 74 61 74 65 22 0d 02  |adEscapeState"..|
00000420  58 10 42 43 43 20 6d 61  69 6e 6c 6f 6f 70 0d 02  |X.BCC mainloop..|
00000430  62 12 4c 44 4d 46 44 20  31 33 21 2c 7b 50 43 7d  |b.LDMFD 13!,{PC}|
00000440  0d 02 6c 05 5d 0d 02 76  05 ed 0d 02 80 09 51 25  |..l.]..v......Q%|
00000450  3d 50 25 0d 02 8a 05 e1  0d 02 94 04 0d 02 9e 04  |=P%.............|
00000460  0d 02 a8 0a dd 20 f2 61  73 73 0d 02 b2 0f de 20  |..... .ass..... |
00000470  51 25 20 31 33 30 30 30  30 0d 02 bc 13 de 20 49  |Q% 130000..... I|
00000480  4e 56 45 52 53 20 34 2a  31 30 32 34 0d 02 c6 17  |NVERS 4*1024....|
00000490  de 20 44 49 54 41 42 4c  45 20 34 30 30 30 2a 31  |. DITABLE 4000*1|
000004a0  36 2a 34 0d 02 d0 17 de  20 44 49 54 41 42 4c 45  |6*4..... DITABLE|
000004b0  33 20 34 30 30 2a 31 36  2a 34 0d 02 da 14 de 20  |3 400*16*4..... |
000004c0  43 53 54 41 42 4c 45 20  34 30 39 36 2a 38 0d 02  |CSTABLE 4096*8..|
000004d0  e4 13 de 20 43 54 41 42  4c 45 20 31 30 30 2a 31  |... CTABLE 100*1|
000004e0  36 0d 02 ee 10 f2 63 61  6c 63 5f 69 6e 76 65 72  |6.....calc_inver|
000004f0  73 0d 02 f8 11 f2 63 61  6c 63 5f 63 73 74 61 62  |s.....calc_cstab|
00000500  6c 65 0d 03 02 12 f2 63  61 6c 63 5f 64 69 76 74  |le.....calc_divt|
00000510  61 62 6c 65 0d 03 0c 0e  f2 74 72 61 6e 73 66 6f  |able.....transfo|
00000520  72 6d 0d 03 16 09 f2 6c  69 6e 65 0d 03 20 14 f2  |rm.....line.. ..|
00000530  63 61 6c 63 5f 72 6f 74  5f 6d 61 74 72 69 78 0d  |calc_rot_matrix.|
00000540  03 2a 13 f2 61 64 6a 75  73 74 70 6f 73 69 74 69  |.*..adjustpositi|
00000550  6f 6e 0d 03 34 0c f2 64  72 61 77 62 6f 78 0d 03  |on..4..drawbox..|
00000560  3e 09 f2 6d 61 69 6e 0d  03 48 05 e1 0d 03 52 04  |>..main..H....R.|
00000570  0d 03 5c 0f dd 20 f2 62  75 69 6c 64 70 69 78 0d  |..\.. .buildpix.|
00000580  03 66 0a 50 25 3d 50 49  58 0d 03 70 09 53 50 3d  |.f.P%=PIX..p.SP=|
00000590  32 30 0d 03 7a 0a 5b 4f  50 54 20 30 0d 03 84 18  |20..z.[OPT 0....|
000005a0  45 51 55 44 20 28 b3 28  31 30 30 29 2d 35 30 29  |EQUD (.(100)-50)|
000005b0  3c 3c 53 48 0d 03 8e 18  45 51 55 44 20 28 b3 28  |<<SH....EQUD (.(|
000005c0  31 30 30 29 2d 35 30 29  3c 3c 53 48 0d 03 98 18  |100)-50)<<SH....|
000005d0  45 51 55 44 20 28 b3 28  31 30 30 29 2d 35 30 29  |EQUD (.(100)-50)|
000005e0  3c 3c 53 48 0d 03 a2 1b  45 51 55 44 20 28 2d 31  |<<SH....EQUD (-1|
000005f0  29 5e b3 28 32 29 2a b3  28 53 50 29 2b 31 30 0d  |)^.(2)*.(SP)+10.|
00000600  03 ac 1b 45 51 55 44 20  28 2d 31 29 5e b3 28 32  |...EQUD (-1)^.(2|
00000610  29 2a b3 28 53 50 29 2b  31 30 0d 03 b6 1b 45 51  |)*.(SP)+10....EQ|
00000620  55 44 20 28 2d 31 29 5e  b3 28 32 29 2a b3 28 53  |UD (-1)^.(2)*.(S|
00000630  50 29 2b 31 30 0d 03 c0  05 5d 0d 03 ca 09 53 50  |P)+10....]....SP|
00000640  3d 31 30 0d 03 d4 10 e3  20 49 3d 31 20 b8 20 4e  |=10..... I=1 . N|
00000650  44 2d 31 0d 03 de 0a 5b  4f 50 54 20 30 0d 03 e8  |D-1....[OPT 0...|
00000660  48 45 51 55 44 20 b3 28  31 30 30 2a 46 49 58 29  |HEQUD .(100*FIX)|
00000670  2d 35 30 2a 46 49 58 3a  45 51 55 44 20 b3 28 31  |-50*FIX:EQUD .(1|
00000680  30 30 2a 46 49 58 29 2d  35 30 2a 46 49 58 3a 45  |00*FIX)-50*FIX:E|
00000690  51 55 44 20 b3 28 31 30  30 2a 46 49 58 29 2d 35  |QUD .(100*FIX)-5|
000006a0  30 2a 46 49 58 0d 03 f2  33 45 51 55 44 20 b3 28  |0*FIX...3EQUD .(|
000006b0  32 2a 53 50 29 2d 53 50  3a 45 51 55 44 20 b3 28  |2*SP)-SP:EQUD .(|
*
000006d0  32 2a 53 50 29 2d 53 50  0d 03 fc 05 5d 0d 04 06  |2*SP)-SP....]...|
000006e0  05 ed 0d 04 10 17 5b 4f  50 54 20 30 3a 45 51 55  |......[OPT 0:EQU|
000006f0  44 20 31 3c 3c 33 30 3a  5d 0d 04 1a 05 e1 0d 04  |D 1<<30:].......|
00000700  24 04 0d 04 2e 0f dd 20  f2 62 75 69 6c 64 62 6f  |$...... .buildbo|
00000710  78 0d 04 38 0a 50 25 3d  42 4f 58 0d 04 42 0e 42  |x..8.P%=BOX..B.B|
00000720  4f 3d 62 6f 78 2a 46 49  58 0d 04 4c 0e 4e 4f 3d  |O=box*FIX..L.NO=|
00000730  31 30 30 2a 46 49 58 0d  04 56 0a 5b 4f 50 54 20  |100*FIX..V.[OPT |
00000740  30 0d 04 60 2c 45 51 55  44 20 20 42 4f 3a 45 51  |0..`,EQUD  BO:EQ|
00000750  55 44 20 2d 42 4f 3a 45  51 55 44 20 2d 42 4f 3a  |UD -BO:EQUD -BO:|
00000760  45 51 55 44 20 30 3a 45  51 55 44 20 30 0d 04 6a  |EQUD 0:EQUD 0..j|
00000770  2c 45 51 55 44 20 20 42  4f 3a 45 51 55 44 20 20  |,EQUD  BO:EQUD  |
00000780  42 4f 3a 45 51 55 44 20  2d 42 4f 3a 45 51 55 44  |BO:EQUD -BO:EQUD|
00000790  20 30 3a 45 51 55 44 20  30 0d 04 74 2c 45 51 55  | 0:EQUD 0..t,EQU|
000007a0  44 20 2d 42 4f 3a 45 51  55 44 20 20 42 4f 3a 45  |D -BO:EQUD  BO:E|
000007b0  51 55 44 20 2d 42 4f 3a  45 51 55 44 20 30 3a 45  |QUD -BO:EQUD 0:E|
000007c0  51 55 44 20 30 0d 04 7e  2c 45 51 55 44 20 2d 42  |QUD 0..~,EQUD -B|
000007d0  4f 3a 45 51 55 44 20 2d  42 4f 3a 45 51 55 44 20  |O:EQUD -BO:EQUD |
000007e0  2d 42 4f 3a 45 51 55 44  20 30 3a 45 51 55 44 20  |-BO:EQUD 0:EQUD |
000007f0  30 0d 04 88 2c 45 51 55  44 20 20 42 4f 3a 45 51  |0...,EQUD  BO:EQ|
00000800  55 44 20 2d 42 4f 3a 45  51 55 44 20 20 42 4f 3a  |UD -BO:EQUD  BO:|
00000810  45 51 55 44 20 30 3a 45  51 55 44 20 30 0d 04 92  |EQUD 0:EQUD 0...|
00000820  2c 45 51 55 44 20 20 42  4f 3a 45 51 55 44 20 20  |,EQUD  BO:EQUD  |
00000830  42 4f 3a 45 51 55 44 20  20 42 4f 3a 45 51 55 44  |BO:EQUD  BO:EQUD|
00000840  20 30 3a 45 51 55 44 20  30 0d 04 9c 2c 45 51 55  | 0:EQUD 0...,EQU|
00000850  44 20 2d 42 4f 3a 45 51  55 44 20 20 42 4f 3a 45  |D -BO:EQUD  BO:E|
00000860  51 55 44 20 20 42 4f 3a  45 51 55 44 20 30 3a 45  |QUD  BO:EQUD 0:E|
00000870  51 55 44 20 30 0d 04 a6  2c 45 51 55 44 20 2d 42  |QUD 0...,EQUD -B|
00000880  4f 3a 45 51 55 44 20 2d  42 4f 3a 45 51 55 44 20  |O:EQUD -BO:EQUD |
00000890  20 42 4f 3a 45 51 55 44  20 30 3a 45 51 55 44 20  | BO:EQUD 0:EQUD |
000008a0  30 0d 04 b0 0e 45 51 55  44 20 31 3c 3c 33 30 0d  |0....EQUD 1<<30.|
000008b0  04 ba 05 5d 0d 04 c4 05  e1 0d 04 ce 04 0d 04 d8  |...]............|
000008c0  0e dd 20 f2 64 72 61 77  62 6f 78 0d 04 e2 18 ea  |.. .drawbox.....|
000008d0  20 58 31 2c 59 31 2c 58  32 2c 59 32 2c 54 2c 42  | X1,Y1,X2,Y2,T,B|
000008e0  4f 58 52 0d 04 ec 34 58  31 3d 30 3a 59 31 3d 31  |OXR...4X1=0:Y1=1|
000008f0  3a 58 32 3d 32 3a 59 32  3d 33 3a 42 4f 58 52 3d  |:X2=2:Y2=3:BOXR=|
00000900  38 3a 4e 58 3d 39 3a 4e  59 3d 31 30 3a 4e 5a 3d  |8:NX=9:NY=10:NZ=|
00000910  31 31 3a 54 3d 31 32 0d  04 f6 14 e3 20 50 41 53  |11:T=12..... PAS|
00000920  53 3d 30 20 b8 20 32 20  88 20 32 0d 05 00 09 50  |S=0 . 2 . 2....P|
00000930  25 3d 51 25 0d 05 0a 0d  5b 4f 50 54 20 50 41 53  |%=Q%....[OPT PAS|
00000940  53 0d 05 14 04 0d 05 1e  12 2e 42 4f 58 44 20 45  |S.........BOXD E|
00000950  51 55 44 20 42 4f 58 0d  05 28 12 2e 64 72 61 77  |QUD BOX..(..draw|
00000960  62 6f 78 5f 66 72 6f 6e  74 0d 05 32 12 53 54 4d  |box_front..2.STM|
00000970  46 44 20 31 33 21 2c 7b  31 34 7d 0d 05 3c 0d 4c  |FD 13!,{14}..<.L|
00000980  44 52 20 54 2c 43 31 44  0d 05 46 14 4d 4f 56 20  |DR T,C1D..F.MOV |
00000990  4e 58 2c 54 2c 41 53 52  20 23 31 36 0d 05 50 13  |NX,T,ASR #16..P.|
000009a0  4d 4f 56 20 54 2c 54 2c  4c 53 4c 20 23 31 36 0d  |MOV T,T,LSL #16.|
000009b0  05 5a 14 4d 4f 56 20 4e  59 2c 54 2c 41 53 52 20  |.Z.MOV NY,T,ASR |
000009c0  23 31 36 0d 05 64 0d 4c  44 52 20 54 2c 43 32 44  |#16..d.LDR T,C2D|
000009d0  0d 05 6e 14 4d 4f 56 20  4e 5a 2c 54 2c 41 53 52  |..n.MOV NZ,T,ASR|
000009e0  20 23 31 36 0d 05 78 11  4c 44 52 20 42 4f 58 52  | #16..x.LDR BOXR|
000009f0  2c 42 4f 58 44 0d 05 82  15 41 44 44 20 42 4f 58  |,BOXD....ADD BOX|
00000a00  52 2c 42 4f 58 52 2c 23  31 32 0d 05 8c 1c 43 4d  |R,BOXR,#12....CM|
00000a10  50 20 4e 58 2c 23 30 3a  52 53 42 4c 54 53 20 54  |P NX,#0:RSBLTS T|
00000a20  2c 4e 5a 2c 23 30 0d 05  96 26 41 44 44 20 54 2c  |,NZ,#0...&ADD T,|
00000a30  42 4f 58 52 2c 23 30 2a  32 30 3a 4c 44 4d 4c 54  |BOXR,#0*20:LDMLT|
00000a40  49 41 20 54 2c 7b 58 31  2c 59 31 7d 0d 05 a0 26  |IA T,{X1,Y1}...&|
00000a50  41 44 44 20 54 2c 42 4f  58 52 2c 23 31 2a 32 30  |ADD T,BOXR,#1*20|
00000a60  3a 4c 44 4d 4c 54 49 41  20 54 2c 7b 58 32 2c 59  |:LDMLTIA T,{X2,Y|
00000a70  32 7d 0d 05 aa 0d 42 4c  4c 54 20 6c 69 6e 65 0d  |2}....BLLT line.|
00000a80  05 b4 1c 43 4d 50 20 4e  59 2c 23 30 3a 52 53 42  |...CMP NY,#0:RSB|
00000a90  4c 54 53 20 54 2c 4e 5a  2c 23 30 0d 05 be 26 41  |LTS T,NZ,#0...&A|
00000aa0  44 44 20 54 2c 42 4f 58  52 2c 23 31 2a 32 30 3a  |DD T,BOXR,#1*20:|
00000ab0  4c 44 4d 4c 54 49 41 20  54 2c 7b 58 31 2c 59 31  |LDMLTIA T,{X1,Y1|
00000ac0  7d 0d 05 c8 26 41 44 44  20 54 2c 42 4f 58 52 2c  |}...&ADD T,BOXR,|
00000ad0  23 32 2a 32 30 3a 4c 44  4d 4c 54 49 41 20 54 2c  |#2*20:LDMLTIA T,|
00000ae0  7b 58 32 2c 59 32 7d 0d  05 d2 0d 42 4c 4c 54 20  |{X2,Y2}....BLLT |
00000af0  6c 69 6e 65 0d 05 dc 1f  52 53 42 53 20 54 2c 4e  |line....RSBS T,N|
00000b00  58 2c 23 30 3a 52 53 42  4c 54 53 20 54 2c 4e 5a  |X,#0:RSBLTS T,NZ|
00000b10  2c 23 30 0d 05 e6 26 41  44 44 20 54 2c 42 4f 58  |,#0...&ADD T,BOX|
00000b20  52 2c 23 32 2a 32 30 3a  4c 44 4d 4c 54 49 41 20  |R,#2*20:LDMLTIA |
00000b30  54 2c 7b 58 31 2c 59 31  7d 0d 05 f0 26 41 44 44  |T,{X1,Y1}...&ADD|
00000b40  20 54 2c 42 4f 58 52 2c  23 33 2a 32 30 3a 4c 44  | T,BOXR,#3*20:LD|
00000b50  4d 4c 54 49 41 20 54 2c  7b 58 32 2c 59 32 7d 0d  |MLTIA T,{X2,Y2}.|
00000b60  05 fa 0d 42 4c 4c 54 20  6c 69 6e 65 0d 06 04 1f  |...BLLT line....|
00000b70  52 53 42 53 20 54 2c 4e  59 2c 23 30 3a 52 53 42  |RSBS T,NY,#0:RSB|
00000b80  4c 54 53 20 54 2c 4e 5a  2c 23 30 0d 06 0e 26 41  |LTS T,NZ,#0...&A|
00000b90  44 44 20 54 2c 42 4f 58  52 2c 23 33 2a 32 30 3a  |DD T,BOXR,#3*20:|
00000ba0  4c 44 4d 4c 54 49 41 20  54 2c 7b 58 31 2c 59 31  |LDMLTIA T,{X1,Y1|
00000bb0  7d 0d 06 18 26 41 44 44  20 54 2c 42 4f 58 52 2c  |}...&ADD T,BOXR,|
00000bc0  23 30 2a 32 30 3a 4c 44  4d 4c 54 49 41 20 54 2c  |#0*20:LDMLTIA T,|
00000bd0  7b 58 32 2c 59 32 7d 0d  06 22 0d 42 4c 4c 54 20  |{X2,Y2}..".BLLT |
00000be0  6c 69 6e 65 0d 06 2c 04  0d 06 36 19 43 4d 50 20  |line..,...6.CMP |
00000bf0  4e 58 2c 23 30 3a 43 4d  50 4c 54 20 4e 5a 2c 23  |NX,#0:CMPLT NZ,#|
00000c00  30 0d 06 40 26 41 44 44  20 54 2c 42 4f 58 52 2c  |0..@&ADD T,BOXR,|
00000c10  23 34 2a 32 30 3a 4c 44  4d 4c 54 49 41 20 54 2c  |#4*20:LDMLTIA T,|
00000c20  7b 58 31 2c 59 31 7d 0d  06 4a 26 41 44 44 20 54  |{X1,Y1}..J&ADD T|
00000c30  2c 42 4f 58 52 2c 23 35  2a 32 30 3a 4c 44 4d 4c  |,BOXR,#5*20:LDML|
00000c40  54 49 41 20 54 2c 7b 58  32 2c 59 32 7d 0d 06 54  |TIA T,{X2,Y2}..T|
00000c50  0d 42 4c 4c 54 20 6c 69  6e 65 0d 06 5e 19 43 4d  |.BLLT line..^.CM|
00000c60  50 20 4e 59 2c 23 30 3a  43 4d 50 4c 54 20 4e 5a  |P NY,#0:CMPLT NZ|
00000c70  2c 23 30 0d 06 68 26 41  44 44 20 54 2c 42 4f 58  |,#0..h&ADD T,BOX|
00000c80  52 2c 23 35 2a 32 30 3a  4c 44 4d 4c 54 49 41 20  |R,#5*20:LDMLTIA |
00000c90  54 2c 7b 58 31 2c 59 31  7d 0d 06 72 26 41 44 44  |T,{X1,Y1}..r&ADD|
00000ca0  20 54 2c 42 4f 58 52 2c  23 36 2a 32 30 3a 4c 44  | T,BOXR,#6*20:LD|
00000cb0  4d 4c 54 49 41 20 54 2c  7b 58 32 2c 59 32 7d 0d  |MLTIA T,{X2,Y2}.|
00000cc0  06 7c 0d 42 4c 4c 54 20  6c 69 6e 65 0d 06 86 1c  |.|.BLLT line....|
00000cd0  52 53 42 53 20 54 2c 4e  58 2c 23 30 3a 43 4d 50  |RSBS T,NX,#0:CMP|
00000ce0  4c 54 20 4e 5a 2c 23 30  0d 06 90 26 41 44 44 20  |LT NZ,#0...&ADD |
00000cf0  54 2c 42 4f 58 52 2c 23  36 2a 32 30 3a 4c 44 4d  |T,BOXR,#6*20:LDM|
00000d00  4c 54 49 41 20 54 2c 7b  58 31 2c 59 31 7d 0d 06  |LTIA T,{X1,Y1}..|
00000d10  9a 26 41 44 44 20 54 2c  42 4f 58 52 2c 23 37 2a  |.&ADD T,BOXR,#7*|
00000d20  32 30 3a 4c 44 4d 4c 54  49 41 20 54 2c 7b 58 32  |20:LDMLTIA T,{X2|
00000d30  2c 59 32 7d 0d 06 a4 0d  42 4c 4c 54 20 6c 69 6e  |,Y2}....BLLT lin|
00000d40  65 0d 06 ae 1c 52 53 42  53 20 54 2c 4e 59 2c 23  |e....RSBS T,NY,#|
00000d50  30 3a 43 4d 50 4c 54 20  4e 5a 2c 23 30 0d 06 b8  |0:CMPLT NZ,#0...|
00000d60  26 41 44 44 20 54 2c 42  4f 58 52 2c 23 37 2a 32  |&ADD T,BOXR,#7*2|
00000d70  30 3a 4c 44 4d 4c 54 49  41 20 54 2c 7b 58 31 2c  |0:LDMLTIA T,{X1,|
00000d80  59 31 7d 0d 06 c2 26 41  44 44 20 54 2c 42 4f 58  |Y1}...&ADD T,BOX|
00000d90  52 2c 23 34 2a 32 30 3a  4c 44 4d 4c 54 49 41 20  |R,#4*20:LDMLTIA |
00000da0  54 2c 7b 58 32 2c 59 32  7d 0d 06 cc 0d 42 4c 4c  |T,{X2,Y2}....BLL|
00000db0  54 20 6c 69 6e 65 0d 06  d6 04 0d 06 e0 1c 52 53  |T line........RS|
00000dc0  42 53 20 54 2c 4e 59 2c  23 30 3a 43 4d 50 4c 54  |BS T,NY,#0:CMPLT|
00000dd0  20 4e 58 2c 23 30 0d 06  ea 26 41 44 44 20 54 2c  | NX,#0...&ADD T,|
00000de0  42 4f 58 52 2c 23 30 2a  32 30 3a 4c 44 4d 4c 54  |BOXR,#0*20:LDMLT|
00000df0  49 41 20 54 2c 7b 58 31  2c 59 31 7d 0d 06 f4 26  |IA T,{X1,Y1}...&|
00000e00  41 44 44 20 54 2c 42 4f  58 52 2c 23 34 2a 32 30  |ADD T,BOXR,#4*20|
00000e10  3a 4c 44 4d 4c 54 49 41  20 54 2c 7b 58 32 2c 59  |:LDMLTIA T,{X2,Y|
00000e20  32 7d 0d 06 fe 0d 42 4c  4c 54 20 6c 69 6e 65 0d  |2}....BLLT line.|
00000e30  07 08 19 43 4d 50 20 4e  58 2c 23 30 3a 43 4d 50  |...CMP NX,#0:CMP|
00000e40  4c 54 20 4e 59 2c 23 30  0d 07 12 26 41 44 44 20  |LT NY,#0...&ADD |
00000e50  54 2c 42 4f 58 52 2c 23  31 2a 32 30 3a 4c 44 4d  |T,BOXR,#1*20:LDM|
00000e60  4c 54 49 41 20 54 2c 7b  58 31 2c 59 31 7d 0d 07  |LTIA T,{X1,Y1}..|
00000e70  1c 26 41 44 44 20 54 2c  42 4f 58 52 2c 23 35 2a  |.&ADD T,BOXR,#5*|
00000e80  32 30 3a 4c 44 4d 4c 54  49 41 20 54 2c 7b 58 32  |20:LDMLTIA T,{X2|
00000e90  2c 59 32 7d 0d 07 26 0d  42 4c 4c 54 20 6c 69 6e  |,Y2}..&.BLLT lin|
00000ea0  65 0d 07 30 1c 43 4d 50  20 4e 59 2c 23 30 3a 52  |e..0.CMP NY,#0:R|
00000eb0  53 42 4c 54 53 20 54 2c  4e 58 2c 23 30 0d 07 3a  |SBLTS T,NX,#0..:|
00000ec0  26 41 44 44 20 54 2c 42  4f 58 52 2c 23 32 2a 32  |&ADD T,BOXR,#2*2|
00000ed0  30 3a 4c 44 4d 4c 54 49  41 20 54 2c 7b 58 31 2c  |0:LDMLTIA T,{X1,|
00000ee0  59 31 7d 0d 07 44 26 41  44 44 20 54 2c 42 4f 58  |Y1}..D&ADD T,BOX|
00000ef0  52 2c 23 36 2a 32 30 3a  4c 44 4d 4c 54 49 41 20  |R,#6*20:LDMLTIA |
00000f00  54 2c 7b 58 32 2c 59 32  7d 0d 07 4e 0d 42 4c 4c  |T,{X2,Y2}..N.BLL|
00000f10  54 20 6c 69 6e 65 0d 07  58 1f 52 53 42 53 20 54  |T line..X.RSBS T|
00000f20  2c 4e 58 2c 23 30 3a 52  53 42 4c 54 53 20 54 2c  |,NX,#0:RSBLTS T,|
00000f30  4e 59 2c 23 30 0d 07 62  26 41 44 44 20 54 2c 42  |NY,#0..b&ADD T,B|
00000f40  4f 58 52 2c 23 33 2a 32  30 3a 4c 44 4d 4c 54 49  |OXR,#3*20:LDMLTI|
00000f50  41 20 54 2c 7b 58 31 2c  59 31 7d 0d 07 6c 26 41  |A T,{X1,Y1}..l&A|
00000f60  44 44 20 54 2c 42 4f 58  52 2c 23 37 2a 32 30 3a  |DD T,BOXR,#7*20:|
00000f70  4c 44 4d 4c 54 49 41 20  54 2c 7b 58 32 2c 59 32  |LDMLTIA T,{X2,Y2|
00000f80  7d 0d 07 76 0d 42 4c 4c  54 20 6c 69 6e 65 0d 07  |}..v.BLLT line..|
00000f90  80 12 4c 44 4d 46 44 20  31 33 21 2c 7b 50 43 7d  |..LDMFD 13!,{PC}|
00000fa0  0d 07 8a 04 0d 07 94 11  2e 64 72 61 77 62 6f 78  |.........drawbox|
00000fb0  5f 62 61 63 6b 0d 07 9e  12 53 54 4d 46 44 20 31  |_back....STMFD 1|
00000fc0  33 21 2c 7b 31 34 7d 0d  07 a8 0d 4c 44 52 20 54  |3!,{14}....LDR T|
00000fd0  2c 43 31 44 0d 07 b2 14  4d 4f 56 20 4e 58 2c 54  |,C1D....MOV NX,T|
00000fe0  2c 41 53 52 20 23 31 36  0d 07 bc 13 4d 4f 56 20  |,ASR #16....MOV |
00000ff0  54 2c 54 2c 4c 53 4c 20  23 31 36 0d 07 c6 14 4d  |T,T,LSL #16....M|
00001000  4f 56 20 4e 59 2c 54 2c  41 53 52 20 23 31 36 0d  |OV NY,T,ASR #16.|
00001010  07 d0 0d 4c 44 52 20 54  2c 43 32 44 0d 07 da 14  |...LDR T,C2D....|
00001020  4d 4f 56 20 4e 5a 2c 54  2c 41 53 52 20 23 31 36  |MOV NZ,T,ASR #16|
00001030  0d 07 e4 11 4c 44 52 20  42 4f 58 52 2c 42 4f 58  |....LDR BOXR,BOX|
00001040  44 0d 07 ee 15 41 44 44  20 42 4f 58 52 2c 42 4f  |D....ADD BOXR,BO|
00001050  58 52 2c 23 31 32 0d 07  f8 1c 43 4d 50 20 4e 58  |XR,#12....CMP NX|
00001060  2c 23 30 3a 52 53 42 4c  54 53 20 54 2c 4e 5a 2c  |,#0:RSBLTS T,NZ,|
00001070  23 30 0d 08 02 26 41 44  44 20 54 2c 42 4f 58 52  |#0...&ADD T,BOXR|
00001080  2c 23 30 2a 32 30 3a 4c  44 4d 47 45 49 41 20 54  |,#0*20:LDMGEIA T|
00001090  2c 7b 58 31 2c 59 31 7d  0d 08 0c 26 41 44 44 20  |,{X1,Y1}...&ADD |
000010a0  54 2c 42 4f 58 52 2c 23  31 2a 32 30 3a 4c 44 4d  |T,BOXR,#1*20:LDM|
000010b0  47 45 49 41 20 54 2c 7b  58 32 2c 59 32 7d 0d 08  |GEIA T,{X2,Y2}..|
000010c0  16 0d 42 4c 47 45 20 6c  69 6e 65 0d 08 20 1c 43  |..BLGE line.. .C|
000010d0  4d 50 20 4e 59 2c 23 30  3a 52 53 42 4c 54 53 20  |MP NY,#0:RSBLTS |
000010e0  54 2c 4e 5a 2c 23 30 0d  08 2a 26 41 44 44 20 54  |T,NZ,#0..*&ADD T|
000010f0  2c 42 4f 58 52 2c 23 31  2a 32 30 3a 4c 44 4d 47  |,BOXR,#1*20:LDMG|
00001100  45 49 41 20 54 2c 7b 58  31 2c 59 31 7d 0d 08 34  |EIA T,{X1,Y1}..4|
00001110  26 41 44 44 20 54 2c 42  4f 58 52 2c 23 32 2a 32  |&ADD T,BOXR,#2*2|
00001120  30 3a 4c 44 4d 47 45 49  41 20 54 2c 7b 58 32 2c  |0:LDMGEIA T,{X2,|
00001130  59 32 7d 0d 08 3e 0d 42  4c 47 45 20 6c 69 6e 65  |Y2}..>.BLGE line|
00001140  0d 08 48 1f 52 53 42 53  20 54 2c 4e 58 2c 23 30  |..H.RSBS T,NX,#0|
00001150  3a 52 53 42 4c 54 53 20  54 2c 4e 5a 2c 23 30 0d  |:RSBLTS T,NZ,#0.|
00001160  08 52 26 41 44 44 20 54  2c 42 4f 58 52 2c 23 32  |.R&ADD T,BOXR,#2|
00001170  2a 32 30 3a 4c 44 4d 47  45 49 41 20 54 2c 7b 58  |*20:LDMGEIA T,{X|
00001180  31 2c 59 31 7d 0d 08 5c  26 41 44 44 20 54 2c 42  |1,Y1}..\&ADD T,B|
00001190  4f 58 52 2c 23 33 2a 32  30 3a 4c 44 4d 47 45 49  |OXR,#3*20:LDMGEI|
000011a0  41 20 54 2c 7b 58 32 2c  59 32 7d 0d 08 66 0d 42  |A T,{X2,Y2}..f.B|
000011b0  4c 47 45 20 6c 69 6e 65  0d 08 70 1f 52 53 42 53  |LGE line..p.RSBS|
000011c0  20 54 2c 4e 59 2c 23 30  3a 52 53 42 4c 54 53 20  | T,NY,#0:RSBLTS |
000011d0  54 2c 4e 5a 2c 23 30 0d  08 7a 26 41 44 44 20 54  |T,NZ,#0..z&ADD T|
000011e0  2c 42 4f 58 52 2c 23 33  2a 32 30 3a 4c 44 4d 47  |,BOXR,#3*20:LDMG|
000011f0  45 49 41 20 54 2c 7b 58  31 2c 59 31 7d 0d 08 84  |EIA T,{X1,Y1}...|
00001200  26 41 44 44 20 54 2c 42  4f 58 52 2c 23 30 2a 32  |&ADD T,BOXR,#0*2|
00001210  30 3a 4c 44 4d 47 45 49  41 20 54 2c 7b 58 32 2c  |0:LDMGEIA T,{X2,|
00001220  59 32 7d 0d 08 8e 0d 42  4c 47 45 20 6c 69 6e 65  |Y2}....BLGE line|
00001230  0d 08 98 04 0d 08 a2 19  43 4d 50 20 4e 58 2c 23  |........CMP NX,#|
00001240  30 3a 43 4d 50 4c 54 20  4e 5a 2c 23 30 0d 08 ac  |0:CMPLT NZ,#0...|
00001250  26 41 44 44 20 54 2c 42  4f 58 52 2c 23 34 2a 32  |&ADD T,BOXR,#4*2|
00001260  30 3a 4c 44 4d 47 45 49  41 20 54 2c 7b 58 31 2c  |0:LDMGEIA T,{X1,|
00001270  59 31 7d 0d 08 b6 26 41  44 44 20 54 2c 42 4f 58  |Y1}...&ADD T,BOX|
00001280  52 2c 23 35 2a 32 30 3a  4c 44 4d 47 45 49 41 20  |R,#5*20:LDMGEIA |
00001290  54 2c 7b 58 32 2c 59 32  7d 0d 08 c0 0d 42 4c 47  |T,{X2,Y2}....BLG|
000012a0  45 20 6c 69 6e 65 0d 08  ca 19 43 4d 50 20 4e 59  |E line....CMP NY|
000012b0  2c 23 30 3a 43 4d 50 4c  54 20 4e 5a 2c 23 30 0d  |,#0:CMPLT NZ,#0.|
000012c0  08 d4 26 41 44 44 20 54  2c 42 4f 58 52 2c 23 35  |..&ADD T,BOXR,#5|
000012d0  2a 32 30 3a 4c 44 4d 47  45 49 41 20 54 2c 7b 58  |*20:LDMGEIA T,{X|
000012e0  31 2c 59 31 7d 0d 08 de  26 41 44 44 20 54 2c 42  |1,Y1}...&ADD T,B|
000012f0  4f 58 52 2c 23 36 2a 32  30 3a 4c 44 4d 47 45 49  |OXR,#6*20:LDMGEI|
00001300  41 20 54 2c 7b 58 32 2c  59 32 7d 0d 08 e8 0d 42  |A T,{X2,Y2}....B|
00001310  4c 47 45 20 6c 69 6e 65  0d 08 f2 1c 52 53 42 53  |LGE line....RSBS|
00001320  20 54 2c 4e 58 2c 23 30  3a 43 4d 50 4c 54 20 4e  | T,NX,#0:CMPLT N|
00001330  5a 2c 23 30 0d 08 fc 26  41 44 44 20 54 2c 42 4f  |Z,#0...&ADD T,BO|
00001340  58 52 2c 23 36 2a 32 30  3a 4c 44 4d 47 45 49 41  |XR,#6*20:LDMGEIA|
00001350  20 54 2c 7b 58 31 2c 59  31 7d 0d 09 06 26 41 44  | T,{X1,Y1}...&AD|
00001360  44 20 54 2c 42 4f 58 52  2c 23 37 2a 32 30 3a 4c  |D T,BOXR,#7*20:L|
00001370  44 4d 47 45 49 41 20 54  2c 7b 58 32 2c 59 32 7d  |DMGEIA T,{X2,Y2}|
00001380  0d 09 10 0d 42 4c 47 45  20 6c 69 6e 65 0d 09 1a  |....BLGE line...|
00001390  1c 52 53 42 53 20 54 2c  4e 59 2c 23 30 3a 43 4d  |.RSBS T,NY,#0:CM|
000013a0  50 4c 54 20 4e 5a 2c 23  30 0d 09 24 26 41 44 44  |PLT NZ,#0..$&ADD|
000013b0  20 54 2c 42 4f 58 52 2c  23 37 2a 32 30 3a 4c 44  | T,BOXR,#7*20:LD|
000013c0  4d 47 45 49 41 20 54 2c  7b 58 31 2c 59 31 7d 0d  |MGEIA T,{X1,Y1}.|
000013d0  09 2e 26 41 44 44 20 54  2c 42 4f 58 52 2c 23 34  |..&ADD T,BOXR,#4|
000013e0  2a 32 30 3a 4c 44 4d 47  45 49 41 20 54 2c 7b 58  |*20:LDMGEIA T,{X|
000013f0  32 2c 59 32 7d 0d 09 38  0d 42 4c 47 45 20 6c 69  |2,Y2}..8.BLGE li|
00001400  6e 65 0d 09 42 04 0d 09  4c 1c 52 53 42 53 20 54  |ne..B...L.RSBS T|
00001410  2c 4e 59 2c 23 30 3a 43  4d 50 4c 54 20 4e 58 2c  |,NY,#0:CMPLT NX,|
00001420  23 30 0d 09 56 26 41 44  44 20 54 2c 42 4f 58 52  |#0..V&ADD T,BOXR|
00001430  2c 23 30 2a 32 30 3a 4c  44 4d 47 45 49 41 20 54  |,#0*20:LDMGEIA T|
00001440  2c 7b 58 31 2c 59 31 7d  0d 09 60 26 41 44 44 20  |,{X1,Y1}..`&ADD |
00001450  54 2c 42 4f 58 52 2c 23  34 2a 32 30 3a 4c 44 4d  |T,BOXR,#4*20:LDM|
00001460  47 45 49 41 20 54 2c 7b  58 32 2c 59 32 7d 0d 09  |GEIA T,{X2,Y2}..|
00001470  6a 0d 42 4c 47 45 20 6c  69 6e 65 0d 09 74 19 43  |j.BLGE line..t.C|
00001480  4d 50 20 4e 58 2c 23 30  3a 43 4d 50 4c 54 20 4e  |MP NX,#0:CMPLT N|
00001490  59 2c 23 30 0d 09 7e 26  41 44 44 20 54 2c 42 4f  |Y,#0..~&ADD T,BO|
000014a0  58 52 2c 23 31 2a 32 30  3a 4c 44 4d 47 45 49 41  |XR,#1*20:LDMGEIA|
000014b0  20 54 2c 7b 58 31 2c 59  31 7d 0d 09 88 26 41 44  | T,{X1,Y1}...&AD|
000014c0  44 20 54 2c 42 4f 58 52  2c 23 35 2a 32 30 3a 4c  |D T,BOXR,#5*20:L|
000014d0  44 4d 47 45 49 41 20 54  2c 7b 58 32 2c 59 32 7d  |DMGEIA T,{X2,Y2}|
000014e0  0d 09 92 0d 42 4c 47 45  20 6c 69 6e 65 0d 09 9c  |....BLGE line...|
000014f0  1c 43 4d 50 20 4e 59 2c  23 30 3a 52 53 42 4c 54  |.CMP NY,#0:RSBLT|
00001500  53 20 54 2c 4e 58 2c 23  30 0d 09 a6 26 41 44 44  |S T,NX,#0...&ADD|
00001510  20 54 2c 42 4f 58 52 2c  23 32 2a 32 30 3a 4c 44  | T,BOXR,#2*20:LD|
00001520  4d 47 45 49 41 20 54 2c  7b 58 31 2c 59 31 7d 0d  |MGEIA T,{X1,Y1}.|
00001530  09 b0 26 41 44 44 20 54  2c 42 4f 58 52 2c 23 36  |..&ADD T,BOXR,#6|
00001540  2a 32 30 3a 4c 44 4d 47  45 49 41 20 54 2c 7b 58  |*20:LDMGEIA T,{X|
00001550  32 2c 59 32 7d 0d 09 ba  0d 42 4c 47 45 20 6c 69  |2,Y2}....BLGE li|
00001560  6e 65 0d 09 c4 1f 52 53  42 53 20 54 2c 4e 58 2c  |ne....RSBS T,NX,|
00001570  23 30 3a 52 53 42 4c 54  53 20 54 2c 4e 59 2c 23  |#0:RSBLTS T,NY,#|
00001580  30 0d 09 ce 26 41 44 44  20 54 2c 42 4f 58 52 2c  |0...&ADD T,BOXR,|
00001590  23 33 2a 32 30 3a 4c 44  4d 47 45 49 41 20 54 2c  |#3*20:LDMGEIA T,|
000015a0  7b 58 31 2c 59 31 7d 0d  09 d8 26 41 44 44 20 54  |{X1,Y1}...&ADD T|
000015b0  2c 42 4f 58 52 2c 23 37  2a 32 30 3a 4c 44 4d 47  |,BOXR,#7*20:LDMG|
000015c0  45 49 41 20 54 2c 7b 58  32 2c 59 32 7d 0d 09 e2  |EIA T,{X2,Y2}...|
000015d0  0d 42 4c 47 45 20 6c 69  6e 65 0d 09 ec 12 4c 44  |.BLGE line....LD|
000015e0  4d 46 44 20 31 33 21 2c  7b 50 43 7d 0d 09 f6 05  |MFD 13!,{PC}....|
000015f0  5d 0d 0a 00 05 ed 0d 0a  0a 09 51 25 3d 50 25 0d  |].........Q%=P%.|
00001600  0a 14 05 e1 0d 0a 1e 04  0d 0a 28 04 0d 0a 32 12  |..........(...2.|
00001610  dd 20 f2 63 61 6c 63 5f  69 6e 76 65 72 73 0d 0a  |. .calc_invers..|
00001620  3c 0b 4b 3d 32 3c 3c 32  30 0d 0a 46 26 e3 20 49  |<.K=2<<20..F&. I|
00001630  3d 31 20 b8 20 31 30 32  33 3a 49 4e 56 45 52 53  |=1 . 1023:INVERS|
00001640  21 28 34 2a 49 29 3d 4b  2f 49 2b 2e 35 3a ed 0d  |!(4*I)=K/I+.5:..|
00001650  0a 50 05 e1 0d 0a 5a 04  0d 0a 64 13 dd 20 f2 63  |.P....Z...d.. .c|
00001660  61 6c 63 5f 63 73 74 61  62 6c 65 0d 0a 6e 15 46  |alc_cstable..n.F|
00001670  3d 32 2a af 2f 34 30 39  36 3a 56 3d 32 5e 31 35  |=2*./4096:V=2^15|
00001680  0d 0a 78 15 54 32 3d 43  53 54 41 42 4c 45 2b 38  |..x.T2=CSTABLE+8|
00001690  2a 31 30 32 34 0d 0a 82  15 54 33 3d 43 53 54 41  |*1024....T3=CSTA|
000016a0  42 4c 45 2b 38 2a 32 30  34 38 0d 0a 8c 15 54 34  |BLE+8*2048....T4|
000016b0  3d 43 53 54 41 42 4c 45  2b 38 2a 33 30 37 32 0d  |=CSTABLE+8*3072.|
000016c0  0a 96 10 e3 20 48 3d 30  20 b8 20 31 30 32 33 0d  |.... H=0 . 1023.|
000016d0  0a a0 09 4b 3d 46 2a 48  0d 0a aa 17 43 53 3d 9b  |...K=F*H....CS=.|
000016e0  28 4b 29 2a 56 3a 53 4e  3d b5 28 4b 29 2a 56 0d  |(K)*V:SN=.(K)*V.|
000016f0  0a b4 14 43 53 54 41 42  4c 45 21 28 38 2a 48 29  |...CSTABLE!(8*H)|
00001700  3d 43 53 0d 0a be 16 43  53 54 41 42 4c 45 21 28  |=CS....CSTABLE!(|
00001710  38 2a 48 2b 34 29 3d 53  4e 0d 0a c8 10 54 32 21  |8*H+4)=SN....T2!|
00001720  28 38 2a 48 29 3d 2d 53  4e 0d 0a d2 11 54 32 21  |(8*H)=-SN....T2!|
00001730  28 38 2a 48 2b 34 29 3d  43 53 0d 0a dc 10 54 33  |(8*H+4)=CS....T3|
00001740  21 28 38 2a 48 29 3d 2d  43 53 0d 0a e6 12 54 33  |!(8*H)=-CS....T3|
00001750  21 28 38 2a 48 2b 34 29  3d 2d 53 4e 0d 0a f0 0f  |!(8*H+4)=-SN....|
00001760  54 34 21 28 38 2a 48 29  3d 53 4e 0d 0a fa 12 54  |T4!(8*H)=SN....T|
00001770  34 21 28 38 2a 48 2b 34  29 3d 2d 43 53 0d 0b 04  |4!(8*H+4)=-CS...|
00001780  05 ed 0d 0b 0e 05 e1 0d  0b 18 04 0d 0b 22 14 dd  |............."..|
00001790  20 f2 63 61 6c 63 5f 64  69 76 74 61 62 6c 65 0d  | .calc_divtable.|
000017a0  0b 2c 1d 54 3d 30 3a 4e  3d 31 3a 51 3d 32 3a 49  |.,.T=0:N=1:Q=2:I|
000017b0  3d 33 3a 4a 3d 34 3a 44  49 54 3d 35 0d 0b 36 14  |=3:J=4:DIT=5..6.|
000017c0  e3 20 50 41 53 53 3d 30  20 b8 20 32 20 88 20 32  |. PASS=0 . 2 . 2|
000017d0  0d 0b 40 09 50 25 3d 51  25 0d 0b 4a 0d 5b 4f 50  |..@.P%=Q%..J.[OP|
000017e0  54 20 50 41 53 53 0d 0b  54 10 2e 44 4e 52 44 20  |T PASS..T..DNRD |
000017f0  45 51 55 44 20 30 0d 0b  5e 10 2e 44 49 54 48 20  |EQUD 0..^..DITH |
00001800  45 51 55 44 20 30 0d 0b  68 10 2e 42 49 41 53 20  |EQUD 0..h..BIAS |
00001810  45 51 55 44 20 30 0d 0b  72 12 2e 63 61 6c 63 5f  |EQUD 0..r..calc_|
00001820  64 69 76 74 61 62 6c 65  0d 0b 7c 17 53 54 4d 46  |divtable..|.STMF|
00001830  44 20 31 33 21 2c 7b 30  2d 31 32 2c 31 34 7d 0d  |D 13!,{0-12,14}.|
00001840  0b 86 10 4c 44 52 20 44  49 54 2c 44 49 54 48 0d  |...LDR DIT,DITH.|
00001850  0b 90 0e 4c 44 52 20 49  2c 44 4e 52 44 0d 0b 9a  |...LDR I,DNRD...|
00001860  0c 2e 44 56 4c 4f 4f 50  32 0d 0b a4 0e 4c 44 52  |..DVLOOP2....LDR|
00001870  20 54 2c 42 49 41 53 0d  0b ae 0b 4d 4f 56 20 4e  | T,BIAS....MOV N|
00001880  2c 49 0d 0b b8 0c 4d 4f  56 20 4a 2c 23 30 0d 0b  |,I....MOV J,#0..|
00001890  c2 0c 4d 4f 56 20 51 2c  23 30 0d 0b cc 0c 2e 44  |..MOV Q,#0.....D|
000018a0  56 4c 4f 4f 50 33 0d 0b  d6 0b 43 4d 50 20 4e 2c  |VLOOP3....CMP N,|
000018b0  54 0d 0b e0 14 4d 4f 56  4c 4f 20 4e 2c 4e 2c 4c  |T....MOVLO N,N,L|
000018c0  53 4c 20 23 31 0d 0b ea  10 41 44 44 4c 4f 20 4a  |SL #1....ADDLO J|
000018d0  2c 4a 2c 23 31 0d 0b f4  0f 42 4c 4f 20 44 56 4c  |,J,#1....BLO DVL|
000018e0  4f 4f 50 33 0d 0b fe 11  4d 4f 56 20 4e 2c 4e 2c  |OOP3....MOV N,N,|
000018f0  4c 53 52 20 4a 0d 0c 08  0c 2e 44 56 4c 4f 4f 50  |LSR J.....DVLOOP|
00001900  31 0d 0c 12 11 43 4d 50  20 54 2c 4e 2c 4c 53 4c  |1....CMP T,N,LSL|
00001910  20 4a 0d 0c 1c 15 53 55  42 48 53 20 54 2c 54 2c  | J....SUBHS T,T,|
00001920  4e 2c 4c 53 4c 20 4a 0d  0c 26 0d 41 44 43 20 51  |N,LSL J..&.ADC Q|
00001930  2c 51 2c 51 0d 0c 30 0f  53 55 42 53 20 4a 2c 4a  |,Q,Q..0.SUBS J,J|
00001940  2c 23 31 0d 0c 3a 0f 42  50 4c 20 44 56 4c 4f 4f  |,#1..:.BPL DVLOO|
00001950  50 31 0d 0c 44 18 53 54  52 20 51 2c 5b 44 49 54  |P1..D.STR Q,[DIT|
00001960  2c 49 2c 4c 53 4c 20 23  32 5d 0d 0c 4e 0f 53 55  |,I,LSL #2]..N.SU|
00001970  42 53 20 49 2c 49 2c 23  31 0d 0c 58 0f 42 4e 45  |BS I,I,#1..X.BNE|
00001980  20 44 56 4c 4f 4f 50 32  0d 0c 62 17 4c 44 4d 46  | DVLOOP2..b.LDMF|
00001990  44 20 31 33 21 2c 7b 30  2d 31 32 2c 50 43 7d 0d  |D 13!,{0-12,PC}.|
000019a0  0c 6c 05 5d 0d 0c 76 05  ed 0d 0c 80 09 51 25 3d  |.l.]..v......Q%=|
000019b0  50 25 0d 0c 8a 05 e1 0d  0c 94 04 0d 0c 9e 16 dd  |P%..............|
000019c0  20 f2 63 61 6c 63 5f 72  6f 74 5f 6d 61 74 72 69  | .calc_rot_matri|
000019d0  78 0d 0c a8 0f 43 48 58  3d 30 3a 53 48 58 3d 31  |x....CHX=0:SHX=1|
000019e0  0d 0c b2 0f 43 48 59 3d  32 3a 53 48 59 3d 33 0d  |....CHY=2:SHY=3.|
000019f0  0c bc 0f 43 48 5a 3d 34  3a 53 48 5a 3d 35 0d 0c  |...CHZ=4:SHZ=5..|
00001a00  c6 0f 54 3d 36 3a 53 3d  37 3a 48 3d 38 0d 0c d0  |..T=6:S=7:H=8...|
00001a10  15 44 48 58 3d 33 3a 44  48 59 3d 34 3a 44 48 5a  |.DHX=3:DHY=4:DHZ|
00001a20  3d 35 0d 0c da 14 48 58  3d 39 3a 48 59 3d 31 30  |=5....HX=9:HY=10|
00001a30  3a 48 5a 3d 31 31 0d 0c  e4 14 54 58 3d 39 3a 54  |:HZ=11....TX=9:T|
00001a40  59 3d 31 30 3a 54 5a 3d  31 31 0d 0c ee 09 43 53  |Y=10:TZ=11....CS|
00001a50  3d 31 32 0d 0c f8 0f 53  43 52 3d 30 3a 43 4f 4c  |=12....SCR=0:COL|
00001a60  3d 31 0d 0d 02 14 e3 20  50 41 53 53 3d 30 20 b8  |=1..... PASS=0 .|
00001a70  20 32 20 88 20 32 0d 0d  0c 09 50 25 3d 51 25 0d  | 2 . 2....P%=Q%.|
00001a80  0d 16 0d 5b 4f 50 54 20  50 41 53 53 0d 0d 20 2a  |...[OPT PASS.. *|
00001a90  2e 44 48 58 44 20 45 51  55 44 20 30 3a 2e 44 48  |.DHXD EQUD 0:.DH|
00001aa0  59 44 20 45 51 55 44 20  30 3a 2e 44 48 5a 44 20  |YD EQUD 0:.DHZD |
00001ab0  45 51 55 44 20 30 0d 0d  2a 27 2e 48 58 44 20 45  |EQUD 0..*'.HXD E|
00001ac0  51 55 44 20 30 3a 2e 48  59 44 20 45 51 55 44 20  |QUD 0:.HYD EQUD |
00001ad0  30 3a 2e 48 5a 44 20 45  51 55 44 20 30 0d 0d 34  |0:.HZD EQUD 0..4|
00001ae0  15 2e 43 53 44 20 45 51  55 44 20 43 53 54 41 42  |..CSD EQUD CSTAB|
00001af0  4c 45 0d 0d 3e 27 2e 54  58 44 20 45 51 55 44 20  |LE..>'.TXD EQUD |
00001b00  30 3a 2e 54 59 44 20 45  51 55 44 20 30 3a 2e 54  |0:.TYD EQUD 0:.T|
00001b10  5a 44 20 45 51 55 44 20  30 0d 0d 5c 14 2e 63 61  |ZD EQUD 0..\..ca|
00001b20  6c 63 5f 72 6f 74 5f 6d  61 74 72 69 78 0d 0d 66  |lc_rot_matrix..f|
00001b30  17 53 54 4d 46 44 20 31  33 21 2c 7b 30 2d 31 32  |.STMFD 13!,{0-12|
00001b40  2c 31 34 7d 0d 0d 70 12  53 57 49 20 22 4f 53 5f  |,14}..p.SWI "OS_|
00001b50  4d 6f 75 73 65 22 0d 0d  7a 2e 53 55 42 20 52 30  |Mouse"..z.SUB R0|
00001b60  2c 52 30 2c 23 36 34 30  3a 4d 4f 56 20 52 30 2c  |,R0,#640:MOV R0,|
00001b70  52 30 2c 4c 53 4c 20 23  33 3a 53 54 52 20 52 30  |R0,LSL #3:STR R0|
00001b80  2c 54 58 44 0d 0d 84 2e  53 55 42 20 52 31 2c 52  |,TXD....SUB R1,R|
00001b90  31 2c 23 35 31 32 3a 4d  4f 56 20 52 31 2c 52 31  |1,#512:MOV R1,R1|
00001ba0  2c 4c 53 4c 20 23 33 3a  53 54 52 20 52 31 2c 54  |,LSL #3:STR R1,T|
00001bb0  59 44 0d 0d 85 4d 4c 44  52 20 52 30 2c 54 5a 44  |YD...MLDR R0,TZD|
00001bc0  3a 54 53 54 20 52 32 2c  23 31 3a 53 55 42 45 51  |:TST R2,#1:SUBEQ|
00001bd0  20 52 30 2c 52 30 2c 23  36 34 3a 54 53 54 20 52  | R0,R0,#64:TST R|
00001be0  32 2c 23 34 3a 41 44 44  45 51 20 52 30 2c 52 30  |2,#4:ADDEQ R0,R0|
00001bf0  2c 23 36 34 3a 53 54 52  20 52 30 2c 54 5a 44 0d  |,#64:STR R0,TZD.|
00001c00  0e 4c 30 41 44 52 20 54  2c 44 48 58 44 3a 4c 44  |.L0ADR T,DHXD:LD|
00001c10  4d 49 41 20 54 2c 7b 44  48 58 2c 44 48 59 2c 44  |MIA T,{DHX,DHY,D|
00001c20  48 5a 2c 48 58 2c 48 59  2c 48 5a 2c 43 53 7d 0d  |HZ,HX,HY,HZ,CS}.|
00001c30  0e 56 30 41 44 44 20 44  48 58 2c 44 48 58 2c 48  |.V0ADD DHX,DHX,H|
00001c40  58 3a 41 44 44 20 44 48  59 2c 44 48 59 2c 48 59  |X:ADD DHY,DHY,HY|
00001c50  3a 41 44 44 20 44 48 5a  2c 44 48 5a 2c 48 5a 0d  |:ADD DHZ,DHZ,HZ.|
00001c60  0e 60 26 41 44 44 20 54  2c 54 2c 23 33 2a 34 3a  |.`&ADD T,T,#3*4:|
00001c70  53 54 4d 49 41 20 54 2c  7b 44 48 58 2c 44 48 59  |STMIA T,{DHX,DHY|
00001c80  2c 44 48 5a 7d 0d 0e 6a  1a 4d 4f 56 20 53 2c 23  |,DHZ}..j.MOV S,#|
00001c90  34 30 39 36 3a 53 55 42  20 53 2c 53 2c 23 31 0d  |4096:SUB S,S,#1.|
00001ca0  0e 74 39 43 4d 50 20 48  58 2c 23 30 3a 52 53 42  |.t9CMP HX,#0:RSB|
00001cb0  4d 49 20 48 58 2c 48 58  2c 23 30 3a 80 20 48 58  |MI HX,HX,#0:. HX|
00001cc0  2c 48 58 2c 53 3a 41 44  44 20 54 2c 43 53 2c 48  |,HX,S:ADD T,CS,H|
00001cd0  58 2c 4c 53 4c 20 23 33  0d 0e 7e 26 4c 44 4d 49  |X,LSL #3..~&LDMI|
00001ce0  41 20 54 2c 7b 43 48 58  2c 53 48 58 7d 3a 52 53  |A T,{CHX,SHX}:RS|
00001cf0  42 4d 49 20 53 48 58 2c  53 48 58 2c 23 30 0d 0e  |BMI SHX,SHX,#0..|
00001d00  88 39 43 4d 50 20 48 59  2c 23 30 3a 52 53 42 4d  |.9CMP HY,#0:RSBM|
00001d10  49 20 48 59 2c 48 59 2c  23 30 3a 80 20 48 59 2c  |I HY,HY,#0:. HY,|
00001d20  48 59 2c 53 3a 41 44 44  20 54 2c 43 53 2c 48 59  |HY,S:ADD T,CS,HY|
00001d30  2c 4c 53 4c 20 23 33 0d  0e 92 26 4c 44 4d 49 41  |,LSL #3...&LDMIA|
00001d40  20 54 2c 7b 43 48 59 2c  53 48 59 7d 3a 52 53 42  | T,{CHY,SHY}:RSB|
00001d50  4d 49 20 53 48 59 2c 53  48 59 2c 23 30 0d 0e 9c  |MI SHY,SHY,#0...|
00001d60  39 43 4d 50 20 48 5a 2c  23 30 3a 52 53 42 4d 49  |9CMP HZ,#0:RSBMI|
00001d70  20 48 5a 2c 48 5a 2c 23  30 3a 80 20 48 5a 2c 48  | HZ,HZ,#0:. HZ,H|
00001d80  5a 2c 53 3a 41 44 44 20  54 2c 43 53 2c 48 5a 2c  |Z,S:ADD T,CS,HZ,|
00001d90  4c 53 4c 20 23 33 0d 0e  a6 26 4c 44 4d 49 41 20  |LSL #3...&LDMIA |
00001da0  54 2c 7b 43 48 5a 2c 53  48 5a 7d 3a 52 53 42 4d  |T,{CHZ,SHZ}:RSBM|
00001db0  49 20 53 48 5a 2c 53 48  5a 2c 23 30 0d 0e b0 20  |I SHZ,SHZ,#0... |
00001dc0  41 44 52 20 54 2c 54 58  44 3a 4c 44 4d 49 41 20  |ADR T,TXD:LDMIA |
00001dd0  54 2c 7b 54 58 2c 54 59  2c 54 5a 7d 0d 0e ba 21  |T,{TX,TY,TZ}...!|
00001de0  4d 55 4c 20 54 2c 43 48  59 2c 43 48 5a 3a 4d 4f  |MUL T,CHY,CHZ:MO|
00001df0  56 20 54 2c 54 2c 41 53  52 20 23 31 35 0d 0e c4  |V T,T,ASR #15...|
00001e00  21 4d 55 4c 20 53 2c 43  48 59 2c 53 48 5a 3a 4d  |!MUL S,CHY,SHZ:M|
00001e10  4f 56 20 53 2c 53 2c 4c  53 52 20 23 31 35 0d 0e  |OV S,S,LSR #15..|
00001e20  ce 1f 41 44 44 20 54 2c  53 2c 54 2c 4c 53 4c 20  |..ADD T,S,T,LSL |
00001e30  23 31 36 3a 53 54 52 20  54 2c 41 31 44 0d 0e d8  |#16:STR T,A1D...|
00001e40  22 41 44 44 20 54 2c 54  58 2c 53 48 59 2c 4c 53  |"ADD T,TX,SHY,LS|
00001e50  4c 20 23 31 36 3a 53 54  52 20 54 2c 41 32 44 0d  |L #16:STR T,A2D.|
00001e60  0e e2 04 0d 0e ec 29 4d  55 4c 20 54 2c 53 48 58  |......)MUL T,SHX|
00001e70  2c 53 48 59 3a 4d 4f 56  20 54 2c 54 2c 41 53 52  |,SHY:MOV T,T,ASR|
00001e80  20 23 31 35 3a 4d 4f 56  20 53 2c 54 0d 0e f6 3a  | #15:MOV S,T...:|
00001e90  4d 55 4c 20 48 2c 43 48  58 2c 53 48 5a 3a 4d 4c  |MUL H,CHX,SHZ:ML|
00001ea0  41 20 54 2c 43 48 5a 2c  54 2c 48 3a 52 53 42 20  |A T,CHZ,T,H:RSB |
00001eb0  54 2c 54 2c 23 30 3a 4d  4f 56 20 54 2c 54 2c 41  |T,T,#0:MOV T,T,A|
00001ec0  53 52 20 23 31 35 0d 0f  00 37 4d 55 4c 20 48 2c  |SR #15...7MUL H,|
00001ed0  43 48 58 2c 43 48 5a 3a  4d 55 4c 20 53 2c 53 48  |CHX,CHZ:MUL S,SH|
00001ee0  5a 2c 53 3a 53 55 42 20  53 2c 48 2c 53 3a 4d 4f  |Z,S:SUB S,H,S:MO|
00001ef0  56 20 53 2c 53 2c 4c 53  52 20 23 31 35 0d 0f 0a  |V S,S,LSR #15...|
00001f00  04 0d 0f 14 1f 41 44 44  20 54 2c 53 2c 54 2c 4c  |.....ADD T,S,T,L|
00001f10  53 4c 20 23 31 36 3a 53  54 52 20 54 2c 42 31 44  |SL #16:STR T,B1D|
00001f20  0d 0f 1e 21 4d 55 4c 20  54 2c 53 48 58 2c 43 48  |...!MUL T,SHX,CH|
00001f30  59 3a 4d 4f 56 20 54 2c  54 2c 41 53 52 20 23 31  |Y:MOV T,T,ASR #1|
00001f40  35 0d 0f 28 20 41 44 44  20 54 2c 54 59 2c 54 2c  |5..( ADD T,TY,T,|
00001f50  4c 53 4c 20 23 31 36 3a  53 54 52 20 54 2c 42 32  |LSL #16:STR T,B2|
00001f60  44 0d 0f 32 29 4d 55 4c  20 54 2c 43 48 58 2c 53  |D..2)MUL T,CHX,S|
00001f70  48 59 3a 4d 4f 56 20 54  2c 54 2c 41 53 52 20 23  |HY:MOV T,T,ASR #|
00001f80  31 35 3a 4d 4f 56 20 53  2c 54 0d 0f 3c 37 4d 55  |15:MOV S,T..<7MU|
00001f90  4c 20 54 2c 43 48 5a 2c  54 3a 4d 55 4c 20 48 2c  |L T,CHZ,T:MUL H,|
00001fa0  53 48 58 2c 53 48 5a 3a  53 55 42 20 54 2c 48 2c  |SHX,SHZ:SUB T,H,|
00001fb0  54 3a 4d 4f 56 20 54 2c  54 2c 41 53 52 20 23 31  |T:MOV T,T,ASR #1|
00001fc0  35 0d 0f 46 3a 4d 55 4c  20 53 2c 53 48 5a 2c 53  |5..F:MUL S,SHZ,S|
00001fd0  3a 4d 4c 41 20 48 2c 53  48 58 2c 43 48 5a 2c 53  |:MLA H,SHX,CHZ,S|
00001fe0  3a 52 53 42 20 53 2c 48  2c 23 30 3a 4d 4f 56 20  |:RSB S,H,#0:MOV |
00001ff0  53 2c 53 2c 4c 53 52 20  23 31 35 0d 0f 50 1f 41  |S,S,LSR #15..P.A|
00002000  44 44 20 54 2c 53 2c 54  2c 4c 53 4c 20 23 31 36  |DD T,S,T,LSL #16|
00002010  3a 53 54 52 20 54 2c 43  31 44 0d 0f 5a 21 4d 55  |:STR T,C1D..Z!MU|
00002020  4c 20 54 2c 43 48 58 2c  43 48 59 3a 4d 4f 56 20  |L T,CHX,CHY:MOV |
00002030  54 2c 54 2c 41 53 52 20  23 31 35 0d 0f 64 20 41  |T,T,ASR #15..d A|
00002040  44 44 20 54 2c 54 5a 2c  54 2c 4c 53 4c 20 23 31  |DD T,TZ,T,LSL #1|
00002050  36 3a 53 54 52 20 54 2c  43 32 44 0d 0f 6e 17 4c  |6:STR T,C2D..n.L|
00002060  44 4d 46 44 20 31 33 21  2c 7b 30 2d 31 32 2c 50  |DMFD 13!,{0-12,P|
00002070  43 7d 0d 0f 78 05 5d 0d  0f 82 05 ed 0d 0f 8c 09  |C}..x.].........|
00002080  51 25 3d 50 25 0d 0f 96  05 e1 0d 0f a0 04 0d 0f  |Q%=P%...........|
00002090  aa 04 0d 0f b4 04 0d 0f  be 10 dd 20 f2 74 72 61  |........... .tra|
000020a0  6e 73 66 6f 72 6d 0d 0f  c8 47 41 31 3d 30 3a 41  |nsform...GA1=0:A|
000020b0  32 3d 31 3a 42 31 3d 32  3a 42 32 3d 33 3a 43 31  |2=1:B1=2:B2=3:C1|
000020c0  3d 34 3a 43 32 3d 35 3a  54 3d 36 3a 44 49 54 3d  |=4:C2=5:T=6:DIT=|
000020d0  37 3a 55 3d 38 3a 56 3d  39 3a 57 3d 31 30 3a 58  |7:U=8:V=9:W=10:X|
000020e0  3d 31 30 3a 59 3d 31 31  3a 5a 3d 31 32 0d 0f d2  |=10:Y=11:Z=12...|
000020f0  0d 41 3d 31 33 3a 42 3d  31 34 0d 0f dc 14 e3 20  |.A=13:B=14..... |
00002100  50 41 53 53 3d 30 20 b8  20 32 20 88 20 32 0d 0f  |PASS=0 . 2 . 2..|
00002110  e6 09 50 25 3d 51 25 0d  0f f0 0d 5b 4f 50 54 20  |..P%=Q%....[OPT |
00002120  50 41 53 53 0d 0f fa 1b  2e 41 31 44 20 45 51 55  |PASS.....A1D EQU|
00002130  44 20 30 3a 2e 41 32 44  20 45 51 55 44 20 30 0d  |D 0:.A2D EQUD 0.|
00002140  10 04 1b 2e 42 31 44 20  45 51 55 44 20 30 3a 2e  |....B1D EQUD 0:.|
00002150  42 32 44 20 45 51 55 44  20 30 0d 10 0e 1b 2e 43  |B2D EQUD 0.....C|
00002160  31 44 20 45 51 55 44 20  30 3a 2e 43 32 44 20 45  |1D EQUD 0:.C2D E|
00002170  51 55 44 20 30 0d 10 18  16 2e 44 49 54 44 20 45  |QUD 0.....DITD E|
00002180  51 55 44 20 44 49 54 41  42 4c 45 0d 10 22 04 0d  |QUD DITABLE.."..|
00002190  10 2c 0e 2e 56 44 20 45  51 55 44 20 30 0d 10 36  |.,..VD EQUD 0..6|
000021a0  0e 2e 53 50 20 45 51 55  44 20 30 0d 10 40 0e 2e  |..SP EQUD 0..@..|
000021b0  4c 4b 20 45 51 55 44 20  30 0d 10 4a 04 0d 10 54  |LK EQUD 0..J...T|
000021c0  12 2e 50 49 58 44 20 45  51 55 44 20 50 49 58 0d  |..PIXD EQUD PIX.|
000021d0  10 5e 16 2e 50 49 58 54  20 45 51 55 44 20 50 49  |.^..PIXT EQUD PI|
000021e0  58 50 52 4f 4a 0d 10 68  0e 2e 54 47 20 45 51 55  |XPROJ..h..TG EQU|
000021f0  44 20 30 0d 10 72 11 2e  74 72 61 6e 73 66 6f 72  |D 0..r..transfor|
00002200  6d 70 69 78 0d 10 7c 17  53 54 4d 46 44 20 31 33  |mpix..|.STMFD 13|
00002210  21 2c 7b 30 2d 31 32 2c  31 34 7d 0d 10 86 0d 53  |!,{0-12,14}....S|
00002220  54 52 20 31 33 2c 53 50  0d 10 90 0d 41 44 52 20  |TR 13,SP....ADR |
00002230  54 2c 41 31 44 0d 10 9a  23 4c 44 4d 49 41 20 54  |T,A1D...#LDMIA T|
00002240  2c 7b 41 31 2c 41 32 2c  42 31 2c 42 32 2c 43 31  |,{A1,A2,B1,B2,C1|
00002250  2c 43 32 2c 44 49 54 7d  0d 10 a4 19 4c 44 52 20  |,C2,DIT}....LDR |
00002260  41 2c 50 49 58 44 3a 4c  44 52 20 42 2c 50 49 58  |A,PIXD:LDR B,PIX|
00002270  54 0d 10 ae 40 4c 44 52  20 54 2c 54 47 3a 43 4d  |T...@LDR T,TG:CM|
00002280  50 20 54 2c 23 30 3a 4d  4f 56 4e 45 20 54 2c 23  |P T,#0:MOVNE T,#|
00002290  30 3a ec 51 20 54 2c 23  31 3a 41 44 44 4e 45 20  |0:.Q T,#1:ADDNE |
000022a0  42 2c 42 2c 23 32 2a 34  3a 53 54 52 20 54 2c 54  |B,B,#2*4:STR T,T|
000022b0  47 0d 10 b8 23 4c 44 4d  49 41 20 28 41 29 21 2c  |G...#LDMIA (A)!,|
000022c0  7b 58 2c 59 2c 5a 7d 3a  41 44 44 20 41 2c 41 2c  |{X,Y,Z}:ADD A,A,|
000022d0  23 33 2a 34 0d 10 c2 0d  42 41 4c 20 54 52 41 4e  |#3*4....BAL TRAN|
000022e0  53 0d 10 cc 04 0d 10 d6  04 0d 10 e0 0e 2e 74 72  |S.............tr|
000022f0  61 6e 73 66 6f 72 6d 0d  10 ea 17 53 54 4d 46 44  |ansform....STMFD|
00002300  20 31 33 21 2c 7b 30 2d  31 32 2c 31 34 7d 0d 10  | 13!,{0-12,14}..|
00002310  f4 0d 53 54 52 20 31 33  2c 53 50 0d 10 fe 0d 41  |..STR 13,SP....A|
00002320  44 52 20 54 2c 41 31 44  0d 11 08 27 4c 44 4d 49  |DR T,A1D...'LDMI|
00002330  41 20 54 2c 7b 41 31 2c  41 32 2c 42 31 2c 42 32  |A T,{A1,A2,B1,B2|
00002340  2c 43 31 2c 43 32 2c 44  49 54 2c 41 2c 42 7d 0d  |,C1,C2,DIT,A,B}.|
00002350  11 12 23 4c 44 4d 49 41  20 28 41 29 21 2c 7b 58  |..#LDMIA (A)!,{X|
00002360  2c 59 2c 5a 7d 3a 41 44  44 20 41 2c 41 2c 23 33  |,Y,Z}:ADD A,A,#3|
00002370  2a 34 0d 11 1c 0a 2e 54  52 41 4e 53 0d 11 26 14  |*4.....TRANS..&.|
00002380  4d 4f 56 20 54 2c 41 31  2c 41 53 52 20 23 31 36  |MOV T,A1,ASR #16|
00002390  0d 11 30 0d 4d 55 4c 20  55 2c 58 2c 54 0d 11 3a  |..0.MUL U,X,T..:|
000023a0  14 4d 4f 56 20 54 2c 41  31 2c 4c 53 4c 20 23 31  |.MOV T,A1,LSL #1|
000023b0  36 0d 11 44 13 4d 4f 56  20 54 2c 54 2c 41 53 52  |6..D.MOV T,T,ASR|
000023c0  20 23 31 36 0d 11 4e 0f  4d 4c 41 20 55 2c 59 2c  | #16..N.MLA U,Y,|
000023d0  54 2c 55 0d 11 58 14 4d  4f 56 20 54 2c 41 32 2c  |T,U..X.MOV T,A2,|
000023e0  41 53 52 20 23 31 36 0d  11 62 0f 4d 4c 41 20 55  |ASR #16..b.MLA U|
000023f0  2c 5a 2c 54 2c 55 0d 11  6c 14 4d 4f 56 20 54 2c  |,Z,T,U..l.MOV T,|
00002400  41 32 2c 4c 53 4c 20 23  31 36 0d 11 76 13 4d 4f  |A2,LSL #16..v.MO|
00002410  56 20 54 2c 54 2c 41 53  52 20 23 31 36 0d 11 80  |V T,T,ASR #16...|
00002420  15 41 44 44 20 55 2c 54  2c 55 2c 41 53 52 20 23  |.ADD U,T,U,ASR #|
00002430  31 35 0d 11 8a 14 4d 4f  56 20 54 2c 42 31 2c 41  |15....MOV T,B1,A|
00002440  53 52 20 23 31 36 0d 11  94 0d 4d 55 4c 20 56 2c  |SR #16....MUL V,|
00002450  58 2c 54 0d 11 9e 14 4d  4f 56 20 54 2c 42 31 2c  |X,T....MOV T,B1,|
00002460  4c 53 4c 20 23 31 36 0d  11 a8 13 4d 4f 56 20 54  |LSL #16....MOV T|
00002470  2c 54 2c 41 53 52 20 23  31 36 0d 11 b2 0f 4d 4c  |,T,ASR #16....ML|
00002480  41 20 56 2c 59 2c 54 2c  56 0d 11 bc 14 4d 4f 56  |A V,Y,T,V....MOV|
00002490  20 54 2c 42 32 2c 41 53  52 20 23 31 36 0d 11 c6  | T,B2,ASR #16...|
000024a0  0f 4d 4c 41 20 56 2c 5a  2c 54 2c 56 0d 11 d0 14  |.MLA V,Z,T,V....|
000024b0  4d 4f 56 20 54 2c 42 32  2c 4c 53 4c 20 23 31 36  |MOV T,B2,LSL #16|
000024c0  0d 11 da 13 4d 4f 56 20  54 2c 54 2c 41 53 52 20  |....MOV T,T,ASR |
000024d0  23 31 36 0d 11 e4 15 41  44 44 20 56 2c 54 2c 56  |#16....ADD V,T,V|
000024e0  2c 41 53 52 20 23 31 35  0d 11 ee 14 4d 4f 56 20  |,ASR #15....MOV |
000024f0  54 2c 43 31 2c 41 53 52  20 23 31 36 0d 11 f8 0d  |T,C1,ASR #16....|
00002500  4d 55 4c 20 57 2c 54 2c  58 0d 12 02 14 4d 4f 56  |MUL W,T,X....MOV|
00002510  20 54 2c 43 31 2c 4c 53  4c 20 23 31 36 0d 12 0c  | T,C1,LSL #16...|
00002520  13 4d 4f 56 20 54 2c 54  2c 41 53 52 20 23 31 36  |.MOV T,T,ASR #16|
00002530  0d 12 16 0f 4d 4c 41 20  57 2c 59 2c 54 2c 57 0d  |....MLA W,Y,T,W.|
00002540  12 20 14 4d 4f 56 20 54  2c 43 32 2c 41 53 52 20  |. .MOV T,C2,ASR |
00002550  23 31 36 0d 12 2a 0f 4d  4c 41 20 57 2c 5a 2c 54  |#16..*.MLA W,Z,T|
00002560  2c 57 0d 12 34 14 4d 4f  56 20 54 2c 43 32 2c 4c  |,W..4.MOV T,C2,L|
00002570  53 4c 20 23 31 36 0d 12  3e 13 4d 4f 56 20 54 2c  |SL #16..>.MOV T,|
00002580  54 2c 41 53 52 20 23 31  36 0d 12 48 15 41 44 44  |T,ASR #16..H.ADD|
00002590  20 57 2c 54 2c 57 2c 41  53 52 20 23 31 35 0d 12  | W,T,W,ASR #15..|
000025a0  52 0e 3b 20 43 4d 50 20  57 2c 23 30 0d 12 5c 10  |R.; CMP W,#0..\.|
000025b0  3b 20 4d 4f 56 4d 49 20  57 2c 23 31 0d 12 66 18  |; MOVMI W,#1..f.|
000025c0  4c 44 52 20 57 2c 5b 44  49 54 2c 57 2c 4c 53 4c  |LDR W,[DIT,W,LSL|
000025d0  20 23 32 5d 0d 12 70 0d  4d 55 4c 20 55 2c 57 2c  | #2]..p.MUL U,W,|
000025e0  55 0d 12 7a 0d 4d 55 4c  20 56 2c 57 2c 56 0d 12  |U..z.MUL V,W,V..|
000025f0  84 13 4d 4f 56 20 55 2c  55 2c 41 53 52 20 23 31  |..MOV U,U,ASR #1|
00002600  32 0d 12 8e 13 4d 4f 56  20 56 2c 56 2c 41 53 52  |2....MOV V,V,ASR|
00002610  20 23 31 32 0d 12 98 10  41 44 44 20 55 2c 55 2c  | #12....ADD U,U,|
00002620  23 31 36 30 0d 12 a2 10  41 44 44 20 56 2c 56 2c  |#160....ADD V,V,|
00002630  23 31 32 38 0d 12 ac 21  53 54 4d 49 41 20 28 42  |#128...!STMIA (B|
00002640  29 21 2c 7b 55 2c 56 7d  3a 41 44 44 20 42 2c 42  |)!,{U,V}:ADD B,B|
00002650  2c 23 32 2a 34 0d 12 b6  23 4c 44 4d 49 41 20 28  |,#2*4...#LDMIA (|
00002660  41 29 21 2c 7b 58 2c 59  2c 5a 7d 3a 41 44 44 20  |A)!,{X,Y,Z}:ADD |
00002670  41 2c 41 2c 23 33 2a 34  0d 12 c0 10 43 4d 50 20  |A,A,#3*4....CMP |
00002680  58 2c 23 31 3c 3c 33 30  0d 12 ca 0d 42 4e 45 20  |X,#1<<30....BNE |
00002690  54 52 41 4e 53 0d 12 d4  0d 4c 44 52 20 31 33 2c  |TRANS....LDR 13,|
000026a0  53 50 0d 12 de 17 4c 44  4d 46 44 20 31 33 21 2c  |SP....LDMFD 13!,|
000026b0  7b 30 2d 31 32 2c 50 43  7d 0d 12 e8 04 0d 12 f2  |{0-12,PC}.......|
000026c0  04 0d 12 fc 12 2e 42 4f  58 44 20 45 51 55 44 20  |......BOXD EQUD |
000026d0  42 4f 58 0d 13 06 11 2e  74 72 61 6e 73 66 6f 72  |BOX.....transfor|
000026e0  6d 62 6f 78 0d 13 10 17  53 54 4d 46 44 20 31 33  |mbox....STMFD 13|
000026f0  21 2c 7b 30 2d 31 32 2c  31 34 7d 0d 13 1a 0d 53  |!,{0-12,14}....S|
00002700  54 52 20 31 33 2c 53 50  0d 13 24 0d 41 44 52 20  |TR 13,SP..$.ADR |
00002710  54 2c 41 31 44 0d 13 2e  23 4c 44 4d 49 41 20 54  |T,A1D...#LDMIA T|
00002720  2c 7b 41 31 2c 41 32 2c  42 31 2c 42 32 2c 43 31  |,{A1,A2,B1,B2,C1|
00002730  2c 43 32 2c 44 49 54 7d  0d 13 38 0e 4c 44 52 20  |,C2,DIT}..8.LDR |
00002740  41 2c 42 4f 58 44 0d 13  42 16 4c 44 4d 49 41 20  |A,BOXD..B.LDMIA |
00002750  28 41 29 21 2c 7b 58 2c  59 2c 5a 7d 0d 13 4c 0b  |(A)!,{X,Y,Z}..L.|
00002760  2e 54 52 41 4e 53 42 0d  13 56 14 4d 4f 56 20 54  |.TRANSB..V.MOV T|
00002770  2c 41 31 2c 41 53 52 20  23 31 36 0d 13 60 0d 4d  |,A1,ASR #16..`.M|
00002780  55 4c 20 55 2c 58 2c 54  0d 13 6a 14 4d 4f 56 20  |UL U,X,T..j.MOV |
00002790  54 2c 41 31 2c 4c 53 4c  20 23 31 36 0d 13 74 13  |T,A1,LSL #16..t.|
000027a0  4d 4f 56 20 54 2c 54 2c  41 53 52 20 23 31 36 0d  |MOV T,T,ASR #16.|
000027b0  13 7e 0f 4d 4c 41 20 55  2c 59 2c 54 2c 55 0d 13  |.~.MLA U,Y,T,U..|
000027c0  88 14 4d 4f 56 20 54 2c  41 32 2c 41 53 52 20 23  |..MOV T,A2,ASR #|
000027d0  31 36 0d 13 92 0f 4d 4c  41 20 55 2c 5a 2c 54 2c  |16....MLA U,Z,T,|
000027e0  55 0d 13 9c 14 4d 4f 56  20 54 2c 41 32 2c 4c 53  |U....MOV T,A2,LS|
000027f0  4c 20 23 31 36 0d 13 a6  13 4d 4f 56 20 54 2c 54  |L #16....MOV T,T|
00002800  2c 41 53 52 20 23 31 36  0d 13 b0 15 41 44 44 20  |,ASR #16....ADD |
00002810  55 2c 54 2c 55 2c 41 53  52 20 23 31 35 0d 13 ba  |U,T,U,ASR #15...|
00002820  14 4d 4f 56 20 54 2c 42  31 2c 41 53 52 20 23 31  |.MOV T,B1,ASR #1|
00002830  36 0d 13 c4 0d 4d 55 4c  20 56 2c 58 2c 54 0d 13  |6....MUL V,X,T..|
00002840  ce 14 4d 4f 56 20 54 2c  42 31 2c 4c 53 4c 20 23  |..MOV T,B1,LSL #|
00002850  31 36 0d 13 d8 13 4d 4f  56 20 54 2c 54 2c 41 53  |16....MOV T,T,AS|
00002860  52 20 23 31 36 0d 13 e2  0f 4d 4c 41 20 56 2c 59  |R #16....MLA V,Y|
00002870  2c 54 2c 56 0d 13 ec 14  4d 4f 56 20 54 2c 42 32  |,T,V....MOV T,B2|
00002880  2c 41 53 52 20 23 31 36  0d 13 f6 0f 4d 4c 41 20  |,ASR #16....MLA |
00002890  56 2c 5a 2c 54 2c 56 0d  14 00 14 4d 4f 56 20 54  |V,Z,T,V....MOV T|
000028a0  2c 42 32 2c 4c 53 4c 20  23 31 36 0d 14 0a 13 4d  |,B2,LSL #16....M|
000028b0  4f 56 20 54 2c 54 2c 41  53 52 20 23 31 36 0d 14  |OV T,T,ASR #16..|
000028c0  14 15 41 44 44 20 56 2c  54 2c 56 2c 41 53 52 20  |..ADD V,T,V,ASR |
000028d0  23 31 35 0d 14 1e 14 4d  4f 56 20 54 2c 43 31 2c  |#15....MOV T,C1,|
000028e0  41 53 52 20 23 31 36 0d  14 28 0d 4d 55 4c 20 57  |ASR #16..(.MUL W|
000028f0  2c 54 2c 58 0d 14 32 14  4d 4f 56 20 54 2c 43 31  |,T,X..2.MOV T,C1|
00002900  2c 4c 53 4c 20 23 31 36  0d 14 3c 13 4d 4f 56 20  |,LSL #16..<.MOV |
00002910  54 2c 54 2c 41 53 52 20  23 31 36 0d 14 46 0f 4d  |T,T,ASR #16..F.M|
00002920  4c 41 20 57 2c 59 2c 54  2c 57 0d 14 50 14 4d 4f  |LA W,Y,T,W..P.MO|
00002930  56 20 54 2c 43 32 2c 41  53 52 20 23 31 36 0d 14  |V T,C2,ASR #16..|
00002940  5a 0f 4d 4c 41 20 57 2c  5a 2c 54 2c 57 0d 14 64  |Z.MLA W,Z,T,W..d|
00002950  14 4d 4f 56 20 54 2c 43  32 2c 4c 53 4c 20 23 31  |.MOV T,C2,LSL #1|
00002960  36 0d 14 6e 13 4d 4f 56  20 54 2c 54 2c 41 53 52  |6..n.MOV T,T,ASR|
00002970  20 23 31 36 0d 14 78 16  41 44 44 53 20 57 2c 54  | #16..x.ADDS W,T|
00002980  2c 57 2c 41 53 52 20 23  31 35 0d 14 82 18 4c 44  |,W,ASR #15....LD|
00002990  52 20 57 2c 5b 44 49 54  2c 57 2c 4c 53 4c 20 23  |R W,[DIT,W,LSL #|
000029a0  32 5d 0d 14 8c 0d 4d 55  4c 20 55 2c 57 2c 55 0d  |2]....MUL U,W,U.|
000029b0  14 96 0d 4d 55 4c 20 56  2c 57 2c 56 0d 14 a0 13  |...MUL V,W,V....|
000029c0  4d 4f 56 20 55 2c 55 2c  41 53 52 20 23 31 32 0d  |MOV U,U,ASR #12.|
000029d0  14 aa 13 4d 4f 56 20 56  2c 56 2c 41 53 52 20 23  |...MOV V,V,ASR #|
000029e0  31 32 0d 14 b4 10 41 44  44 20 55 2c 55 2c 23 31  |12....ADD U,U,#1|
000029f0  36 30 0d 14 be 10 41 44  44 20 56 2c 56 2c 23 31  |60....ADD V,V,#1|
00002a00  32 38 0d 14 c8 14 53 54  4d 49 41 20 28 41 29 21  |28....STMIA (A)!|
00002a10  2c 7b 55 2c 56 7d 0d 14  d2 16 4c 44 4d 49 41 20  |,{U,V}....LDMIA |
00002a20  28 41 29 21 2c 7b 58 2c  59 2c 5a 7d 0d 14 dc 10  |(A)!,{X,Y,Z}....|
00002a30  43 4d 50 20 58 2c 23 31  3c 3c 33 30 0d 14 e6 0e  |CMP X,#1<<30....|
00002a40  42 4e 45 20 54 52 41 4e  53 42 0d 14 f0 0d 4c 44  |BNE TRANSB....LD|
00002a50  52 20 31 33 2c 53 50 0d  14 fa 17 4c 44 4d 46 44  |R 13,SP....LDMFD|
00002a60  20 31 33 21 2c 7b 30 2d  31 32 2c 50 43 7d 0d 15  | 13!,{0-12,PC}..|
00002a70  18 05 5d 0d 15 22 05 ed  0d 15 2c 09 51 25 3d 50  |..].."....,.Q%=P|
00002a80  25 0d 15 36 05 e1 0d 16  3a 04 0d 16 44 04 0d 16  |%..6....:...D...|
00002a90  4e 15 dd 20 f2 61 64 6a  75 73 74 70 6f 73 69 74  |N.. .adjustposit|
00002aa0  69 6f 6e 0d 16 58 42 50  3d 30 3a 43 50 3d 31 3a  |ion..XBP=0:CP=1:|
00002ab0  58 3d 32 3a 59 3d 33 3a  5a 3d 34 3a 56 58 3d 35  |X=2:Y=3:Z=4:VX=5|
00002ac0  3a 56 59 3d 36 3a 56 5a  3d 37 3a 54 3d 38 3a 47  |:VY=6:VZ=7:T=8:G|
00002ad0  58 3d 39 3a 47 59 3d 31  30 3a 47 5a 3d 31 31 3a  |X=9:GY=10:GZ=11:|
00002ae0  44 54 3d 31 32 0d 16 62  0d 46 4f 3d 34 2b 34 2a  |DT=12..b.FO=4+4*|
00002af0  53 48 0d 16 6c 14 e3 20  50 41 53 53 3d 30 20 b8  |SH..l.. PASS=0 .|
00002b00  20 32 20 88 20 32 0d 16  76 09 50 25 3d 51 25 0d  | 2 . 2..v.P%=Q%.|
00002b10  16 80 0d 5b 4f 50 54 20  50 41 53 53 0d 16 8a 04  |...[OPT PASS....|
00002b20  0d 16 94 04 0d 16 9e 16  2e 44 49 54 44 20 45 51  |.........DITD EQ|
00002b30  55 44 20 44 49 54 41 42  4c 45 0d 16 a8 0e 2e 61  |UD DITABLE.....a|
00002b40  64 6a 75 73 74 70 69 78  0d 16 b2 17 53 54 4d 46  |djustpix....STMF|
00002b50  44 20 31 33 21 2c 7b 30  2d 31 32 2c 31 34 7d 0d  |D 13!,{0-12,14}.|
00002b60  16 bc 0e 4c 44 52 20 50  2c 50 49 58 44 0d 16 c6  |...LDR P,PIXD...|
00002b70  0f 4c 44 52 20 44 54 2c  44 49 54 44 0d 16 d0 0e  |.LDR DT,DITD....|
00002b80  4d 4f 56 20 43 50 2c 23  4e 44 0d 16 da 1c 4c 44  |MOV CP,#ND....LD|
00002b90  4d 49 41 20 50 2c 7b 58  2c 59 2c 5a 2c 56 58 2c  |MIA P,{X,Y,Z,VX,|
00002ba0  56 59 2c 56 5a 7d 0d 16  e4 0f 20 41 44 44 20 58  |VY,VZ}.... ADD X|
00002bb0  2c 58 2c 56 58 0d 16 ee  14 41 44 44 20 54 2c 58  |,X,VX....ADD T,X|
00002bc0  2c 23 62 6f 78 3c 3c 53  48 0d 16 f8 14 43 4d 50  |,#box<<SH....CMP|
00002bd0  20 54 2c 23 32 2a 62 6f  78 3c 3c 53 48 0d 17 02  | T,#2*box<<SH...|
00002be0  12 52 53 42 48 49 20 56  58 2c 56 58 2c 23 30 0d  |.RSBHI VX,VX,#0.|
00002bf0  17 0c 17 41 44 44 48 49  20 58 2c 58 2c 56 58 2c  |...ADDHI X,X,VX,|
00002c00  4c 53 4c 20 23 31 0d 17  16 0f 20 41 44 44 20 59  |LSL #1.... ADD Y|
00002c10  2c 59 2c 56 59 0d 17 20  14 41 44 44 20 54 2c 59  |,Y,VY.. .ADD T,Y|
00002c20  2c 23 62 6f 78 3c 3c 53  48 0d 17 2a 14 43 4d 50  |,#box<<SH..*.CMP|
00002c30  20 54 2c 23 32 2a 62 6f  78 3c 3c 53 48 0d 17 34  | T,#2*box<<SH..4|
00002c40  12 52 53 42 48 49 20 56  59 2c 56 59 2c 23 30 0d  |.RSBHI VY,VY,#0.|
00002c50  17 3e 17 41 44 44 48 49  20 59 2c 59 2c 56 59 2c  |.>.ADDHI Y,Y,VY,|
00002c60  4c 53 4c 20 23 31 0d 17  48 0f 20 41 44 44 20 5a  |LSL #1..H. ADD Z|
00002c70  2c 5a 2c 56 5a 0d 17 52  14 41 44 44 20 54 2c 5a  |,Z,VZ..R.ADD T,Z|
00002c80  2c 23 62 6f 78 3c 3c 53  48 0d 17 5c 14 43 4d 50  |,#box<<SH..\.CMP|
00002c90  20 54 2c 23 32 2a 62 6f  78 3c 3c 53 48 0d 17 66  | T,#2*box<<SH..f|
00002ca0  12 52 53 42 48 49 20 56  5a 2c 56 5a 2c 23 30 0d  |.RSBHI VZ,VZ,#0.|
00002cb0  17 70 17 41 44 44 48 49  20 5a 2c 5a 2c 56 5a 2c  |.p.ADDHI Z,Z,VZ,|
00002cc0  4c 53 4c 20 23 31 0d 17  7a 1f 53 54 4d 49 41 20  |LSL #1..z.STMIA |
00002cd0  28 50 29 21 2c 7b 58 2c  59 2c 5a 2c 56 58 2c 56  |(P)!,{X,Y,Z,VX,V|
00002ce0  59 2c 56 5a 7d 0d 17 84  11 53 55 42 53 20 43 50  |Y,VZ}....SUBS CP|
00002cf0  2c 43 50 2c 23 31 0d 17  8e 1e 4d 4f 56 20 47 58  |,CP,#1....MOV GX|
00002d00  2c 58 3a 4d 4f 56 20 47  59 2c 59 3a 4d 4f 56 20  |,X:MOV GY,Y:MOV |
00002d10  47 5a 2c 5a 0d 17 98 04  0d 17 a2 0c 2e 61 64 6a  |GZ,Z.........adj|
00002d20  75 73 74 32 0d 17 ac 1c  4c 44 4d 49 41 20 50 2c  |ust2....LDMIA P,|
00002d30  7b 58 2c 59 2c 5a 2c 56  58 2c 56 59 2c 56 5a 7d  |{X,Y,Z,VX,VY,VZ}|
00002d40  0d 17 b6 0f 20 41 44 44  20 58 2c 58 2c 56 58 0d  |.... ADD X,X,VX.|
00002d50  17 c0 16 3b 20 41 44 44  20 54 2c 58 2c 23 62 6f  |...; ADD T,X,#bo|
00002d60  78 3c 3c 53 48 0d 17 ca  16 3b 20 43 4d 50 20 54  |x<<SH....; CMP T|
00002d70  2c 23 32 2a 62 6f 78 3c  3c 53 48 0d 17 d4 15 3b  |,#2*box<<SH....;|
00002d80  20 20 52 53 42 48 49 20  56 58 2c 56 58 2c 23 30  |  RSBHI VX,VX,#0|
00002d90  0d 17 de 19 3b 20 41 44  44 48 49 20 58 2c 58 2c  |....; ADDHI X,X,|
00002da0  56 58 2c 4c 53 4c 20 23  31 0d 17 e8 04 0d 17 f2  |VX,LSL #1.......|
00002db0  0f 20 41 44 44 20 59 2c  59 2c 56 59 0d 17 fc 16  |. ADD Y,Y,VY....|
00002dc0  3b 20 41 44 44 20 54 2c  59 2c 23 62 6f 78 3c 3c  |; ADD T,Y,#box<<|
00002dd0  53 48 0d 18 06 16 3b 20  43 4d 50 20 54 2c 23 32  |SH....; CMP T,#2|
00002de0  2a 62 6f 78 3c 3c 53 48  0d 18 10 14 3b 20 52 53  |*box<<SH....; RS|
00002df0  42 48 49 20 56 59 2c 56  59 2c 23 30 0d 18 1a 19  |BHI VY,VY,#0....|
00002e00  3b 20 41 44 44 48 49 20  59 2c 59 2c 56 59 2c 4c  |; ADDHI Y,Y,VY,L|
00002e10  53 4c 20 23 31 0d 18 24  04 0d 18 2e 0f 20 41 44  |SL #1..$..... AD|
00002e20  44 20 5a 2c 5a 2c 56 5a  0d 18 38 16 3b 20 41 44  |D Z,Z,VZ..8.; AD|
00002e30  44 20 54 2c 5a 2c 23 62  6f 78 3c 3c 53 48 0d 18  |D T,Z,#box<<SH..|
00002e40  42 16 3b 20 43 4d 50 20  54 2c 23 32 2a 62 6f 78  |B.; CMP T,#2*box|
00002e50  3c 3c 53 48 0d 18 4c 14  3b 20 52 53 42 48 49 20  |<<SH..L.; RSBHI |
00002e60  56 5a 2c 56 5a 2c 23 30  0d 18 56 19 3b 20 41 44  |VZ,VZ,#0..V.; AD|
00002e70  44 48 49 20 5a 2c 5a 2c  56 5a 2c 4c 53 4c 20 23  |DHI Z,Z,VZ,LSL #|
00002e80  31 0d 18 60 16 53 54 4d  49 41 20 28 50 29 21 2c  |1..`.STMIA (P)!,|
00002e90  7b 58 2c 59 2c 5a 7d 0d  18 6a 04 0d 18 74 0f 53  |{X,Y,Z}..j...t.S|
00002ea0  55 42 53 20 58 2c 47 58  2c 58 0d 18 7e 0b 4d 4f  |UBS X,GX,X..~.MO|
00002eb0  56 20 54 2c 58 0d 18 88  10 52 53 42 4d 49 20 54  |V T,X....RSBMI T|
00002ec0  2c 54 2c 23 30 0d 18 92  04 0d 18 9c 0f 53 55 42  |,T,#0........SUB|
00002ed0  53 20 59 2c 47 59 2c 59  0d 18 a6 0f 41 44 44 50  |S Y,GY,Y....ADDP|
00002ee0  4c 20 54 2c 54 2c 59 0d  18 b0 0f 53 55 42 4d 49  |L T,T,Y....SUBMI|
00002ef0  20 54 2c 54 2c 59 0d 18  ba 04 0d 18 c4 0f 53 55  | T,T,Y........SU|
00002f00  42 53 20 5a 2c 47 5a 2c  5a 0d 18 ce 0f 41 44 44  |BS Z,GZ,Z....ADD|
00002f10  50 4c 20 54 2c 54 2c 5a  0d 18 d8 0f 53 55 42 4d  |PL T,T,Z....SUBM|
00002f20  49 20 54 2c 54 2c 5a 0d  18 e2 04 0d 18 ec 16 41  |I T,T,Z........A|
00002f30  44 44 20 56 58 2c 56 58  2c 58 2c 41 53 52 20 23  |DD VX,VX,X,ASR #|
00002f40  39 0d 18 f6 16 41 44 44  20 56 59 2c 56 59 2c 59  |9....ADD VY,VY,Y|
00002f50  2c 41 53 52 20 23 39 0d  19 00 16 41 44 44 20 56  |,ASR #9....ADD V|
00002f60  5a 2c 56 5a 2c 5a 2c 41  53 52 20 23 39 0d 19 0a  |Z,VZ,Z,ASR #9...|
00002f70  11 4d 4f 56 20 54 2c 23  32 30 3c 3c 53 48 0d 19  |.MOV T,#20<<SH..|
00002f80  14 17 43 4d 50 20 56 58  2c 54 3a 4d 4f 56 47 54  |..CMP VX,T:MOVGT|
00002f90  20 56 58 2c 54 0d 19 1e  1a 43 4d 4e 20 56 58 2c  | VX,T....CMN VX,|
00002fa0  54 3a 52 53 42 4c 54 20  56 58 2c 54 2c 23 30 0d  |T:RSBLT VX,T,#0.|
00002fb0  19 28 17 43 4d 50 20 56  59 2c 54 3a 4d 4f 56 47  |.(.CMP VY,T:MOVG|
00002fc0  54 20 56 59 2c 54 0d 19  32 1a 43 4d 4e 20 56 59  |T VY,T..2.CMN VY|
00002fd0  2c 54 3a 52 53 42 4c 54  20 56 59 2c 54 2c 23 30  |,T:RSBLT VY,T,#0|
00002fe0  0d 19 3c 17 43 4d 50 20  56 5a 2c 54 3a 4d 4f 56  |..<.CMP VZ,T:MOV|
00002ff0  47 54 20 56 5a 2c 54 0d  19 46 1a 43 4d 4e 20 56  |GT VZ,T..F.CMN V|
00003000  5a 2c 54 3a 52 53 42 4c  54 20 56 5a 2c 54 2c 23  |Z,T:RSBLT VZ,T,#|
00003010  30 0d 19 50 04 0d 19 5a  19 53 54 4d 49 41 20 28  |0..P...Z.STMIA (|
00003020  50 29 21 2c 7b 56 58 2c  56 59 2c 56 5a 7d 0d 19  |P)!,{VX,VY,VZ}..|
00003030  64 04 0d 19 6e 11 53 55  42 53 20 43 50 2c 43 50  |d...n.SUBS CP,CP|
00003040  2c 23 31 0d 19 78 0f 42  4e 45 20 61 64 6a 75 73  |,#1..x.BNE adjus|
00003050  74 32 0d 19 82 17 4c 44  4d 46 44 20 31 33 21 2c  |t2....LDMFD 13!,|
00003060  7b 30 2d 31 32 2c 50 43  7d 0d 19 8c 04 0d 19 96  |{0-12,PC}.......|
00003070  05 5d 0d 19 a0 09 51 25  3d 50 25 0d 19 aa 05 e1  |.]....Q%=P%.....|
00003080  0d 19 b4 04 0d 19 be 04  0d 19 c8 0b dd 20 f2 6c  |............. .l|
00003090  69 6e 65 0d 19 d2 04 0d  19 dc 15 de 20 44 49 54  |ine......... DIT|
000030a0  41 42 4c 45 32 20 31 30  32 34 2a 34 0d 19 e6 11  |ABLE2 1024*4....|
000030b0  50 25 3d 44 49 54 41 42  4c 45 32 2b 34 0d 19 f0  |P%=DITABLE2+4...|
000030c0  10 e3 20 49 3d 31 20 b8  20 31 30 32 34 0d 19 fa  |.. I=1 . 1024...|
000030d0  0a 5b 4f 50 54 20 30 0d  1a 04 11 45 51 55 44 20  |.[OPT 0....EQUD |
000030e0  28 32 5e 32 30 2f 49 29  0d 1a 0e 05 5d 0d 1a 18  |(2^20/I)....]...|
000030f0  05 ed 0d 1a 22 04 0d 1a  2c 10 de 20 43 54 41 42  |...."...,.. CTAB|
00003100  4c 45 32 20 31 36 0d 1a  36 0e 50 25 3d 43 54 41  |LE2 16..6.P%=CTA|
00003110  42 4c 45 32 0d 1a 40 0a  5b 4f 50 54 20 30 0d 1a  |BLE2..@.[OPT 0..|
00003120  4a 12 45 51 55 42 20 25  31 31 31 31 31 31 31 31  |J.EQUB %11111111|
00003130  0d 1a 54 12 45 51 55 42  20 25 31 31 31 31 31 31  |..T.EQUB %111111|
00003140  31 30 0d 1a 5e 12 45 51  55 42 20 25 31 31 31 31  |10..^.EQUB %1111|
00003150  31 31 30 31 0d 1a 68 12  45 51 55 42 20 25 31 31  |1101..h.EQUB %11|
00003160  31 31 31 31 30 30 0d 1a  72 12 45 51 55 42 20 25  |111100..r.EQUB %|
00003170  31 31 30 31 30 30 31 31  0d 1a 7c 12 45 51 55 42  |11010011..|.EQUB|
00003180  20 25 31 31 30 31 30 30  31 30 0d 1a 86 12 45 51  | %11010010....EQ|
00003190  55 42 20 25 31 31 30 31  30 30 30 31 0d 1a 90 12  |UB %11010001....|
000031a0  45 51 55 42 20 25 31 31  30 31 30 30 30 30 0d 1a  |EQUB %11010000..|
000031b0  9a 12 45 51 55 42 20 25  30 30 31 30 31 31 31 31  |..EQUB %00101111|
000031c0  0d 1a a4 12 45 51 55 42  20 25 30 30 31 30 31 31  |....EQUB %001011|
000031d0  31 30 0d 1a ae 12 45 51  55 42 20 25 30 30 31 30  |10....EQUB %0010|
000031e0  31 31 30 31 0d 1a b8 12  45 51 55 42 20 25 30 30  |1101....EQUB %00|
000031f0  31 30 31 31 30 30 0d 1a  c2 12 45 51 55 42 20 25  |101100....EQUB %|
00003200  30 30 30 30 30 30 31 31  0d 1a cc 12 45 51 55 42  |00000011....EQUB|
00003210  20 25 30 30 30 30 30 30  31 30 0d 1a d6 12 45 51  | %00000010....EQ|
00003220  55 42 20 25 30 30 30 30  30 30 30 31 0d 1a e0 12  |UB %00000001....|
00003230  45 51 55 42 20 25 30 30  30 30 30 30 30 30 0d 1a  |EQUB %00000000..|
00003240  ea 05 5d 0d 1b c6 04 0d  1b d0 45 58 31 3d 30 3a  |..].......EX1=0:|
00003250  59 31 3d 31 3a 58 32 3d  32 3a 59 32 3d 33 3a 58  |Y1=1:X2=2:Y2=3:X|
00003260  4c 3d 34 3a 58 52 3d 35  3a 59 42 3d 36 3a 59 54  |L=4:XR=5:YB=6:YT|
00003270  3d 37 3a 4b 31 3d 38 3a  4b 32 3d 39 3a 44 54 3d  |=7:K1=8:K2=9:DT=|
00003280  31 30 3a 53 3d 31 31 3a  54 3d 31 32 0d 1b e4 26  |10:S=11:T=12...&|
00003290  4c 4c 3d 30 3a 52 52 3d  31 3a 41 3d 32 3a 42 3d  |LL=0:RR=1:A=2:B=|
000032a0  33 3a 43 3d 34 3a 4f 3d  35 3a 44 3d 36 3a 43 54  |3:C=4:O=5:D=6:CT|
000032b0  3d 37 0d 1b ee 14 e3 20  50 41 53 53 3d 30 20 b8  |=7..... PASS=0 .|
000032c0  20 32 20 88 20 32 0d 1b  f8 09 50 25 3d 51 25 0d  | 2 . 2....P%=Q%.|
000032d0  1c 02 0d 5b 4f 50 54 20  50 41 53 53 0d 1c 0c 4e  |...[OPT PASS...N|
000032e0  5c 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |\---------------|
000032f0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00003320  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 0d 1c 16 1d 2e 73  |----------.....s|
00003330  63 72 65 65 6e 31 20 45  51 55 44 20 31 34 38 3a  |creen1 EQUD 148:|
00003340  45 51 55 44 20 2d 31 0d  1c 20 12 2e 73 63 72 65  |EQUD -1.. ..scre|
00003350  65 6e 20 45 51 55 44 20  30 0d 1c 2a 19 2e 43 54  |en EQUD 0..*..CT|
00003360  41 42 4c 45 44 20 45 51  55 44 20 43 54 41 42 4c  |ABLED EQUD CTABL|
00003370  45 32 0d 1c 34 04 0d 1c  3e 29 2e 42 4f 58 44 20  |E2..4...>).BOXD |
00003380  45 51 55 44 20 31 3a 45  51 55 44 20 33 31 38 3a  |EQUD 1:EQUD 318:|
00003390  45 51 55 44 20 31 3a 45  51 55 44 20 32 35 34 0d  |EQUD 1:EQUD 254.|
000033a0  1c 48 1b 2e 44 49 54 41  42 4c 45 44 20 45 51 55  |.H..DITABLED EQU|
000033b0  44 20 44 49 54 41 42 4c  45 32 0d 1c 52 08 2e 73  |D DITABLE2..R..s|
000033c0  65 74 0d 1c 5c 3a 41 44  52 20 52 30 2c 73 63 72  |et..\:ADR R0,scr|
000033d0  65 65 6e 31 3a 41 44 52  20 52 31 2c 73 63 72 65  |een1:ADR R1,scre|
000033e0  65 6e 3a 53 57 49 20 22  4f 53 5f 52 65 61 64 56  |en:SWI "OS_ReadV|
000033f0  64 75 56 61 72 69 61 62  6c 65 73 22 0d 1c 66 0e  |duVariables"..f.|
00003400  4d 4f 56 20 50 43 2c 52  31 34 0d 1c 67 04 0d 1c  |MOV PC,R14..g...|
00003410  70 32 f4 20 41 6e 74 69  2d 61 6c 69 61 73 65 64  |p2. Anti-aliased|
00003420  20 6c 69 6e 65 73 2c 20  77 69 74 68 20 53 75 74  | lines, with Sut|
00003430  68 65 72 6c 61 6e 64 20  63 6c 69 70 70 69 6e 67  |herland clipping|
00003440  0d 1c 71 38 f4 20 50 61  72 61 6d 65 74 65 72 73  |..q8. Parameters|
00003450  20 20 28 58 31 2c 59 31  29 20 3d 3e 20 28 52 30  |  (X1,Y1) => (R0|
00003460  2c 52 31 29 3b 20 28 58  32 2c 59 32 29 20 3d 3e  |,R1); (X2,Y2) =>|
00003470  20 28 52 32 2c 52 33 29  0d 1c 84 09 2e 6c 69 6e  | (R2,R3).....lin|
00003480  65 0d 1c 8e 14 53 54 4d  46 44 20 31 33 21 2c 7b  |e....STMFD 13!,{|
00003490  38 2d 31 31 7d 0d 1c 98  0e 41 44 52 20 54 2c 42  |8-11}....ADR T,B|
000034a0  4f 58 44 0d 1c a2 1c 4c  44 4d 49 41 20 54 2c 7b  |OXD....LDMIA T,{|
000034b0  58 4c 2c 58 52 2c 59 42  2c 59 54 2c 44 54 7d 0d  |XL,XR,YB,YT,DT}.|
000034c0  1c ac 0d 4d 4f 56 20 4b  31 2c 23 30 0d 1c b6 0d  |...MOV K1,#0....|
000034d0  43 4d 50 20 58 31 2c 58  4c 0d 1c c0 11 84 52 4c  |CMP X1,XL.....RL|
000034e0  54 20 4b 31 2c 4b 31 2c  23 31 0d 1c ca 0d 43 4d  |T K1,K1,#1....CM|
000034f0  50 20 58 31 2c 58 52 0d  1c d4 11 84 52 47 54 20  |P X1,XR.....RGT |
00003500  4b 31 2c 4b 31 2c 23 32  0d 1c de 0d 43 4d 50 20  |K1,K1,#2....CMP |
00003510  59 31 2c 59 42 0d 1c e8  11 84 52 4c 54 20 4b 31  |Y1,YB.....RLT K1|
00003520  2c 4b 31 2c 23 34 0d 1c  f2 0d 43 4d 50 20 59 31  |,K1,#4....CMP Y1|
00003530  2c 59 54 0d 1c fc 11 84  52 47 54 20 4b 31 2c 4b  |,YT.....RGT K1,K|
00003540  31 2c 23 38 0d 1d 06 0d  4d 4f 56 20 4b 32 2c 23  |1,#8....MOV K2,#|
00003550  30 0d 1d 10 0d 43 4d 50  20 58 32 2c 58 4c 0d 1d  |0....CMP X2,XL..|
00003560  1a 11 84 52 4c 54 20 4b  32 2c 4b 32 2c 23 31 0d  |...RLT K2,K2,#1.|
00003570  1d 24 0d 43 4d 50 20 58  32 2c 58 52 0d 1d 2e 11  |.$.CMP X2,XR....|
00003580  84 52 47 54 20 4b 32 2c  4b 32 2c 23 32 0d 1d 38  |.RGT K2,K2,#2..8|
00003590  0d 43 4d 50 20 59 32 2c  59 42 0d 1d 42 11 84 52  |.CMP Y2,YB..B..R|
000035a0  4c 54 20 4b 32 2c 4b 32  2c 23 34 0d 1d 4c 0d 43  |LT K2,K2,#4..L.C|
000035b0  4d 50 20 59 32 2c 59 54  0d 1d 56 11 84 52 47 54  |MP Y2,YT..V..RGT|
000035c0  20 4b 32 2c 4b 32 2c 23  38 0d 1d 60 0f 84 52 53  | K2,K2,#8..`..RS|
000035d0  20 54 2c 4b 31 2c 4b 32  0d 1d 6a 2e 42 45 51 20  | T,K1,K2..j.BEQ |
000035e0  65 6e 64 77 68 69 6c 65  20 20 5c 20 4c 69 6e 65  |endwhile  \ Line|
000035f0  20 63 6f 6d 70 6c 65 74  65 6c 79 20 69 6e 73 69  | completely insi|
00003600  64 65 20 62 6f 78 0d 1d  74 0e 80 53 20 54 2c 4b  |de box..t..S T,K|
00003610  31 2c 4b 32 0d 1d 7e 16  4c 44 4d 4e 45 46 44 20  |1,K2..~.LDMNEFD |
00003620  31 33 21 2c 7b 38 2d 31  31 7d 0d 1d 88 2f 4d 4f  |13!,{8-11}.../MO|
00003630  56 4e 45 20 50 43 2c 52  31 34 20 20 5c 20 4c 69  |VNE PC,R14  \ Li|
00003640  6e 65 20 63 6f 6d 70 6c  65 74 65 6c 79 20 6f 75  |ne completely ou|
00003650  74 73 69 64 65 20 62 6f  78 0d 1d 92 04 0d 1d 9c  |tside box.......|
00003660  0a 2e 77 68 69 6c 65 0d  1d a6 2c 43 4d 50 20 4b  |..while...,CMP K|
00003670  31 2c 23 30 20 20 20 20  20 5c 20 53 77 61 70 20  |1,#0     \ Swap |
00003680  28 78 31 2c 79 31 29 20  6f 75 74 73 69 64 65 20  |(x1,y1) outside |
00003690  62 6f 78 0d 1d b0 1c ec  51 20 54 2c 58 31 3a ec  |box.....Q T,X1:.|
000036a0  51 20 58 31 2c 58 32 3a  ec 51 20 58 32 2c 54 0d  |Q X1,X2:.Q X2,T.|
000036b0  1d ba 1c ec 51 20 54 2c  59 31 3a ec 51 20 59 31  |....Q T,Y1:.Q Y1|
000036c0  2c 59 32 3a ec 51 20 59  32 2c 54 0d 1d c4 1c ec  |,Y2:.Q Y2,T.....|
000036d0  51 20 54 2c 4b 31 3a ec  51 20 4b 31 2c 4b 32 3a  |Q T,K1:.Q K1,K2:|
000036e0  ec 51 20 4b 32 2c 54 0d  1d ce 04 0d 1d d8 15 54  |.Q K2,T........T|
000036f0  53 54 20 4b 31 2c 23 31  3a 42 45 51 20 73 6b 31  |ST K1,#1:BEQ sk1|
00003700  0d 1d e2 31 53 55 42 53  20 54 2c 58 32 2c 58 31  |...1SUBS T,X2,X1|
00003710  3a 52 53 42 4d 49 20 54  2c 54 2c 23 30 3a 4c 44  |:RSBMI T,T,#0:LD|
00003720  52 20 53 2c 5b 44 54 2c  54 2c 4c 53 4c 20 23 32  |R S,[DT,T,LSL #2|
00003730  5d 0d 1d ec 37 53 55 42  20 20 54 2c 59 32 2c 59  |]...7SUB  T,Y2,Y|
00003740  31 3a 52 53 42 4d 49 20  54 2c 54 2c 23 30 3a 4d  |1:RSBMI T,T,#0:M|
00003750  55 4c 20 53 2c 54 2c 53  3a 4d 4f 56 20 53 2c 53  |UL S,T,S:MOV S,S|
00003760  2c 41 53 52 20 23 31 30  0d 1d f6 1a 53 55 42 20  |,ASR #10....SUB |
00003770  20 54 2c 58 4c 2c 58 31  3a 4d 55 4c 20 53 2c 54  | T,XL,X1:MUL S,T|
00003780  2c 53 0d 1e 00 18 41 44  44 20 20 59 31 2c 59 31  |,S....ADD  Y1,Y1|
00003790  2c 53 2c 41 53 52 20 23  31 30 0d 1e 0a 0e 4d 4f  |,S,ASR #10....MO|
000037a0  56 20 20 58 31 2c 58 4c  0d 1e 14 08 2e 73 6b 31  |V  X1,XL.....sk1|
000037b0  0d 1e 1e 15 54 53 54 20  4b 31 2c 23 32 3a 42 45  |....TST K1,#2:BE|
000037c0  51 20 73 6b 32 0d 1e 28  31 53 55 42 53 20 54 2c  |Q sk2..(1SUBS T,|
000037d0  58 32 2c 58 31 3a 52 53  42 4d 49 20 54 2c 54 2c  |X2,X1:RSBMI T,T,|
000037e0  23 30 3a 4c 44 52 20 53  2c 5b 44 54 2c 54 2c 4c  |#0:LDR S,[DT,T,L|
000037f0  53 4c 20 23 32 5d 0d 1e  32 37 53 55 42 20 20 54  |SL #2]..27SUB  T|
00003800  2c 59 32 2c 59 31 3a 52  53 42 4d 49 20 54 2c 54  |,Y2,Y1:RSBMI T,T|
00003810  2c 23 30 3a 4d 55 4c 20  53 2c 54 2c 53 3a 4d 4f  |,#0:MUL S,T,S:MO|
00003820  56 20 53 2c 53 2c 41 53  52 20 23 31 30 0d 1e 3c  |V S,S,ASR #10..<|
00003830  1a 53 55 42 20 20 54 2c  58 52 2c 58 31 3a 4d 55  |.SUB  T,XR,X1:MU|
00003840  4c 20 53 2c 54 2c 53 0d  1e 46 18 41 44 44 20 20  |L S,T,S..F.ADD  |
00003850  59 31 2c 59 31 2c 53 2c  41 53 52 20 23 31 30 0d  |Y1,Y1,S,ASR #10.|
00003860  1e 50 0e 4d 4f 56 20 20  58 31 2c 58 52 0d 1e 5a  |.P.MOV  X1,XR..Z|
00003870  08 2e 73 6b 32 0d 1e 64  04 0d 1e 6e 0d 4d 4f 56  |..sk2..d...n.MOV|
00003880  20 4b 31 2c 23 30 0d 1e  78 0d 43 4d 50 20 59 31  | K1,#0..x.CMP Y1|
00003890  2c 59 42 0d 1e 82 11 84  52 4c 54 20 4b 31 2c 4b  |,YB.....RLT K1,K|
000038a0  31 2c 23 34 0d 1e 8c 0d  43 4d 50 20 59 31 2c 59  |1,#4....CMP Y1,Y|
000038b0  54 0d 1e 96 11 84 52 47  54 20 4b 31 2c 4b 31 2c  |T.....RGT K1,K1,|
000038c0  23 38 0d 1e a0 0e 80 53  20 54 2c 4b 31 2c 4b 32  |#8.....S T,K1,K2|
000038d0  0d 1e aa 16 4c 44 4d 4e  45 46 44 20 31 33 21 2c  |....LDMNEFD 13!,|
000038e0  7b 38 2d 31 31 7d 0d 1e  b4 2f 4d 4f 56 4e 45 20  |{8-11}.../MOVNE |
000038f0  50 43 2c 52 31 34 20 20  5c 20 4c 69 6e 65 20 63  |PC,R14  \ Line c|
00003900  6f 6d 70 6c 65 74 65 6c  79 20 6f 75 74 73 69 64  |ompletely outsid|
00003910  65 20 62 6f 78 0d 1e be  0f 84 52 53 20 54 2c 4b  |e box.....RS T,K|
00003920  31 2c 4b 32 0d 1e c8 2e  42 45 51 20 65 6e 64 77  |1,K2....BEQ endw|
00003930  68 69 6c 65 20 20 5c 20  4c 69 6e 65 20 63 6f 6d  |hile  \ Line com|
00003940  70 6c 65 74 65 6c 79 20  69 6e 73 69 64 65 20 62  |pletely inside b|
00003950  6f 78 0d 1e d2 04 0d 1e  dc 15 54 53 54 20 4b 31  |ox........TST K1|
00003960  2c 23 34 3a 42 45 51 20  73 6b 33 0d 1e e6 31 53  |,#4:BEQ sk3...1S|
00003970  55 42 53 20 54 2c 59 32  2c 59 31 3a 52 53 42 4d  |UBS T,Y2,Y1:RSBM|
00003980  49 20 54 2c 54 2c 23 30  3a 4c 44 52 20 53 2c 5b  |I T,T,#0:LDR S,[|
00003990  44 54 2c 54 2c 4c 53 4c  20 23 32 5d 0d 1e f0 37  |DT,T,LSL #2]...7|
000039a0  53 55 42 20 20 54 2c 58  32 2c 58 31 3a 52 53 42  |SUB  T,X2,X1:RSB|
000039b0  4d 49 20 54 2c 54 2c 23  30 3a 4d 55 4c 20 53 2c  |MI T,T,#0:MUL S,|
000039c0  54 2c 53 3a 4d 4f 56 20  53 2c 53 2c 41 53 52 20  |T,S:MOV S,S,ASR |
000039d0  23 31 30 0d 1e fa 1a 53  55 42 20 20 54 2c 59 42  |#10....SUB  T,YB|
000039e0  2c 59 31 3a 4d 55 4c 20  53 2c 54 2c 53 0d 1f 04  |,Y1:MUL S,T,S...|
000039f0  18 41 44 44 20 20 58 31  2c 58 31 2c 53 2c 41 53  |.ADD  X1,X1,S,AS|
00003a00  52 20 23 31 30 0d 1f 0e  0e 4d 4f 56 20 20 59 31  |R #10....MOV  Y1|
00003a10  2c 59 42 0d 1f 18 08 2e  73 6b 33 0d 1f 22 15 54  |,YB.....sk3..".T|
00003a20  53 54 20 4b 31 2c 23 38  3a 42 45 51 20 73 6b 34  |ST K1,#8:BEQ sk4|
00003a30  0d 1f 2c 31 53 55 42 53  20 54 2c 59 32 2c 59 31  |..,1SUBS T,Y2,Y1|
00003a40  3a 52 53 42 4d 49 20 54  2c 54 2c 23 30 3a 4c 44  |:RSBMI T,T,#0:LD|
00003a50  52 20 53 2c 5b 44 54 2c  54 2c 4c 53 4c 20 23 32  |R S,[DT,T,LSL #2|
00003a60  5d 0d 1f 36 37 53 55 42  20 20 54 2c 58 32 2c 58  |]..67SUB  T,X2,X|
00003a70  31 3a 52 53 42 4d 49 20  54 2c 54 2c 23 30 3a 4d  |1:RSBMI T,T,#0:M|
00003a80  55 4c 20 53 2c 54 2c 53  3a 4d 4f 56 20 53 2c 53  |UL S,T,S:MOV S,S|
00003a90  2c 41 53 52 20 23 31 30  0d 1f 40 1a 53 55 42 20  |,ASR #10..@.SUB |
00003aa0  20 54 2c 59 54 2c 59 31  3a 4d 55 4c 20 53 2c 54  | T,YT,Y1:MUL S,T|
00003ab0  2c 53 0d 1f 4a 18 41 44  44 20 20 58 31 2c 58 31  |,S..J.ADD  X1,X1|
00003ac0  2c 53 2c 41 53 52 20 23  31 30 0d 1f 54 0e 4d 4f  |,S,ASR #10..T.MO|
00003ad0  56 20 20 59 31 2c 59 54  0d 1f 5e 08 2e 73 6b 34  |V  Y1,YT..^..sk4|
00003ae0  0d 1f 68 04 0d 1f 72 0d  4d 4f 56 20 4b 31 2c 23  |..h...r.MOV K1,#|
00003af0  30 0d 1f 7c 0d 43 4d 50  20 58 31 2c 58 4c 0d 1f  |0..|.CMP X1,XL..|
00003b00  86 11 84 52 4c 54 20 4b  31 2c 4b 31 2c 23 31 0d  |...RLT K1,K1,#1.|
00003b10  1f 90 0d 43 4d 50 20 58  31 2c 58 52 0d 1f 9a 11  |...CMP X1,XR....|
00003b20  84 52 47 54 20 4b 31 2c  4b 31 2c 23 32 0d 1f a4  |.RGT K1,K1,#2...|
00003b30  0e 80 53 20 54 2c 4b 31  2c 4b 32 0d 1f ae 16 4c  |..S T,K1,K2....L|
00003b40  44 4d 4e 45 46 44 20 31  33 21 2c 7b 38 2d 31 31  |DMNEFD 13!,{8-11|
00003b50  7d 0d 1f b8 2f 4d 4f 56  4e 45 20 50 43 2c 52 31  |}.../MOVNE PC,R1|
00003b60  34 20 20 5c 20 4c 69 6e  65 20 63 6f 6d 70 6c 65  |4  \ Line comple|
00003b70  74 65 6c 79 20 6f 75 74  73 69 64 65 20 62 6f 78  |tely outside box|
00003b80  0d 1f c2 0f 84 52 53 20  54 2c 4b 31 2c 4b 32 0d  |.....RS T,K1,K2.|
00003b90  1f cc 0d 42 4e 45 20 77  68 69 6c 65 0d 1f d6 2e  |...BNE while....|
00003ba0  2e 65 6e 64 77 68 69 6c  65 20 20 20 20 20 5c 20  |.endwhile     \ |
00003bb0  4c 69 6e 65 20 63 6f 6d  70 6c 65 74 65 6c 79 20  |Line completely |
00003bc0  69 6e 73 69 64 65 20 62  6f 78 0d 1f e0 04 0d 1f  |inside box......|
00003bd0  ea 10 41 44 52 20 54 2c  73 63 72 65 65 6e 0d 1f  |..ADR T,screen..|
00003be0  f4 12 4c 44 4d 49 41 20  54 2c 7b 4f 2c 43 54 7d  |..LDMIA T,{O,CT}|
00003bf0  0d 1f fe 11 52 53 42 20  54 2c 59 31 2c 23 32 35  |....RSB T,Y1,#25|
00003c00  35 0d 20 08 14 41 44 44  20 54 2c 54 2c 54 2c 4c  |5. ..ADD T,T,T,L|
00003c10  53 4c 20 23 32 0d 20 12  15 41 44 44 20 54 2c 58  |SL #2. ..ADD T,X|
00003c20  31 2c 54 2c 4c 53 4c 20  23 36 0d 20 1c 0d 41 44  |1,T,LSL #6. ..AD|
00003c30  44 20 4f 2c 4f 2c 54 0d  20 26 0f 53 55 42 20 41  |D O,O,T. &.SUB A|
00003c40  2c 58 32 2c 58 31 0d 20  30 0f 53 55 42 20 42 2c  |,X2,X1. 0.SUB B,|
00003c50  59 32 2c 59 31 0d 20 3a  0d 4d 4f 56 20 4c 4c 2c  |Y2,Y1. :.MOV LL,|
00003c60  23 31 0d 20 44 0f 4d 4f  56 20 52 52 2c 23 33 32  |#1. D.MOV RR,#32|
00003c70  30 0d 20 4e 10 52 53 42  20 52 52 2c 52 52 2c 23  |0. N.RSB RR,RR,#|
00003c80  30 0d 20 58 0c 43 4d 50  20 41 2c 23 30 0d 20 62  |0. X.CMP A,#0. b|
00003c90  11 20 52 53 42 4c 54 20  41 2c 41 2c 23 30 0d 20  |. RSBLT A,A,#0. |
00003ca0  6c 13 20 52 53 42 4c 54  20 4c 4c 2c 4c 4c 2c 23  |l. RSBLT LL,LL,#|
00003cb0  30 0d 20 76 0c 43 4d 50  20 42 2c 23 30 0d 20 80  |0. v.CMP B,#0. .|
00003cc0  11 20 52 53 42 4c 54 20  42 2c 42 2c 23 30 0d 20  |. RSBLT B,B,#0. |
00003cd0  8a 13 20 52 53 42 4c 54  20 52 52 2c 52 52 2c 23  |.. RSBLT RR,RR,#|
00003ce0  30 0d 20 94 0b 43 4d 50  20 41 2c 42 0d 20 9e 0e  |0. ..CMP A,B. ..|
00003cf0  20 4d 4f 56 4c 54 20 54  2c 41 0d 20 a8 0e 20 4d  | MOVLT T,A. .. M|
00003d00  4f 56 4c 54 20 41 2c 42  0d 20 b2 0e 20 4d 4f 56  |OVLT A,B. .. MOV|
00003d10  4c 54 20 42 2c 54 0d 20  bc 0f 20 4d 4f 56 4c 54  |LT B,T. .. MOVLT|
00003d20  20 54 2c 4c 4c 0d 20 c6  10 20 4d 4f 56 4c 54 20  | T,LL. .. MOVLT |
00003d30  4c 4c 2c 52 52 0d 20 d0  0f 20 4d 4f 56 4c 54 20  |LL,RR. .. MOVLT |
00003d40  52 52 2c 54 0d 20 da 0f  4c 44 52 42 20 43 2c 5b  |RR,T. ..LDRB C,[|
00003d50  43 54 5d 0d 20 e4 0e 53  54 52 42 20 43 2c 5b 4f  |CT]. ..STRB C,[O|
00003d60  5d 0d 20 ee 0c 43 4d 50  20 41 2c 23 30 0d 20 f8  |]. ..CMP A,#0. .|
00003d70  16 4c 44 4d 45 51 46 44  20 31 33 21 2c 7b 38 2d  |.LDMEQFD 13!,{8-|
00003d80  31 31 7d 0d 21 02 0e 20  ec 51 20 50 43 2c 52 31  |11}.!.. .Q PC,R1|
00003d90  34 0d 21 0c 17 4c 44 52  20 54 2c 5b 44 54 2c 41  |4.!..LDR T,[DT,A|
00003da0  2c 4c 53 4c 20 23 32 5d  0d 21 16 0d 4d 55 4c 20  |,LSL #2].!..MUL |
00003db0  42 2c 54 2c 42 0d 21 20  10 4d 4f 56 20 44 2c 23  |B,T,B.! .MOV D,#|
00003dc0  31 3c 3c 32 30 0d 21 2a  0e 2e 6c 69 6e 65 5f 6c  |1<<20.!*..line_l|
00003dd0  6f 6f 70 0d 21 34 0e 53  55 42 53 20 44 2c 44 2c  |oop.!4.SUBS D,D,|
00003de0  42 0d 21 3e 14 41 44 44  4c 45 20 44 2c 44 2c 23  |B.!>.ADDLE D,D,#|
00003df0  31 3c 3c 32 30 0d 21 48  10 41 44 44 4c 45 20 4f  |1<<20.!H.ADDLE O|
00003e00  2c 4f 2c 52 52 0d 21 52  13 52 53 42 20 20 54 2c  |,O,RR.!R.RSB  T,|
00003e10  44 2c 23 31 3c 3c 32 30  0d 21 5c 19 4c 44 52 42  |D,#1<<20.!\.LDRB|
00003e20  20 43 2c 5b 43 54 2c 54  2c 4c 53 52 20 23 31 37  | C,[CT,T,LSR #17|
00003e30  5d 0d 21 66 12 53 54 52  42 20 43 2c 5b 4f 2c 4c  |].!f.STRB C,[O,L|
00003e40  4c 5d 21 0d 21 70 19 4c  44 52 42 20 43 2c 5b 43  |L]!.!p.LDRB C,[C|
00003e50  54 2c 44 2c 4c 53 52 20  23 31 37 5d 0d 21 7a 11  |T,D,LSR #17].!z.|
00003e60  53 54 52 42 20 43 2c 5b  4f 2c 52 52 5d 0d 21 84  |STRB C,[O,RR].!.|
00003e70  0f 53 55 42 53 20 41 2c  41 2c 23 31 0d 21 8e 11  |.SUBS A,A,#1.!..|
00003e80  42 4e 45 20 6c 69 6e 65  5f 6c 6f 6f 70 0d 21 98  |BNE line_loop.!.|
00003e90  14 4c 44 4d 46 44 20 31  33 21 2c 7b 38 2d 31 31  |.LDMFD 13!,{8-11|
00003ea0  7d 0d 21 a2 0e 4d 4f 56  20 50 43 2c 52 31 34 0d  |}.!..MOV PC,R14.|
00003eb0  21 ac 04 0d 21 b6 04 0d  21 c0 05 5d 0d 21 ca 05  |!...!...!..].!..|
00003ec0  ed 0d 21 d4 09 51 25 3d  50 25 0d 21 de 04 0d 21  |..!..Q%=P%.!...!|
00003ed0  e8 04 0d 21 f2 4d 4e 4c  3d 30 3a 20 20 20 20 3a  |...!.MNL=0:    :|
00003ee0  54 41 42 3d 32 3a 46 52  45 45 3d 33 3a 4e 52 3d  |TAB=2:FREE=3:NR=|
00003ef0  34 3a 49 4e 56 3d 35 3a  43 4f 3d 36 3a 20 20 20  |4:INV=5:CO=6:   |
00003f00  4e 3d 37 3a 20 20 20 20  20 58 31 3d 39 3a 59 31  |N=7:     X1=9:Y1|
00003f10  3d 31 30 3a 58 32 3d 31  31 3a 59 32 3d 31 32 0d  |=10:X2=11:Y2=12.|
00003f20  21 fc 4d 4c 45 3d 30 3a  52 45 3d 31 3a 20 20 4c  |!.MLE=0:RE=1:  L|
00003f30  3d 32 3a 20 20 20 52 3d  33 3a 58 4c 3d 34 3a 20  |=2:   R=3:XL=4: |
00003f40  58 52 3d 35 3a 44 58 4c  3d 36 3a 44 58 52 3d 37  |XR=5:DXL=6:DXR=7|
00003f50  3a 20 4f 3d 38 3a 43 31  3d 39 3a 43 32 3d 31 30  |: O=8:C1=9:C2=10|
00003f60  3a 43 33 3d 31 31 3a 43  34 3d 31 32 0d 22 06 0d  |:C3=11:C4=12."..|
00003f70  50 4c 3d 30 3a 50 52 3d  31 0d 22 10 0e 20 51 3d  |PL=0:PR=1.".. Q=|
00003f80  31 33 3a 54 3d 31 34 0d  22 1a 09 50 4f 3d 31 33  |13:T=14."..PO=13|
00003f90  0d 22 24 14 e3 20 50 41  53 53 3d 30 20 b8 20 32  |."$.. PASS=0 . 2|
00003fa0  20 88 20 32 0d 22 2e 09  50 25 3d 51 25 0d 22 38  | . 2."..P%=Q%."8|
00003fb0  0d 5b 4f 50 54 20 50 41  53 53 0d 22 42 04 0d 22  |.[OPT PASS."B.."|
00003fc0  4c 16 2e 50 49 58 4c 20  45 51 55 44 20 50 49 58  |L..PIXL EQUD PIX|
00003fd0  50 52 4f 4a 0d 22 56 0c  2e 64 72 61 77 70 69 78  |PROJ."V..drawpix|
00003fe0  0d 22 60 12 53 54 4d 46  44 20 31 33 21 2c 7b 31  |."`.STMFD 13!,{1|
00003ff0  34 7d 0d 22 6a 0e 4c 44  52 20 35 2c 50 49 58 4c  |4}."j.LDR 5,PIXL|
00004000  0d 22 74 14 4d 4f 56 20  34 2c 23 25 31 31 31 31  |."t.MOV 4,#%1111|
00004010  31 31 30 30 0d 22 7e 0d  4d 4f 56 20 36 2c 23 4e  |1100."~.MOV 6,#N|
00004020  44 0d 22 88 0c 2e 70 69  78 6c 6f 6f 70 0d 22 92  |D."...pixloop.".|
00004030  16 4c 44 4d 49 41 20 35  21 2c 7b 30 2c 31 2c 32  |.LDMIA 5!,{0,1,2|
00004040  2c 33 7d 0d 22 9c 13 53  54 4d 46 44 20 31 33 21  |,3}."..STMFD 13!|
00004050  2c 7b 34 2d 36 7d 0d 22  a6 0b 42 4c 20 6c 69 6e  |,{4-6}."..BL lin|
00004060  65 0d 22 b0 13 4c 44 4d  46 44 20 31 33 21 2c 7b  |e."..LDMFD 13!,{|
00004070  34 2d 36 7d 0d 22 ba 0f  53 55 42 53 20 36 2c 36  |4-6}."..SUBS 6,6|
00004080  2c 23 31 0d 22 c4 0f 42  4e 45 20 70 69 78 6c 6f  |,#1."..BNE pixlo|
00004090  6f 70 0d 22 ce 12 4c 44  4d 46 44 20 31 33 21 2c  |op."..LDMFD 13!,|
000040a0  7b 50 43 7d 0d 22 d8 04  0d 22 e2 05 5d 0d 22 ec  |{PC}."..."..].".|
000040b0  05 ed 0d 22 f6 09 51 25  3d 50 25 0d 23 00 05 e1  |..."..Q%=P%.#...|
000040c0  0d ff                                             |..|
000040c2