Home » Archimedes archive » Acorn User » AU 1995-12 B.adf » Regulars » StarInfo/Vlietinck/!3dSurf/Fire_ball

StarInfo/Vlietinck/!3dSurf/Fire_ball

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 » Archimedes archive » Acorn User » AU 1995-12 B.adf » Regulars
Filename: StarInfo/Vlietinck/!3dSurf/Fire_ball
Read OK:
File size: 42DE bytes
Load address: 0000
Exec address: 0000
File contents
   10REM >Fire_ball
   20REM (c) Jan Vlietinck
   21REM vlietin@intec.rug.ac.be
   60
   70REMON ERROR::REPORT:PRINT" at line " ERL:END
   71ON ERROR:END
   80MODE13+128:MODE 9
   90
  100
  110NR_OBJECTS=2
  180SH=4:FIX=2^SH
  190lengte=64+16
  200DIM PUNT  2000*4*6+4
  210
  220
  230MOTION_SIZE=4*3*4+8
  240
  250DIM PROJECT  1000*4*2
  260DIM MOTION   MOTION_SIZE*100+4
  270
  280DIM Point_Type(3)
  290DIM Plane_Type(3)
  300
  320PROCbuildpunt
  330PROCbuildmotion
  340PROCass
  350CLS:OFF
  360REM move drawing object 20 steps ahead of cleanig object
  370FOR I=1 TO 15*4-4:A%=MOTION:CALL moveobject:NEXT
  380
  390DIM C1(16),C2(16),C3(16)
  400C1()=0:C2()=0:C3()=0
  410FOR I=1 TO 5
  420C1(I)=(I+10)*16
  430C2(I)=(I+2)*16
  440NEXT
  450FOR I=1 TO 5
  460C1(I+5)=(15)*16
  470C2(I+5)=(2*I+5)*16
  480C3(I+5)=(I+2)*16
  490NEXT
  500FOR I=1 TO 5
  510C1(I+10)=(15)*16
  520C2(I+10)=(15)*16
  530C3(I+10)=(I+7)*16
  540NEXT
  550
  560
  570M=0:S=0
  580FOR C=0 TO 14
  590COL=(1+ ((C+M) MOD 15))
  600COLOUR C+1,C1(COL),C2(COL),C3(COL)
  610NEXT
  620M+=14
  630
  640REPEAT
  650
  660
  670CALL set2
  680A%=MOTION
  690CALL moveobjects
  700
  710A%=MOTION+MOTION_SIZE
  720CALL calc_rot_matrix
  730A%=A%!48
  740CALL transform_clear
  750
  760IF S=4 THEN
  770S=0
  780FOR C=0 TO 14
  790COL=(1+ ((C+M) MOD 15))
  800COLOUR C+1,C1(COL),C2(COL),C3(COL)
  810NEXT
  820M+=14
  830ENDIF
  840S+=1
  850
  860A%=MOTION
  870CALL calc_rot_matrix
  880A%=A%!48
  890CALL transform_draw
  900UNTIL 0
  910
  920
  930REM CALL main
  940END
  950
  960
  970
  980DEF PROCmain
  990
 1000FOR PASS=0 TO 2 STEP 2
 1010P%=Q%
 1020[OPT PASS
 1030.PUNTD    EQUD      PUNT
 1040.PROJECTD EQUD      PROJECT
 1050.MOTIOND  EQUD      MOTION
 1060
 1070.main
 1080          STMFD     13!,{14}
 1090.mainloop
 1100          BL        set2                 ; set display
 1120
 1130          LDR       R0,MOTIOND
 1140          BL        moveobjects
 1150          BL        calc_rot_matrix
 1160          LDR       R0,[R0,#48]
 1170          BL        transform_draw
 1180
 1190          LDR       R0,MOTIOND
 1200          ADD       R0,R0,#MOTION_SIZE
 1210          BL        calc_rot_matrix
 1220          LDR       R0,[R0,#48]
 1230          BL        transform_clear
 1240
 1250          SWI       "OS_ReadEscapeState"
 1260          BCC       mainloop
 1270          LDMFD     13!,{PC}
 1280
 1290
 1300]
 1310NEXT
 1320Q%=P%
 1330ENDPROC
 1340
 1350
 1360DEF PROCass
 1370DIM Q% 130000
 1380DIM INVERS 4*1024
 1390DIM DITABLE 4000*16*4
 1400DIM CSTABLE 4096*8
 1410DIM CTABLE 100*16
 1420PROCcalc_invers
 1430PROCcalc_cstable
 1440PROCcalc_divtable
 1450PROCtransform
 1460PROCmoveobjects
 1470PROCcalc_rot_matrix
 1480PROCmain
 1490ENDPROC
 1500
 1510
 1520DEF PROCbuildpunt   :REM calc coordinates of a sphere, 16x30 vert.
 1530P%=PUNT
 1540L=lengte*FIX
 1550
 1560
 1570Point_Type(1)=P%
 1580PROCOBJ1
 1590Point_Type(2)=P%
 1600REMPROCOBJ2
 1610Point_Type(3)=P%
 1620ENDPROC
 1630
 1640
 1650DEF PROCOBJ1
 1660M%=16:N%=30
 1670REMM%=10:N%=16
 1680DK=PI/M%:K=-PI/2+DK
 1690[OPT 0
 1700DCD 0:DCD 0:DCD -L       : REM single lower point
 1710]
 1720FOR J%=1 TO M%-1
 1730SN=SINK*L:CS=COSK*L
 1740DH=2*PI/N%:H=0
 1750FOR I%=1 TO N%
 1760[OPT 0
 1770DCD COSH*CS
 1780DCD SINH*CS
 1790DCD SN
 1800]
 1810H+=DH
 1820NEXT
 1830K+=DK
 1840NEXT
 1850[OPT 0
 1860DCD 0:DCD 0:DCD  L       : REM single upper point
 1870DCD (1<<30)
 1880]
 1890
 1900ENDPROC
 1910
 1920DEF PROCOBJ2
 1930N%=1000
 1940DH=2*PI/N%:H=0
 1950FOR I%=1 TO N%
 1960[OPT 0
 1970DCD COSH*L/2
 1980DCD SINH*L/2
 1990DCD 0
 2000]
 2010H+=DH
 2020NEXT
 2030[OPT 0
 2040DCD (1<<30)
 2050]
 2060ENDPROC
 2070
 2080
 2090
 2100DEF PROCbuildmotion
 2110LOCAL PNTR
 2120VR=4
 2130VT=4
 2140TXD=0:TYD=4:TZD=8:DTXD=12:DTYD=16:DTZD=20
 2150HXD=24:HYD=28:HZD=32:DHXD=36:DHYD=40:DHZD=44
 2160
 2170TYPE=1
 2180I=1
 2190
 2200PNTR=MOTION+(I-1)*MOTION_SIZE
 2210PNTR!TXD=(-1)^RND(2)*50*FIX               : REM TX,TY,TZ
 2220PNTR!TYD=(-1)^RND(2)*50*FIX
 2230PNTR!TZD=(1+RND(1))*100*FIX
 2240PNTR!DTXD=(-1)^RND(2)*(RND(VT*2)+VT)*FIX/10: REM DTX,DTY,DTZ
 2250PNTR!DTYD=(-1)^RND(2)*(RND(VT*2)+VT)*FIX/10
 2260PNTR!DTZD=(-1)^RND(2)*(RND(VT*2)+VT)*FIX/10
 2270PNTR!HXD=0                            : REM HX,HY,HZ
 2280PNTR!HYD=0
 2290PNTR!HZD=0
 2300PNTR!DHXD=(-1)^RND(2)*(RND(VR*2)+VR): REM DHX,DHY,DYZ
 2310PNTR!DHYD=(-1)^RND(2)*(RND(VR*2)+VR)
 2320PNTR!DHZD=(-1)^RND(2)*(RND(VR*2)+VR)
 2330PNTR!48=Point_Type(TYPE)
 2340
 2350REM initial position of drawing and cleaning object is the same
 2360PNTRO=PNTR
 2370I+=1
 2380PNTR=MOTION+(I-1)*MOTION_SIZE
 2390FOR J=0 TO 52 STEP 4
 2400PNTR!J=PNTRO!J
 2410NEXT
 2420PNTR!48=Point_Type(TYPE)
 2430PNTR!56=1<<31
 2440ENDPROC
 2450
 2460
 2470REM Nr of type objects
 2480DATA 1
 2490
 2500
 2510DEF PROCcalc_invers
 2520K=2<<20
 2530FOR I=1 TO 1023:INVERS!(4*I)=K/I+.5:NEXT
 2540ENDPROC
 2550
 2560
 2570DEF PROCcalc_cstable
 2580F=2*PI/4096:V=2^15
 2590T2=CSTABLE+8*1024
 2600T3=CSTABLE+8*2048
 2610T4=CSTABLE+8*3072
 2620FOR H=0 TO 1023
 2630K=F*H
 2640CS=COS(K)*V:SN=SIN(K)*V
 2650CSTABLE!(8*H)=CS
 2660CSTABLE!(8*H+4)=SN
 2670T2!(8*H)=-SN
 2680T2!(8*H+4)=CS
 2690T3!(8*H)=-CS
 2700T3!(8*H+4)=-SN
 2710T4!(8*H)=SN
 2720T4!(8*H+4)=-CS
 2730NEXT
 2740ENDPROC
 2750
 2760DEF PROCcalc_divtable
 2770T=0:N=1:Q=2:I=3:J=4:DIT=5
 2780FOR PASS=0 TO 2 STEP 2
 2790P%=Q%
 2800[OPT PASS
 2810.DNRD EQUD 4000*16
 2820.DITH EQUD DITABLE
 2830.calc_divtable
 2840          STMFD     13!,{0-12,14}
 2850          LDR       DIT,DITH
 2860          LDR       I,DNRD
 2870.DVLOOP2
 2880          MOV       T,#200<<12
 2890          MOV       N,I
 2900          MOV       J,#0
 2910          MOV       Q,#0
 2920.DVLOOP3
 2930          CMP       N,T
 2940          MOVLO     N,N,LSL #1
 2950          ADDLO     J,J,#1
 2960          BLO       DVLOOP3
 2970          MOV       N,N,LSR J
 2980.DVLOOP1
 2990          CMP       T,N,LSL J
 3000          SUBHS     T,T,N,LSL J
 3010          ADC       Q,Q,Q
 3020          SUBS      J,J,#1
 3030          BPL       DVLOOP1
 3040          STR       Q,[DIT,I,LSL #2]
 3050          SUBS      I,I,#1
 3060          BNE       DVLOOP2
 3070          LDMFD     13!,{0-12,PC}
 3080]
 3090NEXT
 3100Q%=P%
 3110CALL calc_divtable
 3120ENDPROC
 3130
 3140DEF PROCcalc_rot_matrix
 3150CHX=0:SHX=1
 3160CHY=2:SHY=3
 3170CHZ=4:SHZ=5
 3180T=6:S=7:H=8
 3190DHX=3:DHY=4:DHZ=5
 3200HX=9:HY=10:HZ=11
 3210TX=9:TY=10:TZ=11
 3220CS=12
 3230SCR=0:COL=1
 3240FOR PASS=0 TO 2 STEP 2
 3250P%=Q%
 3260[OPT PASS
 3270; REM calc 3x4 transformation matrix on the basis of
 3280; REM hx,hy,hz and tx,ty,tz of the motion array
 3290.CSD EQUD CSTABLE
 3300.calc_rot_matrix
 3310          STMFD     13!,{0-12,14}
 3320          MOV       H,0
 3330;REM Load angles  HX,HY,HZ
 3340          ADD       T,H,#HXD
 3350          LDMIA     T,{HX,HY,HZ}
 3360;REM Do a modulo 4096 operation on the angles (=> periodic lookup)
 3370          MOV       S,#4096
 3380          SUB       S,S,#1
 3390;REM Lookup (cosHX,sinHX) (cosHY, sinHY) (cosHZ, sinHZ)
 3400          LDR       CS,CSD
 3410          CMP       HX,#0
 3420          RSBMI     HX,HX,#0
 3430          AND       HX,HX,S
 3440          ADD       T,CS,HX,LSL #3
 3450          LDMIA     T,{CHX,SHX}
 3460          RSBMI     SHX,SHX,#0
 3470          CMP       HY,#0
 3480          RSBMI     HY,HY,#0
 3490          AND       HY,HY,S
 3500          ADD       T,CS,HY,LSL #3
 3510          LDMIA     T,{CHY,SHY}
 3520          RSBMI     SHY,SHY,#0
 3530          CMP       HZ,#0
 3540          RSBMI     HZ,HZ,#0
 3550          AND       HZ,HZ,S
 3560          ADD       T,CS,HZ,LSL #3
 3570          LDMIA     T,{CHZ,SHZ}
 3580          RSBMI     SHZ,SHZ,#0
 3590;REM Load displacement values TX,TY,TZ
 3600          ADD       T,H,#TXD
 3610          LDMIA     T,{TX,TY,TZ}
 3620;REM ________First ROW____________
 3630;REM cosHY*cosHZ
 3640;REM cosHY*sinHZ
 3650;REM sinHY
 3660;REM TX
 3670          MUL       T,CHY,CHZ
 3680          MOV       T,T,ASR #15
 3690          MUL       S,CHY,SHZ
 3700          MOV       S,S,LSR #15
 3710          ADD       T,S,T,LSL #16
 3720          STR       T,A1D
 3730          ADD       T,TX,SHY,LSL #16
 3740          STR       T,A2D
 3750;REM _________Second ROW___________
 3760;REM -sinHX*sinHY*cosHZ-cosHX*sinHZ
 3770;REM -sinHX*sinHY*sinHZ+cosHX*cosHZ
 3780;REM  sinHX*cosHY
 3790;REM  TY
 3800          MUL       T,SHX,SHY
 3810          MOV       T,T,ASR #15
 3820          MOV       S,T
 3830          MUL       H,CHX,SHZ
 3840          MLA       T,CHZ,T,H
 3850          RSB       T,T,#0
 3860          MOV       T,T,ASR #15
 3870          MUL       H,CHX,CHZ
 3880          MUL       S,SHZ,S
 3890          SUB       S,H,S
 3900          MOV       S,S,LSR #15
 3910          ADD       T,S,T,LSL #16
 3920          STR       T,B1D
 3930          MUL       T,SHX,CHY
 3940          MOV       T,T,ASR #15
 3950          ADD       T,TY,T,LSL #16
 3960          STR       T,B2D
 3970;REM _______ Third ROW ___________
 3980;REM -cosHX*sinHY*cosHZ+sinHX*sinHZ
 3990;REM -cosHX*sinHY*sinHZ-sinHX*cosHZ
 4000;REM  cosHX*cosHY
 4010;REM  TZ
 4020          MUL       T,CHX,SHY
 4030          MOV       T,T,ASR #15
 4040          MOV       S,T
 4050          MUL       T,CHZ,T
 4060          MUL       H,SHX,SHZ
 4070          SUB       T,H,T
 4080          MOV       T,T,ASR #15
 4090          MUL       S,SHZ,S
 4100          MLA       H,SHX,CHZ,S
 4110          RSB       S,H,#0
 4120          MOV       S,S,LSR #15
 4130          ADD       T,S,T,LSL #16
 4140          STR       T,C1D
 4150          MUL       T,CHX,CHY
 4160          MOV       T,T,ASR #15
 4170          ADD       T,TZ,T,LSL #16
 4180          STR       T,C2D
 4190          LDMFD     13!,{0-12,PC}
 4200]
 4210NEXT
 4220Q%=P%
 4230ENDPROC
 4240
 4250DEF PROCmoveobjects
 4260sentinel=1<<31
 4270xmin=100*FIX
 4280xmax=100*FIX
 4290ymin=100*FIX
 4300ymax=100*FIX
 4310zmin=0*FIX
 4320zmax=256*FIX
 4330FOR PASS=0 TO 2 STEP 2
 4340P%=Q%
 4350[OPT PASS
 4360.tmp      EQUD 0
 4370.moveobjects
 4380          STMFD     13!,{0-12}
 4390          STR       13,tmp
 4400          MOV       12,0
 4410.move_loop
 4420          LDMIA     12,{0,1,2,3,4,5,6,7,8,9,10,11}
 4430          CMP       0,#sentinel
 4440          BEQ       move_end
 4450
 4460          ADD       0,0,3           ; x=x+dx
 4470          ADD       13,0,#xmin
 4480          CMP       13,#xmax+xmin   ; if x<xmin or x>xmax then
 4490          RSBHI     3,3,#0          ; dx=-dx; x=x+2*dx
 4500          ADDHI     0,0,3,LSL #1
 4510
 4520          ADD       1,1,4
 4530          ADD       13,1,#ymin
 4540          CMP       13,#ymax+ymin
 4550          RSBHI     4,4,#0
 4560          ADDHI     1,1,4,LSL #1
 4570
 4580          ADD       2,2,5
 4590          SUB       13,2,#zmin
 4600          CMP       13,#zmax-zmin
 4610          RSBHI     5,5,#0
 4620          ADDHI     2,2,5,LSL #1
 4630
 4640          ADD       6,6,9          ; hx=hx+dhx
 4650          ADD       7,7,10
 4660          ADD       8,8,11
 4670          STMIA     12,{0,1,2,3,4,5,6,7,8}
 4680          ADD       12,12,#MOTION_SIZE
 4690
 4700          BAL       move_loop
 4710
 4720.move_end LDR       13,tmp
 4730          LDMFD     13!,{0-12}
 4740          MOV       PC,R14
 4750
 4760.moveobject
 4770          STMFD     13!,{0-12}
 4780          STR       13,tmp
 4790          MOV       12,0
 4800
 4810          LDMIA     12,{0,1,2,3,4,5,6,7,8,9,10,11}
 4820
 4830          ADD       0,0,3           ; x=x+dx
 4840          ADD       13,0,#xmin
 4850          CMP       13,#xmax+xmin   ; if x<xmin or x>xmax then
 4860          RSBHI     3,3,#0          ; dx=-dx; x=x+2*dx
 4870          ADDHI     0,0,3,LSL #1
 4880
 4890          ADD       1,1,4
 4900          ADD       13,1,#ymin
 4910          CMP       13,#ymax+ymin
 4920          RSBHI     4,4,#0
 4930          ADDHI     1,1,4,LSL #1
 4940
 4950          ADD       2,2,5
 4960          SUB       13,2,#zmin
 4970          CMP       13,#zmax-zmin
 4980          RSBHI     5,5,#0
 4990          ADDHI     2,2,5,LSL #1
 5000
 5010          ADD       6,6,9          ; hx=hx+dhx
 5020          ADD       7,7,10
 5030          ADD       8,8,11
 5040          STMIA     12,{0,1,2,3,4,5,6,7,8}
 5050
 5060          LDR       13,tmp
 5070          LDMFD     13!,{0-12}
 5080          MOV       PC,R14
 5090]
 5100
 5110
 5120NEXT
 5130Q%=P%
 5140ENDPROC
 5150
 5160
 5170
 5180DEF PROCtransform
 5190A1=0:A2=1:B1=2:B2=3:C1=4:C2=5:T=6:DIT=7:A=8:B=9
 5200U=10:V=11:W=12:X=11:Y=13:Z=14
 5210FOR PASS=0 TO 2 STEP 2
 5220P%=Q%
 5230[OPT PASS
 5240.A1D EQUD 0:.A2D EQUD 0
 5250.B1D EQUD 0:.B2D EQUD 0
 5260.C1D EQUD 0:.C2D EQUD 0
 5270.DITD EQUD DITABLE
 5280.VD EQUD 0
 5290.SP EQUD 0
 5300.LK EQUD 0
 5310
 5320.screen1 EQUD 148:EQUD -1
 5330.screen EQUD 0
 5340.set2
 5350ADR R0,screen1:ADR R1,screen:SWI "OS_ReadVduVariables"
 5360MOV PC,R14
 5370
 5380.COLD     EQUD 15
 5390.CTEL     EQUD 0
 5400
 5410.transform_draw
 5420          STMFD     13!,{0-12,14}
 5430          MOV       A,0
 5440
 5450
 5460          STR       13,SP
 5470          ADR       T,A1D
 5480          LDMIA     T,{A1,A2,B1,B2,C1,C2,DIT}
 5490          LDMIA     (A)!,{X,Y,Z}
 5500          LDR       B,screen
 5510.trans_draw
 5520          MOV       T,C1,ASR #16       ; REM z transformed
 5530          MUL       W,T,X
 5540          MOV       T,C1,LSL #16
 5550          MOV       T,T,ASR #16
 5560          MLA       W,Y,T,W
 5570          MOV       T,C2,ASR #16
 5580          MLA       W,Z,T,W
 5590          MOV       T,C2,LSL #16
 5600          MOV       T,T,ASR #16
 5610          ADDS      W,T,W,ASR #15
 5620          CMP       W,#10*FIX
 5630          BMI       nodraw
 5640
 5650          MOV       T,A1,ASR #16     ; REM x transformed
 5660          MUL       U,X,T
 5670          MOV       T,A1,LSL #16
 5680          MOV       T,T,ASR #16
 5690          MLA       U,Y,T,U
 5700          MOV       T,A2,ASR #16
 5710          MLA       U,Z,T,U
 5720          MOV       T,A2,LSL #16
 5730          MOV       T,T,ASR #16
 5740          ADD       U,T,U,ASR #15
 5750
 5760          MOV       T,B1,ASR #16   ; REM y transformed
 5770          MUL       V,T,X
 5780          MOV       T,B1,LSL #16
 5790          MOV       T,T,ASR #16
 5800          MLA       V,Y,T,V
 5810          MOV       T,B2,ASR #16
 5820          MLA       V,Z,T,V
 5830          MOV       T,B2,LSL #16
 5840          MOV       T,T,ASR #16
 5850          ADD       V,T,V,ASR #15
 5860
 5870          LDR       W,[DIT,W,LSL #2]     ; REM perspective transformation
 5880          MUL       U,W,U
 5890          MUL       V,W,V
 5900          MOV       U,U,ASR #12
 5910          MOV       V,V,ASR #12
 5920          ADD       U,U,#160
 5930          RSB       V,V,#128
 5940
 5950          CMP       U,#320               ; REM clipping and plotting
 5960          CMPLO     V,#256
 5970          ADDLO     T,V,V,LSL #2
 5980          ADDLO     T,U,T,LSL #6
 5990          BHS       nodraw
 6000
 6010          LDRB     Z,COLD
 6020
 6030          LDRB      W,[B,T,LSR #1]
 6040          TST       U,#1
 6050          BICEQ     W,W,#15
 6060          BICNE     W,W,#15*16
 6070          ORREQ     W,W,Z
 6080          ORRNE     W,W,Z,LSL #4
 6090          STRB      W,[B,T,LSR #1]
 6100
 6110.nodraw   LDMIA     (A)!,{X,Y,Z}        ;REM U colour previous point
 6120          CMP       X,#1<<30
 6130          BNE       trans_draw
 6140
 6150          LDR       0,CTEL
 6160          ADD       0,0,#1
 6170          CMP       0,#4
 6180          MOVEQ     0,#0
 6190          STR       0,CTEL
 6200          BNE       skip
 6210
 6220          LDR       0,COLD
 6230          ADD       0,0,#1
 6240          CMP       0,#16
 6250          MOVEQ     0,#1
 6260          STR       0,COLD
 6270
 6280.skip
 6290          LDR       13,SP
 6300          LDMFD     13!,{0-12,PC}
 6310
 6320.transform_clear
 6330          STMFD     13!,{0-12,14}
 6340          MOV       A,0
 6350          STR       13,SP
 6360          ADR       T,A1D
 6370          LDMIA     T,{A1,A2,B1,B2,C1,C2,DIT}
 6380          LDMIA     (A)!,{X,Y,Z}
 6390          LDR       B,screen
 6400.trans_clear
 6410          MOV       T,C1,ASR #16       ; REM z transformed
 6420          MUL       W,T,X
 6430          MOV       T,C1,LSL #16
 6440          MOV       T,T,ASR #16
 6450          MLA       W,Y,T,W
 6460          MOV       T,C2,ASR #16
 6470          MLA       W,Z,T,W
 6480          MOV       T,C2,LSL #16
 6490          MOV       T,T,ASR #16
 6500          ADDS      W,T,W,ASR #15
 6510          CMP       W,#10*FIX
 6520          BMI       noclear
 6530
 6540          MOV       T,A1,ASR #16     ; REM x transformed
 6550          MUL       U,X,T
 6560          MOV       T,A1,LSL #16
 6570          MOV       T,T,ASR #16
 6580          MLA       U,Y,T,U
 6590          MOV       T,A2,ASR #16
 6600          MLA       U,Z,T,U
 6610          MOV       T,A2,LSL #16
 6620          MOV       T,T,ASR #16
 6630          ADD       U,T,U,ASR #15
 6640
 6650          MOV       T,B1,ASR #16   ; REM y transformed
 6660          MUL       V,T,X
 6670          MOV       T,B1,LSL #16
 6680          MOV       T,T,ASR #16
 6690          MLA       V,Y,T,V
 6700          MOV       T,B2,ASR #16
 6710          MLA       V,Z,T,V
 6720          MOV       T,B2,LSL #16
 6730          MOV       T,T,ASR #16
 6740          ADD       V,T,V,ASR #15
 6750
 6760          LDR       W,[DIT,W,LSL #2]     ; REM perspective transformation
 6770          MUL       U,W,U
 6780          MUL       V,W,V
 6790          MOV       U,U,ASR #12
 6800          MOV       V,V,ASR #12
 6810          ADD       U,U,#160
 6820          RSB       V,V,#128
 6830
 6840          CMP       U,#320               ; REM clipping and plotting
 6850          CMPLO     V,#256
 6860          ADDLO     T,V,V,LSL #2
 6870          ADDLO     T,U,T,LSL #6
 6880          BHS       noclear
 6890
 6900          LDR       Z,COLD
 6910          ADD       Z,Z,#1
 6920          CMP       Z,#16
 6930          MOVEQ     Z,#1
 6940
 6950          LDRB      W,[B,T,LSR #1]
 6960          TST       U,#1
 6970          BNE       odd
 6980          AND       Y,W,#15
 6990          CMP       Y,Z
 7000          BNE       noclear             ;REM only clear a pixel if it is
 7010          BIC       W,W,#15             ;REM not yet overwritten
 7020          STRB      W,[B,T,LSR #1]
 7030
 7040.noclear  LDMIA     (A)!,{X,Y,Z}        ;REM U colour previous point
 7050          CMP       X,#1<<30
 7060          BNE       trans_clear
 7070          LDR       13,SP
 7080          LDMFD     13!,{0-12,PC}
 7090
 7100.odd
 7110          AND       Y,W,#15*16
 7120          CMP       Y,Z,LSL #4
 7130          BNE       noclear
 7140          BIC       W,W,#15*16
 7150          STRB      W,[B,T,LSR #1]
 7160          LDMIA     (A)!,{X,Y,Z}        ;REM U colour previous point
 7170          CMP       X,#1<<30
 7180          BNE       trans_clear
 7190          LDR       13,SP
 7200          LDMFD     13!,{0-12,PC}
 7210
 7220
 7230]
 7240NEXT
 7250Q%=P%
 7260ENDPROC
 7270
 7280
 7290
 7300
 7310

� >Fire_ball
� (c) Jan Vlietinck
� vlietin@intec.rug.ac.be
<
F.�ON ERROR::REPORT:PRINT" at line " ERL:END
G	� �:�
P�13+128:� 9
Z
d
nNR_OBJECTS=2
�SH=4:FIX=2^SH
�lengte=64+16
�� PUNT  2000*4*6+4
�
�
�MOTION_SIZE=4*3*4+8
�
�� PROJECT  1000*4*2
 � MOTION   MOTION_SIZE*100+4

� Point_Type(3)
"� Plane_Type(3)
,
@�buildpunt
J�buildmotion
T�ass
^�:�
h:� move drawing object 20 steps ahead of cleanig object
r+� I=1 � 15*4-4:A%=MOTION:� moveobject:�
|
�� C1(16),C2(16),C3(16)
�C1()=0:C2()=0:C3()=0
�
� I=1 � 5
�C1(I)=(I+10)*16
�C2(I)=(I+2)*16
��
�
� I=1 � 5
�C1(I+5)=(15)*16
�C2(I+5)=(2*I+5)*16
�C3(I+5)=(I+2)*16
��
�
� I=1 � 5
�C1(I+10)=(15)*16
C2(I+10)=(15)*16
C3(I+10)=(I+7)*16
�
&
0
:M=0:S=0
D� C=0 � 14
NCOL=(1+ ((C+M) � 15))
X!� C+1,C1(COL),C2(COL),C3(COL)
b�
l	M+=14
v
��
�
�
�
� set2
�
A%=MOTION
�� moveobjects
�
�A%=MOTION+MOTION_SIZE
�� calc_rot_matrix
�A%=A%!48
�� transform_clear
�
�� S=4 �
S=0
� C=0 � 14
COL=(1+ ((C+M) � 15))
 !� C+1,C1(COL),C2(COL),C3(COL)
*�
4	M+=14
>�
HS+=1
R
\
A%=MOTION
f� calc_rot_matrix
pA%=A%!48
z� transform_draw
�� 0
�
�
�� CALL main
��
�
�
�
�� �main
�
�� PASS=0 � 2 � 2
�	P%=Q%
�
[OPT PASS
.PUNTD    EQUD      PUNT
.PROJECTD EQUD      PROJECT
.MOTIOND  EQUD      MOTION
$
.	.main
8           STMFD     13!,{14}
B
.mainloop
L:          BL        set2                 ; set display
`
j"          LDR       R0,MOTIOND
t#          BL        moveobjects
~'          BL        calc_rot_matrix
�#          LDR       R0,[R0,#48]
�&          BL        transform_draw
�
�"          LDR       R0,MOTIOND
�*          ADD       R0,R0,#MOTION_SIZE
�'          BL        calc_rot_matrix
�#          LDR       R0,[R0,#48]
�'          BL        transform_clear
�
�,          SWI       "OS_ReadEscapeState"
�           BCC       mainloop
�           LDMFD     13!,{PC}



]
�
(	Q%=P%
2�
<
F
P
� �ass
Z� Q% 130000
d� INVERS 4*1024
n� DITABLE 4000*16*4
x� CSTABLE 4096*8
�� CTABLE 100*16
��calc_invers
��calc_cstable
��calc_divtable
��transform
��moveobjects
��calc_rot_matrix
�	�main
��
�
�
�?� �buildpunt   :� calc coordinates of a sphere, 16x30 vert.
�P%=PUNT
L=lengte*FIX


"Point_Type(1)=P%
,	�OBJ1
6Point_Type(2)=P%
@
�PROCOBJ2
JPoint_Type(3)=P%
T�
^
h
r� �OBJ1
|M%=16:N%=30
��M%=10:N%=16
�DK=�/M%:K=-�/2+DK
�
[OPT 0
�3DCD 0:DCD 0:DCD -L       : � single lower point
�]
�� J%=1 � M%-1
�SN=�K*L:CS=�K*L
�DH=2*�/N%:H=0
�� I%=1 � N%
�
[OPT 0
�
DCD �H*CS
�
DCD �H*CS
�
DCD SN
]
	H+=DH
�
&	K+=DK
0�
:
[OPT 0
D3DCD 0:DCD 0:DCD  L       : � single upper point
NDCD (1<<30)
X]
b
l�
v
�� �OBJ2
�N%=1000
�DH=2*�/N%:H=0
�� I%=1 � N%
�
[OPT 0
�DCD �H*L/2
�DCD �H*L/2
�	DCD 0
�]
�	H+=DH
��
�
[OPT 0
�DCD (1<<30)
]
�

 
*
4� �buildmotion
>
� PNTR
HVR=4
RVT=4
\-TXD=0:TYD=4:TZD=8:DTXD=12:DTYD=16:DTZD=20
f0HXD=24:HYD=28:HZD=32:DHXD=36:DHYD=40:DHZD=44
p
z
TYPE=1
�I=1
�
�!PNTR=MOTION+(I-1)*MOTION_SIZE
�8PNTR!TXD=(-1)^�(2)*50*FIX               : � TX,TY,TZ
�PNTR!TYD=(-1)^�(2)*50*FIX
�PNTR!TZD=(1+�(1))*100*FIX
�:PNTR!DTXD=(-1)^�(2)*(�(VT*2)+VT)*FIX/10: � DTX,DTY,DTZ
�+PNTR!DTYD=(-1)^�(2)*(�(VT*2)+VT)*FIX/10
�+PNTR!DTZD=(-1)^�(2)*(�(VT*2)+VT)*FIX/10
�6PNTR!HXD=0                            : � HX,HY,HZ
�PNTR!HYD=0
�PNTR!HZD=0
�3PNTR!DHXD=(-1)^�(2)*(�(VR*2)+VR): � DHX,DHY,DYZ
	$PNTR!DHYD=(-1)^�(2)*(�(VR*2)+VR)
	$PNTR!DHZD=(-1)^�(2)*(�(VR*2)+VR)
	PNTR!48=Point_Type(TYPE)
	$
	.A� initial position of drawing and cleaning object is the same
	8PNTRO=PNTR
	BI+=1
	L!PNTR=MOTION+(I-1)*MOTION_SIZE
	V� J=0 � 52 � 4
	`PNTR!J=PNTRO!J
	j�
	tPNTR!48=Point_Type(TYPE)
	~PNTR!56=1<<31
	��
	�
	�
	�� Nr of type objects
	�� 1
	�
	�
	�� �calc_invers
	�K=2<<20
	�&� I=1 � 1023:INVERS!(4*I)=K/I+.5:�
	��
	�


� �calc_cstable
F=2*�/4096:V=2^15
T2=CSTABLE+8*1024
(T3=CSTABLE+8*2048
2T4=CSTABLE+8*3072
<� H=0 � 1023
F	K=F*H
PCS=�(K)*V:SN=�(K)*V
ZCSTABLE!(8*H)=CS
dCSTABLE!(8*H+4)=SN
nT2!(8*H)=-SN
xT2!(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
�� PASS=0 � 2 � 2
�	P%=Q%
�
[OPT PASS
�.DNRD EQUD 4000*16
.DITH EQUD DITABLE
.calc_divtable
%          STMFD     13!,{0-12,14}
"           LDR       DIT,DITH
,          LDR       I,DNRD
6.DVLOOP2
@"          MOV       T,#200<<12
J          MOV       N,I
T          MOV       J,#0
^          MOV       Q,#0
h.DVLOOP3
r          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
�          SUBS      J,J,#1
�          BPL       DVLOOP1
�(          STR       Q,[DIT,I,LSL #2]
�          SUBS      I,I,#1
�          BNE       DVLOOP2
�%          LDMFD     13!,{0-12,PC}
]
�
	Q%=P%
&� calc_divtable
0�
:
D� �calc_rot_matrix
NCHX=0:SHX=1
XCHY=2:SHY=3
bCHZ=4:SHZ=5
lT=6:S=7:H=8
vDHX=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
�6; � calc 3x4 transformation matrix on the basis of
�1; � hx,hy,hz and tx,ty,tz of the motion array
�.CSD EQUD CSTABLE
�.calc_rot_matrix
�%          STMFD     13!,{0-12,14}
�          MOV       H,0

;� Load angles  HX,HY,HZ

           ADD       T,H,#HXD

$          LDMIA     T,{HX,HY,HZ}

 D;� Do a modulo 4096 operation on the angles (=> periodic lookup)

*          MOV       S,#4096

4          SUB       S,S,#1

>9;� Lookup (cosHX,sinHX) (cosHY, sinHY) (cosHZ, sinHZ)

H          LDR       CS,CSD

R          CMP       HX,#0

\           RSBMI     HX,HX,#0

f          �       HX,HX,S

p&          ADD       T,CS,HX,LSL #3

z#          LDMIA     T,{CHX,SHX}

�"          RSBMI     SHX,SHX,#0

�          CMP       HY,#0

�           RSBMI     HY,HY,#0

�          �       HY,HY,S

�&          ADD       T,CS,HY,LSL #3

�#          LDMIA     T,{CHY,SHY}

�"          RSBMI     SHY,SHY,#0

�          CMP       HZ,#0

�           RSBMI     HZ,HZ,#0

�          �       HZ,HZ,S

�&          ADD       T,CS,HZ,LSL #3

�#          LDMIA     T,{CHZ,SHZ}

�"          RSBMI     SHZ,SHZ,#0
(;� Load displacement values TX,TY,TZ
           ADD       T,H,#TXD
$          LDMIA     T,{TX,TY,TZ}
$$;� ________First ROW____________
.;� cosHY*cosHZ
8;� cosHY*sinHZ
B;� sinHY
L	;� TX
V!          MUL       T,CHY,CHZ
`#          MOV       T,T,ASR #15
j!          MUL       S,CHY,SHZ
t#          MOV       S,S,LSR #15
~%          ADD       T,S,T,LSL #16
�          STR       T,A1D
�(          ADD       T,TX,SHY,LSL #16
�          STR       T,A2D
�%;� _________Second ROW___________
�%;� -sinHX*sinHY*cosHZ-cosHX*sinHZ
�%;� -sinHX*sinHY*sinHZ+cosHX*cosHZ
�;�  sinHX*cosHY
�
;�  TY
�!          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
!          MUL       H,CHX,CHZ
(          MUL       S,SHZ,S
2          SUB       S,H,S
<#          MOV       S,S,LSR #15
F%          ADD       T,S,T,LSL #16
P          STR       T,B1D
Z!          MUL       T,SHX,CHY
d#          MOV       T,T,ASR #15
n&          ADD       T,TY,T,LSL #16
x          STR       T,B2D
�$;� _______ Third ROW ___________
�%;� -cosHX*sinHY*cosHZ+sinHX*sinHZ
�%;� -cosHX*sinHY*sinHZ-sinHX*cosHZ
�;�  cosHX*cosHY
�
;�  TZ
�!          MUL       T,CHX,SHY
�#          MOV       T,T,ASR #15
�          MOV       S,T
�          MUL       T,CHZ,T
�!          MUL       H,SHX,SHZ
�          SUB       T,H,T
�#          MOV       T,T,ASR #15
�          MUL       S,SHZ,S
#          MLA       H,SHX,CHZ,S
          RSB       S,H,#0
#          MOV       S,S,LSR #15
"%          ADD       T,S,T,LSL #16
,          STR       T,C1D
6!          MUL       T,CHX,CHY
@#          MOV       T,T,ASR #15
J&          ADD       T,TZ,T,LSL #16
T          STR       T,C2D
^%          LDMFD     13!,{0-12,PC}
h]
r�
|	Q%=P%
��
�
�� �moveobjects
�sentinel=1<<31
�xmin=100*FIX
�xmax=100*FIX
�ymin=100*FIX
�ymax=100*FIX
�zmin=0*FIX
�zmax=256*FIX
�� PASS=0 � 2 � 2
�	P%=Q%
�
[OPT PASS
.tmp      EQUD 0
.moveobjects
"          STMFD     13!,{0-12}
&          STR       13,tmp
0          MOV       12,0
:.move_loop
D6          LDMIA     12,{0,1,2,3,4,5,6,7,8,9,10,11}
N#          CMP       0,#sentinel
X           BEQ       move_end
b
l0          ADD       0,0,3           ; x=x+dx
v"          ADD       13,0,#xmin
�B          CMP       13,#xmax+xmin   ; if x<xmin or x>xmax then
�:          RSBHI     3,3,#0          ; dx=-dx; x=x+2*dx
�$          ADDHI     0,0,3,LSL #1
�
�          ADD       1,1,4
�"          ADD       13,1,#ymin
�%          CMP       13,#ymax+ymin
�          RSBHI     4,4,#0
�$          ADDHI     1,1,4,LSL #1
�
�          ADD       2,2,5
�"          SUB       13,2,#zmin
�%          CMP       13,#zmax-zmin
          RSBHI     5,5,#0
$          ADDHI     2,2,5,LSL #1

 2          ADD       6,6,9          ; hx=hx+dhx
*          ADD       7,7,10
4          ADD       8,8,11
>.          STMIA     12,{0,1,2,3,4,5,6,7,8}
H*          ADD       12,12,#MOTION_SIZE
R
\!          BAL       move_loop
f
p.move_end LDR       13,tmp
z"          LDMFD     13!,{0-12}
�          MOV       PC,R14
�
�.moveobject
�"          STMFD     13!,{0-12}
�          STR       13,tmp
�          MOV       12,0
�
�6          LDMIA     12,{0,1,2,3,4,5,6,7,8,9,10,11}
�
�0          ADD       0,0,3           ; x=x+dx
�"          ADD       13,0,#xmin
�B          CMP       13,#xmax+xmin   ; if x<xmin or x>xmax then
�:          RSBHI     3,3,#0          ; dx=-dx; x=x+2*dx
$          ADDHI     0,0,3,LSL #1

          ADD       1,1,4
$"          ADD       13,1,#ymin
.%          CMP       13,#ymax+ymin
8          RSBHI     4,4,#0
B$          ADDHI     1,1,4,LSL #1
L
V          ADD       2,2,5
`"          SUB       13,2,#zmin
j%          CMP       13,#zmax-zmin
t          RSBHI     5,5,#0
~$          ADDHI     2,2,5,LSL #1
�
�2          ADD       6,6,9          ; hx=hx+dhx
�          ADD       7,7,10
�          ADD       8,8,11
�.          STMIA     12,{0,1,2,3,4,5,6,7,8}
�
�          LDR       13,tmp
�"          LDMFD     13!,{0-12}
�          MOV       PC,R14
�]
�
�
�

	Q%=P%
�

(
2
<� �transform
F3A1=0:A2=1:B1=2:B2=3:C1=4:C2=5:T=6:DIT=7:A=8:B=9
P!U=10:V=11:W=12:X=11:Y=13:Z=14
Z� PASS=0 � 2 � 2
d	P%=Q%
n
[OPT PASS
x.A1D EQUD 0:.A2D EQUD 0
�.B1D EQUD 0:.B2D EQUD 0
�.C1D EQUD 0:.C2D EQUD 0
�.DITD EQUD DITABLE
�.VD EQUD 0
�.SP EQUD 0
�.LK EQUD 0
�
�.screen1 EQUD 148:EQUD -1
�.screen EQUD 0
�	.set2
�:ADR R0,screen1:ADR R1,screen:SWI "OS_ReadVduVariables"
�MOV PC,R14
�
.COLD     EQUD 15
.CTEL     EQUD 0

".transform_draw
,%          STMFD     13!,{0-12,14}
6          MOV       A,0
@
J
T          STR       13,SP
^          ADR       T,A1D
h1          LDMIA     T,{A1,A2,B1,B2,C1,C2,DIT}
r$          LDMIA     (A)!,{X,Y,Z}
|           LDR       B,screen
�.trans_draw
�<          MOV       T,C1,ASR #16       ; � z transformed
�          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
�$          MOV       T,C2,LSL #16
�#          MOV       T,T,ASR #16
�%          ADDS      W,T,W,ASR #15
�!          CMP       W,#10*FIX
�          BMI       nodraw

:          MOV       T,A1,ASR #16     ; � x transformed
          MUL       U,X,T
&$          MOV       T,A1,LSL #16
0#          MOV       T,T,ASR #16
:          MLA       U,Y,T,U
D$          MOV       T,A2,ASR #16
N          MLA       U,Z,T,U
X$          MOV       T,A2,LSL #16
b#          MOV       T,T,ASR #16
l%          ADD       U,T,U,ASR #15
v
�8          MOV       T,B1,ASR #16   ; � y transformed
�          MUL       V,T,X
�$          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
�
�K          LDR       W,[DIT,W,LSL #2]     ; � perspective transformation
�          MUL       U,W,U
          MUL       V,W,V
#          MOV       U,U,ASR #12
#          MOV       V,V,ASR #12
            ADD       U,U,#160
*           RSB       V,V,#128
4
>F          CMP       U,#320               ; � clipping and plotting
H          CMPLO     V,#256
R$          ADDLO     T,V,V,LSL #2
\$          ADDLO     T,U,T,LSL #6
f          BHS       nodraw
p
z          LDRB     Z,COLD
�
�&          LDRB      W,[B,T,LSR #1]
�          TST       U,#1
�          BICEQ     W,W,#15
�"          BICNE     W,W,#15*16
�          �REQ     W,W,Z
�#          �RNE     W,W,Z,LSL #4
�&          STRB      W,[B,T,LSR #1]
�
�F.nodraw   LDMIA     (A)!,{X,Y,Z}        ;� U colour previous point
�           CMP       X,#1<<30
�"          BNE       trans_draw
�
          LDR       0,CTEL
          ADD       0,0,#1
          CMP       0,#4
$          �Q     0,#0
.          STR       0,CTEL
8          BNE       skip
B
L          LDR       0,COLD
V          ADD       0,0,#1
`          CMP       0,#16
j          �Q     0,#1
t          STR       0,COLD
~
�	.skip
�          LDR       13,SP
�%          LDMFD     13!,{0-12,PC}
�
�.transform_clear
�%          STMFD     13!,{0-12,14}
�          MOV       A,0
�          STR       13,SP
�          ADR       T,A1D
�1          LDMIA     T,{A1,A2,B1,B2,C1,C2,DIT}
�$          LDMIA     (A)!,{X,Y,Z}
�           LDR       B,screen
.trans_clear

<          MOV       T,C1,ASR #16       ; � z transformed
          MUL       W,T,X
$          MOV       T,C1,LSL #16
(#          MOV       T,T,ASR #16
2          MLA       W,Y,T,W
<$          MOV       T,C2,ASR #16
F          MLA       W,Z,T,W
P$          MOV       T,C2,LSL #16
Z#          MOV       T,T,ASR #16
d%          ADDS      W,T,W,ASR #15
n!          CMP       W,#10*FIX
x          BMI       noclear
�
�:          MOV       T,A1,ASR #16     ; � x transformed
�          MUL       U,X,T
�$          MOV       T,A1,LSL #16
�#          MOV       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
�
�8          MOV       T,B1,ASR #16   ; � y transformed
          MUL       V,T,X
$          MOV       T,B1,LSL #16
#          MOV       T,T,ASR #16
"          MLA       V,Y,T,V
,$          MOV       T,B2,ASR #16
6          MLA       V,Z,T,V
@$          MOV       T,B2,LSL #16
J#          MOV       T,T,ASR #16
T%          ADD       V,T,V,ASR #15
^
hK          LDR       W,[DIT,W,LSL #2]     ; � perspective transformation
r          MUL       U,W,U
|          MUL       V,W,V
�#          MOV       U,U,ASR #12
�#          MOV       V,V,ASR #12
�           ADD       U,U,#160
�           RSB       V,V,#128
�
�F          CMP       U,#320               ; � clipping and plotting
�          CMPLO     V,#256
�$          ADDLO     T,V,V,LSL #2
�$          ADDLO     T,U,T,LSL #6
�          BHS       noclear
�
�          LDR       Z,COLD
�          ADD       Z,Z,#1
          CMP       Z,#16
          �Q     Z,#1

&&          LDRB      W,[B,T,LSR #1]
0          TST       U,#1
:          BNE       odd
D          �       Y,W,#15
N          CMP       Y,Z
XJ          BNE       noclear             ;� only clear a pixel if it is
bB          BIC       W,W,#15             ;� not yet overwritten
l&          STRB      W,[B,T,LSR #1]
v
�F.noclear  LDMIA     (A)!,{X,Y,Z}        ;� U colour previous point
�           CMP       X,#1<<30
�#          BNE       trans_clear
�          LDR       13,SP
�%          LDMFD     13!,{0-12,PC}
�
�.odd
�           �       Y,W,#15*16
�"          CMP       Y,Z,LSL #4
�          BNE       noclear
�"          BIC       W,W,#15*16
�&          STRB      W,[B,T,LSR #1]
�F          LDMIA     (A)!,{X,Y,Z}        ;� U colour previous point
           CMP       X,#1<<30
#          BNE       trans_clear
          LDR       13,SP
 %          LDMFD     13!,{0-12,PC}
*
4
>]
H�
R	Q%=P%
\�
f
p
z
�
�
�
00000000  0d 00 0a 10 f4 20 3e 46  69 72 65 5f 62 61 6c 6c  |..... >Fire_ball|
00000010  0d 00 14 17 f4 20 28 63  29 20 4a 61 6e 20 56 6c  |..... (c) Jan Vl|
00000020  69 65 74 69 6e 63 6b 0d  00 15 1d f4 20 76 6c 69  |ietinck..... vli|
00000030  65 74 69 6e 40 69 6e 74  65 63 2e 72 75 67 2e 61  |etin@intec.rug.a|
00000040  63 2e 62 65 0d 00 3c 04  0d 00 46 2e f4 4f 4e 20  |c.be..<...F..ON |
00000050  45 52 52 4f 52 3a 3a 52  45 50 4f 52 54 3a 50 52  |ERROR::REPORT:PR|
00000060  49 4e 54 22 20 61 74 20  6c 69 6e 65 20 22 20 45  |INT" at line " E|
00000070  52 4c 3a 45 4e 44 0d 00  47 09 ee 20 85 3a e0 0d  |RL:END..G.. .:..|
00000080  00 50 0f eb 31 33 2b 31  32 38 3a eb 20 39 0d 00  |.P..13+128:. 9..|
00000090  5a 04 0d 00 64 04 0d 00  6e 10 4e 52 5f 4f 42 4a  |Z...d...n.NR_OBJ|
000000a0  45 43 54 53 3d 32 0d 00  b4 11 53 48 3d 34 3a 46  |ECTS=2....SH=4:F|
000000b0  49 58 3d 32 5e 53 48 0d  00 be 10 6c 65 6e 67 74  |IX=2^SH....lengt|
000000c0  65 3d 36 34 2b 31 36 0d  00 c8 16 de 20 50 55 4e  |e=64+16..... PUN|
000000d0  54 20 20 32 30 30 30 2a  34 2a 36 2b 34 0d 00 d2  |T  2000*4*6+4...|
000000e0  04 0d 00 dc 04 0d 00 e6  17 4d 4f 54 49 4f 4e 5f  |.........MOTION_|
000000f0  53 49 5a 45 3d 34 2a 33  2a 34 2b 38 0d 00 f0 04  |SIZE=4*3*4+8....|
00000100  0d 00 fa 17 de 20 50 52  4f 4a 45 43 54 20 20 31  |..... PROJECT  1|
00000110  30 30 30 2a 34 2a 32 0d  01 04 20 de 20 4d 4f 54  |000*4*2... . MOT|
00000120  49 4f 4e 20 20 20 4d 4f  54 49 4f 4e 5f 53 49 5a  |ION   MOTION_SIZ|
00000130  45 2a 31 30 30 2b 34 0d  01 0e 04 0d 01 18 13 de  |E*100+4.........|
00000140  20 50 6f 69 6e 74 5f 54  79 70 65 28 33 29 0d 01  | Point_Type(3)..|
00000150  22 13 de 20 50 6c 61 6e  65 5f 54 79 70 65 28 33  |".. Plane_Type(3|
00000160  29 0d 01 2c 04 0d 01 40  0e f2 62 75 69 6c 64 70  |)..,...@..buildp|
00000170  75 6e 74 0d 01 4a 10 f2  62 75 69 6c 64 6d 6f 74  |unt..J..buildmot|
00000180  69 6f 6e 0d 01 54 08 f2  61 73 73 0d 01 5e 07 db  |ion..T..ass..^..|
00000190  3a 87 0d 01 68 3a f4 20  6d 6f 76 65 20 64 72 61  |:...h:. move dra|
000001a0  77 69 6e 67 20 6f 62 6a  65 63 74 20 32 30 20 73  |wing object 20 s|
000001b0  74 65 70 73 20 61 68 65  61 64 20 6f 66 20 63 6c  |teps ahead of cl|
000001c0  65 61 6e 69 67 20 6f 62  6a 65 63 74 0d 01 72 2b  |eanig object..r+|
000001d0  e3 20 49 3d 31 20 b8 20  31 35 2a 34 2d 34 3a 41  |. I=1 . 15*4-4:A|
000001e0  25 3d 4d 4f 54 49 4f 4e  3a d6 20 6d 6f 76 65 6f  |%=MOTION:. moveo|
000001f0  62 6a 65 63 74 3a ed 0d  01 7c 04 0d 01 86 1a de  |bject:...|......|
00000200  20 43 31 28 31 36 29 2c  43 32 28 31 36 29 2c 43  | C1(16),C2(16),C|
00000210  33 28 31 36 29 0d 01 90  18 43 31 28 29 3d 30 3a  |3(16)....C1()=0:|
00000220  43 32 28 29 3d 30 3a 43  33 28 29 3d 30 0d 01 9a  |C2()=0:C3()=0...|
00000230  0d e3 20 49 3d 31 20 b8  20 35 0d 01 a4 13 43 31  |.. I=1 . 5....C1|
00000240  28 49 29 3d 28 49 2b 31  30 29 2a 31 36 0d 01 ae  |(I)=(I+10)*16...|
00000250  12 43 32 28 49 29 3d 28  49 2b 32 29 2a 31 36 0d  |.C2(I)=(I+2)*16.|
00000260  01 b8 05 ed 0d 01 c2 0d  e3 20 49 3d 31 20 b8 20  |......... I=1 . |
00000270  35 0d 01 cc 13 43 31 28  49 2b 35 29 3d 28 31 35  |5....C1(I+5)=(15|
00000280  29 2a 31 36 0d 01 d6 16  43 32 28 49 2b 35 29 3d  |)*16....C2(I+5)=|
00000290  28 32 2a 49 2b 35 29 2a  31 36 0d 01 e0 14 43 33  |(2*I+5)*16....C3|
000002a0  28 49 2b 35 29 3d 28 49  2b 32 29 2a 31 36 0d 01  |(I+5)=(I+2)*16..|
000002b0  ea 05 ed 0d 01 f4 0d e3  20 49 3d 31 20 b8 20 35  |........ I=1 . 5|
000002c0  0d 01 fe 14 43 31 28 49  2b 31 30 29 3d 28 31 35  |....C1(I+10)=(15|
000002d0  29 2a 31 36 0d 02 08 14  43 32 28 49 2b 31 30 29  |)*16....C2(I+10)|
000002e0  3d 28 31 35 29 2a 31 36  0d 02 12 15 43 33 28 49  |=(15)*16....C3(I|
000002f0  2b 31 30 29 3d 28 49 2b  37 29 2a 31 36 0d 02 1c  |+10)=(I+7)*16...|
00000300  05 ed 0d 02 26 04 0d 02  30 04 0d 02 3a 0b 4d 3d  |....&...0...:.M=|
00000310  30 3a 53 3d 30 0d 02 44  0e e3 20 43 3d 30 20 b8  |0:S=0..D.. C=0 .|
00000320  20 31 34 0d 02 4e 19 43  4f 4c 3d 28 31 2b 20 28  | 14..N.COL=(1+ (|
00000330  28 43 2b 4d 29 20 83 20  31 35 29 29 0d 02 58 21  |(C+M) . 15))..X!|
00000340  fb 20 43 2b 31 2c 43 31  28 43 4f 4c 29 2c 43 32  |. C+1,C1(COL),C2|
00000350  28 43 4f 4c 29 2c 43 33  28 43 4f 4c 29 0d 02 62  |(COL),C3(COL)..b|
00000360  05 ed 0d 02 6c 09 4d 2b  3d 31 34 0d 02 76 04 0d  |....l.M+=14..v..|
00000370  02 80 05 f5 0d 02 8a 04  0d 02 94 04 0d 02 9e 0a  |................|
00000380  d6 20 73 65 74 32 0d 02  a8 0d 41 25 3d 4d 4f 54  |. set2....A%=MOT|
00000390  49 4f 4e 0d 02 b2 11 d6  20 6d 6f 76 65 6f 62 6a  |ION..... moveobj|
000003a0  65 63 74 73 0d 02 bc 04  0d 02 c6 19 41 25 3d 4d  |ects........A%=M|
000003b0  4f 54 49 4f 4e 2b 4d 4f  54 49 4f 4e 5f 53 49 5a  |OTION+MOTION_SIZ|
000003c0  45 0d 02 d0 15 d6 20 63  61 6c 63 5f 72 6f 74 5f  |E..... calc_rot_|
000003d0  6d 61 74 72 69 78 0d 02  da 0c 41 25 3d 41 25 21  |matrix....A%=A%!|
000003e0  34 38 0d 02 e4 15 d6 20  74 72 61 6e 73 66 6f 72  |48..... transfor|
000003f0  6d 5f 63 6c 65 61 72 0d  02 ee 04 0d 02 f8 0b e7  |m_clear.........|
00000400  20 53 3d 34 20 8c 0d 03  02 07 53 3d 30 0d 03 0c  | S=4 .....S=0...|
00000410  0e e3 20 43 3d 30 20 b8  20 31 34 0d 03 16 19 43  |.. C=0 . 14....C|
00000420  4f 4c 3d 28 31 2b 20 28  28 43 2b 4d 29 20 83 20  |OL=(1+ ((C+M) . |
00000430  31 35 29 29 0d 03 20 21  fb 20 43 2b 31 2c 43 31  |15)).. !. C+1,C1|
00000440  28 43 4f 4c 29 2c 43 32  28 43 4f 4c 29 2c 43 33  |(COL),C2(COL),C3|
00000450  28 43 4f 4c 29 0d 03 2a  05 ed 0d 03 34 09 4d 2b  |(COL)..*....4.M+|
00000460  3d 31 34 0d 03 3e 05 cd  0d 03 48 08 53 2b 3d 31  |=14..>....H.S+=1|
00000470  0d 03 52 04 0d 03 5c 0d  41 25 3d 4d 4f 54 49 4f  |..R...\.A%=MOTIO|
00000480  4e 0d 03 66 15 d6 20 63  61 6c 63 5f 72 6f 74 5f  |N..f.. calc_rot_|
00000490  6d 61 74 72 69 78 0d 03  70 0c 41 25 3d 41 25 21  |matrix..p.A%=A%!|
000004a0  34 38 0d 03 7a 14 d6 20  74 72 61 6e 73 66 6f 72  |48..z.. transfor|
000004b0  6d 5f 64 72 61 77 0d 03  84 07 fd 20 30 0d 03 8e  |m_draw..... 0...|
000004c0  04 0d 03 98 04 0d 03 a2  0f f4 20 43 41 4c 4c 20  |.......... CALL |
000004d0  6d 61 69 6e 0d 03 ac 05  e0 0d 03 b6 04 0d 03 c0  |main............|
000004e0  04 0d 03 ca 04 0d 03 d4  0b dd 20 f2 6d 61 69 6e  |.......... .main|
000004f0  0d 03 de 04 0d 03 e8 14  e3 20 50 41 53 53 3d 30  |......... PASS=0|
00000500  20 b8 20 32 20 88 20 32  0d 03 f2 09 50 25 3d 51  | . 2 . 2....P%=Q|
00000510  25 0d 03 fc 0d 5b 4f 50  54 20 50 41 53 53 0d 04  |%....[OPT PASS..|
00000520  06 1c 2e 50 55 4e 54 44  20 20 20 20 45 51 55 44  |...PUNTD    EQUD|
00000530  20 20 20 20 20 20 50 55  4e 54 0d 04 10 1f 2e 50  |      PUNT.....P|
00000540  52 4f 4a 45 43 54 44 20  45 51 55 44 20 20 20 20  |ROJECTD EQUD    |
00000550  20 20 50 52 4f 4a 45 43  54 0d 04 1a 1e 2e 4d 4f  |  PROJECT.....MO|
00000560  54 49 4f 4e 44 20 20 45  51 55 44 20 20 20 20 20  |TIOND  EQUD     |
00000570  20 4d 4f 54 49 4f 4e 0d  04 24 04 0d 04 2e 09 2e  | MOTION..$......|
00000580  6d 61 69 6e 0d 04 38 20  20 20 20 20 20 20 20 20  |main..8         |
00000590  20 20 53 54 4d 46 44 20  20 20 20 20 31 33 21 2c  |  STMFD     13!,|
000005a0  7b 31 34 7d 0d 04 42 0d  2e 6d 61 69 6e 6c 6f 6f  |{14}..B..mainloo|
000005b0  70 0d 04 4c 3a 20 20 20  20 20 20 20 20 20 20 42  |p..L:          B|
000005c0  4c 20 20 20 20 20 20 20  20 73 65 74 32 20 20 20  |L        set2   |
000005d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3b 20  |              ; |
000005e0  73 65 74 20 64 69 73 70  6c 61 79 0d 04 60 04 0d  |set display..`..|
000005f0  04 6a 22 20 20 20 20 20  20 20 20 20 20 4c 44 52  |.j"          LDR|
00000600  20 20 20 20 20 20 20 52  30 2c 4d 4f 54 49 4f 4e  |       R0,MOTION|
00000610  44 0d 04 74 23 20 20 20  20 20 20 20 20 20 20 42  |D..t#          B|
00000620  4c 20 20 20 20 20 20 20  20 6d 6f 76 65 6f 62 6a  |L        moveobj|
00000630  65 63 74 73 0d 04 7e 27  20 20 20 20 20 20 20 20  |ects..~'        |
00000640  20 20 42 4c 20 20 20 20  20 20 20 20 63 61 6c 63  |  BL        calc|
00000650  5f 72 6f 74 5f 6d 61 74  72 69 78 0d 04 88 23 20  |_rot_matrix...# |
00000660  20 20 20 20 20 20 20 20  20 4c 44 52 20 20 20 20  |         LDR    |
00000670  20 20 20 52 30 2c 5b 52  30 2c 23 34 38 5d 0d 04  |   R0,[R0,#48]..|
00000680  92 26 20 20 20 20 20 20  20 20 20 20 42 4c 20 20  |.&          BL  |
00000690  20 20 20 20 20 20 74 72  61 6e 73 66 6f 72 6d 5f  |      transform_|
000006a0  64 72 61 77 0d 04 9c 04  0d 04 a6 22 20 20 20 20  |draw......."    |
000006b0  20 20 20 20 20 20 4c 44  52 20 20 20 20 20 20 20  |      LDR       |
000006c0  52 30 2c 4d 4f 54 49 4f  4e 44 0d 04 b0 2a 20 20  |R0,MOTIOND...*  |
000006d0  20 20 20 20 20 20 20 20  41 44 44 20 20 20 20 20  |        ADD     |
000006e0  20 20 52 30 2c 52 30 2c  23 4d 4f 54 49 4f 4e 5f  |  R0,R0,#MOTION_|
000006f0  53 49 5a 45 0d 04 ba 27  20 20 20 20 20 20 20 20  |SIZE...'        |
00000700  20 20 42 4c 20 20 20 20  20 20 20 20 63 61 6c 63  |  BL        calc|
00000710  5f 72 6f 74 5f 6d 61 74  72 69 78 0d 04 c4 23 20  |_rot_matrix...# |
00000720  20 20 20 20 20 20 20 20  20 4c 44 52 20 20 20 20  |         LDR    |
00000730  20 20 20 52 30 2c 5b 52  30 2c 23 34 38 5d 0d 04  |   R0,[R0,#48]..|
00000740  ce 27 20 20 20 20 20 20  20 20 20 20 42 4c 20 20  |.'          BL  |
00000750  20 20 20 20 20 20 74 72  61 6e 73 66 6f 72 6d 5f  |      transform_|
00000760  63 6c 65 61 72 0d 04 d8  04 0d 04 e2 2c 20 20 20  |clear.......,   |
00000770  20 20 20 20 20 20 20 53  57 49 20 20 20 20 20 20  |       SWI      |
00000780  20 22 4f 53 5f 52 65 61  64 45 73 63 61 70 65 53  | "OS_ReadEscapeS|
00000790  74 61 74 65 22 0d 04 ec  20 20 20 20 20 20 20 20  |tate"...        |
000007a0  20 20 20 42 43 43 20 20  20 20 20 20 20 6d 61 69  |   BCC       mai|
000007b0  6e 6c 6f 6f 70 0d 04 f6  20 20 20 20 20 20 20 20  |nloop...        |
000007c0  20 20 20 4c 44 4d 46 44  20 20 20 20 20 31 33 21  |   LDMFD     13!|
000007d0  2c 7b 50 43 7d 0d 05 00  04 0d 05 0a 04 0d 05 14  |,{PC}...........|
000007e0  05 5d 0d 05 1e 05 ed 0d  05 28 09 51 25 3d 50 25  |.].......(.Q%=P%|
000007f0  0d 05 32 05 e1 0d 05 3c  04 0d 05 46 04 0d 05 50  |..2....<...F...P|
00000800  0a dd 20 f2 61 73 73 0d  05 5a 0f de 20 51 25 20  |.. .ass..Z.. Q% |
00000810  31 33 30 30 30 30 0d 05  64 13 de 20 49 4e 56 45  |130000..d.. INVE|
00000820  52 53 20 34 2a 31 30 32  34 0d 05 6e 17 de 20 44  |RS 4*1024..n.. D|
00000830  49 54 41 42 4c 45 20 34  30 30 30 2a 31 36 2a 34  |ITABLE 4000*16*4|
00000840  0d 05 78 14 de 20 43 53  54 41 42 4c 45 20 34 30  |..x.. CSTABLE 40|
00000850  39 36 2a 38 0d 05 82 13  de 20 43 54 41 42 4c 45  |96*8..... CTABLE|
00000860  20 31 30 30 2a 31 36 0d  05 8c 10 f2 63 61 6c 63  | 100*16.....calc|
00000870  5f 69 6e 76 65 72 73 0d  05 96 11 f2 63 61 6c 63  |_invers.....calc|
00000880  5f 63 73 74 61 62 6c 65  0d 05 a0 12 f2 63 61 6c  |_cstable.....cal|
00000890  63 5f 64 69 76 74 61 62  6c 65 0d 05 aa 0e f2 74  |c_divtable.....t|
000008a0  72 61 6e 73 66 6f 72 6d  0d 05 b4 10 f2 6d 6f 76  |ransform.....mov|
000008b0  65 6f 62 6a 65 63 74 73  0d 05 be 14 f2 63 61 6c  |eobjects.....cal|
000008c0  63 5f 72 6f 74 5f 6d 61  74 72 69 78 0d 05 c8 09  |c_rot_matrix....|
000008d0  f2 6d 61 69 6e 0d 05 d2  05 e1 0d 05 dc 04 0d 05  |.main...........|
000008e0  e6 04 0d 05 f0 3f dd 20  f2 62 75 69 6c 64 70 75  |.....?. .buildpu|
000008f0  6e 74 20 20 20 3a f4 20  63 61 6c 63 20 63 6f 6f  |nt   :. calc coo|
00000900  72 64 69 6e 61 74 65 73  20 6f 66 20 61 20 73 70  |rdinates of a sp|
00000910  68 65 72 65 2c 20 31 36  78 33 30 20 76 65 72 74  |here, 16x30 vert|
00000920  2e 0d 05 fa 0b 50 25 3d  50 55 4e 54 0d 06 04 10  |.....P%=PUNT....|
00000930  4c 3d 6c 65 6e 67 74 65  2a 46 49 58 0d 06 0e 04  |L=lengte*FIX....|
00000940  0d 06 18 04 0d 06 22 14  50 6f 69 6e 74 5f 54 79  |......".Point_Ty|
00000950  70 65 28 31 29 3d 50 25  0d 06 2c 09 f2 4f 42 4a  |pe(1)=P%..,..OBJ|
00000960  31 0d 06 36 14 50 6f 69  6e 74 5f 54 79 70 65 28  |1..6.Point_Type(|
00000970  32 29 3d 50 25 0d 06 40  0d f4 50 52 4f 43 4f 42  |2)=P%..@..PROCOB|
00000980  4a 32 0d 06 4a 14 50 6f  69 6e 74 5f 54 79 70 65  |J2..J.Point_Type|
00000990  28 33 29 3d 50 25 0d 06  54 05 e1 0d 06 5e 04 0d  |(3)=P%..T....^..|
000009a0  06 68 04 0d 06 72 0b dd  20 f2 4f 42 4a 31 0d 06  |.h...r.. .OBJ1..|
000009b0  7c 0f 4d 25 3d 31 36 3a  4e 25 3d 33 30 0d 06 86  ||.M%=16:N%=30...|
000009c0  10 f4 4d 25 3d 31 30 3a  4e 25 3d 31 36 0d 06 90  |..M%=10:N%=16...|
000009d0  15 44 4b 3d af 2f 4d 25  3a 4b 3d 2d af 2f 32 2b  |.DK=./M%:K=-./2+|
000009e0  44 4b 0d 06 9a 0a 5b 4f  50 54 20 30 0d 06 a4 33  |DK....[OPT 0...3|
000009f0  44 43 44 20 30 3a 44 43  44 20 30 3a 44 43 44 20  |DCD 0:DCD 0:DCD |
00000a00  2d 4c 20 20 20 20 20 20  20 3a 20 f4 20 73 69 6e  |-L       : . sin|
00000a10  67 6c 65 20 6c 6f 77 65  72 20 70 6f 69 6e 74 0d  |gle lower point.|
00000a20  06 ae 05 5d 0d 06 b8 11  e3 20 4a 25 3d 31 20 b8  |...]..... J%=1 .|
00000a30  20 4d 25 2d 31 0d 06 c2  13 53 4e 3d b5 4b 2a 4c  | M%-1....SN=.K*L|
00000a40  3a 43 53 3d 9b 4b 2a 4c  0d 06 cc 11 44 48 3d 32  |:CS=.K*L....DH=2|
00000a50  2a af 2f 4e 25 3a 48 3d  30 0d 06 d6 0f e3 20 49  |*./N%:H=0..... I|
00000a60  25 3d 31 20 b8 20 4e 25  0d 06 e0 0a 5b 4f 50 54  |%=1 . N%....[OPT|
00000a70  20 30 0d 06 ea 0d 44 43  44 20 9b 48 2a 43 53 0d  | 0....DCD .H*CS.|
00000a80  06 f4 0d 44 43 44 20 b5  48 2a 43 53 0d 06 fe 0a  |...DCD .H*CS....|
00000a90  44 43 44 20 53 4e 0d 07  08 05 5d 0d 07 12 09 48  |DCD SN....]....H|
00000aa0  2b 3d 44 48 0d 07 1c 05  ed 0d 07 26 09 4b 2b 3d  |+=DH.......&.K+=|
00000ab0  44 4b 0d 07 30 05 ed 0d  07 3a 0a 5b 4f 50 54 20  |DK..0....:.[OPT |
00000ac0  30 0d 07 44 33 44 43 44  20 30 3a 44 43 44 20 30  |0..D3DCD 0:DCD 0|
00000ad0  3a 44 43 44 20 20 4c 20  20 20 20 20 20 20 3a 20  |:DCD  L       : |
00000ae0  f4 20 73 69 6e 67 6c 65  20 75 70 70 65 72 20 70  |. single upper p|
00000af0  6f 69 6e 74 0d 07 4e 0f  44 43 44 20 28 31 3c 3c  |oint..N.DCD (1<<|
00000b00  33 30 29 0d 07 58 05 5d  0d 07 62 04 0d 07 6c 05  |30)..X.]..b...l.|
00000b10  e1 0d 07 76 04 0d 07 80  0b dd 20 f2 4f 42 4a 32  |...v...... .OBJ2|
00000b20  0d 07 8a 0b 4e 25 3d 31  30 30 30 0d 07 94 11 44  |....N%=1000....D|
00000b30  48 3d 32 2a af 2f 4e 25  3a 48 3d 30 0d 07 9e 0f  |H=2*./N%:H=0....|
00000b40  e3 20 49 25 3d 31 20 b8  20 4e 25 0d 07 a8 0a 5b  |. I%=1 . N%....[|
00000b50  4f 50 54 20 30 0d 07 b2  0e 44 43 44 20 9b 48 2a  |OPT 0....DCD .H*|
00000b60  4c 2f 32 0d 07 bc 0e 44  43 44 20 b5 48 2a 4c 2f  |L/2....DCD .H*L/|
00000b70  32 0d 07 c6 09 44 43 44  20 30 0d 07 d0 05 5d 0d  |2....DCD 0....].|
00000b80  07 da 09 48 2b 3d 44 48  0d 07 e4 05 ed 0d 07 ee  |...H+=DH........|
00000b90  0a 5b 4f 50 54 20 30 0d  07 f8 0f 44 43 44 20 28  |.[OPT 0....DCD (|
00000ba0  31 3c 3c 33 30 29 0d 08  02 05 5d 0d 08 0c 05 e1  |1<<30)....].....|
00000bb0  0d 08 16 04 0d 08 20 04  0d 08 2a 04 0d 08 34 12  |...... ...*...4.|
00000bc0  dd 20 f2 62 75 69 6c 64  6d 6f 74 69 6f 6e 0d 08  |. .buildmotion..|
00000bd0  3e 0a ea 20 50 4e 54 52  0d 08 48 08 56 52 3d 34  |>.. PNTR..H.VR=4|
00000be0  0d 08 52 08 56 54 3d 34  0d 08 5c 2d 54 58 44 3d  |..R.VT=4..\-TXD=|
00000bf0  30 3a 54 59 44 3d 34 3a  54 5a 44 3d 38 3a 44 54  |0:TYD=4:TZD=8:DT|
00000c00  58 44 3d 31 32 3a 44 54  59 44 3d 31 36 3a 44 54  |XD=12:DTYD=16:DT|
00000c10  5a 44 3d 32 30 0d 08 66  30 48 58 44 3d 32 34 3a  |ZD=20..f0HXD=24:|
00000c20  48 59 44 3d 32 38 3a 48  5a 44 3d 33 32 3a 44 48  |HYD=28:HZD=32:DH|
00000c30  58 44 3d 33 36 3a 44 48  59 44 3d 34 30 3a 44 48  |XD=36:DHYD=40:DH|
00000c40  5a 44 3d 34 34 0d 08 70  04 0d 08 7a 0a 54 59 50  |ZD=44..p...z.TYP|
00000c50  45 3d 31 0d 08 84 07 49  3d 31 0d 08 8e 04 0d 08  |E=1....I=1......|
00000c60  98 21 50 4e 54 52 3d 4d  4f 54 49 4f 4e 2b 28 49  |.!PNTR=MOTION+(I|
00000c70  2d 31 29 2a 4d 4f 54 49  4f 4e 5f 53 49 5a 45 0d  |-1)*MOTION_SIZE.|
00000c80  08 a2 38 50 4e 54 52 21  54 58 44 3d 28 2d 31 29  |..8PNTR!TXD=(-1)|
00000c90  5e b3 28 32 29 2a 35 30  2a 46 49 58 20 20 20 20  |^.(2)*50*FIX    |
00000ca0  20 20 20 20 20 20 20 20  20 20 20 3a 20 f4 20 54  |           : . T|
00000cb0  58 2c 54 59 2c 54 5a 0d  08 ac 1d 50 4e 54 52 21  |X,TY,TZ....PNTR!|
00000cc0  54 59 44 3d 28 2d 31 29  5e b3 28 32 29 2a 35 30  |TYD=(-1)^.(2)*50|
00000cd0  2a 46 49 58 0d 08 b6 1d  50 4e 54 52 21 54 5a 44  |*FIX....PNTR!TZD|
00000ce0  3d 28 31 2b b3 28 31 29  29 2a 31 30 30 2a 46 49  |=(1+.(1))*100*FI|
00000cf0  58 0d 08 c0 3a 50 4e 54  52 21 44 54 58 44 3d 28  |X...:PNTR!DTXD=(|
00000d00  2d 31 29 5e b3 28 32 29  2a 28 b3 28 56 54 2a 32  |-1)^.(2)*(.(VT*2|
00000d10  29 2b 56 54 29 2a 46 49  58 2f 31 30 3a 20 f4 20  |)+VT)*FIX/10: . |
00000d20  44 54 58 2c 44 54 59 2c  44 54 5a 0d 08 ca 2b 50  |DTX,DTY,DTZ...+P|
00000d30  4e 54 52 21 44 54 59 44  3d 28 2d 31 29 5e b3 28  |NTR!DTYD=(-1)^.(|
00000d40  32 29 2a 28 b3 28 56 54  2a 32 29 2b 56 54 29 2a  |2)*(.(VT*2)+VT)*|
00000d50  46 49 58 2f 31 30 0d 08  d4 2b 50 4e 54 52 21 44  |FIX/10...+PNTR!D|
00000d60  54 5a 44 3d 28 2d 31 29  5e b3 28 32 29 2a 28 b3  |TZD=(-1)^.(2)*(.|
00000d70  28 56 54 2a 32 29 2b 56  54 29 2a 46 49 58 2f 31  |(VT*2)+VT)*FIX/1|
00000d80  30 0d 08 de 36 50 4e 54  52 21 48 58 44 3d 30 20  |0...6PNTR!HXD=0 |
00000d90  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000da0  20 20 20 20 20 20 20 20  20 20 20 3a 20 f4 20 48  |           : . H|
00000db0  58 2c 48 59 2c 48 5a 0d  08 e8 0e 50 4e 54 52 21  |X,HY,HZ....PNTR!|
00000dc0  48 59 44 3d 30 0d 08 f2  0e 50 4e 54 52 21 48 5a  |HYD=0....PNTR!HZ|
00000dd0  44 3d 30 0d 08 fc 33 50  4e 54 52 21 44 48 58 44  |D=0...3PNTR!DHXD|
00000de0  3d 28 2d 31 29 5e b3 28  32 29 2a 28 b3 28 56 52  |=(-1)^.(2)*(.(VR|
00000df0  2a 32 29 2b 56 52 29 3a  20 f4 20 44 48 58 2c 44  |*2)+VR): . DHX,D|
00000e00  48 59 2c 44 59 5a 0d 09  06 24 50 4e 54 52 21 44  |HY,DYZ...$PNTR!D|
00000e10  48 59 44 3d 28 2d 31 29  5e b3 28 32 29 2a 28 b3  |HYD=(-1)^.(2)*(.|
00000e20  28 56 52 2a 32 29 2b 56  52 29 0d 09 10 24 50 4e  |(VR*2)+VR)...$PN|
00000e30  54 52 21 44 48 5a 44 3d  28 2d 31 29 5e b3 28 32  |TR!DHZD=(-1)^.(2|
00000e40  29 2a 28 b3 28 56 52 2a  32 29 2b 56 52 29 0d 09  |)*(.(VR*2)+VR)..|
00000e50  1a 1c 50 4e 54 52 21 34  38 3d 50 6f 69 6e 74 5f  |..PNTR!48=Point_|
00000e60  54 79 70 65 28 54 59 50  45 29 0d 09 24 04 0d 09  |Type(TYPE)..$...|
00000e70  2e 41 f4 20 69 6e 69 74  69 61 6c 20 70 6f 73 69  |.A. initial posi|
00000e80  74 69 6f 6e 20 6f 66 20  64 72 61 77 69 6e 67 20  |tion of drawing |
00000e90  61 6e 64 20 63 6c 65 61  6e 69 6e 67 20 6f 62 6a  |and cleaning obj|
00000ea0  65 63 74 20 69 73 20 74  68 65 20 73 61 6d 65 0d  |ect is the same.|
00000eb0  09 38 0e 50 4e 54 52 4f  3d 50 4e 54 52 0d 09 42  |.8.PNTRO=PNTR..B|
00000ec0  08 49 2b 3d 31 0d 09 4c  21 50 4e 54 52 3d 4d 4f  |.I+=1..L!PNTR=MO|
00000ed0  54 49 4f 4e 2b 28 49 2d  31 29 2a 4d 4f 54 49 4f  |TION+(I-1)*MOTIO|
00000ee0  4e 5f 53 49 5a 45 0d 09  56 12 e3 20 4a 3d 30 20  |N_SIZE..V.. J=0 |
00000ef0  b8 20 35 32 20 88 20 34  0d 09 60 12 50 4e 54 52  |. 52 . 4..`.PNTR|
00000f00  21 4a 3d 50 4e 54 52 4f  21 4a 0d 09 6a 05 ed 0d  |!J=PNTRO!J..j...|
00000f10  09 74 1c 50 4e 54 52 21  34 38 3d 50 6f 69 6e 74  |.t.PNTR!48=Point|
00000f20  5f 54 79 70 65 28 54 59  50 45 29 0d 09 7e 11 50  |_Type(TYPE)..~.P|
00000f30  4e 54 52 21 35 36 3d 31  3c 3c 33 31 0d 09 88 05  |NTR!56=1<<31....|
00000f40  e1 0d 09 92 04 0d 09 9c  04 0d 09 a6 18 f4 20 4e  |.............. N|
00000f50  72 20 6f 66 20 74 79 70  65 20 6f 62 6a 65 63 74  |r of type object|
00000f60  73 0d 09 b0 07 dc 20 31  0d 09 ba 04 0d 09 c4 04  |s..... 1........|
00000f70  0d 09 ce 12 dd 20 f2 63  61 6c 63 5f 69 6e 76 65  |..... .calc_inve|
00000f80  72 73 0d 09 d8 0b 4b 3d  32 3c 3c 32 30 0d 09 e2  |rs....K=2<<20...|
00000f90  26 e3 20 49 3d 31 20 b8  20 31 30 32 33 3a 49 4e  |&. I=1 . 1023:IN|
00000fa0  56 45 52 53 21 28 34 2a  49 29 3d 4b 2f 49 2b 2e  |VERS!(4*I)=K/I+.|
00000fb0  35 3a ed 0d 09 ec 05 e1  0d 09 f6 04 0d 0a 00 04  |5:..............|
00000fc0  0d 0a 0a 13 dd 20 f2 63  61 6c 63 5f 63 73 74 61  |..... .calc_csta|
00000fd0  62 6c 65 0d 0a 14 15 46  3d 32 2a af 2f 34 30 39  |ble....F=2*./409|
00000fe0  36 3a 56 3d 32 5e 31 35  0d 0a 1e 15 54 32 3d 43  |6:V=2^15....T2=C|
00000ff0  53 54 41 42 4c 45 2b 38  2a 31 30 32 34 0d 0a 28  |STABLE+8*1024..(|
00001000  15 54 33 3d 43 53 54 41  42 4c 45 2b 38 2a 32 30  |.T3=CSTABLE+8*20|
00001010  34 38 0d 0a 32 15 54 34  3d 43 53 54 41 42 4c 45  |48..2.T4=CSTABLE|
00001020  2b 38 2a 33 30 37 32 0d  0a 3c 10 e3 20 48 3d 30  |+8*3072..<.. H=0|
00001030  20 b8 20 31 30 32 33 0d  0a 46 09 4b 3d 46 2a 48  | . 1023..F.K=F*H|
00001040  0d 0a 50 17 43 53 3d 9b  28 4b 29 2a 56 3a 53 4e  |..P.CS=.(K)*V:SN|
00001050  3d b5 28 4b 29 2a 56 0d  0a 5a 14 43 53 54 41 42  |=.(K)*V..Z.CSTAB|
00001060  4c 45 21 28 38 2a 48 29  3d 43 53 0d 0a 64 16 43  |LE!(8*H)=CS..d.C|
00001070  53 54 41 42 4c 45 21 28  38 2a 48 2b 34 29 3d 53  |STABLE!(8*H+4)=S|
00001080  4e 0d 0a 6e 10 54 32 21  28 38 2a 48 29 3d 2d 53  |N..n.T2!(8*H)=-S|
00001090  4e 0d 0a 78 11 54 32 21  28 38 2a 48 2b 34 29 3d  |N..x.T2!(8*H+4)=|
000010a0  43 53 0d 0a 82 10 54 33  21 28 38 2a 48 29 3d 2d  |CS....T3!(8*H)=-|
000010b0  43 53 0d 0a 8c 12 54 33  21 28 38 2a 48 2b 34 29  |CS....T3!(8*H+4)|
000010c0  3d 2d 53 4e 0d 0a 96 0f  54 34 21 28 38 2a 48 29  |=-SN....T4!(8*H)|
000010d0  3d 53 4e 0d 0a a0 12 54  34 21 28 38 2a 48 2b 34  |=SN....T4!(8*H+4|
000010e0  29 3d 2d 43 53 0d 0a aa  05 ed 0d 0a b4 05 e1 0d  |)=-CS...........|
000010f0  0a be 04 0d 0a c8 14 dd  20 f2 63 61 6c 63 5f 64  |........ .calc_d|
00001100  69 76 74 61 62 6c 65 0d  0a d2 1d 54 3d 30 3a 4e  |ivtable....T=0:N|
00001110  3d 31 3a 51 3d 32 3a 49  3d 33 3a 4a 3d 34 3a 44  |=1:Q=2:I=3:J=4:D|
00001120  49 54 3d 35 0d 0a dc 14  e3 20 50 41 53 53 3d 30  |IT=5..... PASS=0|
00001130  20 b8 20 32 20 88 20 32  0d 0a e6 09 50 25 3d 51  | . 2 . 2....P%=Q|
00001140  25 0d 0a f0 0d 5b 4f 50  54 20 50 41 53 53 0d 0a  |%....[OPT PASS..|
00001150  fa 16 2e 44 4e 52 44 20  45 51 55 44 20 34 30 30  |...DNRD EQUD 400|
00001160  30 2a 31 36 0d 0b 04 16  2e 44 49 54 48 20 45 51  |0*16.....DITH EQ|
00001170  55 44 20 44 49 54 41 42  4c 45 0d 0b 0e 12 2e 63  |UD DITABLE.....c|
00001180  61 6c 63 5f 64 69 76 74  61 62 6c 65 0d 0b 18 25  |alc_divtable...%|
00001190  20 20 20 20 20 20 20 20  20 20 53 54 4d 46 44 20  |          STMFD |
000011a0  20 20 20 20 31 33 21 2c  7b 30 2d 31 32 2c 31 34  |    13!,{0-12,14|
000011b0  7d 0d 0b 22 20 20 20 20  20 20 20 20 20 20 20 4c  |}.."           L|
000011c0  44 52 20 20 20 20 20 20  20 44 49 54 2c 44 49 54  |DR       DIT,DIT|
000011d0  48 0d 0b 2c 1e 20 20 20  20 20 20 20 20 20 20 4c  |H..,.          L|
000011e0  44 52 20 20 20 20 20 20  20 49 2c 44 4e 52 44 0d  |DR       I,DNRD.|
000011f0  0b 36 0c 2e 44 56 4c 4f  4f 50 32 0d 0b 40 22 20  |.6..DVLOOP2..@" |
00001200  20 20 20 20 20 20 20 20  20 4d 4f 56 20 20 20 20  |         MOV    |
00001210  20 20 20 54 2c 23 32 30  30 3c 3c 31 32 0d 0b 4a  |   T,#200<<12..J|
00001220  1b 20 20 20 20 20 20 20  20 20 20 4d 4f 56 20 20  |.          MOV  |
00001230  20 20 20 20 20 4e 2c 49  0d 0b 54 1c 20 20 20 20  |     N,I..T.    |
00001240  20 20 20 20 20 20 4d 4f  56 20 20 20 20 20 20 20  |      MOV       |
00001250  4a 2c 23 30 0d 0b 5e 1c  20 20 20 20 20 20 20 20  |J,#0..^.        |
00001260  20 20 4d 4f 56 20 20 20  20 20 20 20 51 2c 23 30  |  MOV       Q,#0|
00001270  0d 0b 68 0c 2e 44 56 4c  4f 4f 50 33 0d 0b 72 1b  |..h..DVLOOP3..r.|
00001280  20 20 20 20 20 20 20 20  20 20 43 4d 50 20 20 20  |          CMP   |
00001290  20 20 20 20 4e 2c 54 0d  0b 7c 22 20 20 20 20 20  |    N,T..|"     |
000012a0  20 20 20 20 20 4d 4f 56  4c 4f 20 20 20 20 20 4e  |     MOVLO     N|
000012b0  2c 4e 2c 4c 53 4c 20 23  31 0d 0b 86 1e 20 20 20  |,N,LSL #1....   |
000012c0  20 20 20 20 20 20 20 41  44 44 4c 4f 20 20 20 20  |       ADDLO    |
000012d0  20 4a 2c 4a 2c 23 31 0d  0b 90 1f 20 20 20 20 20  | J,J,#1....     |
000012e0  20 20 20 20 20 42 4c 4f  20 20 20 20 20 20 20 44  |     BLO       D|
000012f0  56 4c 4f 4f 50 33 0d 0b  9a 21 20 20 20 20 20 20  |VLOOP3...!      |
00001300  20 20 20 20 4d 4f 56 20  20 20 20 20 20 20 4e 2c  |    MOV       N,|
00001310  4e 2c 4c 53 52 20 4a 0d  0b a4 0c 2e 44 56 4c 4f  |N,LSR J.....DVLO|
00001320  4f 50 31 0d 0b ae 21 20  20 20 20 20 20 20 20 20  |OP1...!         |
00001330  20 43 4d 50 20 20 20 20  20 20 20 54 2c 4e 2c 4c  | CMP       T,N,L|
00001340  53 4c 20 4a 0d 0b b8 23  20 20 20 20 20 20 20 20  |SL J...#        |
00001350  20 20 53 55 42 48 53 20  20 20 20 20 54 2c 54 2c  |  SUBHS     T,T,|
00001360  4e 2c 4c 53 4c 20 4a 0d  0b c2 1d 20 20 20 20 20  |N,LSL J....     |
00001370  20 20 20 20 20 41 44 43  20 20 20 20 20 20 20 51  |     ADC       Q|
00001380  2c 51 2c 51 0d 0b cc 1e  20 20 20 20 20 20 20 20  |,Q,Q....        |
00001390  20 20 53 55 42 53 20 20  20 20 20 20 4a 2c 4a 2c  |  SUBS      J,J,|
000013a0  23 31 0d 0b d6 1f 20 20  20 20 20 20 20 20 20 20  |#1....          |
000013b0  42 50 4c 20 20 20 20 20  20 20 44 56 4c 4f 4f 50  |BPL       DVLOOP|
000013c0  31 0d 0b e0 28 20 20 20  20 20 20 20 20 20 20 53  |1...(          S|
000013d0  54 52 20 20 20 20 20 20  20 51 2c 5b 44 49 54 2c  |TR       Q,[DIT,|
000013e0  49 2c 4c 53 4c 20 23 32  5d 0d 0b ea 1e 20 20 20  |I,LSL #2]....   |
000013f0  20 20 20 20 20 20 20 53  55 42 53 20 20 20 20 20  |       SUBS     |
00001400  20 49 2c 49 2c 23 31 0d  0b f4 1f 20 20 20 20 20  | I,I,#1....     |
00001410  20 20 20 20 20 42 4e 45  20 20 20 20 20 20 20 44  |     BNE       D|
00001420  56 4c 4f 4f 50 32 0d 0b  fe 25 20 20 20 20 20 20  |VLOOP2...%      |
00001430  20 20 20 20 4c 44 4d 46  44 20 20 20 20 20 31 33  |    LDMFD     13|
00001440  21 2c 7b 30 2d 31 32 2c  50 43 7d 0d 0c 08 05 5d  |!,{0-12,PC}....]|
00001450  0d 0c 12 05 ed 0d 0c 1c  09 51 25 3d 50 25 0d 0c  |.........Q%=P%..|
00001460  26 13 d6 20 63 61 6c 63  5f 64 69 76 74 61 62 6c  |&.. calc_divtabl|
00001470  65 0d 0c 30 05 e1 0d 0c  3a 04 0d 0c 44 16 dd 20  |e..0....:...D.. |
00001480  f2 63 61 6c 63 5f 72 6f  74 5f 6d 61 74 72 69 78  |.calc_rot_matrix|
00001490  0d 0c 4e 0f 43 48 58 3d  30 3a 53 48 58 3d 31 0d  |..N.CHX=0:SHX=1.|
000014a0  0c 58 0f 43 48 59 3d 32  3a 53 48 59 3d 33 0d 0c  |.X.CHY=2:SHY=3..|
000014b0  62 0f 43 48 5a 3d 34 3a  53 48 5a 3d 35 0d 0c 6c  |b.CHZ=4:SHZ=5..l|
000014c0  0f 54 3d 36 3a 53 3d 37  3a 48 3d 38 0d 0c 76 15  |.T=6:S=7:H=8..v.|
000014d0  44 48 58 3d 33 3a 44 48  59 3d 34 3a 44 48 5a 3d  |DHX=3:DHY=4:DHZ=|
000014e0  35 0d 0c 80 14 48 58 3d  39 3a 48 59 3d 31 30 3a  |5....HX=9:HY=10:|
000014f0  48 5a 3d 31 31 0d 0c 8a  14 54 58 3d 39 3a 54 59  |HZ=11....TX=9:TY|
00001500  3d 31 30 3a 54 5a 3d 31  31 0d 0c 94 09 43 53 3d  |=10:TZ=11....CS=|
00001510  31 32 0d 0c 9e 0f 53 43  52 3d 30 3a 43 4f 4c 3d  |12....SCR=0:COL=|
00001520  31 0d 0c a8 14 e3 20 50  41 53 53 3d 30 20 b8 20  |1..... PASS=0 . |
00001530  32 20 88 20 32 0d 0c b2  09 50 25 3d 51 25 0d 0c  |2 . 2....P%=Q%..|
00001540  bc 0d 5b 4f 50 54 20 50  41 53 53 0d 0c c6 36 3b  |..[OPT PASS...6;|
00001550  20 f4 20 63 61 6c 63 20  33 78 34 20 74 72 61 6e  | . calc 3x4 tran|
00001560  73 66 6f 72 6d 61 74 69  6f 6e 20 6d 61 74 72 69  |sformation matri|
00001570  78 20 6f 6e 20 74 68 65  20 62 61 73 69 73 20 6f  |x on the basis o|
00001580  66 0d 0c d0 31 3b 20 f4  20 68 78 2c 68 79 2c 68  |f...1; . hx,hy,h|
00001590  7a 20 61 6e 64 20 74 78  2c 74 79 2c 74 7a 20 6f  |z and tx,ty,tz o|
000015a0  66 20 74 68 65 20 6d 6f  74 69 6f 6e 20 61 72 72  |f the motion arr|
000015b0  61 79 0d 0c da 15 2e 43  53 44 20 45 51 55 44 20  |ay.....CSD EQUD |
000015c0  43 53 54 41 42 4c 45 0d  0c e4 14 2e 63 61 6c 63  |CSTABLE.....calc|
000015d0  5f 72 6f 74 5f 6d 61 74  72 69 78 0d 0c ee 25 20  |_rot_matrix...% |
000015e0  20 20 20 20 20 20 20 20  20 53 54 4d 46 44 20 20  |         STMFD  |
000015f0  20 20 20 31 33 21 2c 7b  30 2d 31 32 2c 31 34 7d  |   13!,{0-12,14}|
00001600  0d 0c f8 1b 20 20 20 20  20 20 20 20 20 20 4d 4f  |....          MO|
00001610  56 20 20 20 20 20 20 20  48 2c 30 0d 0d 02 1c 3b  |V       H,0....;|
00001620  f4 20 4c 6f 61 64 20 61  6e 67 6c 65 73 20 20 48  |. Load angles  H|
00001630  58 2c 48 59 2c 48 5a 0d  0d 0c 20 20 20 20 20 20  |X,HY,HZ...      |
00001640  20 20 20 20 20 41 44 44  20 20 20 20 20 20 20 54  |     ADD       T|
00001650  2c 48 2c 23 48 58 44 0d  0d 16 24 20 20 20 20 20  |,H,#HXD...$     |
00001660  20 20 20 20 20 4c 44 4d  49 41 20 20 20 20 20 54  |     LDMIA     T|
00001670  2c 7b 48 58 2c 48 59 2c  48 5a 7d 0d 0d 20 44 3b  |,{HX,HY,HZ}.. D;|
00001680  f4 20 44 6f 20 61 20 6d  6f 64 75 6c 6f 20 34 30  |. Do a modulo 40|
00001690  39 36 20 6f 70 65 72 61  74 69 6f 6e 20 6f 6e 20  |96 operation on |
000016a0  74 68 65 20 61 6e 67 6c  65 73 20 28 3d 3e 20 70  |the angles (=> p|
000016b0  65 72 69 6f 64 69 63 20  6c 6f 6f 6b 75 70 29 0d  |eriodic lookup).|
000016c0  0d 2a 1f 20 20 20 20 20  20 20 20 20 20 4d 4f 56  |.*.          MOV|
000016d0  20 20 20 20 20 20 20 53  2c 23 34 30 39 36 0d 0d  |       S,#4096..|
000016e0  34 1e 20 20 20 20 20 20  20 20 20 20 53 55 42 20  |4.          SUB |
000016f0  20 20 20 20 20 20 53 2c  53 2c 23 31 0d 0d 3e 39  |      S,S,#1..>9|
00001700  3b f4 20 4c 6f 6f 6b 75  70 20 28 63 6f 73 48 58  |;. Lookup (cosHX|
00001710  2c 73 69 6e 48 58 29 20  28 63 6f 73 48 59 2c 20  |,sinHX) (cosHY, |
00001720  73 69 6e 48 59 29 20 28  63 6f 73 48 5a 2c 20 73  |sinHY) (cosHZ, s|
00001730  69 6e 48 5a 29 0d 0d 48  1e 20 20 20 20 20 20 20  |inHZ)..H.       |
00001740  20 20 20 4c 44 52 20 20  20 20 20 20 20 43 53 2c  |   LDR       CS,|
00001750  43 53 44 0d 0d 52 1d 20  20 20 20 20 20 20 20 20  |CSD..R.         |
00001760  20 43 4d 50 20 20 20 20  20 20 20 48 58 2c 23 30  | CMP       HX,#0|
00001770  0d 0d 5c 20 20 20 20 20  20 20 20 20 20 20 52 53  |..\           RS|
00001780  42 4d 49 20 20 20 20 20  48 58 2c 48 58 2c 23 30  |BMI     HX,HX,#0|
00001790  0d 0d 66 1d 20 20 20 20  20 20 20 20 20 20 80 20  |..f.          . |
000017a0  20 20 20 20 20 20 48 58  2c 48 58 2c 53 0d 0d 70  |      HX,HX,S..p|
000017b0  26 20 20 20 20 20 20 20  20 20 20 41 44 44 20 20  |&          ADD  |
000017c0  20 20 20 20 20 54 2c 43  53 2c 48 58 2c 4c 53 4c  |     T,CS,HX,LSL|
000017d0  20 23 33 0d 0d 7a 23 20  20 20 20 20 20 20 20 20  | #3..z#         |
000017e0  20 4c 44 4d 49 41 20 20  20 20 20 54 2c 7b 43 48  | LDMIA     T,{CH|
000017f0  58 2c 53 48 58 7d 0d 0d  84 22 20 20 20 20 20 20  |X,SHX}..."      |
00001800  20 20 20 20 52 53 42 4d  49 20 20 20 20 20 53 48  |    RSBMI     SH|
00001810  58 2c 53 48 58 2c 23 30  0d 0d 8e 1d 20 20 20 20  |X,SHX,#0....    |
00001820  20 20 20 20 20 20 43 4d  50 20 20 20 20 20 20 20  |      CMP       |
00001830  48 59 2c 23 30 0d 0d 98  20 20 20 20 20 20 20 20  |HY,#0...        |
00001840  20 20 20 52 53 42 4d 49  20 20 20 20 20 48 59 2c  |   RSBMI     HY,|
00001850  48 59 2c 23 30 0d 0d a2  1d 20 20 20 20 20 20 20  |HY,#0....       |
00001860  20 20 20 80 20 20 20 20  20 20 20 48 59 2c 48 59  |   .       HY,HY|
00001870  2c 53 0d 0d ac 26 20 20  20 20 20 20 20 20 20 20  |,S...&          |
00001880  41 44 44 20 20 20 20 20  20 20 54 2c 43 53 2c 48  |ADD       T,CS,H|
00001890  59 2c 4c 53 4c 20 23 33  0d 0d b6 23 20 20 20 20  |Y,LSL #3...#    |
000018a0  20 20 20 20 20 20 4c 44  4d 49 41 20 20 20 20 20  |      LDMIA     |
000018b0  54 2c 7b 43 48 59 2c 53  48 59 7d 0d 0d c0 22 20  |T,{CHY,SHY}..." |
000018c0  20 20 20 20 20 20 20 20  20 52 53 42 4d 49 20 20  |         RSBMI  |
000018d0  20 20 20 53 48 59 2c 53  48 59 2c 23 30 0d 0d ca  |   SHY,SHY,#0...|
000018e0  1d 20 20 20 20 20 20 20  20 20 20 43 4d 50 20 20  |.          CMP  |
000018f0  20 20 20 20 20 48 5a 2c  23 30 0d 0d d4 20 20 20  |     HZ,#0...   |
00001900  20 20 20 20 20 20 20 20  52 53 42 4d 49 20 20 20  |        RSBMI   |
00001910  20 20 48 5a 2c 48 5a 2c  23 30 0d 0d de 1d 20 20  |  HZ,HZ,#0....  |
00001920  20 20 20 20 20 20 20 20  80 20 20 20 20 20 20 20  |        .       |
00001930  48 5a 2c 48 5a 2c 53 0d  0d e8 26 20 20 20 20 20  |HZ,HZ,S...&     |
00001940  20 20 20 20 20 41 44 44  20 20 20 20 20 20 20 54  |     ADD       T|
00001950  2c 43 53 2c 48 5a 2c 4c  53 4c 20 23 33 0d 0d f2  |,CS,HZ,LSL #3...|
00001960  23 20 20 20 20 20 20 20  20 20 20 4c 44 4d 49 41  |#          LDMIA|
00001970  20 20 20 20 20 54 2c 7b  43 48 5a 2c 53 48 5a 7d  |     T,{CHZ,SHZ}|
00001980  0d 0d fc 22 20 20 20 20  20 20 20 20 20 20 52 53  |..."          RS|
00001990  42 4d 49 20 20 20 20 20  53 48 5a 2c 53 48 5a 2c  |BMI     SHZ,SHZ,|
000019a0  23 30 0d 0e 06 28 3b f4  20 4c 6f 61 64 20 64 69  |#0...(;. Load di|
000019b0  73 70 6c 61 63 65 6d 65  6e 74 20 76 61 6c 75 65  |splacement value|
000019c0  73 20 54 58 2c 54 59 2c  54 5a 0d 0e 10 20 20 20  |s TX,TY,TZ...   |
000019d0  20 20 20 20 20 20 20 20  41 44 44 20 20 20 20 20  |        ADD     |
000019e0  20 20 54 2c 48 2c 23 54  58 44 0d 0e 1a 24 20 20  |  T,H,#TXD...$  |
000019f0  20 20 20 20 20 20 20 20  4c 44 4d 49 41 20 20 20  |        LDMIA   |
00001a00  20 20 54 2c 7b 54 58 2c  54 59 2c 54 5a 7d 0d 0e  |  T,{TX,TY,TZ}..|
00001a10  24 24 3b f4 20 5f 5f 5f  5f 5f 5f 5f 5f 46 69 72  |$$;. ________Fir|
00001a20  73 74 20 52 4f 57 5f 5f  5f 5f 5f 5f 5f 5f 5f 5f  |st ROW__________|
00001a30  5f 5f 0d 0e 2e 12 3b f4  20 63 6f 73 48 59 2a 63  |__....;. cosHY*c|
00001a40  6f 73 48 5a 0d 0e 38 12  3b f4 20 63 6f 73 48 59  |osHZ..8.;. cosHY|
00001a50  2a 73 69 6e 48 5a 0d 0e  42 0c 3b f4 20 73 69 6e  |*sinHZ..B.;. sin|
00001a60  48 59 0d 0e 4c 09 3b f4  20 54 58 0d 0e 56 21 20  |HY..L.;. TX..V! |
00001a70  20 20 20 20 20 20 20 20  20 4d 55 4c 20 20 20 20  |         MUL    |
00001a80  20 20 20 54 2c 43 48 59  2c 43 48 5a 0d 0e 60 23  |   T,CHY,CHZ..`#|
00001a90  20 20 20 20 20 20 20 20  20 20 4d 4f 56 20 20 20  |          MOV   |
00001aa0  20 20 20 20 54 2c 54 2c  41 53 52 20 23 31 35 0d  |    T,T,ASR #15.|
00001ab0  0e 6a 21 20 20 20 20 20  20 20 20 20 20 4d 55 4c  |.j!          MUL|
00001ac0  20 20 20 20 20 20 20 53  2c 43 48 59 2c 53 48 5a  |       S,CHY,SHZ|
00001ad0  0d 0e 74 23 20 20 20 20  20 20 20 20 20 20 4d 4f  |..t#          MO|
00001ae0  56 20 20 20 20 20 20 20  53 2c 53 2c 4c 53 52 20  |V       S,S,LSR |
00001af0  23 31 35 0d 0e 7e 25 20  20 20 20 20 20 20 20 20  |#15..~%         |
00001b00  20 41 44 44 20 20 20 20  20 20 20 54 2c 53 2c 54  | ADD       T,S,T|
00001b10  2c 4c 53 4c 20 23 31 36  0d 0e 88 1d 20 20 20 20  |,LSL #16....    |
00001b20  20 20 20 20 20 20 53 54  52 20 20 20 20 20 20 20  |      STR       |
00001b30  54 2c 41 31 44 0d 0e 92  28 20 20 20 20 20 20 20  |T,A1D...(       |
00001b40  20 20 20 41 44 44 20 20  20 20 20 20 20 54 2c 54  |   ADD       T,T|
00001b50  58 2c 53 48 59 2c 4c 53  4c 20 23 31 36 0d 0e 9c  |X,SHY,LSL #16...|
00001b60  1d 20 20 20 20 20 20 20  20 20 20 53 54 52 20 20  |.          STR  |
00001b70  20 20 20 20 20 54 2c 41  32 44 0d 0e a6 25 3b f4  |     T,A2D...%;.|
00001b80  20 5f 5f 5f 5f 5f 5f 5f  5f 5f 53 65 63 6f 6e 64  | _________Second|
00001b90  20 52 4f 57 5f 5f 5f 5f  5f 5f 5f 5f 5f 5f 5f 0d  | ROW___________.|
00001ba0  0e b0 25 3b f4 20 2d 73  69 6e 48 58 2a 73 69 6e  |..%;. -sinHX*sin|
00001bb0  48 59 2a 63 6f 73 48 5a  2d 63 6f 73 48 58 2a 73  |HY*cosHZ-cosHX*s|
00001bc0  69 6e 48 5a 0d 0e ba 25  3b f4 20 2d 73 69 6e 48  |inHZ...%;. -sinH|
00001bd0  58 2a 73 69 6e 48 59 2a  73 69 6e 48 5a 2b 63 6f  |X*sinHY*sinHZ+co|
00001be0  73 48 58 2a 63 6f 73 48  5a 0d 0e c4 13 3b f4 20  |sHX*cosHZ....;. |
00001bf0  20 73 69 6e 48 58 2a 63  6f 73 48 59 0d 0e ce 0a  | sinHX*cosHY....|
00001c00  3b f4 20 20 54 59 0d 0e  d8 21 20 20 20 20 20 20  |;.  TY...!      |
00001c10  20 20 20 20 4d 55 4c 20  20 20 20 20 20 20 54 2c  |    MUL       T,|
00001c20  53 48 58 2c 53 48 59 0d  0e e2 23 20 20 20 20 20  |SHX,SHY...#     |
00001c30  20 20 20 20 20 4d 4f 56  20 20 20 20 20 20 20 54  |     MOV       T|
00001c40  2c 54 2c 41 53 52 20 23  31 35 0d 0e ec 1b 20 20  |,T,ASR #15....  |
00001c50  20 20 20 20 20 20 20 20  4d 4f 56 20 20 20 20 20  |        MOV     |
00001c60  20 20 53 2c 54 0d 0e f6  21 20 20 20 20 20 20 20  |  S,T...!       |
00001c70  20 20 20 4d 55 4c 20 20  20 20 20 20 20 48 2c 43  |   MUL       H,C|
00001c80  48 58 2c 53 48 5a 0d 0f  00 21 20 20 20 20 20 20  |HX,SHZ...!      |
00001c90  20 20 20 20 4d 4c 41 20  20 20 20 20 20 20 54 2c  |    MLA       T,|
00001ca0  43 48 5a 2c 54 2c 48 0d  0f 0a 1e 20 20 20 20 20  |CHZ,T,H....     |
00001cb0  20 20 20 20 20 52 53 42  20 20 20 20 20 20 20 54  |     RSB       T|
00001cc0  2c 54 2c 23 30 0d 0f 14  23 20 20 20 20 20 20 20  |,T,#0...#       |
00001cd0  20 20 20 4d 4f 56 20 20  20 20 20 20 20 54 2c 54  |   MOV       T,T|
00001ce0  2c 41 53 52 20 23 31 35  0d 0f 1e 21 20 20 20 20  |,ASR #15...!    |
00001cf0  20 20 20 20 20 20 4d 55  4c 20 20 20 20 20 20 20  |      MUL       |
00001d00  48 2c 43 48 58 2c 43 48  5a 0d 0f 28 1f 20 20 20  |H,CHX,CHZ..(.   |
00001d10  20 20 20 20 20 20 20 4d  55 4c 20 20 20 20 20 20  |       MUL      |
00001d20  20 53 2c 53 48 5a 2c 53  0d 0f 32 1d 20 20 20 20  | S,SHZ,S..2.    |
00001d30  20 20 20 20 20 20 53 55  42 20 20 20 20 20 20 20  |      SUB       |
00001d40  53 2c 48 2c 53 0d 0f 3c  23 20 20 20 20 20 20 20  |S,H,S..<#       |
00001d50  20 20 20 4d 4f 56 20 20  20 20 20 20 20 53 2c 53  |   MOV       S,S|
00001d60  2c 4c 53 52 20 23 31 35  0d 0f 46 25 20 20 20 20  |,LSR #15..F%    |
00001d70  20 20 20 20 20 20 41 44  44 20 20 20 20 20 20 20  |      ADD       |
00001d80  54 2c 53 2c 54 2c 4c 53  4c 20 23 31 36 0d 0f 50  |T,S,T,LSL #16..P|
00001d90  1d 20 20 20 20 20 20 20  20 20 20 53 54 52 20 20  |.          STR  |
00001da0  20 20 20 20 20 54 2c 42  31 44 0d 0f 5a 21 20 20  |     T,B1D..Z!  |
00001db0  20 20 20 20 20 20 20 20  4d 55 4c 20 20 20 20 20  |        MUL     |
00001dc0  20 20 54 2c 53 48 58 2c  43 48 59 0d 0f 64 23 20  |  T,SHX,CHY..d# |
00001dd0  20 20 20 20 20 20 20 20  20 4d 4f 56 20 20 20 20  |         MOV    |
00001de0  20 20 20 54 2c 54 2c 41  53 52 20 23 31 35 0d 0f  |   T,T,ASR #15..|
00001df0  6e 26 20 20 20 20 20 20  20 20 20 20 41 44 44 20  |n&          ADD |
00001e00  20 20 20 20 20 20 54 2c  54 59 2c 54 2c 4c 53 4c  |      T,TY,T,LSL|
00001e10  20 23 31 36 0d 0f 78 1d  20 20 20 20 20 20 20 20  | #16..x.        |
00001e20  20 20 53 54 52 20 20 20  20 20 20 20 54 2c 42 32  |  STR       T,B2|
00001e30  44 0d 0f 82 24 3b f4 20  5f 5f 5f 5f 5f 5f 5f 20  |D...$;. _______ |
00001e40  54 68 69 72 64 20 52 4f  57 20 5f 5f 5f 5f 5f 5f  |Third ROW ______|
00001e50  5f 5f 5f 5f 5f 0d 0f 8c  25 3b f4 20 2d 63 6f 73  |_____...%;. -cos|
00001e60  48 58 2a 73 69 6e 48 59  2a 63 6f 73 48 5a 2b 73  |HX*sinHY*cosHZ+s|
00001e70  69 6e 48 58 2a 73 69 6e  48 5a 0d 0f 96 25 3b f4  |inHX*sinHZ...%;.|
00001e80  20 2d 63 6f 73 48 58 2a  73 69 6e 48 59 2a 73 69  | -cosHX*sinHY*si|
00001e90  6e 48 5a 2d 73 69 6e 48  58 2a 63 6f 73 48 5a 0d  |nHZ-sinHX*cosHZ.|
00001ea0  0f a0 13 3b f4 20 20 63  6f 73 48 58 2a 63 6f 73  |...;.  cosHX*cos|
00001eb0  48 59 0d 0f aa 0a 3b f4  20 20 54 5a 0d 0f b4 21  |HY....;.  TZ...!|
00001ec0  20 20 20 20 20 20 20 20  20 20 4d 55 4c 20 20 20  |          MUL   |
00001ed0  20 20 20 20 54 2c 43 48  58 2c 53 48 59 0d 0f be  |    T,CHX,SHY...|
00001ee0  23 20 20 20 20 20 20 20  20 20 20 4d 4f 56 20 20  |#          MOV  |
00001ef0  20 20 20 20 20 54 2c 54  2c 41 53 52 20 23 31 35  |     T,T,ASR #15|
00001f00  0d 0f c8 1b 20 20 20 20  20 20 20 20 20 20 4d 4f  |....          MO|
00001f10  56 20 20 20 20 20 20 20  53 2c 54 0d 0f d2 1f 20  |V       S,T.... |
00001f20  20 20 20 20 20 20 20 20  20 4d 55 4c 20 20 20 20  |         MUL    |
00001f30  20 20 20 54 2c 43 48 5a  2c 54 0d 0f dc 21 20 20  |   T,CHZ,T...!  |
00001f40  20 20 20 20 20 20 20 20  4d 55 4c 20 20 20 20 20  |        MUL     |
00001f50  20 20 48 2c 53 48 58 2c  53 48 5a 0d 0f e6 1d 20  |  H,SHX,SHZ.... |
00001f60  20 20 20 20 20 20 20 20  20 53 55 42 20 20 20 20  |         SUB    |
00001f70  20 20 20 54 2c 48 2c 54  0d 0f f0 23 20 20 20 20  |   T,H,T...#    |
00001f80  20 20 20 20 20 20 4d 4f  56 20 20 20 20 20 20 20  |      MOV       |
00001f90  54 2c 54 2c 41 53 52 20  23 31 35 0d 0f fa 1f 20  |T,T,ASR #15.... |
00001fa0  20 20 20 20 20 20 20 20  20 4d 55 4c 20 20 20 20  |         MUL    |
00001fb0  20 20 20 53 2c 53 48 5a  2c 53 0d 10 04 23 20 20  |   S,SHZ,S...#  |
00001fc0  20 20 20 20 20 20 20 20  4d 4c 41 20 20 20 20 20  |        MLA     |
00001fd0  20 20 48 2c 53 48 58 2c  43 48 5a 2c 53 0d 10 0e  |  H,SHX,CHZ,S...|
00001fe0  1e 20 20 20 20 20 20 20  20 20 20 52 53 42 20 20  |.          RSB  |
00001ff0  20 20 20 20 20 53 2c 48  2c 23 30 0d 10 18 23 20  |     S,H,#0...# |
00002000  20 20 20 20 20 20 20 20  20 4d 4f 56 20 20 20 20  |         MOV    |
00002010  20 20 20 53 2c 53 2c 4c  53 52 20 23 31 35 0d 10  |   S,S,LSR #15..|
00002020  22 25 20 20 20 20 20 20  20 20 20 20 41 44 44 20  |"%          ADD |
00002030  20 20 20 20 20 20 54 2c  53 2c 54 2c 4c 53 4c 20  |      T,S,T,LSL |
00002040  23 31 36 0d 10 2c 1d 20  20 20 20 20 20 20 20 20  |#16..,.         |
00002050  20 53 54 52 20 20 20 20  20 20 20 54 2c 43 31 44  | STR       T,C1D|
00002060  0d 10 36 21 20 20 20 20  20 20 20 20 20 20 4d 55  |..6!          MU|
00002070  4c 20 20 20 20 20 20 20  54 2c 43 48 58 2c 43 48  |L       T,CHX,CH|
00002080  59 0d 10 40 23 20 20 20  20 20 20 20 20 20 20 4d  |Y..@#          M|
00002090  4f 56 20 20 20 20 20 20  20 54 2c 54 2c 41 53 52  |OV       T,T,ASR|
000020a0  20 23 31 35 0d 10 4a 26  20 20 20 20 20 20 20 20  | #15..J&        |
000020b0  20 20 41 44 44 20 20 20  20 20 20 20 54 2c 54 5a  |  ADD       T,TZ|
000020c0  2c 54 2c 4c 53 4c 20 23  31 36 0d 10 54 1d 20 20  |,T,LSL #16..T.  |
000020d0  20 20 20 20 20 20 20 20  53 54 52 20 20 20 20 20  |        STR     |
000020e0  20 20 54 2c 43 32 44 0d  10 5e 25 20 20 20 20 20  |  T,C2D..^%     |
000020f0  20 20 20 20 20 4c 44 4d  46 44 20 20 20 20 20 31  |     LDMFD     1|
00002100  33 21 2c 7b 30 2d 31 32  2c 50 43 7d 0d 10 68 05  |3!,{0-12,PC}..h.|
00002110  5d 0d 10 72 05 ed 0d 10  7c 09 51 25 3d 50 25 0d  |]..r....|.Q%=P%.|
00002120  10 86 05 e1 0d 10 90 04  0d 10 9a 12 dd 20 f2 6d  |............. .m|
00002130  6f 76 65 6f 62 6a 65 63  74 73 0d 10 a4 12 73 65  |oveobjects....se|
00002140  6e 74 69 6e 65 6c 3d 31  3c 3c 33 31 0d 10 ae 10  |ntinel=1<<31....|
00002150  78 6d 69 6e 3d 31 30 30  2a 46 49 58 0d 10 b8 10  |xmin=100*FIX....|
00002160  78 6d 61 78 3d 31 30 30  2a 46 49 58 0d 10 c2 10  |xmax=100*FIX....|
00002170  79 6d 69 6e 3d 31 30 30  2a 46 49 58 0d 10 cc 10  |ymin=100*FIX....|
00002180  79 6d 61 78 3d 31 30 30  2a 46 49 58 0d 10 d6 0e  |ymax=100*FIX....|
00002190  7a 6d 69 6e 3d 30 2a 46  49 58 0d 10 e0 10 7a 6d  |zmin=0*FIX....zm|
000021a0  61 78 3d 32 35 36 2a 46  49 58 0d 10 ea 14 e3 20  |ax=256*FIX..... |
000021b0  50 41 53 53 3d 30 20 b8  20 32 20 88 20 32 0d 10  |PASS=0 . 2 . 2..|
000021c0  f4 09 50 25 3d 51 25 0d  10 fe 0d 5b 4f 50 54 20  |..P%=Q%....[OPT |
000021d0  50 41 53 53 0d 11 08 14  2e 74 6d 70 20 20 20 20  |PASS.....tmp    |
000021e0  20 20 45 51 55 44 20 30  0d 11 12 10 2e 6d 6f 76  |  EQUD 0.....mov|
000021f0  65 6f 62 6a 65 63 74 73  0d 11 1c 22 20 20 20 20  |eobjects..."    |
00002200  20 20 20 20 20 20 53 54  4d 46 44 20 20 20 20 20  |      STMFD     |
00002210  31 33 21 2c 7b 30 2d 31  32 7d 0d 11 26 1e 20 20  |13!,{0-12}..&.  |
00002220  20 20 20 20 20 20 20 20  53 54 52 20 20 20 20 20  |        STR     |
00002230  20 20 31 33 2c 74 6d 70  0d 11 30 1c 20 20 20 20  |  13,tmp..0.    |
00002240  20 20 20 20 20 20 4d 4f  56 20 20 20 20 20 20 20  |      MOV       |
00002250  31 32 2c 30 0d 11 3a 0e  2e 6d 6f 76 65 5f 6c 6f  |12,0..:..move_lo|
00002260  6f 70 0d 11 44 36 20 20  20 20 20 20 20 20 20 20  |op..D6          |
00002270  4c 44 4d 49 41 20 20 20  20 20 31 32 2c 7b 30 2c  |LDMIA     12,{0,|
00002280  31 2c 32 2c 33 2c 34 2c  35 2c 36 2c 37 2c 38 2c  |1,2,3,4,5,6,7,8,|
00002290  39 2c 31 30 2c 31 31 7d  0d 11 4e 23 20 20 20 20  |9,10,11}..N#    |
000022a0  20 20 20 20 20 20 43 4d  50 20 20 20 20 20 20 20  |      CMP       |
000022b0  30 2c 23 73 65 6e 74 69  6e 65 6c 0d 11 58 20 20  |0,#sentinel..X  |
000022c0  20 20 20 20 20 20 20 20  20 42 45 51 20 20 20 20  |         BEQ    |
000022d0  20 20 20 6d 6f 76 65 5f  65 6e 64 0d 11 62 04 0d  |   move_end..b..|
000022e0  11 6c 30 20 20 20 20 20  20 20 20 20 20 41 44 44  |.l0          ADD|
000022f0  20 20 20 20 20 20 20 30  2c 30 2c 33 20 20 20 20  |       0,0,3    |
00002300  20 20 20 20 20 20 20 3b  20 78 3d 78 2b 64 78 0d  |       ; x=x+dx.|
00002310  11 76 22 20 20 20 20 20  20 20 20 20 20 41 44 44  |.v"          ADD|
00002320  20 20 20 20 20 20 20 31  33 2c 30 2c 23 78 6d 69  |       13,0,#xmi|
00002330  6e 0d 11 80 42 20 20 20  20 20 20 20 20 20 20 43  |n...B          C|
00002340  4d 50 20 20 20 20 20 20  20 31 33 2c 23 78 6d 61  |MP       13,#xma|
00002350  78 2b 78 6d 69 6e 20 20  20 3b 20 69 66 20 78 3c  |x+xmin   ; if x<|
00002360  78 6d 69 6e 20 6f 72 20  78 3e 78 6d 61 78 20 74  |xmin or x>xmax t|
00002370  68 65 6e 0d 11 8a 3a 20  20 20 20 20 20 20 20 20  |hen...:         |
00002380  20 52 53 42 48 49 20 20  20 20 20 33 2c 33 2c 23  | RSBHI     3,3,#|
00002390  30 20 20 20 20 20 20 20  20 20 20 3b 20 64 78 3d  |0          ; dx=|
000023a0  2d 64 78 3b 20 78 3d 78  2b 32 2a 64 78 0d 11 94  |-dx; x=x+2*dx...|
000023b0  24 20 20 20 20 20 20 20  20 20 20 41 44 44 48 49  |$          ADDHI|
000023c0  20 20 20 20 20 30 2c 30  2c 33 2c 4c 53 4c 20 23  |     0,0,3,LSL #|
000023d0  31 0d 11 9e 04 0d 11 a8  1d 20 20 20 20 20 20 20  |1........       |
000023e0  20 20 20 41 44 44 20 20  20 20 20 20 20 31 2c 31  |   ADD       1,1|
000023f0  2c 34 0d 11 b2 22 20 20  20 20 20 20 20 20 20 20  |,4..."          |
00002400  41 44 44 20 20 20 20 20  20 20 31 33 2c 31 2c 23  |ADD       13,1,#|
00002410  79 6d 69 6e 0d 11 bc 25  20 20 20 20 20 20 20 20  |ymin...%        |
00002420  20 20 43 4d 50 20 20 20  20 20 20 20 31 33 2c 23  |  CMP       13,#|
00002430  79 6d 61 78 2b 79 6d 69  6e 0d 11 c6 1e 20 20 20  |ymax+ymin....   |
00002440  20 20 20 20 20 20 20 52  53 42 48 49 20 20 20 20  |       RSBHI    |
00002450  20 34 2c 34 2c 23 30 0d  11 d0 24 20 20 20 20 20  | 4,4,#0...$     |
00002460  20 20 20 20 20 41 44 44  48 49 20 20 20 20 20 31  |     ADDHI     1|
00002470  2c 31 2c 34 2c 4c 53 4c  20 23 31 0d 11 da 04 0d  |,1,4,LSL #1.....|
00002480  11 e4 1d 20 20 20 20 20  20 20 20 20 20 41 44 44  |...          ADD|
00002490  20 20 20 20 20 20 20 32  2c 32 2c 35 0d 11 ee 22  |       2,2,5..."|
000024a0  20 20 20 20 20 20 20 20  20 20 53 55 42 20 20 20  |          SUB   |
000024b0  20 20 20 20 31 33 2c 32  2c 23 7a 6d 69 6e 0d 11  |    13,2,#zmin..|
000024c0  f8 25 20 20 20 20 20 20  20 20 20 20 43 4d 50 20  |.%          CMP |
000024d0  20 20 20 20 20 20 31 33  2c 23 7a 6d 61 78 2d 7a  |      13,#zmax-z|
000024e0  6d 69 6e 0d 12 02 1e 20  20 20 20 20 20 20 20 20  |min....         |
000024f0  20 52 53 42 48 49 20 20  20 20 20 35 2c 35 2c 23  | RSBHI     5,5,#|
00002500  30 0d 12 0c 24 20 20 20  20 20 20 20 20 20 20 41  |0...$          A|
00002510  44 44 48 49 20 20 20 20  20 32 2c 32 2c 35 2c 4c  |DDHI     2,2,5,L|
00002520  53 4c 20 23 31 0d 12 16  04 0d 12 20 32 20 20 20  |SL #1...... 2   |
00002530  20 20 20 20 20 20 20 41  44 44 20 20 20 20 20 20  |       ADD      |
00002540  20 36 2c 36 2c 39 20 20  20 20 20 20 20 20 20 20  | 6,6,9          |
00002550  3b 20 68 78 3d 68 78 2b  64 68 78 0d 12 2a 1e 20  |; hx=hx+dhx..*. |
00002560  20 20 20 20 20 20 20 20  20 41 44 44 20 20 20 20  |         ADD    |
00002570  20 20 20 37 2c 37 2c 31  30 0d 12 34 1e 20 20 20  |   7,7,10..4.   |
00002580  20 20 20 20 20 20 20 41  44 44 20 20 20 20 20 20  |       ADD      |
00002590  20 38 2c 38 2c 31 31 0d  12 3e 2e 20 20 20 20 20  | 8,8,11..>.     |
000025a0  20 20 20 20 20 53 54 4d  49 41 20 20 20 20 20 31  |     STMIA     1|
000025b0  32 2c 7b 30 2c 31 2c 32  2c 33 2c 34 2c 35 2c 36  |2,{0,1,2,3,4,5,6|
000025c0  2c 37 2c 38 7d 0d 12 48  2a 20 20 20 20 20 20 20  |,7,8}..H*       |
000025d0  20 20 20 41 44 44 20 20  20 20 20 20 20 31 32 2c  |   ADD       12,|
000025e0  31 32 2c 23 4d 4f 54 49  4f 4e 5f 53 49 5a 45 0d  |12,#MOTION_SIZE.|
000025f0  12 52 04 0d 12 5c 21 20  20 20 20 20 20 20 20 20  |.R...\!         |
00002600  20 42 41 4c 20 20 20 20  20 20 20 6d 6f 76 65 5f  | BAL       move_|
00002610  6c 6f 6f 70 0d 12 66 04  0d 12 70 1e 2e 6d 6f 76  |loop..f...p..mov|
00002620  65 5f 65 6e 64 20 4c 44  52 20 20 20 20 20 20 20  |e_end LDR       |
00002630  31 33 2c 74 6d 70 0d 12  7a 22 20 20 20 20 20 20  |13,tmp..z"      |
00002640  20 20 20 20 4c 44 4d 46  44 20 20 20 20 20 31 33  |    LDMFD     13|
00002650  21 2c 7b 30 2d 31 32 7d  0d 12 84 1e 20 20 20 20  |!,{0-12}....    |
00002660  20 20 20 20 20 20 4d 4f  56 20 20 20 20 20 20 20  |      MOV       |
00002670  50 43 2c 52 31 34 0d 12  8e 04 0d 12 98 0f 2e 6d  |PC,R14.........m|
00002680  6f 76 65 6f 62 6a 65 63  74 0d 12 a2 22 20 20 20  |oveobject..."   |
00002690  20 20 20 20 20 20 20 53  54 4d 46 44 20 20 20 20  |       STMFD    |
000026a0  20 31 33 21 2c 7b 30 2d  31 32 7d 0d 12 ac 1e 20  | 13!,{0-12}.... |
000026b0  20 20 20 20 20 20 20 20  20 53 54 52 20 20 20 20  |         STR    |
000026c0  20 20 20 31 33 2c 74 6d  70 0d 12 b6 1c 20 20 20  |   13,tmp....   |
000026d0  20 20 20 20 20 20 20 4d  4f 56 20 20 20 20 20 20  |       MOV      |
000026e0  20 31 32 2c 30 0d 12 c0  04 0d 12 ca 36 20 20 20  | 12,0.......6   |
000026f0  20 20 20 20 20 20 20 4c  44 4d 49 41 20 20 20 20  |       LDMIA    |
00002700  20 31 32 2c 7b 30 2c 31  2c 32 2c 33 2c 34 2c 35  | 12,{0,1,2,3,4,5|
00002710  2c 36 2c 37 2c 38 2c 39  2c 31 30 2c 31 31 7d 0d  |,6,7,8,9,10,11}.|
00002720  12 d4 04 0d 12 de 30 20  20 20 20 20 20 20 20 20  |......0         |
00002730  20 41 44 44 20 20 20 20  20 20 20 30 2c 30 2c 33  | ADD       0,0,3|
00002740  20 20 20 20 20 20 20 20  20 20 20 3b 20 78 3d 78  |           ; x=x|
00002750  2b 64 78 0d 12 e8 22 20  20 20 20 20 20 20 20 20  |+dx..."         |
00002760  20 41 44 44 20 20 20 20  20 20 20 31 33 2c 30 2c  | ADD       13,0,|
00002770  23 78 6d 69 6e 0d 12 f2  42 20 20 20 20 20 20 20  |#xmin...B       |
00002780  20 20 20 43 4d 50 20 20  20 20 20 20 20 31 33 2c  |   CMP       13,|
00002790  23 78 6d 61 78 2b 78 6d  69 6e 20 20 20 3b 20 69  |#xmax+xmin   ; i|
000027a0  66 20 78 3c 78 6d 69 6e  20 6f 72 20 78 3e 78 6d  |f x<xmin or x>xm|
000027b0  61 78 20 74 68 65 6e 0d  12 fc 3a 20 20 20 20 20  |ax then...:     |
000027c0  20 20 20 20 20 52 53 42  48 49 20 20 20 20 20 33  |     RSBHI     3|
000027d0  2c 33 2c 23 30 20 20 20  20 20 20 20 20 20 20 3b  |,3,#0          ;|
000027e0  20 64 78 3d 2d 64 78 3b  20 78 3d 78 2b 32 2a 64  | dx=-dx; x=x+2*d|
000027f0  78 0d 13 06 24 20 20 20  20 20 20 20 20 20 20 41  |x...$          A|
00002800  44 44 48 49 20 20 20 20  20 30 2c 30 2c 33 2c 4c  |DDHI     0,0,3,L|
00002810  53 4c 20 23 31 0d 13 10  04 0d 13 1a 1d 20 20 20  |SL #1........   |
00002820  20 20 20 20 20 20 20 41  44 44 20 20 20 20 20 20  |       ADD      |
00002830  20 31 2c 31 2c 34 0d 13  24 22 20 20 20 20 20 20  | 1,1,4..$"      |
00002840  20 20 20 20 41 44 44 20  20 20 20 20 20 20 31 33  |    ADD       13|
00002850  2c 31 2c 23 79 6d 69 6e  0d 13 2e 25 20 20 20 20  |,1,#ymin...%    |
00002860  20 20 20 20 20 20 43 4d  50 20 20 20 20 20 20 20  |      CMP       |
00002870  31 33 2c 23 79 6d 61 78  2b 79 6d 69 6e 0d 13 38  |13,#ymax+ymin..8|
00002880  1e 20 20 20 20 20 20 20  20 20 20 52 53 42 48 49  |.          RSBHI|
00002890  20 20 20 20 20 34 2c 34  2c 23 30 0d 13 42 24 20  |     4,4,#0..B$ |
000028a0  20 20 20 20 20 20 20 20  20 41 44 44 48 49 20 20  |         ADDHI  |
000028b0  20 20 20 31 2c 31 2c 34  2c 4c 53 4c 20 23 31 0d  |   1,1,4,LSL #1.|
000028c0  13 4c 04 0d 13 56 1d 20  20 20 20 20 20 20 20 20  |.L...V.         |
000028d0  20 41 44 44 20 20 20 20  20 20 20 32 2c 32 2c 35  | ADD       2,2,5|
000028e0  0d 13 60 22 20 20 20 20  20 20 20 20 20 20 53 55  |..`"          SU|
000028f0  42 20 20 20 20 20 20 20  31 33 2c 32 2c 23 7a 6d  |B       13,2,#zm|
00002900  69 6e 0d 13 6a 25 20 20  20 20 20 20 20 20 20 20  |in..j%          |
00002910  43 4d 50 20 20 20 20 20  20 20 31 33 2c 23 7a 6d  |CMP       13,#zm|
00002920  61 78 2d 7a 6d 69 6e 0d  13 74 1e 20 20 20 20 20  |ax-zmin..t.     |
00002930  20 20 20 20 20 52 53 42  48 49 20 20 20 20 20 35  |     RSBHI     5|
00002940  2c 35 2c 23 30 0d 13 7e  24 20 20 20 20 20 20 20  |,5,#0..~$       |
00002950  20 20 20 41 44 44 48 49  20 20 20 20 20 32 2c 32  |   ADDHI     2,2|
00002960  2c 35 2c 4c 53 4c 20 23  31 0d 13 88 04 0d 13 92  |,5,LSL #1.......|
00002970  32 20 20 20 20 20 20 20  20 20 20 41 44 44 20 20  |2          ADD  |
00002980  20 20 20 20 20 36 2c 36  2c 39 20 20 20 20 20 20  |     6,6,9      |
00002990  20 20 20 20 3b 20 68 78  3d 68 78 2b 64 68 78 0d  |    ; hx=hx+dhx.|
000029a0  13 9c 1e 20 20 20 20 20  20 20 20 20 20 41 44 44  |...          ADD|
000029b0  20 20 20 20 20 20 20 37  2c 37 2c 31 30 0d 13 a6  |       7,7,10...|
000029c0  1e 20 20 20 20 20 20 20  20 20 20 41 44 44 20 20  |.          ADD  |
000029d0  20 20 20 20 20 38 2c 38  2c 31 31 0d 13 b0 2e 20  |     8,8,11.... |
000029e0  20 20 20 20 20 20 20 20  20 53 54 4d 49 41 20 20  |         STMIA  |
000029f0  20 20 20 31 32 2c 7b 30  2c 31 2c 32 2c 33 2c 34  |   12,{0,1,2,3,4|
00002a00  2c 35 2c 36 2c 37 2c 38  7d 0d 13 ba 04 0d 13 c4  |,5,6,7,8}.......|
00002a10  1e 20 20 20 20 20 20 20  20 20 20 4c 44 52 20 20  |.          LDR  |
00002a20  20 20 20 20 20 31 33 2c  74 6d 70 0d 13 ce 22 20  |     13,tmp..." |
00002a30  20 20 20 20 20 20 20 20  20 4c 44 4d 46 44 20 20  |         LDMFD  |
00002a40  20 20 20 31 33 21 2c 7b  30 2d 31 32 7d 0d 13 d8  |   13!,{0-12}...|
00002a50  1e 20 20 20 20 20 20 20  20 20 20 4d 4f 56 20 20  |.          MOV  |
00002a60  20 20 20 20 20 50 43 2c  52 31 34 0d 13 e2 05 5d  |     PC,R14....]|
00002a70  0d 13 ec 04 0d 13 f6 04  0d 14 00 05 ed 0d 14 0a  |................|
00002a80  09 51 25 3d 50 25 0d 14  14 05 e1 0d 14 1e 04 0d  |.Q%=P%..........|
00002a90  14 28 04 0d 14 32 04 0d  14 3c 10 dd 20 f2 74 72  |.(...2...<.. .tr|
00002aa0  61 6e 73 66 6f 72 6d 0d  14 46 33 41 31 3d 30 3a  |ansform..F3A1=0:|
00002ab0  41 32 3d 31 3a 42 31 3d  32 3a 42 32 3d 33 3a 43  |A2=1:B1=2:B2=3:C|
00002ac0  31 3d 34 3a 43 32 3d 35  3a 54 3d 36 3a 44 49 54  |1=4:C2=5:T=6:DIT|
00002ad0  3d 37 3a 41 3d 38 3a 42  3d 39 0d 14 50 21 55 3d  |=7:A=8:B=9..P!U=|
00002ae0  31 30 3a 56 3d 31 31 3a  57 3d 31 32 3a 58 3d 31  |10:V=11:W=12:X=1|
00002af0  31 3a 59 3d 31 33 3a 5a  3d 31 34 0d 14 5a 14 e3  |1:Y=13:Z=14..Z..|
00002b00  20 50 41 53 53 3d 30 20  b8 20 32 20 88 20 32 0d  | PASS=0 . 2 . 2.|
00002b10  14 64 09 50 25 3d 51 25  0d 14 6e 0d 5b 4f 50 54  |.d.P%=Q%..n.[OPT|
00002b20  20 50 41 53 53 0d 14 78  1b 2e 41 31 44 20 45 51  | PASS..x..A1D EQ|
00002b30  55 44 20 30 3a 2e 41 32  44 20 45 51 55 44 20 30  |UD 0:.A2D EQUD 0|
00002b40  0d 14 82 1b 2e 42 31 44  20 45 51 55 44 20 30 3a  |.....B1D EQUD 0:|
00002b50  2e 42 32 44 20 45 51 55  44 20 30 0d 14 8c 1b 2e  |.B2D EQUD 0.....|
00002b60  43 31 44 20 45 51 55 44  20 30 3a 2e 43 32 44 20  |C1D EQUD 0:.C2D |
00002b70  45 51 55 44 20 30 0d 14  96 16 2e 44 49 54 44 20  |EQUD 0.....DITD |
00002b80  45 51 55 44 20 44 49 54  41 42 4c 45 0d 14 a0 0e  |EQUD DITABLE....|
00002b90  2e 56 44 20 45 51 55 44  20 30 0d 14 aa 0e 2e 53  |.VD EQUD 0.....S|
00002ba0  50 20 45 51 55 44 20 30  0d 14 b4 0e 2e 4c 4b 20  |P EQUD 0.....LK |
00002bb0  45 51 55 44 20 30 0d 14  be 04 0d 14 c8 1d 2e 73  |EQUD 0.........s|
00002bc0  63 72 65 65 6e 31 20 45  51 55 44 20 31 34 38 3a  |creen1 EQUD 148:|
00002bd0  45 51 55 44 20 2d 31 0d  14 d2 12 2e 73 63 72 65  |EQUD -1.....scre|
00002be0  65 6e 20 45 51 55 44 20  30 0d 14 dc 09 2e 73 65  |en EQUD 0.....se|
00002bf0  74 32 0d 14 e6 3a 41 44  52 20 52 30 2c 73 63 72  |t2...:ADR R0,scr|
00002c00  65 65 6e 31 3a 41 44 52  20 52 31 2c 73 63 72 65  |een1:ADR R1,scre|
00002c10  65 6e 3a 53 57 49 20 22  4f 53 5f 52 65 61 64 56  |en:SWI "OS_ReadV|
00002c20  64 75 56 61 72 69 61 62  6c 65 73 22 0d 14 f0 0e  |duVariables"....|
00002c30  4d 4f 56 20 50 43 2c 52  31 34 0d 14 fa 04 0d 15  |MOV PC,R14......|
00002c40  04 15 2e 43 4f 4c 44 20  20 20 20 20 45 51 55 44  |...COLD     EQUD|
00002c50  20 31 35 0d 15 0e 14 2e  43 54 45 4c 20 20 20 20  | 15.....CTEL    |
00002c60  20 45 51 55 44 20 30 0d  15 18 04 0d 15 22 13 2e  | EQUD 0......"..|
00002c70  74 72 61 6e 73 66 6f 72  6d 5f 64 72 61 77 0d 15  |transform_draw..|
00002c80  2c 25 20 20 20 20 20 20  20 20 20 20 53 54 4d 46  |,%          STMF|
00002c90  44 20 20 20 20 20 31 33  21 2c 7b 30 2d 31 32 2c  |D     13!,{0-12,|
00002ca0  31 34 7d 0d 15 36 1b 20  20 20 20 20 20 20 20 20  |14}..6.         |
00002cb0  20 4d 4f 56 20 20 20 20  20 20 20 41 2c 30 0d 15  | MOV       A,0..|
00002cc0  40 04 0d 15 4a 04 0d 15  54 1d 20 20 20 20 20 20  |@...J...T.      |
00002cd0  20 20 20 20 53 54 52 20  20 20 20 20 20 20 31 33  |    STR       13|
00002ce0  2c 53 50 0d 15 5e 1d 20  20 20 20 20 20 20 20 20  |,SP..^.         |
00002cf0  20 41 44 52 20 20 20 20  20 20 20 54 2c 41 31 44  | ADR       T,A1D|
00002d00  0d 15 68 31 20 20 20 20  20 20 20 20 20 20 4c 44  |..h1          LD|
00002d10  4d 49 41 20 20 20 20 20  54 2c 7b 41 31 2c 41 32  |MIA     T,{A1,A2|
00002d20  2c 42 31 2c 42 32 2c 43  31 2c 43 32 2c 44 49 54  |,B1,B2,C1,C2,DIT|
00002d30  7d 0d 15 72 24 20 20 20  20 20 20 20 20 20 20 4c  |}..r$          L|
00002d40  44 4d 49 41 20 20 20 20  20 28 41 29 21 2c 7b 58  |DMIA     (A)!,{X|
00002d50  2c 59 2c 5a 7d 0d 15 7c  20 20 20 20 20 20 20 20  |,Y,Z}..|        |
00002d60  20 20 20 4c 44 52 20 20  20 20 20 20 20 42 2c 73  |   LDR       B,s|
00002d70  63 72 65 65 6e 0d 15 86  0f 2e 74 72 61 6e 73 5f  |creen.....trans_|
00002d80  64 72 61 77 0d 15 90 3c  20 20 20 20 20 20 20 20  |draw...<        |
00002d90  20 20 4d 4f 56 20 20 20  20 20 20 20 54 2c 43 31  |  MOV       T,C1|
00002da0  2c 41 53 52 20 23 31 36  20 20 20 20 20 20 20 3b  |,ASR #16       ;|
00002db0  20 f4 20 7a 20 74 72 61  6e 73 66 6f 72 6d 65 64  | . z transformed|
00002dc0  0d 15 9a 1d 20 20 20 20  20 20 20 20 20 20 4d 55  |....          MU|
00002dd0  4c 20 20 20 20 20 20 20  57 2c 54 2c 58 0d 15 a4  |L       W,T,X...|
00002de0  24 20 20 20 20 20 20 20  20 20 20 4d 4f 56 20 20  |$          MOV  |
00002df0  20 20 20 20 20 54 2c 43  31 2c 4c 53 4c 20 23 31  |     T,C1,LSL #1|
00002e00  36 0d 15 ae 23 20 20 20  20 20 20 20 20 20 20 4d  |6...#          M|
00002e10  4f 56 20 20 20 20 20 20  20 54 2c 54 2c 41 53 52  |OV       T,T,ASR|
00002e20  20 23 31 36 0d 15 b8 1f  20 20 20 20 20 20 20 20  | #16....        |
00002e30  20 20 4d 4c 41 20 20 20  20 20 20 20 57 2c 59 2c  |  MLA       W,Y,|
00002e40  54 2c 57 0d 15 c2 24 20  20 20 20 20 20 20 20 20  |T,W...$         |
00002e50  20 4d 4f 56 20 20 20 20  20 20 20 54 2c 43 32 2c  | MOV       T,C2,|
00002e60  41 53 52 20 23 31 36 0d  15 cc 1f 20 20 20 20 20  |ASR #16....     |
00002e70  20 20 20 20 20 4d 4c 41  20 20 20 20 20 20 20 57  |     MLA       W|
00002e80  2c 5a 2c 54 2c 57 0d 15  d6 24 20 20 20 20 20 20  |,Z,T,W...$      |
00002e90  20 20 20 20 4d 4f 56 20  20 20 20 20 20 20 54 2c  |    MOV       T,|
00002ea0  43 32 2c 4c 53 4c 20 23  31 36 0d 15 e0 23 20 20  |C2,LSL #16...#  |
00002eb0  20 20 20 20 20 20 20 20  4d 4f 56 20 20 20 20 20  |        MOV     |
00002ec0  20 20 54 2c 54 2c 41 53  52 20 23 31 36 0d 15 ea  |  T,T,ASR #16...|
00002ed0  25 20 20 20 20 20 20 20  20 20 20 41 44 44 53 20  |%          ADDS |
00002ee0  20 20 20 20 20 57 2c 54  2c 57 2c 41 53 52 20 23  |     W,T,W,ASR #|
00002ef0  31 35 0d 15 f4 21 20 20  20 20 20 20 20 20 20 20  |15...!          |
00002f00  43 4d 50 20 20 20 20 20  20 20 57 2c 23 31 30 2a  |CMP       W,#10*|
00002f10  46 49 58 0d 15 fe 1e 20  20 20 20 20 20 20 20 20  |FIX....         |
00002f20  20 42 4d 49 20 20 20 20  20 20 20 6e 6f 64 72 61  | BMI       nodra|
00002f30  77 0d 16 08 04 0d 16 12  3a 20 20 20 20 20 20 20  |w.......:       |
00002f40  20 20 20 4d 4f 56 20 20  20 20 20 20 20 54 2c 41  |   MOV       T,A|
00002f50  31 2c 41 53 52 20 23 31  36 20 20 20 20 20 3b 20  |1,ASR #16     ; |
00002f60  f4 20 78 20 74 72 61 6e  73 66 6f 72 6d 65 64 0d  |. x transformed.|
00002f70  16 1c 1d 20 20 20 20 20  20 20 20 20 20 4d 55 4c  |...          MUL|
00002f80  20 20 20 20 20 20 20 55  2c 58 2c 54 0d 16 26 24  |       U,X,T..&$|
00002f90  20 20 20 20 20 20 20 20  20 20 4d 4f 56 20 20 20  |          MOV   |
00002fa0  20 20 20 20 54 2c 41 31  2c 4c 53 4c 20 23 31 36  |    T,A1,LSL #16|
00002fb0  0d 16 30 23 20 20 20 20  20 20 20 20 20 20 4d 4f  |..0#          MO|
00002fc0  56 20 20 20 20 20 20 20  54 2c 54 2c 41 53 52 20  |V       T,T,ASR |
00002fd0  23 31 36 0d 16 3a 1f 20  20 20 20 20 20 20 20 20  |#16..:.         |
00002fe0  20 4d 4c 41 20 20 20 20  20 20 20 55 2c 59 2c 54  | MLA       U,Y,T|
00002ff0  2c 55 0d 16 44 24 20 20  20 20 20 20 20 20 20 20  |,U..D$          |
00003000  4d 4f 56 20 20 20 20 20  20 20 54 2c 41 32 2c 41  |MOV       T,A2,A|
00003010  53 52 20 23 31 36 0d 16  4e 1f 20 20 20 20 20 20  |SR #16..N.      |
00003020  20 20 20 20 4d 4c 41 20  20 20 20 20 20 20 55 2c  |    MLA       U,|
00003030  5a 2c 54 2c 55 0d 16 58  24 20 20 20 20 20 20 20  |Z,T,U..X$       |
00003040  20 20 20 4d 4f 56 20 20  20 20 20 20 20 54 2c 41  |   MOV       T,A|
00003050  32 2c 4c 53 4c 20 23 31  36 0d 16 62 23 20 20 20  |2,LSL #16..b#   |
00003060  20 20 20 20 20 20 20 4d  4f 56 20 20 20 20 20 20  |       MOV      |
00003070  20 54 2c 54 2c 41 53 52  20 23 31 36 0d 16 6c 25  | T,T,ASR #16..l%|
00003080  20 20 20 20 20 20 20 20  20 20 41 44 44 20 20 20  |          ADD   |
00003090  20 20 20 20 55 2c 54 2c  55 2c 41 53 52 20 23 31  |    U,T,U,ASR #1|
000030a0  35 0d 16 76 04 0d 16 80  38 20 20 20 20 20 20 20  |5..v....8       |
000030b0  20 20 20 4d 4f 56 20 20  20 20 20 20 20 54 2c 42  |   MOV       T,B|
000030c0  31 2c 41 53 52 20 23 31  36 20 20 20 3b 20 f4 20  |1,ASR #16   ; . |
000030d0  79 20 74 72 61 6e 73 66  6f 72 6d 65 64 0d 16 8a  |y transformed...|
000030e0  1d 20 20 20 20 20 20 20  20 20 20 4d 55 4c 20 20  |.          MUL  |
000030f0  20 20 20 20 20 56 2c 54  2c 58 0d 16 94 24 20 20  |     V,T,X...$  |
00003100  20 20 20 20 20 20 20 20  4d 4f 56 20 20 20 20 20  |        MOV     |
00003110  20 20 54 2c 42 31 2c 4c  53 4c 20 23 31 36 0d 16  |  T,B1,LSL #16..|
00003120  9e 23 20 20 20 20 20 20  20 20 20 20 4d 4f 56 20  |.#          MOV |
00003130  20 20 20 20 20 20 54 2c  54 2c 41 53 52 20 23 31  |      T,T,ASR #1|
00003140  36 0d 16 a8 1f 20 20 20  20 20 20 20 20 20 20 4d  |6....          M|
00003150  4c 41 20 20 20 20 20 20  20 56 2c 59 2c 54 2c 56  |LA       V,Y,T,V|
00003160  0d 16 b2 24 20 20 20 20  20 20 20 20 20 20 4d 4f  |...$          MO|
00003170  56 20 20 20 20 20 20 20  54 2c 42 32 2c 41 53 52  |V       T,B2,ASR|
00003180  20 23 31 36 0d 16 bc 1f  20 20 20 20 20 20 20 20  | #16....        |
00003190  20 20 4d 4c 41 20 20 20  20 20 20 20 56 2c 5a 2c  |  MLA       V,Z,|
000031a0  54 2c 56 0d 16 c6 24 20  20 20 20 20 20 20 20 20  |T,V...$         |
000031b0  20 4d 4f 56 20 20 20 20  20 20 20 54 2c 42 32 2c  | MOV       T,B2,|
000031c0  4c 53 4c 20 23 31 36 0d  16 d0 23 20 20 20 20 20  |LSL #16...#     |
000031d0  20 20 20 20 20 4d 4f 56  20 20 20 20 20 20 20 54  |     MOV       T|
000031e0  2c 54 2c 41 53 52 20 23  31 36 0d 16 da 25 20 20  |,T,ASR #16...%  |
000031f0  20 20 20 20 20 20 20 20  41 44 44 20 20 20 20 20  |        ADD     |
00003200  20 20 56 2c 54 2c 56 2c  41 53 52 20 23 31 35 0d  |  V,T,V,ASR #15.|
00003210  16 e4 04 0d 16 ee 4b 20  20 20 20 20 20 20 20 20  |......K         |
00003220  20 4c 44 52 20 20 20 20  20 20 20 57 2c 5b 44 49  | LDR       W,[DI|
00003230  54 2c 57 2c 4c 53 4c 20  23 32 5d 20 20 20 20 20  |T,W,LSL #2]     |
00003240  3b 20 f4 20 70 65 72 73  70 65 63 74 69 76 65 20  |; . perspective |
00003250  74 72 61 6e 73 66 6f 72  6d 61 74 69 6f 6e 0d 16  |transformation..|
00003260  f8 1d 20 20 20 20 20 20  20 20 20 20 4d 55 4c 20  |..          MUL |
00003270  20 20 20 20 20 20 55 2c  57 2c 55 0d 17 02 1d 20  |      U,W,U.... |
00003280  20 20 20 20 20 20 20 20  20 4d 55 4c 20 20 20 20  |         MUL    |
00003290  20 20 20 56 2c 57 2c 56  0d 17 0c 23 20 20 20 20  |   V,W,V...#    |
000032a0  20 20 20 20 20 20 4d 4f  56 20 20 20 20 20 20 20  |      MOV       |
000032b0  55 2c 55 2c 41 53 52 20  23 31 32 0d 17 16 23 20  |U,U,ASR #12...# |
000032c0  20 20 20 20 20 20 20 20  20 4d 4f 56 20 20 20 20  |         MOV    |
000032d0  20 20 20 56 2c 56 2c 41  53 52 20 23 31 32 0d 17  |   V,V,ASR #12..|
000032e0  20 20 20 20 20 20 20 20  20 20 20 20 41 44 44 20  |            ADD |
000032f0  20 20 20 20 20 20 55 2c  55 2c 23 31 36 30 0d 17  |      U,U,#160..|
00003300  2a 20 20 20 20 20 20 20  20 20 20 20 52 53 42 20  |*           RSB |
00003310  20 20 20 20 20 20 56 2c  56 2c 23 31 32 38 0d 17  |      V,V,#128..|
00003320  34 04 0d 17 3e 46 20 20  20 20 20 20 20 20 20 20  |4...>F          |
00003330  43 4d 50 20 20 20 20 20  20 20 55 2c 23 33 32 30  |CMP       U,#320|
00003340  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3b  |               ;|
00003350  20 f4 20 63 6c 69 70 70  69 6e 67 20 61 6e 64 20  | . clipping and |
00003360  70 6c 6f 74 74 69 6e 67  0d 17 48 1e 20 20 20 20  |plotting..H.    |
00003370  20 20 20 20 20 20 43 4d  50 4c 4f 20 20 20 20 20  |      CMPLO     |
00003380  56 2c 23 32 35 36 0d 17  52 24 20 20 20 20 20 20  |V,#256..R$      |
00003390  20 20 20 20 41 44 44 4c  4f 20 20 20 20 20 54 2c  |    ADDLO     T,|
000033a0  56 2c 56 2c 4c 53 4c 20  23 32 0d 17 5c 24 20 20  |V,V,LSL #2..\$  |
000033b0  20 20 20 20 20 20 20 20  41 44 44 4c 4f 20 20 20  |        ADDLO   |
000033c0  20 20 54 2c 55 2c 54 2c  4c 53 4c 20 23 36 0d 17  |  T,U,T,LSL #6..|
000033d0  66 1e 20 20 20 20 20 20  20 20 20 20 42 48 53 20  |f.          BHS |
000033e0  20 20 20 20 20 20 6e 6f  64 72 61 77 0d 17 70 04  |      nodraw..p.|
000033f0  0d 17 7a 1d 20 20 20 20  20 20 20 20 20 20 4c 44  |..z.          LD|
00003400  52 42 20 20 20 20 20 5a  2c 43 4f 4c 44 0d 17 84  |RB     Z,COLD...|
00003410  04 0d 17 8e 26 20 20 20  20 20 20 20 20 20 20 4c  |....&          L|
00003420  44 52 42 20 20 20 20 20  20 57 2c 5b 42 2c 54 2c  |DRB      W,[B,T,|
00003430  4c 53 52 20 23 31 5d 0d  17 98 1c 20 20 20 20 20  |LSR #1]....     |
00003440  20 20 20 20 20 54 53 54  20 20 20 20 20 20 20 55  |     TST       U|
00003450  2c 23 31 0d 17 a2 1f 20  20 20 20 20 20 20 20 20  |,#1....         |
00003460  20 42 49 43 45 51 20 20  20 20 20 57 2c 57 2c 23  | BICEQ     W,W,#|
00003470  31 35 0d 17 ac 22 20 20  20 20 20 20 20 20 20 20  |15..."          |
00003480  42 49 43 4e 45 20 20 20  20 20 57 2c 57 2c 23 31  |BICNE     W,W,#1|
00003490  35 2a 31 36 0d 17 b6 1c  20 20 20 20 20 20 20 20  |5*16....        |
000034a0  20 20 84 52 45 51 20 20  20 20 20 57 2c 57 2c 5a  |  .REQ     W,W,Z|
000034b0  0d 17 c0 23 20 20 20 20  20 20 20 20 20 20 84 52  |...#          .R|
000034c0  4e 45 20 20 20 20 20 57  2c 57 2c 5a 2c 4c 53 4c  |NE     W,W,Z,LSL|
000034d0  20 23 34 0d 17 ca 26 20  20 20 20 20 20 20 20 20  | #4...&         |
000034e0  20 53 54 52 42 20 20 20  20 20 20 57 2c 5b 42 2c  | STRB      W,[B,|
000034f0  54 2c 4c 53 52 20 23 31  5d 0d 17 d4 04 0d 17 de  |T,LSR #1].......|
00003500  46 2e 6e 6f 64 72 61 77  20 20 20 4c 44 4d 49 41  |F.nodraw   LDMIA|
00003510  20 20 20 20 20 28 41 29  21 2c 7b 58 2c 59 2c 5a  |     (A)!,{X,Y,Z|
00003520  7d 20 20 20 20 20 20 20  20 3b f4 20 55 20 63 6f  |}        ;. U co|
00003530  6c 6f 75 72 20 70 72 65  76 69 6f 75 73 20 70 6f  |lour previous po|
00003540  69 6e 74 0d 17 e8 20 20  20 20 20 20 20 20 20 20  |int...          |
00003550  20 43 4d 50 20 20 20 20  20 20 20 58 2c 23 31 3c  | CMP       X,#1<|
00003560  3c 33 30 0d 17 f2 22 20  20 20 20 20 20 20 20 20  |<30..."         |
00003570  20 42 4e 45 20 20 20 20  20 20 20 74 72 61 6e 73  | BNE       trans|
00003580  5f 64 72 61 77 0d 17 fc  04 0d 18 06 1e 20 20 20  |_draw........   |
00003590  20 20 20 20 20 20 20 4c  44 52 20 20 20 20 20 20  |       LDR      |
000035a0  20 30 2c 43 54 45 4c 0d  18 10 1e 20 20 20 20 20  | 0,CTEL....     |
000035b0  20 20 20 20 20 41 44 44  20 20 20 20 20 20 20 30  |     ADD       0|
000035c0  2c 30 2c 23 31 0d 18 1a  1c 20 20 20 20 20 20 20  |,0,#1....       |
000035d0  20 20 20 43 4d 50 20 20  20 20 20 20 20 30 2c 23  |   CMP       0,#|
000035e0  34 0d 18 24 19 20 20 20  20 20 20 20 20 20 20 ec  |4..$.          .|
000035f0  51 20 20 20 20 20 30 2c  23 30 0d 18 2e 1e 20 20  |Q     0,#0....  |
00003600  20 20 20 20 20 20 20 20  53 54 52 20 20 20 20 20  |        STR     |
00003610  20 20 30 2c 43 54 45 4c  0d 18 38 1c 20 20 20 20  |  0,CTEL..8.    |
00003620  20 20 20 20 20 20 42 4e  45 20 20 20 20 20 20 20  |      BNE       |
00003630  73 6b 69 70 0d 18 42 04  0d 18 4c 1e 20 20 20 20  |skip..B...L.    |
00003640  20 20 20 20 20 20 4c 44  52 20 20 20 20 20 20 20  |      LDR       |
00003650  30 2c 43 4f 4c 44 0d 18  56 1e 20 20 20 20 20 20  |0,COLD..V.      |
00003660  20 20 20 20 41 44 44 20  20 20 20 20 20 20 30 2c  |    ADD       0,|
00003670  30 2c 23 31 0d 18 60 1d  20 20 20 20 20 20 20 20  |0,#1..`.        |
00003680  20 20 43 4d 50 20 20 20  20 20 20 20 30 2c 23 31  |  CMP       0,#1|
00003690  36 0d 18 6a 19 20 20 20  20 20 20 20 20 20 20 ec  |6..j.          .|
000036a0  51 20 20 20 20 20 30 2c  23 31 0d 18 74 1e 20 20  |Q     0,#1..t.  |
000036b0  20 20 20 20 20 20 20 20  53 54 52 20 20 20 20 20  |        STR     |
000036c0  20 20 30 2c 43 4f 4c 44  0d 18 7e 04 0d 18 88 09  |  0,COLD..~.....|
000036d0  2e 73 6b 69 70 0d 18 92  1d 20 20 20 20 20 20 20  |.skip....       |
000036e0  20 20 20 4c 44 52 20 20  20 20 20 20 20 31 33 2c  |   LDR       13,|
000036f0  53 50 0d 18 9c 25 20 20  20 20 20 20 20 20 20 20  |SP...%          |
00003700  4c 44 4d 46 44 20 20 20  20 20 31 33 21 2c 7b 30  |LDMFD     13!,{0|
00003710  2d 31 32 2c 50 43 7d 0d  18 a6 04 0d 18 b0 14 2e  |-12,PC}.........|
00003720  74 72 61 6e 73 66 6f 72  6d 5f 63 6c 65 61 72 0d  |transform_clear.|
00003730  18 ba 25 20 20 20 20 20  20 20 20 20 20 53 54 4d  |..%          STM|
00003740  46 44 20 20 20 20 20 31  33 21 2c 7b 30 2d 31 32  |FD     13!,{0-12|
00003750  2c 31 34 7d 0d 18 c4 1b  20 20 20 20 20 20 20 20  |,14}....        |
00003760  20 20 4d 4f 56 20 20 20  20 20 20 20 41 2c 30 0d  |  MOV       A,0.|
00003770  18 ce 1d 20 20 20 20 20  20 20 20 20 20 53 54 52  |...          STR|
00003780  20 20 20 20 20 20 20 31  33 2c 53 50 0d 18 d8 1d  |       13,SP....|
00003790  20 20 20 20 20 20 20 20  20 20 41 44 52 20 20 20  |          ADR   |
000037a0  20 20 20 20 54 2c 41 31  44 0d 18 e2 31 20 20 20  |    T,A1D...1   |
000037b0  20 20 20 20 20 20 20 4c  44 4d 49 41 20 20 20 20  |       LDMIA    |
000037c0  20 54 2c 7b 41 31 2c 41  32 2c 42 31 2c 42 32 2c  | T,{A1,A2,B1,B2,|
000037d0  43 31 2c 43 32 2c 44 49  54 7d 0d 18 ec 24 20 20  |C1,C2,DIT}...$  |
000037e0  20 20 20 20 20 20 20 20  4c 44 4d 49 41 20 20 20  |        LDMIA   |
000037f0  20 20 28 41 29 21 2c 7b  58 2c 59 2c 5a 7d 0d 18  |  (A)!,{X,Y,Z}..|
00003800  f6 20 20 20 20 20 20 20  20 20 20 20 4c 44 52 20  |.           LDR |
00003810  20 20 20 20 20 20 42 2c  73 63 72 65 65 6e 0d 19  |      B,screen..|
00003820  00 10 2e 74 72 61 6e 73  5f 63 6c 65 61 72 0d 19  |...trans_clear..|
00003830  0a 3c 20 20 20 20 20 20  20 20 20 20 4d 4f 56 20  |.<          MOV |
00003840  20 20 20 20 20 20 54 2c  43 31 2c 41 53 52 20 23  |      T,C1,ASR #|
00003850  31 36 20 20 20 20 20 20  20 3b 20 f4 20 7a 20 74  |16       ; . z t|
00003860  72 61 6e 73 66 6f 72 6d  65 64 0d 19 14 1d 20 20  |ransformed....  |
00003870  20 20 20 20 20 20 20 20  4d 55 4c 20 20 20 20 20  |        MUL     |
00003880  20 20 57 2c 54 2c 58 0d  19 1e 24 20 20 20 20 20  |  W,T,X...$     |
00003890  20 20 20 20 20 4d 4f 56  20 20 20 20 20 20 20 54  |     MOV       T|
000038a0  2c 43 31 2c 4c 53 4c 20  23 31 36 0d 19 28 23 20  |,C1,LSL #16..(# |
000038b0  20 20 20 20 20 20 20 20  20 4d 4f 56 20 20 20 20  |         MOV    |
000038c0  20 20 20 54 2c 54 2c 41  53 52 20 23 31 36 0d 19  |   T,T,ASR #16..|
000038d0  32 1f 20 20 20 20 20 20  20 20 20 20 4d 4c 41 20  |2.          MLA |
000038e0  20 20 20 20 20 20 57 2c  59 2c 54 2c 57 0d 19 3c  |      W,Y,T,W..<|
000038f0  24 20 20 20 20 20 20 20  20 20 20 4d 4f 56 20 20  |$          MOV  |
00003900  20 20 20 20 20 54 2c 43  32 2c 41 53 52 20 23 31  |     T,C2,ASR #1|
00003910  36 0d 19 46 1f 20 20 20  20 20 20 20 20 20 20 4d  |6..F.          M|
00003920  4c 41 20 20 20 20 20 20  20 57 2c 5a 2c 54 2c 57  |LA       W,Z,T,W|
00003930  0d 19 50 24 20 20 20 20  20 20 20 20 20 20 4d 4f  |..P$          MO|
00003940  56 20 20 20 20 20 20 20  54 2c 43 32 2c 4c 53 4c  |V       T,C2,LSL|
00003950  20 23 31 36 0d 19 5a 23  20 20 20 20 20 20 20 20  | #16..Z#        |
00003960  20 20 4d 4f 56 20 20 20  20 20 20 20 54 2c 54 2c  |  MOV       T,T,|
00003970  41 53 52 20 23 31 36 0d  19 64 25 20 20 20 20 20  |ASR #16..d%     |
00003980  20 20 20 20 20 41 44 44  53 20 20 20 20 20 20 57  |     ADDS      W|
00003990  2c 54 2c 57 2c 41 53 52  20 23 31 35 0d 19 6e 21  |,T,W,ASR #15..n!|
000039a0  20 20 20 20 20 20 20 20  20 20 43 4d 50 20 20 20  |          CMP   |
000039b0  20 20 20 20 57 2c 23 31  30 2a 46 49 58 0d 19 78  |    W,#10*FIX..x|
000039c0  1f 20 20 20 20 20 20 20  20 20 20 42 4d 49 20 20  |.          BMI  |
000039d0  20 20 20 20 20 6e 6f 63  6c 65 61 72 0d 19 82 04  |     noclear....|
000039e0  0d 19 8c 3a 20 20 20 20  20 20 20 20 20 20 4d 4f  |...:          MO|
000039f0  56 20 20 20 20 20 20 20  54 2c 41 31 2c 41 53 52  |V       T,A1,ASR|
00003a00  20 23 31 36 20 20 20 20  20 3b 20 f4 20 78 20 74  | #16     ; . x t|
00003a10  72 61 6e 73 66 6f 72 6d  65 64 0d 19 96 1d 20 20  |ransformed....  |
00003a20  20 20 20 20 20 20 20 20  4d 55 4c 20 20 20 20 20  |        MUL     |
00003a30  20 20 55 2c 58 2c 54 0d  19 a0 24 20 20 20 20 20  |  U,X,T...$     |
00003a40  20 20 20 20 20 4d 4f 56  20 20 20 20 20 20 20 54  |     MOV       T|
00003a50  2c 41 31 2c 4c 53 4c 20  23 31 36 0d 19 aa 23 20  |,A1,LSL #16...# |
00003a60  20 20 20 20 20 20 20 20  20 4d 4f 56 20 20 20 20  |         MOV    |
00003a70  20 20 20 54 2c 54 2c 41  53 52 20 23 31 36 0d 19  |   T,T,ASR #16..|
00003a80  b4 1f 20 20 20 20 20 20  20 20 20 20 4d 4c 41 20  |..          MLA |
00003a90  20 20 20 20 20 20 55 2c  59 2c 54 2c 55 0d 19 be  |      U,Y,T,U...|
00003aa0  24 20 20 20 20 20 20 20  20 20 20 4d 4f 56 20 20  |$          MOV  |
00003ab0  20 20 20 20 20 54 2c 41  32 2c 41 53 52 20 23 31  |     T,A2,ASR #1|
00003ac0  36 0d 19 c8 1f 20 20 20  20 20 20 20 20 20 20 4d  |6....          M|
00003ad0  4c 41 20 20 20 20 20 20  20 55 2c 5a 2c 54 2c 55  |LA       U,Z,T,U|
00003ae0  0d 19 d2 24 20 20 20 20  20 20 20 20 20 20 4d 4f  |...$          MO|
00003af0  56 20 20 20 20 20 20 20  54 2c 41 32 2c 4c 53 4c  |V       T,A2,LSL|
00003b00  20 23 31 36 0d 19 dc 23  20 20 20 20 20 20 20 20  | #16...#        |
00003b10  20 20 4d 4f 56 20 20 20  20 20 20 20 54 2c 54 2c  |  MOV       T,T,|
00003b20  41 53 52 20 23 31 36 0d  19 e6 25 20 20 20 20 20  |ASR #16...%     |
00003b30  20 20 20 20 20 41 44 44  20 20 20 20 20 20 20 55  |     ADD       U|
00003b40  2c 54 2c 55 2c 41 53 52  20 23 31 35 0d 19 f0 04  |,T,U,ASR #15....|
00003b50  0d 19 fa 38 20 20 20 20  20 20 20 20 20 20 4d 4f  |...8          MO|
00003b60  56 20 20 20 20 20 20 20  54 2c 42 31 2c 41 53 52  |V       T,B1,ASR|
00003b70  20 23 31 36 20 20 20 3b  20 f4 20 79 20 74 72 61  | #16   ; . y tra|
00003b80  6e 73 66 6f 72 6d 65 64  0d 1a 04 1d 20 20 20 20  |nsformed....    |
00003b90  20 20 20 20 20 20 4d 55  4c 20 20 20 20 20 20 20  |      MUL       |
00003ba0  56 2c 54 2c 58 0d 1a 0e  24 20 20 20 20 20 20 20  |V,T,X...$       |
00003bb0  20 20 20 4d 4f 56 20 20  20 20 20 20 20 54 2c 42  |   MOV       T,B|
00003bc0  31 2c 4c 53 4c 20 23 31  36 0d 1a 18 23 20 20 20  |1,LSL #16...#   |
00003bd0  20 20 20 20 20 20 20 4d  4f 56 20 20 20 20 20 20  |       MOV      |
00003be0  20 54 2c 54 2c 41 53 52  20 23 31 36 0d 1a 22 1f  | T,T,ASR #16..".|
00003bf0  20 20 20 20 20 20 20 20  20 20 4d 4c 41 20 20 20  |          MLA   |
00003c00  20 20 20 20 56 2c 59 2c  54 2c 56 0d 1a 2c 24 20  |    V,Y,T,V..,$ |
00003c10  20 20 20 20 20 20 20 20  20 4d 4f 56 20 20 20 20  |         MOV    |
00003c20  20 20 20 54 2c 42 32 2c  41 53 52 20 23 31 36 0d  |   T,B2,ASR #16.|
00003c30  1a 36 1f 20 20 20 20 20  20 20 20 20 20 4d 4c 41  |.6.          MLA|
00003c40  20 20 20 20 20 20 20 56  2c 5a 2c 54 2c 56 0d 1a  |       V,Z,T,V..|
00003c50  40 24 20 20 20 20 20 20  20 20 20 20 4d 4f 56 20  |@$          MOV |
00003c60  20 20 20 20 20 20 54 2c  42 32 2c 4c 53 4c 20 23  |      T,B2,LSL #|
00003c70  31 36 0d 1a 4a 23 20 20  20 20 20 20 20 20 20 20  |16..J#          |
00003c80  4d 4f 56 20 20 20 20 20  20 20 54 2c 54 2c 41 53  |MOV       T,T,AS|
00003c90  52 20 23 31 36 0d 1a 54  25 20 20 20 20 20 20 20  |R #16..T%       |
00003ca0  20 20 20 41 44 44 20 20  20 20 20 20 20 56 2c 54  |   ADD       V,T|
00003cb0  2c 56 2c 41 53 52 20 23  31 35 0d 1a 5e 04 0d 1a  |,V,ASR #15..^...|
00003cc0  68 4b 20 20 20 20 20 20  20 20 20 20 4c 44 52 20  |hK          LDR |
00003cd0  20 20 20 20 20 20 57 2c  5b 44 49 54 2c 57 2c 4c  |      W,[DIT,W,L|
00003ce0  53 4c 20 23 32 5d 20 20  20 20 20 3b 20 f4 20 70  |SL #2]     ; . p|
00003cf0  65 72 73 70 65 63 74 69  76 65 20 74 72 61 6e 73  |erspective trans|
00003d00  66 6f 72 6d 61 74 69 6f  6e 0d 1a 72 1d 20 20 20  |formation..r.   |
00003d10  20 20 20 20 20 20 20 4d  55 4c 20 20 20 20 20 20  |       MUL      |
00003d20  20 55 2c 57 2c 55 0d 1a  7c 1d 20 20 20 20 20 20  | U,W,U..|.      |
00003d30  20 20 20 20 4d 55 4c 20  20 20 20 20 20 20 56 2c  |    MUL       V,|
00003d40  57 2c 56 0d 1a 86 23 20  20 20 20 20 20 20 20 20  |W,V...#         |
00003d50  20 4d 4f 56 20 20 20 20  20 20 20 55 2c 55 2c 41  | MOV       U,U,A|
00003d60  53 52 20 23 31 32 0d 1a  90 23 20 20 20 20 20 20  |SR #12...#      |
00003d70  20 20 20 20 4d 4f 56 20  20 20 20 20 20 20 56 2c  |    MOV       V,|
00003d80  56 2c 41 53 52 20 23 31  32 0d 1a 9a 20 20 20 20  |V,ASR #12...    |
00003d90  20 20 20 20 20 20 20 41  44 44 20 20 20 20 20 20  |       ADD      |
00003da0  20 55 2c 55 2c 23 31 36  30 0d 1a a4 20 20 20 20  | U,U,#160...    |
00003db0  20 20 20 20 20 20 20 52  53 42 20 20 20 20 20 20  |       RSB      |
00003dc0  20 56 2c 56 2c 23 31 32  38 0d 1a ae 04 0d 1a b8  | V,V,#128.......|
00003dd0  46 20 20 20 20 20 20 20  20 20 20 43 4d 50 20 20  |F          CMP  |
00003de0  20 20 20 20 20 55 2c 23  33 32 30 20 20 20 20 20  |     U,#320     |
00003df0  20 20 20 20 20 20 20 20  20 20 3b 20 f4 20 63 6c  |          ; . cl|
00003e00  69 70 70 69 6e 67 20 61  6e 64 20 70 6c 6f 74 74  |ipping and plott|
00003e10  69 6e 67 0d 1a c2 1e 20  20 20 20 20 20 20 20 20  |ing....         |
00003e20  20 43 4d 50 4c 4f 20 20  20 20 20 56 2c 23 32 35  | CMPLO     V,#25|
00003e30  36 0d 1a cc 24 20 20 20  20 20 20 20 20 20 20 41  |6...$          A|
00003e40  44 44 4c 4f 20 20 20 20  20 54 2c 56 2c 56 2c 4c  |DDLO     T,V,V,L|
00003e50  53 4c 20 23 32 0d 1a d6  24 20 20 20 20 20 20 20  |SL #2...$       |
00003e60  20 20 20 41 44 44 4c 4f  20 20 20 20 20 54 2c 55  |   ADDLO     T,U|
00003e70  2c 54 2c 4c 53 4c 20 23  36 0d 1a e0 1f 20 20 20  |,T,LSL #6....   |
00003e80  20 20 20 20 20 20 20 42  48 53 20 20 20 20 20 20  |       BHS      |
00003e90  20 6e 6f 63 6c 65 61 72  0d 1a ea 04 0d 1a f4 1e  | noclear........|
00003ea0  20 20 20 20 20 20 20 20  20 20 4c 44 52 20 20 20  |          LDR   |
00003eb0  20 20 20 20 5a 2c 43 4f  4c 44 0d 1a fe 1e 20 20  |    Z,COLD....  |
00003ec0  20 20 20 20 20 20 20 20  41 44 44 20 20 20 20 20  |        ADD     |
00003ed0  20 20 5a 2c 5a 2c 23 31  0d 1b 08 1d 20 20 20 20  |  Z,Z,#1....    |
00003ee0  20 20 20 20 20 20 43 4d  50 20 20 20 20 20 20 20  |      CMP       |
00003ef0  5a 2c 23 31 36 0d 1b 12  19 20 20 20 20 20 20 20  |Z,#16....       |
00003f00  20 20 20 ec 51 20 20 20  20 20 5a 2c 23 31 0d 1b  |   .Q     Z,#1..|
00003f10  1c 04 0d 1b 26 26 20 20  20 20 20 20 20 20 20 20  |....&&          |
00003f20  4c 44 52 42 20 20 20 20  20 20 57 2c 5b 42 2c 54  |LDRB      W,[B,T|
00003f30  2c 4c 53 52 20 23 31 5d  0d 1b 30 1c 20 20 20 20  |,LSR #1]..0.    |
00003f40  20 20 20 20 20 20 54 53  54 20 20 20 20 20 20 20  |      TST       |
00003f50  55 2c 23 31 0d 1b 3a 1b  20 20 20 20 20 20 20 20  |U,#1..:.        |
00003f60  20 20 42 4e 45 20 20 20  20 20 20 20 6f 64 64 0d  |  BNE       odd.|
00003f70  1b 44 1d 20 20 20 20 20  20 20 20 20 20 80 20 20  |.D.          .  |
00003f80  20 20 20 20 20 59 2c 57  2c 23 31 35 0d 1b 4e 1b  |     Y,W,#15..N.|
00003f90  20 20 20 20 20 20 20 20  20 20 43 4d 50 20 20 20  |          CMP   |
00003fa0  20 20 20 20 59 2c 5a 0d  1b 58 4a 20 20 20 20 20  |    Y,Z..XJ     |
00003fb0  20 20 20 20 20 42 4e 45  20 20 20 20 20 20 20 6e  |     BNE       n|
00003fc0  6f 63 6c 65 61 72 20 20  20 20 20 20 20 20 20 20  |oclear          |
00003fd0  20 20 20 3b f4 20 6f 6e  6c 79 20 63 6c 65 61 72  |   ;. only clear|
00003fe0  20 61 20 70 69 78 65 6c  20 69 66 20 69 74 20 69  | a pixel if it i|
00003ff0  73 0d 1b 62 42 20 20 20  20 20 20 20 20 20 20 42  |s..bB          B|
00004000  49 43 20 20 20 20 20 20  20 57 2c 57 2c 23 31 35  |IC       W,W,#15|
00004010  20 20 20 20 20 20 20 20  20 20 20 20 20 3b f4 20  |             ;. |
00004020  6e 6f 74 20 79 65 74 20  6f 76 65 72 77 72 69 74  |not yet overwrit|
00004030  74 65 6e 0d 1b 6c 26 20  20 20 20 20 20 20 20 20  |ten..l&         |
00004040  20 53 54 52 42 20 20 20  20 20 20 57 2c 5b 42 2c  | STRB      W,[B,|
00004050  54 2c 4c 53 52 20 23 31  5d 0d 1b 76 04 0d 1b 80  |T,LSR #1]..v....|
00004060  46 2e 6e 6f 63 6c 65 61  72 20 20 4c 44 4d 49 41  |F.noclear  LDMIA|
00004070  20 20 20 20 20 28 41 29  21 2c 7b 58 2c 59 2c 5a  |     (A)!,{X,Y,Z|
00004080  7d 20 20 20 20 20 20 20  20 3b f4 20 55 20 63 6f  |}        ;. U co|
00004090  6c 6f 75 72 20 70 72 65  76 69 6f 75 73 20 70 6f  |lour previous po|
000040a0  69 6e 74 0d 1b 8a 20 20  20 20 20 20 20 20 20 20  |int...          |
000040b0  20 43 4d 50 20 20 20 20  20 20 20 58 2c 23 31 3c  | CMP       X,#1<|
000040c0  3c 33 30 0d 1b 94 23 20  20 20 20 20 20 20 20 20  |<30...#         |
000040d0  20 42 4e 45 20 20 20 20  20 20 20 74 72 61 6e 73  | BNE       trans|
000040e0  5f 63 6c 65 61 72 0d 1b  9e 1d 20 20 20 20 20 20  |_clear....      |
000040f0  20 20 20 20 4c 44 52 20  20 20 20 20 20 20 31 33  |    LDR       13|
00004100  2c 53 50 0d 1b a8 25 20  20 20 20 20 20 20 20 20  |,SP...%         |
00004110  20 4c 44 4d 46 44 20 20  20 20 20 31 33 21 2c 7b  | LDMFD     13!,{|
00004120  30 2d 31 32 2c 50 43 7d  0d 1b b2 04 0d 1b bc 08  |0-12,PC}........|
00004130  2e 6f 64 64 0d 1b c6 20  20 20 20 20 20 20 20 20  |.odd...         |
00004140  20 20 80 20 20 20 20 20  20 20 59 2c 57 2c 23 31  |  .       Y,W,#1|
00004150  35 2a 31 36 0d 1b d0 22  20 20 20 20 20 20 20 20  |5*16..."        |
00004160  20 20 43 4d 50 20 20 20  20 20 20 20 59 2c 5a 2c  |  CMP       Y,Z,|
00004170  4c 53 4c 20 23 34 0d 1b  da 1f 20 20 20 20 20 20  |LSL #4....      |
00004180  20 20 20 20 42 4e 45 20  20 20 20 20 20 20 6e 6f  |    BNE       no|
00004190  63 6c 65 61 72 0d 1b e4  22 20 20 20 20 20 20 20  |clear..."       |
000041a0  20 20 20 42 49 43 20 20  20 20 20 20 20 57 2c 57  |   BIC       W,W|
000041b0  2c 23 31 35 2a 31 36 0d  1b ee 26 20 20 20 20 20  |,#15*16...&     |
000041c0  20 20 20 20 20 53 54 52  42 20 20 20 20 20 20 57  |     STRB      W|
000041d0  2c 5b 42 2c 54 2c 4c 53  52 20 23 31 5d 0d 1b f8  |,[B,T,LSR #1]...|
000041e0  46 20 20 20 20 20 20 20  20 20 20 4c 44 4d 49 41  |F          LDMIA|
000041f0  20 20 20 20 20 28 41 29  21 2c 7b 58 2c 59 2c 5a  |     (A)!,{X,Y,Z|
00004200  7d 20 20 20 20 20 20 20  20 3b f4 20 55 20 63 6f  |}        ;. U co|
00004210  6c 6f 75 72 20 70 72 65  76 69 6f 75 73 20 70 6f  |lour previous po|
00004220  69 6e 74 0d 1c 02 20 20  20 20 20 20 20 20 20 20  |int...          |
00004230  20 43 4d 50 20 20 20 20  20 20 20 58 2c 23 31 3c  | CMP       X,#1<|
00004240  3c 33 30 0d 1c 0c 23 20  20 20 20 20 20 20 20 20  |<30...#         |
00004250  20 42 4e 45 20 20 20 20  20 20 20 74 72 61 6e 73  | BNE       trans|
00004260  5f 63 6c 65 61 72 0d 1c  16 1d 20 20 20 20 20 20  |_clear....      |
00004270  20 20 20 20 4c 44 52 20  20 20 20 20 20 20 31 33  |    LDR       13|
00004280  2c 53 50 0d 1c 20 25 20  20 20 20 20 20 20 20 20  |,SP.. %         |
00004290  20 4c 44 4d 46 44 20 20  20 20 20 31 33 21 2c 7b  | LDMFD     13!,{|
000042a0  30 2d 31 32 2c 50 43 7d  0d 1c 2a 04 0d 1c 34 04  |0-12,PC}..*...4.|
000042b0  0d 1c 3e 05 5d 0d 1c 48  05 ed 0d 1c 52 09 51 25  |..>.]..H....R.Q%|
000042c0  3d 50 25 0d 1c 5c 05 e1  0d 1c 66 04 0d 1c 70 04  |=P%..\....f...p.|
000042d0  0d 1c 7a 04 0d 1c 84 04  0d 1c 8e 04 0d ff        |..z...........|
000042de