Home » Archimedes archive » Acorn User » AU 1994-Xmas.adf » Programs » StarInfo/Henry/Fly2
StarInfo/Henry/Fly2
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 1994-Xmas.adf » Programs |
| Filename: | StarInfo/Henry/Fly2 |
| Read OK: | ✔ |
| File size: | 4315 bytes |
| Load address: | 0000 |
| Exec address: | 0000 |
File contents
10REM> Fly
20REM> Writen by Morgan Henry LEN1994
30REM> enry@dcs.qmw.ac.uk
40
50fixed_height%=TRUE
60
70ONERROR MODE0:PRINTREPORT$;" at line ";ERL:END
80MODE15:MODE13
90ORIGIN640,512
100frameL=0:frameR=316:frameT=0:frameB=255
110originX=160:originY=40
120
130size%=128:sizes%=7 :REM size%=128 or 256, sizes%=7 or 8
140fp%=10
150dispx%=16 :REM number of visable patches
160dispy%=dispx%
170yshift%=208 :REM controls centre of rotation
180camdrop%=75 :REM base camera height
190pointmod%=(dispx%*2+2)*12
200max3dpts%=32
210gravity%=196 :REM heli weight
220S%=FALSE :REM shadow on/off
230
240DIMsin% (512+128)*4
250DIMdivtable% 4096*4
260DIMpersp% 512*4
270DIMmap% size%*size%*4
280DIMpoints% (dispx%*2+2)*(dispy%*2+2)*12
290DIMbin% dispy%*64*4
300
310PRINTTAB(0,20);"Left Mouse Button to increase power"
320PRINT"Right Mouse Button to decrease power"
330PROCmisc
340PROCass
350PROCshowmap
360!pointmid=points%+( (dispx%*2+2)*(dispy%)*12+dispx%*12 )
370
380t=1:s=2
390REPEAT
400CLS
410MOVE-640,500:DRAWBY-16*!hpower,0
420CALLupdate
430MOUSETO0,0
440CALLcalcpoints
450CALLdrawpoints
460IF S% CALLdrawshad
470CALLdrawheli
480WAIT:SYS6,112,s:SYS6,113,t:SWAPt,s:SWAP!vdu,vdu!4
490UNTILFALSE
500
510DEFPROCmisc
520PRINT".";
530k=360/512
540FORi%=0TO(512+127)
550sin%!(i%*4)=(1<<fp%)*SINRAD(i%*k)
560NEXT
570PRINT".";
580FORi%=0TO511
590y%=512-i%
600persp%!(i%*4)=(300<<fp%)/y%
610NEXT
620PRINT".";
630FORi%=0TO (dispx%*2+2)*(dispy%*2+2)*3-1
640points%!(i%*4)=&FF<<16
650NEXT
660PRINT".";
670FORi%=0TO dispy%*64-1
680bin%!(i%*4)=0
690NEXT
700PRINT".";
710FORi%=1TO639
720divtable%!(i%*4)=(1<<fp%)/i%
730NEXT
740PRINT".";
750OSCLI("LOAD FlyMap "+STR$~map%)
760ENDPROC
770
780DEFPROCshowmap
790A%=map%
800B%=!vdu
810FORx%=0TOsize%-1:FORy%=0TOsize%-1
820?B%=colours?(!A%AND&FFFF)
830B%+=1:A%+=4
840NEXT
850B%+=320-size%
860NEXT
870Z%=0
880WHILE Z%=0:MOUSE X%,Y%,Z%:ENDWHILE
890ENDPROC
900
910DEFPROCass
920DIMcode% 64000
930
940FORi%=0TO2STEP2
950x=0:y=1:a=2
960sa=3:ca=4
970h=2
980scrx=6:scry=5
990pp=7:b=8
1000p=9:t=10
1010xx=11:yy=12
1020col=14
1030
1040P%=code%
1050[OPTi%
1060.vdu DCD 148:DCD -1
1070.divtableptr DCD divtable%
1080.perspptr DCD persp%
1090.sinptr DCD sin%
1100.cosptr DCD sin%+(128*4)
1110.mapptr DCD map%
1120.pointsptr DCD points%
1130.pointmid DCD 0
1140.binptr DCD bin%
1150
1160.xpos DCD 0
1170.ypos DCD 0
1180.height DCD 0
1190.rot DCD 0
1200
1210.calcpoints
1220STR r14,retsave
1230
1240LDR sa,sinptr ;sin a, cos a
1250LDR ca,cosptr
1260LDR a,rot
1270LDR sa,[sa,a,ASL#2]
1280LDR ca,[ca,a,ASL#2]
1290LDR h,height ;current height
1300ADD h,h,#camdrop%
1310LDR pp,pointsptr
1320LDR b,binptr
1330
1340LDR xx,xpos
1350LDR yy,ypos
1360
1370
1380MVN y,#NOT-dispy%
1390.yloop
1400MVN x,#NOT-dispx%
1410.xloop
1420
1430AND p,xx,#%1111
1440AND t,yy,#%1111
1450RSB p,p,x,ASL#4
1460RSB t,t,y,ASL#4
1470
1480MUL scrx,t,sa
1490RSB scrx,scrx,#0
1500MLA scrx,p,ca,scrx
1510MUL scry,t,ca
1520MLA scry,p,sa,scry ;scrx<<fp%, scry<<fp%
1530MOV scrx,scrx,ASR#6+4 ;shift square size (.XXX)
1540MOV scry,scry,ASR#6+4
1550
1560ADDS scry,scry,#yshift% ;clip squares
1570BMI pointout
1580CMP scry,#(dispy%*16)
1590BGE pointout
1600CMN scrx,#NOT-160
1610BLT pointout
1620CMP scrx,#160
1630BGE pointout
1640
1650ADD p,x,xx,ASR#4 ;get land height
1660ADD t,y,yy,ASR#4
1670AND p,p,#size%-1
1680AND t,t,#size%-1
1690ADD t,p,t,ASL#sizes%
1700
1710LDR p,mapptr
1720LDR t,[p,t,ASL#2]
1730MOV col,t,LSL#16 ;extract colour
1740MOV col,col,LSR#16
1750MOV t,t,ASR#16
1760
1770LDR p,perspptr
1780LDR p,[p,scry,ASL#2] ;perspective k
1790
1800MUL scrx,p,scrx ;apply perspective
1810MOV scrx,scrx,ASR#fp%
1820
1830SUB t,h,t
1840MUL t,p,t
1850MOV t,t,ASR#fp%
1860
1870STMIA pp,{scrx,t,col} ;X,Y,col arrange point storage
1880MOV scry,scry,ASR#4
1890ADD scry,b,scry,ASL#8 ;bin scry * 64*4=256
1900LDR t,[scry] ;t=num in bin
1910ADD t,t,#1
1920STR t,[scry]
1930STR pp,[scry,t,ASL#2]
1940
1950
1960.pointout
1970ADD pp,pp,#12 ;move to next point
1980
1990ADD x,x,#1
2000CMP x,#dispx%
2010BLE xloop
2020
2030ADD pp,pp,#12 ;adjust for border
2040ADD y,y,#1
2050CMP y,#dispy%
2060BLE yloop
2070
2080LDR r0,pointmid ;shadow calculation
2090LDR r3,[r0,#4]
2100STR r3,shadpnts
2110
2120LDR r15,retsave ;MOV r15,r14
2130
2140
2150.drawshad
2160STR r14,retsave
2170MOV r0,#0
2180LDR r1,shadpnts
2190MOV r2,#8
2200ADD r3,r1,#4
2210MOV r4,#0
2220ADD r5,r1,#8
2230MVN r6,#NOT-8
2240ADD r7,r1,#4
2250MOV r8,#0
2260BL quad
2270LDR r15,retsave
2280
2290.shadpnts DCD 0
2300]
2310x1=0:y1=1:x2=2:y2=3:x3=4:y3=5:x4=6:y4=7:col=8
2320ct=9:n=10:p=8
2330bp=11:b=12
2340
2350k=0
2360[OPTi%
2370.retsave DCD 0
2380.drawpoints
2390STR r14,retsave
2400LDR b,binptr
2410
2420MOV ct,#0
2430.binloop
2440ADD bp,b,ct,ASL#8
2450LDR n,[bp]
2460
2470MOVS n,n
2480BEQ nomore
2490.inbin
2500LDR p,[bp,n,ASL#2] ;p ptr to de point
2510LDMIA p,{x1,y1}
2520LDR x2,[p,#12]
2530LDR y2,[p,#16]
2540CMP x2,#&FF<<16
2550LDRNE x3,[p,#pointmod%+12]
2560LDRNE y3,[p,#pointmod%+16]
2570CMPNE x3,#&FF<<16
2580LDRNE x4,[p,#pointmod%]
2590LDRNE y4,[p,#pointmod%+4]
2600CMPNE x4,#&FF<<16
2610
2620LDRNE p,[p,#8]
2630RSBNE r14,ct,#dispy%-1
2640ADDNE p,p,r14
2650ADRNE r14,colours
2660LDRNEB p,[r14,p]
2670BLNE quad
2680
2690
2700SUBS n,n,#1
2710BNE inbin
2720
2730.nomore
2740ADD ct,ct,#1
2750CMP ct,#dispy%
2760BNE binloop
2770
2780
2790.emptybins ;remove bins and delete points
2800MOV k,#&FF<<16
2810
2820MOV ct,#dispy%-1
2830.emptyloop
2840ADD bp,b,ct,ASL#8
2850LDR n,[bp]
2860
2870MOVS n,n
2880BEQ nomore2
2890.outbin
2900LDR p,[bp,n,ASL#2] ;p ptr to de point
2910STR k,[p]
2920
2930SUBS n,n,#1
2940BNE outbin
2950STR n,[bp] ;empty bin
2960
2970.nomore2
2980SUBS ct,ct,#1
2990BPL emptyloop
3000
3010LDR r15,retsave
3020
3030.colours
3040FNdata("FFFEFDFCD3D2D1D02F2E2D2C2C2C2C2C") ;grey
3050FNdata("ABAAA9A8838281800B0A090808080808") ;light blue
3060FNdata("3F3E3D3C131211100706050403020100") ;pink -> red
3070FNdata("5F5E5D5C333231300706050404040404") ;peach -> red
3080FNdata("63626160434241402322212020202020") ;bright green
3090]
3100
3110ax=0:ay=1:bx=2:by=3
3120cx=4:cy=5:dx=6:dy=7
3130col=8:t=9
3140
3150a=10:b=11:c=12
3160n=10
3170q=11:s=12
3180
3190xl=0:xr=1:l=2:r=3:ct=4
3200c1=5:c2=6:c3=7:c4=8
3210o=10:la=11:ra=12
3220
3230sp=13:link=14:pc=15
3240[OPTi%
3250.axd EQUD0
3260.bxd EQUD0
3270.cxd
3280.dxd EQUD0
3290.ab EQUD0
3300.bc EQUD0
3310.dc
3320.cd EQUD0
3330.ac
3340.ad EQUD0
3350.aa EQUD0
3360.dd
3370.bb EQUD0
3380.cc EQUD0
3390.yposq EQUD0
3400.ditabd EQUD divtable%
3410
3420.tri
3430STMFD r13!,{r9-r12,r14}
3440
3450;AND col,col,#&ff
3460ADD col,col,col,LSL#8
3470ADD col,col,col,LSL#16
3480
3490ADD ax,ax,#originX
3500ADD bx,bx,#originX
3510ADD cx,cx,#originX
3520
3530CMP ay,by ;sort
3540MOVGT t,ax
3550MOVGT ax,bx
3560MOVGT bx,t
3570MOVGT t,ay
3580MOVGT ay,by
3590MOVGT by,t
3600CMP by,cy
3610MOVGT t,bx
3620MOVGT bx,cx
3630MOVGT cx,t
3640MOVGT t,by
3650MOVGT by,cy
3660MOVGT cy,t
3670CMP ay,by
3680MOVGT t,ax
3690MOVGT ax,bx
3700MOVGT bx,t
3710MOVGT t,ay
3720MOVGT ay,by
3730MOVGT by,t
3740
3750
3760ADD t,ay,#originY
3770STR t,yposq
3780
3790
3800STR ax,axd
3810STR bx,bxd
3820STR cx,cxd
3830
3840LDR q,ditabd
3850SUB t,bx,ax
3860SUB n,by,ay
3870STR n,aa
3880LDR n,[q,n,ASL#2]
3890MUL n,t,n
3900STR n,ab
3910
3920SUB t,cx,bx
3930SUB n,cy,by
3940STR n,bb
3950LDR n,[q,n,ASL#2]
3960MUL n,t,n
3970STR n,bc
3980
3990SUB t,cx,ax
4000SUB n,cy,ay
4010LDR n,[q,n,ASL#2]
4020MUL n,t,n
4030STR n,ac
4040
4050LDR o,vdu
4060ADD t,ay,#originY
4070ADD t,t,t,ASL#2
4080ADD o,o,t,ASL#6
4090
4100MOV c1,c4
4110MOV c2,c4
4120MOV c3,c4
4130
4140LDR ct,aa
4150CMP ct,#0
4160LDR t,axd
4170MOV l,t,ASL#fp%
4180MOV r,t,ASL#fp%
4190LDR la,ac
4200ADD l,l,#1<<(fp%-1)
4210LDR ra,ab
4220ADD r,r,#1<<(fp%-1)
4230BLNE piece
4240
4250LDR ct,bb
4260CMP ct,#0
4270LDR t,bxd
4280MOV r,t,ASL#fp%
4290LDR ra,bc
4300ADD r,r,#1<<(fp%-1)
4310BLNE piece
4320LDMFD r13!,{r9-r12,r15}^
4330
4340.quad ;based on a routine by Jan VDU
4350STMFD r13!,{r9-r12,r14}
4360
4370;AND col,col,#&ff
4380ADD col,col,col,LSL#8
4390ADD col,col,col,LSL#16
4400
4410ADD ax,ax,#originX
4420ADD bx,bx,#originX
4430ADD cx,cx,#originX
4440ADD dx,dx,#originX
4450
4460MOV t,ay ;find smallest (top) y
4470CMP t,by
4480MOVGT t,by
4490CMP t,cy
4500MOVGT t,cy
4510CMP t,dy
4520MOVGT t,dy
4530
4540.order
4550CMP t,ay
4560BEQ ok
4570FNrot
4580B order
4590.ok
4600
4610ADD t,ay,#originY
4620STR t,yposq
4630
4640CMP by,dy
4650MOVGT t,bx
4660MOVGT s,by
4670MOVGT bx,dx
4680MOVGT by,dy
4690MOVGT dx,t
4700MOVGT dy,s
4710
4720CMP cy,dy
4730BGT diamond
4740
4750CMP cy,by ;DUBIOUS
4760MOVLT cy,by ;SOLUTION
4770
4780STR ax,axd
4790STR bx,bxd
4800STR cx,cxd
4810
4820LDR q,ditabd
4830SUB t,bx,ax
4840SUB n,by,ay
4850STR n,aa
4860LDR n,[q,n,ASL#2]
4870MUL n,t,n
4880STR n,ab
4890SUB t,dx,ax
4900SUB n,dy,ay
4910LDR n,[q,n,ASL#2]
4920MUL n,t,n
4930STR n,ad
4940SUB t,cx,bx
4950SUB n,cy,by
4960STR n,bb
4970LDR n,[q,n,ASL#2]
4980MUL n,t,n
4990STR n,bc
5000SUB t,dx,cx
5010SUB n,dy,cy
5020STR n,cc
5030LDR n,[q,n,ASL#2]
5040MUL n,t,n
5050STR n,cd
5060
5070LDR o,vdu
5080ADD t,ay,#originY
5090ADD t,t,t,ASL#2
5100ADD o,o,t,ASL#6
5110
5120MOV c1,c4
5130MOV c2,c4
5140MOV c3,c4
5150
5160LDR ct,aa
5170CMP ct,#0
5180LDR t,axd
5190MOV l,t,ASL#fp%
5200MOV r,t,ASL#fp%
5210LDR la,ad
5220ADD l,l,#1<<(fp%-1)
5230LDR ra,ab
5240ADD r,r,#1<<(fp%-1)
5250BLNE piece
5260
5270LDR ct,bb
5280CMP ct,#0
5290LDR t,bxd
5300MOV r,t,ASL#fp%
5310LDR ra,bc
5320ADD r,r,#1<<(fp%-1)
5330BLNE piece
5340
5350LDR ct,cc
5360CMP ct,#0
5370LDR t,cxd
5380MOV r,t,ASL#fp%
5390LDR ra,cd
5400ADD r,r,#1<<(fp%-1)
5410BLNE piece
5420LDMFD r13!,{r9-r12,r15}^
5430
5440
5450.diamond
5460STR ax,axd
5470STR bx,bxd
5480STR dx,dxd
5490
5500LDR q,ditabd
5510SUB t,bx,ax
5520SUB n,by,ay
5530STR n,aa
5540LDR n,[q,n,ASL#2]
5550MUL n,t,n
5560STR n,ab
5570
5580SUB t,dx,ax
5590SUB n,dy,ay
5600LDR n,[q,n,ASL#2]
5610MUL n,t,n
5620STR n,ad
5630
5640SUB t,cx,bx
5650SUB n,cy,by
5660LDR n,[q,n,ASL#2]
5670MUL n,t,n
5680STR n,bc
5690
5700SUB t,cx,dx
5710SUB n,cy,dy
5720STR n,cc
5730LDR n,[q,n,ASL#2]
5740MUL n,t,n
5750STR n,dc
5760
5770SUB n,dy,by
5780STR n,dd
5790
5800LDR o,vdu
5810ADD t,ay,#originY
5820ADD t,t,t,ASL#2
5830ADD o,o,t,ASL#6
5840
5850MOV c1,c4
5860MOV c2,c4
5870MOV c3,c4
5880
5890LDR ct,aa
5900CMP ct,#0
5910LDR t,axd
5920MOV l,t,ASL#fp%
5930MOV r,t,ASL#fp%
5940LDR la,ad
5950ADD l,l,#1<<(fp%-1)
5960LDR ra,ab
5970ADD r,r,#1<<(fp%-1)
5980BLNE piece
5990
6000LDR ct,dd
6010CMP ct,#0
6020LDR t,bxd
6030MOV r,t,ASL#fp%
6040LDR ra,bc
6050ADD r,r,#1<<(fp%-1)
6060BLNE piece
6070
6080LDR ct,cc
6090CMP ct,#0
6100LDR t,dxd
6110MOV l,t,ASL#fp%
6120LDR la,dc
6130ADD l,l,#1<<(fp%-1)
6140BLNE piece
6150LDMFD r13!,{r9-r12,r15}^
6160
6170
6180.piece ;STMFD r13!,{r14}
6190.lo
6200LDR t,yposq
6210ADD t,t,#1
6220STR t,yposq
6230CMP t,#frameT
6240BLE endspan
6250CMP t,#frameB
6260MOVGT r15,r14 ;LDMFDGT r13!,{r15}
6270
6280CMP l,r
6290MOVLT xl,l,ASR#fp%
6300MOVLT xr,r,ASR#fp%
6310MOVGE xl,r,ASR#fp%
6320MOVGE xr,l,ASR#fp%
6330
6340CMP xl,#frameR
6350BGT endspan
6360CMP xr,#frameL
6370BLT endspan
6380CMP xl,#frameL
6390MOVLT xl,#frameL
6400CMP xr,#frameR
6410MOVGT xr,#frameR
6420
6430ADD xl,o,xl
6440ADD xr,o,xr
6450
6460SUBS t,xr,xl
6470BEQ endspan
6480CMP t,#2
6490STRLSB c1,[xl]
6500STRLSB c1,[xr,#-1]
6510BLS endspan
6520TST xl,#%01
6530STRNEB c1,[xl],#1
6540TST xl,#%10
6550STRNEB c2,[xl],#1
6560STRNEB c1,[xl],#1
6570TST xr,#%01
6580STRNEB c2,[xr,#-1]!
6590TST xr,#%10
6600STRNEB c1,[xr,#-1]!
6610STRNEB c2,[xr,#-1]!
6620SUBS t,xr,xl
6630MOVS t,t,LSR#3
6640STRCS c1,[xl],#4
6650MOVS t,t,LSR#1
6660STMCSIA (xl)!,{c1,c2}
6670
6680ADR xr,base
6690SUB pc,xr,t,LSL#2
6700FNvulc
6710.base
6720
6730.endspan
6740ADD l,l,la
6750ADD r,r,ra
6760ADD o,o,#320
6770SUBS ct,ct,#1
6780BNE lo
6790MOV r15,r14 ;LDMFD r13!,{r15}
6800]
6810xa=0:ya=1:za=2
6820x=0:y=1:z=2
6830sxa=3:sya=4:sza=5
6840cxa=6:cya=7:cza=8
6850n=9:p=10
6860i=10
6870pnts=11:fs=11
6880t1=12:t2=14
6890
6900x1=0:y1=1:x2=2:y2=3:x3=4:y3=5:x4=6:y4=7:col=8
6910vs=12
6920
6930[OPTi%
6940.helip DCD 24
6950DCD -5 :DCD 2 :DCD -14 ;0
6960DCD -7 :DCD -7 :DCD -4
6970DCD -10:DCD 4 :DCD -1
6980DCD -9:DCD 4 :DCD 4
6990DCD -5 :DCD -6 :DCD 6
7000DCD -6 :DCD 0 :DCD 10 ;5
7010DCD 6 :DCD 0 :DCD 10
7020DCD 5 :DCD -6 :DCD 6
7030DCD 9 :DCD 4 :DCD 4
7040DCD 10 :DCD 4 :DCD -1
7050DCD 7 :DCD -7 :DCD -4
7060DCD 5 :DCD 2 :DCD -14 ;11
7070
7080DCD -3 :DCD 5 :DCD -12
7090DCD -6 :DCD 6 :DCD -2
7100DCD -5 :DCD 6 :DCD 7 ;14
7110DCD 5 :DCD 6 :DCD 7
7120DCD 6 :DCD 6 :DCD -2
7130DCD 3 :DCD 5 :DCD -12
7140
7150DCD 0 :DCD 4 :DCD 8 ;18
7160DCD -2 :DCD 0 :DCD 10
7170DCD -1 :DCD 0 :DCD 44
7180DCD 0 :DCD 2 :DCD 40
7190DCD 2 :DCD 0 :DCD 10
7200DCD 1 :DCD 0 :DCD 44
7210
7220
7230.helif DCD 22
7240DCD &07:DCD &00010A0B
7250DCD &13:DCD &0104070A
7260DCD &13:DCD &04050607
7270DCD &11:DCD &FF000201
7280DCD &11:DCD &FF0B0A09
7290DCD &10:DCD &02030401
7300DCD &10:DCD &0A070809
7310DCD &12:DCD &FF030504
7320DCD &12:DCD &FF070608
7330
7340DCD &3F:DCD &000B110C
7350DCD &3C:DCD &0C11100D
7360DCD &13:DCD &0D100F0E
7370DCD &12:DCD &0E0F0605
7380
7390DCD &07:DCD &000C0D02
7400DCD &07:DCD &0B091011
7410DCD &11:DCD &020D0E03
7420DCD &11:DCD &1009080F
7430DCD &10:DCD &FF030E05
7440DCD &10:DCD &FF0F0806
7450
7460DCD &12:DCD &16171512 ;tail
7470DCD &12:DCD &13121514
7480DCD &13:DCD &13141716
7490
7500
7510
7520
7530.hrot DCD 0
7540.hpitch DCD 0
7550.hrol DCD 0
7560.hx DCD 256<<fp%
7570.hy DCD 300<<fp%
7580.hheight DCD 0
7590.hdx DCD 0
7600.hdy DCD 0
7610.hdz DCD 0
7620.hpower DCD -16
7630
7640.control
7650STMFD r13!,{r14}
7660BL update
7670BL calcpoints
7680BL drawpoints
7690BL drawheli
7700LDMFD r13!,{r15}
7710
7720.update
7730STMFD r13!,{r14}
7740SWI "OS_Mouse"
7750CMP r2,#1
7760LDRGE r3,hpower
7770ADDEQ r3,r3,#2
7780STREQ r3,hpower
7790CMP r2,#4
7800SUBEQ r3,r3,#2
7810STREQ r3,hpower
7820
7830LDR r9,hpitch
7840ADD r9,r9,r1,ASR#1
7850MOV r9,r9,LSL#23
7860MOV r9,r9,LSR#23
7870STR r9,hpitch
7880
7890LDR r3,hrot
7900SUB r3,r3,r0,ASR#2
7910MOV r3,r3,LSL#23
7920MOV r3,r3,LSR#23
7930STR r3,hrot
7940STR r3,rot
7950
7960LDR r4,hpower
7970LDR r5,sinptr
7980LDR r6,cosptr
7990
8000LDR r7,[r5,r9,ASL#2]
8010LDR r8,[r6,r9,ASL#2]
8020MUL r8,r4,r8 ;verticle power
8030MUL r4,r7,r4 ;forward power
8040MOV r4,r4,ASR#fp%
8050;MOV r8,r8,ASR#fp%
8060
8070LDR r7,hdz ;alter dz
8080SUB r7,r7,r8,ASR#6
8090SUB r7,r7,#gravity%
8100STR r7,hdz
8110LDR r8,hheight
8120]
8130IF NOT fixed_height% THEN
8140[OPTi%
8150ADD r8,r8,r7
8160]
8170ENDIF
8180[OPTi%
8190STR r8,hheight
8200
8210MOV r8,r8,ASR#fp%+1 ;figure out cam angle
8220ADD r8,r8,#camdrop%
8230STR r8,height
8240
8250LDR r5,[r5,r3,ASL#2]
8260LDR r6,[r6,r3,ASL#2]
8270MUL r5,r4,r5
8280MUL r6,r4,r6
8290
8300LDR r7,hdx
8310LDR r8,hdy
8320ADD r7,r7,r5,ASR#6
8330ADD r8,r8,r6,ASR#6
8340MOV r9,r7,ASR#4 ;dec dx/dy (air res)
8350MOV r10,r8,ASR#4
8360SUB r7,r7,r9
8370SUB r8,r8,r10
8380STR r7,hdx
8390STR r8,hdy
8400
8410LDR r9,hx
8420LDR r10,hy
8430ADD r9,r9,r7
8440ADD r10,r10,r8
8450STR r9,hx
8460STR r10,hy
8470MOV r9,r9,ASR#fp%
8480MOV r10,r10,ASR#fp%
8490STR r9,xpos
8500STR r10,ypos
8510
8520
8530LDMFD r13!,{r15}
8540
8550.drawheli
8560STMFD r13!,{r14}
8570ADR r11,helip ;drawheli
8580ADR r12,helif
8590LDR r0,hpitch
8600MOV r1,#0
8610MOV r2,#0
8620MOV r3,#0
8630LDR r6,height
8640LDR r7,hheight
8650SUB r4,r6,r7,ASR#fp%
8660MOV r5,#0
8670BL drawobj
8680LDMFD r13!,{r15}
8690
8700.objx DCD 0
8710.objy DCD 0
8720.objz DCD 0
8730.faces DCD 0
8740.drawobj ;r0=xa, r1=ya, r2=za, r11=pntptr, r12 faceptr
8750STR r14,retsave ;r3=x, r4=y, r5=z
8760;STR r3,objx
8770STR r4,objy
8780;STR r5,objz
8790STR r12,faces
8800
8810LDR p,sinptr
8820LDR sxa,[p,xa,ASL#2]
8830LDR sya,[p,ya,ASL#2]
8840LDR sza,[p,za,ASL#2]
8850LDR p,cosptr
8860LDR cxa,[p,xa,ASL#2]
8870LDR cya,[p,ya,ASL#2]
8880LDR cza,[p,za,ASL#2]
8890
8900ADR i,image
8910LDR n,[pnts],#4 ;num of points
8920
8930.pobjloop
8940LDMIA pnts !,{x,y,z}
8950MUL t2,z,sxa ;rot x
8960RSB t2,t2,#0
8970MLA t1,y,cxa,t2
8980MUL t2,y,sxa
8990MLA t2,z,cxa,t2
9000MOV y,t1,ASR#fp%
9010MOV z,t2,ASR#fp%
9020
9030MUL t2,z,sya ;rot y
9040RSB t2,t2,#0
9050MLA t1,x,cya,t2
9060MUL t2,x,sya
9070MLA t2,z,cya,t2
9080MOV x,t1,ASR#fp%
9090MOV z,t2,ASR#fp%
9100
9110MUL t2,y,sza ;rot z
9120RSB t2,t2,#0
9130MLA t1,x,cza,t2
9140MUL t2,x,sza
9150MLA t2,y,cza,t2
9160MOV x,t1,ASR#fp%
9170MOV y,t2,ASR#fp%
9180
9190LDR t1,objy ;adjust coords
9200;LDR t2,objz
9210ADD y,y,t1
9220;ADD z,z,t2
9230ADD z,z,#yshift%
9240
9250LDR t1,perspptr ;apply perspective
9260LDR t1,[t1,z,ASL#2]
9270MUL x,t1,x
9280MUL y,t1,y
9290MOV x,x,ASR#fp%
9300MOV y,y,ASR#fp%
9310STMIA i !,{x,y}
9320;BL plot
9330
9340SUBS n,n,#1
9350BNE pobjloop
9360
9370LDR fs,faces ;draw polies
9380LDR n,[fs],#4
9390ADR i,image
9400
9410.fobjloop
9420LDMIA fs !,{col,vs} ;load colour and verts (T|4;3;2;1)
9430
9440AND t2,vs,#&FF
9450ADD t2,i,t2,LSL#3
9460LDMIA t2,{x1,y1}
9470
9480MOV vs,vs,LSR#8
9490AND t2,vs,#&FF
9500ADD t2,i,t2,LSL#3
9510LDMIA t2,{x2,y2}
9520
9530MOV vs,vs,LSR#8
9540AND t2,vs,#&FF
9550ADD t2,i,t2,LSL#3
9560LDMIA t2,{x3,y3}
9570
9580SUB y4,x2,x1 ;clip backwards (x4,y4-temps)
9590SUB x4,y3,y2
9600MUL x4,y4,x4
9610SUB y4,y2,y1
9620SUB t2,x3,x2
9630MUL y4,t2,y4
9640CMP x4,y4
9650BLT ycanne ;y'canne see it
9660
9670MOV vs,vs,LSR#8
9680CMP vs,#&FF ;teST, &FF-tri
9690ANDNE t2,vs,#&FF
9700ADDNE t2,i,t2,LSL#3
9710LDMNEIA t2,{x4,y4}
9720BLNE quad
9730BLEQ tri
9740
9750.ycanne
9760SUBS n,n,#1
9770BNE fobjloop
9780
9790LDR r15,retsave ;MOV r15,r14
9800.image FNgap(max3dpts%*8)
9810
9820
9830]NEXT
9840PRINTP%-code%
9850SYS"OS_ReadVduVariables",vdu,vdu
9860vdu!4=!vdu+256*320
9870ENDPROC
9880
9890DEFFNvulc
9900FORj%=1TO20
9910[OPTi%
9920STMIA (xl)!,{c1,c2,c3,c4}
9930]NEXT
9940=""
9950
9960DEFFNrot
9970[OPTi%
9980MOV s,ax
9990MOV ax,bx
10000MOV bx,cx
10010MOV cx,dx
10020MOV dx,s
10030MOV s,ay
10040MOV ay,by
10050MOV by,cy
10060MOV cy,dy
10070MOV dy,s
10080]
10090=0
10100
10110DEFFNgap(g%)
10120P%=P%+g%
10130=0
10140
10150DEFFNdata(a$)
10160FORg%=1 TO LENa$-1 STEP2
10170?P%=EVAL("&"+MID$(a$,g%,2))
10180P%?1=EVAL("&"+MID$(a$,g%,2))
10190P%+=2
10200NEXT
10210=0
�> Fly
#�> Writen by Morgan Henry �1994
�> enry@dcs.qmw.ac.uk
(
2fixed_height%=�
<
F� �0:�$;" at line ";�:�
P�15:�13
Z
ȑ640,512
d+frameL=0:frameR=316:frameT=0:frameB=255
noriginX=160:originY=40
x
�:size%=128:sizes%=7 :� size%=128 or 256, sizes%=7 or 8
�
fp%=10
�4dispx%=16 :� number of visable patches
�dispy%=dispx%
�6yshift%=208 :� controls centre of rotation
�-camdrop%=75 :� base camera height
�pointmod%=(dispx%*2+2)*12
�max3dpts%=32
�&gravity%=196 :� heli weight
�$S%=� :� shadow on/off
�
��sin% (512+128)*4
��divtable% 4096*4
�persp% 512*4
�map% size%*size%*4
)�points% (dispx%*2+2)*(dispy%*2+2)*12
"�bin% dispy%*64*4
,
61�0,20);"Left Mouse Button to increase power"
@+�"Right Mouse Button to decrease power"
J �misc
T�ass
^�showmap
h<!pointmid=points%+( (dispx%*2+2)*(dispy%)*12+dispx%*12 )
r
|t=1:s=2
��
��
��-640,500:�BY-16*!hpower,0
��update
�
ȗ�0,0
��calcpoints
��drawpoints
�� S% �drawshad
�
�drawheli
�-Ȗ:ș6,112,s:ș6,113,t:Ȕt,s:Ȕ!vdu,vdu!4
���
�
�
��misc
�".";
k=360/512
�i%=0�(512+127)
&!sin%!(i%*4)=(1<<fp%)*��(i%*k)
0�
: �".";
D
�i%=0�511
N
y%=512-i%
Xpersp%!(i%*4)=(300<<fp%)/y%
b�
l �".";
v(�i%=0� (dispx%*2+2)*(dispy%*2+2)*3-1
�points%!(i%*4)=&FF<<16
��
� �".";
��i%=0� dispy%*64-1
�bin%!(i%*4)=0
��
� �".";
�
�i%=1�639
� divtable%!(i%*4)=(1<<fp%)/i%
��
� �".";
��("LOAD FlyMap "+�~map%)
��
��showmap
A%=map%
B%=!vdu
*�x%=0�size%-1:�y%=0�size%-1
4?B%=colours?(!A%�&FFFF)
>B%+=1:A%+=4
H�
RB%+=320-size%
\�
fZ%=0
pȕ Z%=0:ȗ X%,Y%,Z%:�
z�
�
� ��ass
��code% 64000
�
�
�i%=0�2�2
�x=0:y=1:a=2
�
sa=3:ca=4
�h=2
�scrx=6:scry=5
�pp=7:b=8
�p=9:t=10
�xx=11:yy=12
�
col=14
P%=code%
[OPTi%
$.vdu DCD 148:DCD -1
..divtableptr DCD divtable%
8.perspptr DCD persp%
B.sinptr DCD sin%
L.cosptr DCD sin%+(128*4)
V.mapptr DCD map%
`.pointsptr DCD points%
j.pointmid DCD 0
t.binptr DCD bin%
~
�.xpos DCD 0
�.ypos DCD 0
�.height DCD 0
�.rot DCD 0
�
�.calcpoints
�STR r14,retsave
�
�,LDR sa,sinptr ;sin a, cos a
�LDR ca,cosptr
�
LDR a,rot
�LDR sa,[sa,a,ASL#2]
LDR ca,[ca,a,ASL#2]
.LDR h,height ;current height
ADD h,h,#camdrop%
LDR pp,pointsptr
(LDR b,binptr
2
<LDR xx,xpos
FLDR yy,ypos
P
Z
dMVN y,#�-dispy%
n
.yloop
xMVN x,#�-dispx%
�
.xloop
�
�� p,xx,#%1111
�� t,yy,#%1111
�RSB p,p,x,ASL#4
�RSB t,t,y,ASL#4
�
�MUL scrx,t,sa
�RSB scrx,scrx,#0
�MLA scrx,p,ca,scrx
�MUL scry,t,ca
�5MLA scry,p,sa,scry ;scrx<<fp%, scry<<fp%
�9MOV scrx,scrx,ASR#6+4 ;shift square size (.XXX)
MOV scry,scry,ASR#6+4
-ADDS scry,scry,#yshift% ;clip squares
"BMI pointout
,CMP scry,#(dispy%*16)
6BGE pointout
@CMN scrx,#�-160
JBLT pointout
TCMP scrx,#160
^BGE pointout
h
r.ADD p,x,xx,ASR#4 ;get land height
|ADD t,y,yy,ASR#4
�� p,p,#size%-1
�� t,t,#size%-1
�ADD t,p,t,ASL#sizes%
�
�LDR p,mapptr
�LDR t,[p,t,ASL#2]
�-MOV col,t,LSL#16 ;extract colour
�MOV col,col,LSR#16
�MOV t,t,ASR#16
�
�LDR p,perspptr
�,LDR p,[p,scry,ASL#2] ;perspective k
�
0MUL scrx,p,scrx ;apply perspective
MOV scrx,scrx,ASR#fp%
&
SUB t,h,t
0
MUL t,p,t
:MOV t,t,ASR#fp%
D
N>STMIA pp,{scrx,t,col} ;X,Y,col arrange point storage
XMOV scry,scry,ASR#4
b4ADD scry,b,scry,ASL#8 ;bin scry * 64*4=256
l-LDR t,[scry] ;t=num in bin
vADD t,t,#1
�STR t,[scry]
�STR pp,[scry,t,ASL#2]
�
�
�
.pointout
�0ADD pp,pp,#12 ;move to next point
�
�ADD x,x,#1
�CMP x,#dispx%
�
BLE xloop
�
�.ADD pp,pp,#12 ;adjust for border
�ADD y,y,#1
CMP y,#dispy%
BLE yloop
-LDR r0,pointmid ;shadow calculation
*LDR r3,[r0,#4]
4STR r3,shadpnts
>
H&LDR r15,retsave ;MOV r15,r14
R
\
f
.drawshad
pSTR r14,retsave
z
MOV r0,#0
�LDR r1,shadpnts
�
MOV r2,#8
�ADD r3,r1,#4
�
MOV r4,#0
�ADD r5,r1,#8
�MVN r6,#�-8
�ADD r7,r1,#4
�
MOV r8,#0
�BL quad
�LDR r15,retsave
�
�.shadpnts DCD 0
�]
1x1=0:y1=1:x2=2:y2=3:x3=4:y3=5:x4=6:y4=7:col=8
ct=9:n=10:p=8
bp=11:b=12
$
.k=0
8
[OPTi%
B.retsave DCD 0
L.drawpoints
VSTR r14,retsave
`LDR b,binptr
j
t
MOV ct,#0
~.binloop
�ADD bp,b,ct,ASL#8
�LDR n,[bp]
�
�MOVS n,n
�BEQ nomore
�
.inbin
�1LDR p,[bp,n,ASL#2] ;p ptr to de point
�LDMIA p,{x1,y1}
�LDR x2,[p,#12]
�LDR y2,[p,#16]
�CMP x2,#&FF<<16
�LDRNE x3,[p,#pointmod%+12]
LDRNE y3,[p,#pointmod%+16]
CMPNE x3,#&FF<<16
LDRNE x4,[p,#pointmod%]
LDRNE y4,[p,#pointmod%+4]
(CMPNE x4,#&FF<<16
2
<LDRNE p,[p,#8]
FRSBNE r14,ct,#dispy%-1
PADDNE p,p,r14
ZADRNE r14,colours
dLDRNEB p,[r14,p]
n
BLNE quad
x
�
�SUBS n,n,#1
�
BNE inbin
�
�.nomore
�ADD ct,ct,#1
�CMP ct,#dispy%
�BNE binloop
�
�
�=.emptybins ;remove bins and delete points
�MOV k,#&FF<<16
�
MOV ct,#dispy%-1
.emptyloop
ADD bp,b,ct,ASL#8
"LDR n,[bp]
,
6MOVS n,n
@BEQ nomore2
J.outbin
T1LDR p,[bp,n,ASL#2] ;p ptr to de point
^
STR k,[p]
h
rSUBS n,n,#1
|BNE outbin
�)STR n,[bp] ;empty bin
�
�.nomore2
�SUBS ct,ct,#1
�BPL emptyloop
�
�LDR r15,retsave
�
�.colours
�3�data("FFFEFDFCD3D2D1D02F2E2D2C2C2C2C2C") ;grey
�9�data("ABAAA9A8838281800B0A090808080808") ;light blue
�:�data("3F3E3D3C131211100706050403020100") ;pink -> red
�;�data("5F5E5D5C333231300706050404040404") ;peach -> red
;�data("63626160434241402322212020202020") ;bright green
]
&ax=0:ay=1:bx=2:by=3
0cx=4:cy=5:dx=6:dy=7
:
col=8:t=9
D
Na=10:b=11:c=12
Xn=10
b
q=11:s=12
l
vxl=0:xr=1:l=2:r=3:ct=4
�c1=5:c2=6:c3=7:c4=8
�o=10:la=11:ra=12
�
�sp=13:link=14:pc=15
�
[OPTi%
�.axd EQUD0
�.bxd EQUD0
�.cxd
�.dxd EQUD0
�
.ab EQUD0
�
.bc EQUD0
�.dc
�
.cd EQUD0
.ac
.ad EQUD0
.aa EQUD0
.dd
*
.bb EQUD0
4
.cc EQUD0
>.yposq EQUD0
H.ditabd EQUD divtable%
R
\.tri
fSTMFD r13!,{r9-r12,r14}
p
z;� col,col,#&ff
�ADD col,col,col,LSL#8
�ADD col,col,col,LSL#16
�
�ADD ax,ax,#originX
�ADD bx,bx,#originX
�ADD cx,cx,#originX
�
�CMP ay,by ;sort
�MOVGT t,ax
�MOVGT ax,bx
�MOVGT bx,t
�MOVGT t,ay
�MOVGT ay,by
MOVGT by,t
CMP by,cy
MOVGT t,bx
$MOVGT bx,cx
.MOVGT cx,t
8MOVGT t,by
BMOVGT by,cy
LMOVGT cy,t
V
CMP ay,by
`MOVGT t,ax
jMOVGT ax,bx
tMOVGT bx,t
~MOVGT t,ay
�MOVGT ay,by
�MOVGT by,t
�
�
�ADD t,ay,#originY
�STR t,yposq
�
�
�STR ax,axd
�STR bx,bxd
�STR cx,cxd
�
LDR q,ditabd
SUB t,bx,ax
SUB n,by,ay
STR n,aa
(LDR n,[q,n,ASL#2]
2
MUL n,t,n
<STR n,ab
F
PSUB t,cx,bx
ZSUB n,cy,by
dSTR n,bb
nLDR n,[q,n,ASL#2]
x
MUL n,t,n
�STR n,bc
�
�SUB t,cx,ax
�SUB n,cy,ay
�LDR n,[q,n,ASL#2]
�
MUL n,t,n
�STR n,ac
�
�
LDR o,vdu
�ADD t,ay,#originY
�ADD t,t,t,ASL#2
�ADD o,o,t,ASL#6
�
MOV c1,c4
MOV c2,c4
MOV c3,c4
"
,
LDR ct,aa
6
CMP ct,#0
@
LDR t,axd
JMOV l,t,ASL#fp%
TMOV r,t,ASL#fp%
^
LDR la,ac
hADD l,l,#1<<(fp%-1)
r
LDR ra,ab
|ADD r,r,#1<<(fp%-1)
�BLNE piece
�
�
LDR ct,bb
�
CMP ct,#0
�
LDR t,bxd
�MOV r,t,ASL#fp%
�
LDR ra,bc
�ADD r,r,#1<<(fp%-1)
�BLNE piece
�LDMFD r13!,{r9-r12,r15}^
�
�9.quad ;based on a routine by Jan �
�STMFD r13!,{r9-r12,r14}
;� col,col,#&ff
ADD col,col,col,LSL#8
&ADD col,col,col,LSL#16
0
:ADD ax,ax,#originX
DADD bx,bx,#originX
NADD cx,cx,#originX
XADD dx,dx,#originX
b
l$MOV t,ay ;find smallest (top) y
vCMP t,by
�MOVGT t,by
�CMP t,cy
�MOVGT t,cy
�CMP t,dy
�MOVGT t,dy
�
�
.order
�CMP t,ay
�
BEQ ok
��rot
�B order
�.ok
�
ADD t,ay,#originY
STR t,yposq
CMP by,dy
*MOVGT t,bx
4MOVGT s,by
>MOVGT bx,dx
HMOVGT by,dy
RMOVGT dx,t
\MOVGT dy,s
f
p
CMP cy,dy
zBGT diamond
�
�$CMP cy,by ;DUBIOUS
�%MOVLT cy,by ;SOLUTION
�
�STR ax,axd
�STR bx,bxd
�STR cx,cxd
�
�LDR q,ditabd
�SUB t,bx,ax
�SUB n,by,ay
�STR n,aa
�LDR n,[q,n,ASL#2]
MUL n,t,n
STR n,ab
SUB t,dx,ax
$SUB n,dy,ay
.LDR n,[q,n,ASL#2]
8
MUL n,t,n
BSTR n,ad
LSUB t,cx,bx
VSUB n,cy,by
`STR n,bb
jLDR n,[q,n,ASL#2]
t
MUL n,t,n
~STR n,bc
�SUB t,dx,cx
�SUB n,dy,cy
�STR n,cc
�LDR n,[q,n,ASL#2]
�
MUL n,t,n
�STR n,cd
�
�
LDR o,vdu
�ADD t,ay,#originY
�ADD t,t,t,ASL#2
�ADD o,o,t,ASL#6
�
MOV c1,c4
MOV c2,c4
MOV c3,c4
(
LDR ct,aa
2
CMP ct,#0
<
LDR t,axd
FMOV l,t,ASL#fp%
PMOV r,t,ASL#fp%
Z
LDR la,ad
dADD l,l,#1<<(fp%-1)
n
LDR ra,ab
xADD r,r,#1<<(fp%-1)
�BLNE piece
�
�
LDR ct,bb
�
CMP ct,#0
�
LDR t,bxd
�MOV r,t,ASL#fp%
�
LDR ra,bc
�ADD r,r,#1<<(fp%-1)
�BLNE piece
�
�
LDR ct,cc
�
CMP ct,#0
�
LDR t,cxd
MOV r,t,ASL#fp%
LDR ra,cd
ADD r,r,#1<<(fp%-1)
"BLNE piece
,LDMFD r13!,{r9-r12,r15}^
6
@
J.diamond
TSTR ax,axd
^STR bx,bxd
hSTR dx,dxd
r
|LDR q,ditabd
�SUB t,bx,ax
�SUB n,by,ay
�STR n,aa
�LDR n,[q,n,ASL#2]
�
MUL n,t,n
�STR n,ab
�
�SUB t,dx,ax
�SUB n,dy,ay
�LDR n,[q,n,ASL#2]
�
MUL n,t,n
�STR n,ad
�
SUB t,cx,bx
SUB n,cy,by
LDR n,[q,n,ASL#2]
&
MUL n,t,n
0STR n,bc
:
DSUB t,cx,dx
NSUB n,cy,dy
XSTR n,cc
bLDR n,[q,n,ASL#2]
l
MUL n,t,n
vSTR n,dc
�
�SUB n,dy,by
�STR n,dd
�
�
LDR o,vdu
�ADD t,ay,#originY
�ADD t,t,t,ASL#2
�ADD o,o,t,ASL#6
�
�
MOV c1,c4
�
MOV c2,c4
�
MOV c3,c4
�
LDR ct,aa
CMP ct,#0
LDR t,axd
MOV l,t,ASL#fp%
*MOV r,t,ASL#fp%
4
LDR la,ad
>ADD l,l,#1<<(fp%-1)
H
LDR ra,ab
RADD r,r,#1<<(fp%-1)
\BLNE piece
f
p
LDR ct,dd
z
CMP ct,#0
�
LDR t,bxd
�MOV r,t,ASL#fp%
�
LDR ra,bc
�ADD r,r,#1<<(fp%-1)
�BLNE piece
�
�
LDR ct,cc
�
CMP ct,#0
�
LDR t,dxd
�MOV l,t,ASL#fp%
�
LDR la,dc
�ADD l,l,#1<<(fp%-1)
�BLNE piece
LDMFD r13!,{r9-r12,r15}^
$.piece ;STMFD r13!,{r14}
..lo
8LDR t,yposq
BADD t,t,#1
LSTR t,yposq
VCMP t,#frameT
`BLE endspan
jCMP t,#frameB
t/MOVGT r15,r14 ;LDMFDGT r13!,{r15}
~
�CMP l,r
�MOVLT xl,l,ASR#fp%
�MOVLT xr,r,ASR#fp%
�MOVGE xl,r,ASR#fp%
�MOVGE xr,l,ASR#fp%
�
�CMP xl,#frameR
�BGT endspan
�CMP xr,#frameL
�BLT endspan
�CMP xl,#frameL
�MOVLT xl,#frameL
CMP xr,#frameR
MOVGT xr,#frameR
ADD xl,o,xl
(ADD xr,o,xr
2
<SUBS t,xr,xl
FBEQ endspan
PCMP t,#2
ZSTRLSB c1,[xl]
dSTRLSB c1,[xr,#-1]
nBLS endspan
xTST xl,#%01
�STRNEB c1,[xl],#1
�TST xl,#%10
�STRNEB c2,[xl],#1
�STRNEB c1,[xl],#1
�TST xr,#%01
�STRNEB c2,[xr,#-1]!
�TST xr,#%10
�STRNEB c1,[xr,#-1]!
�STRNEB c2,[xr,#-1]!
�SUBS t,xr,xl
�MOVS t,t,LSR#3
�STRCS c1,[xl],#4
�MOVS t,t,LSR#1
STMCSIA (xl)!,{c1,c2}
ADR xr,base
"SUB pc,xr,t,LSL#2
, �vulc
6 .base
@
J.endspan
TADD l,l,la
^ADD r,r,ra
hADD o,o,#320
rSUBS ct,ct,#1
|
BNE lo
�/MOV r15,r14 ;LDMFD r13!,{r15}
�]
�xa=0:ya=1:za=2
�x=0:y=1:z=2
�sxa=3:sya=4:sza=5
�cxa=6:cya=7:cza=8
�n=9:p=10
�i=10
�pnts=11:fs=11
�t1=12:t2=14
�
�1x1=0:y1=1:x2=2:y2=3:x3=4:y3=5:x4=6:y4=7:col=8
� vs=12
[OPTi%
.helip DCD 24
&%DCD -5 :DCD 2 :DCD -14 ;0
0DCD -7 :DCD -7 :DCD -4
:DCD -10:DCD 4 :DCD -1
DDCD -9:DCD 4 :DCD 4
NDCD -5 :DCD -6 :DCD 6
X%DCD -6 :DCD 0 :DCD 10 ;5
bDCD 6 :DCD 0 :DCD 10
lDCD 5 :DCD -6 :DCD 6
vDCD 9 :DCD 4 :DCD 4
�DCD 10 :DCD 4 :DCD -1
�DCD 7 :DCD -7 :DCD -4
�&DCD 5 :DCD 2 :DCD -14 ;11
�
�DCD -3 :DCD 5 :DCD -12
�DCD -6 :DCD 6 :DCD -2
�%DCD -5 :DCD 6 :DCD 7 ;14
�DCD 5 :DCD 6 :DCD 7
�DCD 6 :DCD 6 :DCD -2
�DCD 3 :DCD 5 :DCD -12
�
�%DCD 0 :DCD 4 :DCD 8 ;18
�DCD -2 :DCD 0 :DCD 10
DCD -1 :DCD 0 :DCD 44
DCD 0 :DCD 2 :DCD 40
DCD 2 :DCD 0 :DCD 10
DCD 1 :DCD 0 :DCD 44
*
4
>.helif DCD 22
HDCD &07:DCD &00010A0B
RDCD &13:DCD &0104070A
\DCD &13:DCD &04050607
fDCD &11:DCD &FF000201
pDCD &11:DCD &FF0B0A09
zDCD &10:DCD &02030401
�DCD &10:DCD &0A070809
�DCD &12:DCD &FF030504
�DCD &12:DCD &FF070608
�
�DCD &3F:DCD &000B110C
�DCD &3C:DCD &0C11100D
�DCD &13:DCD &0D100F0E
�DCD &12:DCD &0E0F0605
�
�DCD &07:DCD &000C0D02
�DCD &07:DCD &0B091011
�DCD &11:DCD &020D0E03
�DCD &11:DCD &1009080F
DCD &10:DCD &FF030E05
DCD &10:DCD &FF0F0806
$#DCD &12:DCD &16171512 ;tail
.DCD &12:DCD &13121514
8DCD &13:DCD &13141716
B
L
V
`
j.hrot DCD 0
t.hpitch DCD 0
~.hrol DCD 0
�.hx DCD 256<<fp%
�.hy DCD 300<<fp%
�.hheight DCD 0
�.hdx DCD 0
�.hdy DCD 0
�.hdz DCD 0
�.hpower DCD -16
�
�.control
�STMFD r13!,{r14}
�
BL update
�BL calcpoints
BL drawpoints
BL drawheli
LDMFD r13!,{r15}
(.update
2STMFD r13!,{r14}
<SWI "OS_Mouse"
F
CMP r2,#1
PLDRGE r3,hpower
ZADDEQ r3,r3,#2
dSTREQ r3,hpower
n
CMP r2,#4
xSUBEQ r3,r3,#2
�STREQ r3,hpower
�
�LDR r9,hpitch
�ADD r9,r9,r1,ASR#1
�MOV r9,r9,LSL#23
�MOV r9,r9,LSR#23
�STR r9,hpitch
�
�LDR r3,hrot
�SUB r3,r3,r0,ASR#2
�MOV r3,r3,LSL#23
�MOV r3,r3,LSR#23
�STR r3,hrot
STR r3,rot
LDR r4,hpower
"LDR r5,sinptr
,LDR r6,cosptr
6
@LDR r7,[r5,r9,ASL#2]
JLDR r8,[r6,r9,ASL#2]
T/MUL r8,r4,r8 ;verticle power
^.MUL r4,r7,r4 ;forward power
hMOV r4,r4,ASR#fp%
r;MOV r8,r8,ASR#fp%
|
�(LDR r7,hdz ;alter dz
�SUB r7,r7,r8,ASR#6
�SUB r7,r7,#gravity%
�STR r7,hdz
�LDR r8,hheight
�]
�� � fixed_height% �
�
[OPTi%
�ADD r8,r8,r7
�]
��
�
[OPTi%
�STR r8,hheight
3MOV r8,r8,ASR#fp%+1 ;figure out cam angle
ADD r8,r8,#camdrop%
&STR r8,height
0
:LDR r5,[r5,r3,ASL#2]
DLDR r6,[r6,r3,ASL#2]
NMUL r5,r4,r5
XMUL r6,r4,r6
b
lLDR r7,hdx
vLDR r8,hdy
�ADD r7,r7,r5,ASR#6
�ADD r8,r8,r6,ASR#6
�3MOV r9,r7,ASR#4 ;dec dx/dy (air res)
�MOV r10,r8,ASR#4
�SUB r7,r7,r9
�SUB r8,r8,r10
�STR r7,hdx
�STR r8,hdy
�
�
LDR r9,hx
�LDR r10,hy
�ADD r9,r9,r7
�ADD r10,r10,r8
!
STR r9,hx
!STR r10,hy
!MOV r9,r9,ASR#fp%
! MOV r10,r10,ASR#fp%
!*STR r9,xpos
!4STR r10,ypos
!>
!H
!RLDMFD r13!,{r15}
!\
!f
.drawheli
!pSTMFD r13!,{r14}
!z'ADR r11,helip ;drawheli
!�ADR r12,helif
!�LDR r0,hpitch
!�
MOV r1,#0
!�
MOV r2,#0
!�
MOV r3,#0
!�LDR r6,height
!�LDR r7,hheight
!�SUB r4,r6,r7,ASR#fp%
!�
MOV r5,#0
!�BL drawobj
!�LDMFD r13!,{r15}
!�
!�.objx DCD 0
".objy DCD 0
".objz DCD 0
".faces DCD 0
"$B.drawobj ;r0=xa, r1=ya, r2=za, r11=pntptr, r12 faceptr
".&STR r14,retsave ;r3=x, r4=y, r5=z
"8;STR r3,objx
"BSTR r4,objy
"L;STR r5,objz
"VSTR r12,faces
"`
"jLDR p,sinptr
"tLDR sxa,[p,xa,ASL#2]
"~LDR sya,[p,ya,ASL#2]
"�LDR sza,[p,za,ASL#2]
"�LDR p,cosptr
"�LDR cxa,[p,xa,ASL#2]
"�LDR cya,[p,ya,ASL#2]
"�LDR cza,[p,za,ASL#2]
"�
"�ADR i,image
"�,LDR n,[pnts],#4 ;num of points
"�
"�
.pobjloop
"�LDMIA pnts !,{x,y,z}
"�$MUL t2,z,sxa ;rot x
# RSB t2,t2,#0
#
MLA t1,y,cxa,t2
#MUL t2,y,sxa
#MLA t2,z,cxa,t2
#(MOV y,t1,ASR#fp%
#2MOV z,t2,ASR#fp%
#<
#F$MUL t2,z,sya ;rot y
#PRSB t2,t2,#0
#ZMLA t1,x,cya,t2
#dMUL t2,x,sya
#nMLA t2,z,cya,t2
#xMOV x,t1,ASR#fp%
#�MOV z,t2,ASR#fp%
#�
#�$MUL t2,y,sza ;rot z
#�RSB t2,t2,#0
#�MLA t1,x,cza,t2
#�MUL t2,x,sza
#�MLA t2,y,cza,t2
#�MOV x,t1,ASR#fp%
#�MOV y,t2,ASR#fp%
#�
#�,LDR t1,objy ;adjust coords
#�;LDR t2,objz
#�ADD y,y,t1
$;ADD z,z,t2
$ADD z,z,#yshift%
$
$"0LDR t1,perspptr ;apply perspective
$,LDR t1,[t1,z,ASL#2]
$6MUL x,t1,x
$@MUL y,t1,y
$JMOV x,x,ASR#fp%
$TMOV y,y,ASR#fp%
$^STMIA i !,{x,y}
$h;BL plot
$r
$|SUBS n,n,#1
$�BNE pobjloop
$�
$�'LDR fs,faces ;draw polies
$�LDR n,[fs],#4
$�ADR i,image
$�
$�
.fobjloop
$�>LDMIA fs !,{col,vs} ;load colour and verts (T|4;3;2;1)
$�
$�� t2,vs,#&FF
$�ADD t2,i,t2,LSL#3
$�LDMIA t2,{x1,y1}
$�
%MOV vs,vs,LSR#8
%� t2,vs,#&FF
%ADD t2,i,t2,LSL#3
%&LDMIA t2,{x2,y2}
%0
%:MOV vs,vs,LSR#8
%D� t2,vs,#&FF
%NADD t2,i,t2,LSL#3
%XLDMIA t2,{x3,y3}
%b
%l9SUB y4,x2,x1 ;clip backwards (x4,y4-temps)
%vSUB x4,y3,y2
%�MUL x4,y4,x4
%�SUB y4,y2,y1
%�SUB t2,x3,x2
%�MUL y4,t2,y4
%�
CMP x4,y4
%�-BLT ycanne ;y'canne see it
%�
%�MOV vs,vs,LSR#8
%�,CMP vs,#&FF ;teST, &FF-tri
%��NE t2,vs,#&FF
%�ADDNE t2,i,t2,LSL#3
%�LDMNEIA t2,{x4,y4}
%�
BLNE quad
&BLEQ tri
&
&.ycanne
& SUBS n,n,#1
&*BNE fobjloop
&4
&>'LDR r15,retsave ;MOV r15,r14
&H.image �gap(max3dpts%*8)
&R
&\
&f]�
&p
�P%-code%
&z#ș"OS_ReadVduVariables",vdu,vdu
&�vdu!4=!vdu+256*320
&��
&�
&�
ݤvulc
&��j%=1�20
&�
[OPTi%
&�STMIA (xl)!,{c1,c2,c3,c4}
&�]�
&�=""
&�
&� ݤrot
&�
[OPTi%
&�MOV s,ax
'
MOV ax,bx
'
MOV bx,cx
'
MOV cx,dx
'$MOV dx,s
'.MOV s,ay
'8
MOV ay,by
'B
MOV by,cy
'L
MOV cy,dy
'VMOV dy,s
'`]
'j=0
't
'~
ݤgap(g%)
'�P%=P%+g%
'�=0
'�
'�ݤdata(a$)
'��g%=1 � �a$-1 �2
'�?P%=�("&"+�a$,g%,2))
'�P%?1=�("&"+�a$,g%,2))
'� P%+=2
'��
'�=0
� 00000000 0d 00 0a 0a f4 3e 20 46 6c 79 0d 00 14 23 f4 3e |.....> Fly...#.>|
00000010 20 57 72 69 74 65 6e 20 62 79 20 4d 6f 72 67 61 | Writen by Morga|
00000020 6e 20 48 65 6e 72 79 20 a9 31 39 39 34 0d 00 1e |n Henry .1994...|
00000030 19 f4 3e 20 65 6e 72 79 40 64 63 73 2e 71 6d 77 |..> enry@dcs.qmw|
00000040 2e 61 63 2e 75 6b 0d 00 28 04 0d 00 32 13 66 69 |.ac.uk..(...2.fi|
00000050 78 65 64 5f 68 65 69 67 68 74 25 3d b9 0d 00 3c |xed_height%=...<|
00000060 04 0d 00 46 1d ee 85 20 eb 30 3a f1 f6 24 3b 22 |...F... .0:..$;"|
00000070 20 61 74 20 6c 69 6e 65 20 22 3b 9e 3a e0 0d 00 | at line ";.:...|
00000080 50 0b eb 31 35 3a eb 31 33 0d 00 5a 0d c8 91 36 |P..15:.13..Z...6|
00000090 34 30 2c 35 31 32 0d 00 64 2b 66 72 61 6d 65 4c |40,512..d+frameL|
000000a0 3d 30 3a 66 72 61 6d 65 52 3d 33 31 36 3a 66 72 |=0:frameR=316:fr|
000000b0 61 6d 65 54 3d 30 3a 66 72 61 6d 65 42 3d 32 35 |ameT=0:frameB=25|
000000c0 35 0d 00 6e 1a 6f 72 69 67 69 6e 58 3d 31 36 30 |5..n.originX=160|
000000d0 3a 6f 72 69 67 69 6e 59 3d 34 30 0d 00 78 04 0d |:originY=40..x..|
000000e0 00 82 3a 73 69 7a 65 25 3d 31 32 38 3a 73 69 7a |..:size%=128:siz|
000000f0 65 73 25 3d 37 20 20 3a f4 20 73 69 7a 65 25 3d |es%=7 :. size%=|
00000100 31 32 38 20 6f 72 20 32 35 36 2c 20 73 69 7a 65 |128 or 256, size|
00000110 73 25 3d 37 20 6f 72 20 38 0d 00 8c 0a 66 70 25 |s%=7 or 8....fp%|
00000120 3d 31 30 0d 00 96 34 64 69 73 70 78 25 3d 31 36 |=10...4dispx%=16|
00000130 20 20 20 20 20 20 20 20 20 20 20 3a f4 20 6e 75 | :. nu|
00000140 6d 62 65 72 20 6f 66 20 76 69 73 61 62 6c 65 20 |mber of visable |
00000150 70 61 74 63 68 65 73 0d 00 a0 11 64 69 73 70 79 |patches....dispy|
00000160 25 3d 64 69 73 70 78 25 0d 00 aa 36 79 73 68 69 |%=dispx%...6yshi|
00000170 66 74 25 3d 32 30 38 20 20 20 20 20 20 20 20 20 |ft%=208 |
00000180 3a f4 20 63 6f 6e 74 72 6f 6c 73 20 63 65 6e 74 |:. controls cent|
00000190 72 65 20 6f 66 20 72 6f 74 61 74 69 6f 6e 0d 00 |re of rotation..|
000001a0 b4 2d 63 61 6d 64 72 6f 70 25 3d 37 35 20 20 20 |.-camdrop%=75 |
000001b0 20 20 20 20 20 20 3a f4 20 62 61 73 65 20 63 61 | :. base ca|
000001c0 6d 65 72 61 20 68 65 69 67 68 74 0d 00 be 1d 70 |mera height....p|
000001d0 6f 69 6e 74 6d 6f 64 25 3d 28 64 69 73 70 78 25 |ointmod%=(dispx%|
000001e0 2a 32 2b 32 29 2a 31 32 0d 00 c8 10 6d 61 78 33 |*2+2)*12....max3|
000001f0 64 70 74 73 25 3d 33 32 0d 00 d2 26 67 72 61 76 |dpts%=32...&grav|
00000200 69 74 79 25 3d 31 39 36 20 20 20 20 20 20 20 20 |ity%=196 |
00000210 3a f4 20 68 65 6c 69 20 77 65 69 67 68 74 0d 00 |:. heli weight..|
00000220 dc 24 53 25 3d a3 20 20 20 20 20 20 20 20 20 20 |.$S%=. |
00000230 20 20 3a f4 20 73 68 61 64 6f 77 20 6f 6e 2f 6f | :. shadow on/o|
00000240 66 66 0d 00 e6 04 0d 00 f0 15 de 73 69 6e 25 20 |ff.........sin% |
00000250 28 35 31 32 2b 31 32 38 29 2a 34 0d 00 fa 15 de |(512+128)*4.....|
00000260 64 69 76 74 61 62 6c 65 25 20 34 30 39 36 2a 34 |divtable% 4096*4|
00000270 0d 01 04 11 de 70 65 72 73 70 25 20 35 31 32 2a |.....persp% 512*|
00000280 34 0d 01 0e 17 de 6d 61 70 25 20 73 69 7a 65 25 |4.....map% size%|
00000290 2a 73 69 7a 65 25 2a 34 0d 01 18 29 de 70 6f 69 |*size%*4...).poi|
000002a0 6e 74 73 25 20 28 64 69 73 70 78 25 2a 32 2b 32 |nts% (dispx%*2+2|
000002b0 29 2a 28 64 69 73 70 79 25 2a 32 2b 32 29 2a 31 |)*(dispy%*2+2)*1|
000002c0 32 0d 01 22 15 de 62 69 6e 25 20 64 69 73 70 79 |2.."..bin% dispy|
000002d0 25 2a 36 34 2a 34 0d 01 2c 04 0d 01 36 31 f1 8a |%*64*4..,...61..|
000002e0 30 2c 32 30 29 3b 22 4c 65 66 74 20 4d 6f 75 73 |0,20);"Left Mous|
000002f0 65 20 42 75 74 74 6f 6e 20 74 6f 20 69 6e 63 72 |e Button to incr|
00000300 65 61 73 65 20 70 6f 77 65 72 22 0d 01 40 2b f1 |ease power"..@+.|
00000310 22 52 69 67 68 74 20 4d 6f 75 73 65 20 42 75 74 |"Right Mouse But|
00000320 74 6f 6e 20 74 6f 20 64 65 63 72 65 61 73 65 20 |ton to decrease |
00000330 70 6f 77 65 72 22 0d 01 4a 09 f2 6d 69 73 63 0d |power"..J..misc.|
00000340 01 54 08 f2 61 73 73 0d 01 5e 0c f2 73 68 6f 77 |.T..ass..^..show|
00000350 6d 61 70 0d 01 68 3c 21 70 6f 69 6e 74 6d 69 64 |map..h<!pointmid|
00000360 3d 70 6f 69 6e 74 73 25 2b 28 20 28 64 69 73 70 |=points%+( (disp|
00000370 78 25 2a 32 2b 32 29 2a 28 64 69 73 70 79 25 29 |x%*2+2)*(dispy%)|
00000380 2a 31 32 2b 64 69 73 70 78 25 2a 31 32 20 29 0d |*12+dispx%*12 ).|
00000390 01 72 04 0d 01 7c 0b 74 3d 31 3a 73 3d 32 0d 01 |.r...|.t=1:s=2..|
000003a0 86 05 f5 0d 01 90 05 db 0d 01 9a 1e ec 2d 36 34 |.............-64|
000003b0 30 2c 35 30 30 3a df 42 59 2d 31 36 2a 21 68 70 |0,500:.BY-16*!hp|
000003c0 6f 77 65 72 2c 30 0d 01 a4 0b d6 75 70 64 61 74 |ower,0.....updat|
000003d0 65 0d 01 ae 0a c8 97 b8 30 2c 30 0d 01 b8 0f d6 |e.......0,0.....|
000003e0 63 61 6c 63 70 6f 69 6e 74 73 0d 01 c2 0f d6 64 |calcpoints.....d|
000003f0 72 61 77 70 6f 69 6e 74 73 0d 01 cc 12 e7 20 53 |rawpoints..... S|
00000400 25 20 d6 64 72 61 77 73 68 61 64 0d 01 d6 0d d6 |% .drawshad.....|
00000410 64 72 61 77 68 65 6c 69 0d 01 e0 2d c8 96 3a c8 |drawheli...-..:.|
00000420 99 36 2c 31 31 32 2c 73 3a c8 99 36 2c 31 31 33 |.6,112,s:..6,113|
00000430 2c 74 3a c8 94 74 2c 73 3a c8 94 21 76 64 75 2c |,t:..t,s:..!vdu,|
00000440 76 64 75 21 34 0d 01 ea 06 fd a3 0d 01 f4 04 0d |vdu!4...........|
00000450 01 fe 0a dd f2 6d 69 73 63 0d 02 08 09 f1 22 2e |.....misc.....".|
00000460 22 3b 0d 02 12 0d 6b 3d 33 36 30 2f 35 31 32 0d |";....k=360/512.|
00000470 02 1c 13 e3 69 25 3d 30 b8 28 35 31 32 2b 31 32 |....i%=0.(512+12|
00000480 37 29 0d 02 26 21 73 69 6e 25 21 28 69 25 2a 34 |7)..&!sin%!(i%*4|
00000490 29 3d 28 31 3c 3c 66 70 25 29 2a b5 b2 28 69 25 |)=(1<<fp%)*..(i%|
000004a0 2a 6b 29 0d 02 30 05 ed 0d 02 3a 09 f1 22 2e 22 |*k)..0....:.."."|
000004b0 3b 0d 02 44 0d e3 69 25 3d 30 b8 35 31 31 0d 02 |;..D..i%=0.511..|
000004c0 4e 0d 79 25 3d 35 31 32 2d 69 25 0d 02 58 1f 70 |N.y%=512-i%..X.p|
000004d0 65 72 73 70 25 21 28 69 25 2a 34 29 3d 28 33 30 |ersp%!(i%*4)=(30|
000004e0 30 3c 3c 66 70 25 29 2f 79 25 0d 02 62 05 ed 0d |0<<fp%)/y%..b...|
000004f0 02 6c 09 f1 22 2e 22 3b 0d 02 76 28 e3 69 25 3d |.l..".";..v(.i%=|
00000500 30 b8 20 28 64 69 73 70 78 25 2a 32 2b 32 29 2a |0. (dispx%*2+2)*|
00000510 28 64 69 73 70 79 25 2a 32 2b 32 29 2a 33 2d 31 |(dispy%*2+2)*3-1|
00000520 0d 02 80 1a 70 6f 69 6e 74 73 25 21 28 69 25 2a |....points%!(i%*|
00000530 34 29 3d 26 46 46 3c 3c 31 36 0d 02 8a 05 ed 0d |4)=&FF<<16......|
00000540 02 94 09 f1 22 2e 22 3b 0d 02 9e 16 e3 69 25 3d |....".";.....i%=|
00000550 30 b8 20 64 69 73 70 79 25 2a 36 34 2d 31 0d 02 |0. dispy%*64-1..|
00000560 a8 11 62 69 6e 25 21 28 69 25 2a 34 29 3d 30 0d |..bin%!(i%*4)=0.|
00000570 02 b2 05 ed 0d 02 bc 09 f1 22 2e 22 3b 0d 02 c6 |.........".";...|
00000580 0d e3 69 25 3d 31 b8 36 33 39 0d 02 d0 20 64 69 |..i%=1.639... di|
00000590 76 74 61 62 6c 65 25 21 28 69 25 2a 34 29 3d 28 |vtable%!(i%*4)=(|
000005a0 31 3c 3c 66 70 25 29 2f 69 25 0d 02 da 05 ed 0d |1<<fp%)/i%......|
000005b0 02 e4 09 f1 22 2e 22 3b 0d 02 ee 1c ff 28 22 4c |....".";.....("L|
000005c0 4f 41 44 20 46 6c 79 4d 61 70 20 22 2b c3 7e 6d |OAD FlyMap "+.~m|
000005d0 61 70 25 29 0d 02 f8 05 e1 0d 03 02 04 0d 03 0c |ap%)............|
000005e0 0d dd f2 73 68 6f 77 6d 61 70 0d 03 16 0b 41 25 |...showmap....A%|
000005f0 3d 6d 61 70 25 0d 03 20 0b 42 25 3d 21 76 64 75 |=map%.. .B%=!vdu|
00000600 0d 03 2a 1f e3 78 25 3d 30 b8 73 69 7a 65 25 2d |..*..x%=0.size%-|
00000610 31 3a e3 79 25 3d 30 b8 73 69 7a 65 25 2d 31 0d |1:.y%=0.size%-1.|
00000620 03 34 1b 3f 42 25 3d 63 6f 6c 6f 75 72 73 3f 28 |.4.?B%=colours?(|
00000630 21 41 25 80 26 46 46 46 46 29 0d 03 3e 0f 42 25 |!A%.&FFFF)..>.B%|
00000640 2b 3d 31 3a 41 25 2b 3d 34 0d 03 48 05 ed 0d 03 |+=1:A%+=4..H....|
00000650 52 11 42 25 2b 3d 33 32 30 2d 73 69 7a 65 25 0d |R.B%+=320-size%.|
00000660 03 5c 05 ed 0d 03 66 08 5a 25 3d 30 0d 03 70 19 |.\....f.Z%=0..p.|
00000670 c8 95 20 5a 25 3d 30 3a c8 97 20 58 25 2c 59 25 |.. Z%=0:.. X%,Y%|
00000680 2c 5a 25 3a ce 0d 03 7a 05 e1 0d 03 84 04 0d 03 |,Z%:...z........|
00000690 8e 09 dd f2 61 73 73 0d 03 98 10 de 63 6f 64 65 |....ass.....code|
000006a0 25 20 36 34 30 30 30 0d 03 a2 04 0d 03 ac 0d e3 |% 64000.........|
000006b0 69 25 3d 30 b8 32 88 32 0d 03 b6 0f 78 3d 30 3a |i%=0.2.2....x=0:|
000006c0 79 3d 31 3a 61 3d 32 0d 03 c0 0d 73 61 3d 33 3a |y=1:a=2....sa=3:|
000006d0 63 61 3d 34 0d 03 ca 07 68 3d 32 0d 03 d4 11 73 |ca=4....h=2....s|
000006e0 63 72 78 3d 36 3a 73 63 72 79 3d 35 0d 03 de 0c |crx=6:scry=5....|
000006f0 70 70 3d 37 3a 62 3d 38 0d 03 e8 0c 70 3d 39 3a |pp=7:b=8....p=9:|
00000700 74 3d 31 30 0d 03 f2 0f 78 78 3d 31 31 3a 79 79 |t=10....xx=11:yy|
00000710 3d 31 32 0d 03 fc 0a 63 6f 6c 3d 31 34 0d 04 06 |=12....col=14...|
00000720 04 0d 04 10 0c 50 25 3d 63 6f 64 65 25 0d 04 1a |.....P%=code%...|
00000730 0a 5b 4f 50 54 69 25 0d 04 24 17 2e 76 64 75 20 |.[OPTi%..$..vdu |
00000740 44 43 44 20 31 34 38 3a 44 43 44 20 2d 31 0d 04 |DCD 148:DCD -1..|
00000750 2e 1e 2e 64 69 76 74 61 62 6c 65 70 74 72 20 44 |...divtableptr D|
00000760 43 44 20 64 69 76 74 61 62 6c 65 25 0d 04 38 18 |CD divtable%..8.|
00000770 2e 70 65 72 73 70 70 74 72 20 44 43 44 20 70 65 |.perspptr DCD pe|
00000780 72 73 70 25 0d 04 42 14 2e 73 69 6e 70 74 72 20 |rsp%..B..sinptr |
00000790 44 43 44 20 73 69 6e 25 0d 04 4c 1c 2e 63 6f 73 |DCD sin%..L..cos|
000007a0 70 74 72 20 44 43 44 20 73 69 6e 25 2b 28 31 32 |ptr DCD sin%+(12|
000007b0 38 2a 34 29 0d 04 56 14 2e 6d 61 70 70 74 72 20 |8*4)..V..mapptr |
000007c0 44 43 44 20 6d 61 70 25 0d 04 60 1a 2e 70 6f 69 |DCD map%..`..poi|
000007d0 6e 74 73 70 74 72 20 44 43 44 20 70 6f 69 6e 74 |ntsptr DCD point|
000007e0 73 25 0d 04 6a 13 2e 70 6f 69 6e 74 6d 69 64 20 |s%..j..pointmid |
000007f0 44 43 44 20 30 0d 04 74 14 2e 62 69 6e 70 74 72 |DCD 0..t..binptr|
00000800 20 44 43 44 20 62 69 6e 25 0d 04 7e 04 0d 04 88 | DCD bin%..~....|
00000810 0f 2e 78 70 6f 73 20 44 43 44 20 30 0d 04 92 0f |..xpos DCD 0....|
00000820 2e 79 70 6f 73 20 44 43 44 20 30 0d 04 9c 11 2e |.ypos DCD 0.....|
00000830 68 65 69 67 68 74 20 44 43 44 20 30 0d 04 a6 0e |height DCD 0....|
00000840 2e 72 6f 74 20 44 43 44 20 30 0d 04 b0 04 0d 04 |.rot DCD 0......|
00000850 ba 0f 2e 63 61 6c 63 70 6f 69 6e 74 73 0d 04 c4 |...calcpoints...|
00000860 13 53 54 52 20 72 31 34 2c 72 65 74 73 61 76 65 |.STR r14,retsave|
00000870 0d 04 ce 04 0d 04 d8 2c 4c 44 52 20 73 61 2c 73 |.......,LDR sa,s|
00000880 69 6e 70 74 72 20 20 20 20 20 20 20 20 20 20 20 |inptr |
00000890 20 20 20 3b 73 69 6e 20 61 2c 20 63 6f 73 20 61 | ;sin a, cos a|
000008a0 0d 04 e2 11 4c 44 52 20 63 61 2c 63 6f 73 70 74 |....LDR ca,cospt|
000008b0 72 0d 04 ec 0d 4c 44 52 20 61 2c 72 6f 74 0d 04 |r....LDR a,rot..|
000008c0 f6 17 4c 44 52 20 73 61 2c 5b 73 61 2c 61 2c 41 |..LDR sa,[sa,a,A|
000008d0 53 4c 23 32 5d 0d 05 00 17 4c 44 52 20 63 61 2c |SL#2]....LDR ca,|
000008e0 5b 63 61 2c 61 2c 41 53 4c 23 32 5d 0d 05 0a 2e |[ca,a,ASL#2]....|
000008f0 4c 44 52 20 68 2c 68 65 69 67 68 74 20 20 20 20 |LDR h,height |
00000900 20 20 20 20 20 20 20 20 20 20 20 3b 63 75 72 72 | ;curr|
00000910 65 6e 74 20 68 65 69 67 68 74 0d 05 14 15 41 44 |ent height....AD|
00000920 44 20 68 2c 68 2c 23 63 61 6d 64 72 6f 70 25 0d |D h,h,#camdrop%.|
00000930 05 1e 14 4c 44 52 20 70 70 2c 70 6f 69 6e 74 73 |...LDR pp,points|
00000940 70 74 72 0d 05 28 10 4c 44 52 20 62 2c 62 69 6e |ptr..(.LDR b,bin|
00000950 70 74 72 0d 05 32 04 0d 05 3c 0f 4c 44 52 20 78 |ptr..2...<.LDR x|
00000960 78 2c 78 70 6f 73 0d 05 46 0f 4c 44 52 20 79 79 |x,xpos..F.LDR yy|
00000970 2c 79 70 6f 73 0d 05 50 04 0d 05 5a 04 0d 05 64 |,ypos..P...Z...d|
00000980 13 4d 56 4e 20 79 2c 23 ac 2d 64 69 73 70 79 25 |.MVN y,#.-dispy%|
00000990 0d 05 6e 0a 2e 79 6c 6f 6f 70 0d 05 78 13 4d 56 |..n..yloop..x.MV|
000009a0 4e 20 78 2c 23 ac 2d 64 69 73 70 78 25 0d 05 82 |N x,#.-dispx%...|
000009b0 0a 2e 78 6c 6f 6f 70 0d 05 8c 04 0d 05 96 11 80 |..xloop.........|
000009c0 20 70 2c 78 78 2c 23 25 31 31 31 31 0d 05 a0 11 | p,xx,#%1111....|
000009d0 80 20 74 2c 79 79 2c 23 25 31 31 31 31 0d 05 aa |. t,yy,#%1111...|
000009e0 13 52 53 42 20 70 2c 70 2c 78 2c 41 53 4c 23 34 |.RSB p,p,x,ASL#4|
000009f0 0d 05 b4 13 52 53 42 20 74 2c 74 2c 79 2c 41 53 |....RSB t,t,y,AS|
00000a00 4c 23 34 0d 05 be 04 0d 05 c8 11 4d 55 4c 20 73 |L#4........MUL s|
00000a10 63 72 78 2c 74 2c 73 61 0d 05 d2 14 52 53 42 20 |crx,t,sa....RSB |
00000a20 73 63 72 78 2c 73 63 72 78 2c 23 30 0d 05 dc 16 |scrx,scrx,#0....|
00000a30 4d 4c 41 20 73 63 72 78 2c 70 2c 63 61 2c 73 63 |MLA scrx,p,ca,sc|
00000a40 72 78 0d 05 e6 11 4d 55 4c 20 73 63 72 79 2c 74 |rx....MUL scry,t|
00000a50 2c 63 61 0d 05 f0 35 4d 4c 41 20 73 63 72 79 2c |,ca...5MLA scry,|
00000a60 70 2c 73 61 2c 73 63 72 79 20 20 20 20 20 20 20 |p,sa,scry |
00000a70 20 20 20 3b 73 63 72 78 3c 3c 66 70 25 2c 20 73 | ;scrx<<fp%, s|
00000a80 63 72 79 3c 3c 66 70 25 0d 05 fa 39 4d 4f 56 20 |cry<<fp%...9MOV |
00000a90 73 63 72 78 2c 73 63 72 78 2c 41 53 52 23 36 2b |scrx,scrx,ASR#6+|
00000aa0 34 20 20 20 20 20 20 20 3b 73 68 69 66 74 20 73 |4 ;shift s|
00000ab0 71 75 61 72 65 20 73 69 7a 65 20 28 2e 58 58 58 |quare size (.XXX|
00000ac0 29 0d 06 04 19 4d 4f 56 20 73 63 72 79 2c 73 63 |)....MOV scry,sc|
00000ad0 72 79 2c 41 53 52 23 36 2b 34 0d 06 0e 04 0d 06 |ry,ASR#6+4......|
00000ae0 18 2d 41 44 44 53 20 73 63 72 79 2c 73 63 72 79 |.-ADDS scry,scry|
00000af0 2c 23 79 73 68 69 66 74 25 20 20 20 20 20 3b 63 |,#yshift% ;c|
00000b00 6c 69 70 20 73 71 75 61 72 65 73 0d 06 22 10 42 |lip squares..".B|
00000b10 4d 49 20 70 6f 69 6e 74 6f 75 74 0d 06 2c 19 43 |MI pointout..,.C|
00000b20 4d 50 20 73 63 72 79 2c 23 28 64 69 73 70 79 25 |MP scry,#(dispy%|
00000b30 2a 31 36 29 0d 06 36 10 42 47 45 20 70 6f 69 6e |*16)..6.BGE poin|
00000b40 74 6f 75 74 0d 06 40 13 43 4d 4e 20 73 63 72 78 |tout..@.CMN scrx|
00000b50 2c 23 ac 2d 31 36 30 0d 06 4a 10 42 4c 54 20 70 |,#.-160..J.BLT p|
00000b60 6f 69 6e 74 6f 75 74 0d 06 54 11 43 4d 50 20 73 |ointout..T.CMP s|
00000b70 63 72 78 2c 23 31 36 30 0d 06 5e 10 42 47 45 20 |crx,#160..^.BGE |
00000b80 70 6f 69 6e 74 6f 75 74 0d 06 68 04 0d 06 72 2e |pointout..h...r.|
00000b90 41 44 44 20 70 2c 78 2c 78 78 2c 41 53 52 23 34 |ADD p,x,xx,ASR#4|
00000ba0 20 20 20 20 20 20 20 20 20 20 3b 67 65 74 20 6c | ;get l|
00000bb0 61 6e 64 20 68 65 69 67 68 74 0d 06 7c 14 41 44 |and height..|.AD|
00000bc0 44 20 74 2c 79 2c 79 79 2c 41 53 52 23 34 0d 06 |D t,y,yy,ASR#4..|
00000bd0 86 12 80 20 70 2c 70 2c 23 73 69 7a 65 25 2d 31 |... p,p,#size%-1|
00000be0 0d 06 90 12 80 20 74 2c 74 2c 23 73 69 7a 65 25 |..... t,t,#size%|
00000bf0 2d 31 0d 06 9a 18 41 44 44 20 74 2c 70 2c 74 2c |-1....ADD t,p,t,|
00000c00 41 53 4c 23 73 69 7a 65 73 25 0d 06 a4 04 0d 06 |ASL#sizes%......|
00000c10 ae 10 4c 44 52 20 70 2c 6d 61 70 70 74 72 0d 06 |..LDR p,mapptr..|
00000c20 b8 15 4c 44 52 20 74 2c 5b 70 2c 74 2c 41 53 4c |..LDR t,[p,t,ASL|
00000c30 23 32 5d 0d 06 c2 2d 4d 4f 56 20 63 6f 6c 2c 74 |#2]...-MOV col,t|
00000c40 2c 4c 53 4c 23 31 36 20 20 20 20 20 20 20 20 20 |,LSL#16 |
00000c50 20 3b 65 78 74 72 61 63 74 20 63 6f 6c 6f 75 72 | ;extract colour|
00000c60 0d 06 cc 16 4d 4f 56 20 63 6f 6c 2c 63 6f 6c 2c |....MOV col,col,|
00000c70 4c 53 52 23 31 36 0d 06 d6 12 4d 4f 56 20 74 2c |LSR#16....MOV t,|
00000c80 74 2c 41 53 52 23 31 36 0d 06 e0 04 0d 06 ea 12 |t,ASR#16........|
00000c90 4c 44 52 20 70 2c 70 65 72 73 70 70 74 72 0d 06 |LDR p,perspptr..|
00000ca0 f4 2c 4c 44 52 20 70 2c 5b 70 2c 73 63 72 79 2c |.,LDR p,[p,scry,|
00000cb0 41 53 4c 23 32 5d 20 20 20 20 20 20 3b 70 65 72 |ASL#2] ;per|
00000cc0 73 70 65 63 74 69 76 65 20 6b 0d 06 fe 04 0d 07 |spective k......|
00000cd0 08 30 4d 55 4c 20 73 63 72 78 2c 70 2c 73 63 72 |.0MUL scrx,p,scr|
00000ce0 78 20 20 20 20 20 20 20 20 20 20 20 3b 61 70 70 |x ;app|
00000cf0 6c 79 20 70 65 72 73 70 65 63 74 69 76 65 0d 07 |ly perspective..|
00000d00 12 19 4d 4f 56 20 73 63 72 78 2c 73 63 72 78 2c |..MOV scrx,scrx,|
00000d10 41 53 52 23 66 70 25 0d 07 1c 04 0d 07 26 0d 53 |ASR#fp%......&.S|
00000d20 55 42 20 74 2c 68 2c 74 0d 07 30 0d 4d 55 4c 20 |UB t,h,t..0.MUL |
00000d30 74 2c 70 2c 74 0d 07 3a 13 4d 4f 56 20 74 2c 74 |t,p,t..:.MOV t,t|
00000d40 2c 41 53 52 23 66 70 25 0d 07 44 04 0d 07 4e 3e |,ASR#fp%..D...N>|
00000d50 53 54 4d 49 41 20 70 70 2c 7b 73 63 72 78 2c 74 |STMIA pp,{scrx,t|
00000d60 2c 63 6f 6c 7d 20 20 20 20 20 20 20 3b 58 2c 59 |,col} ;X,Y|
00000d70 2c 63 6f 6c 20 61 72 72 61 6e 67 65 20 70 6f 69 |,col arrange poi|
00000d80 6e 74 20 73 74 6f 72 61 67 65 0d 07 58 17 4d 4f |nt storage..X.MO|
00000d90 56 20 73 63 72 79 2c 73 63 72 79 2c 41 53 52 23 |V scry,scry,ASR#|
00000da0 34 0d 07 62 34 41 44 44 20 73 63 72 79 2c 62 2c |4..b4ADD scry,b,|
00000db0 73 63 72 79 2c 41 53 4c 23 38 20 20 20 20 20 20 |scry,ASL#8 |
00000dc0 20 3b 62 69 6e 20 73 63 72 79 20 2a 20 36 34 2a | ;bin scry * 64*|
00000dd0 34 3d 32 35 36 0d 07 6c 2d 4c 44 52 20 74 2c 5b |4=256..l-LDR t,[|
00000de0 73 63 72 79 5d 20 20 20 20 20 20 20 20 20 20 20 |scry] |
00000df0 20 20 20 20 20 3b 74 3d 6e 75 6d 20 69 6e 20 62 | ;t=num in b|
00000e00 69 6e 0d 07 76 0e 41 44 44 20 74 2c 74 2c 23 31 |in..v.ADD t,t,#1|
00000e10 0d 07 80 10 53 54 52 20 74 2c 5b 73 63 72 79 5d |....STR t,[scry]|
00000e20 0d 07 8a 19 53 54 52 20 70 70 2c 5b 73 63 72 79 |....STR pp,[scry|
00000e30 2c 74 2c 41 53 4c 23 32 5d 0d 07 94 04 0d 07 9e |,t,ASL#2].......|
00000e40 04 0d 07 a8 0d 2e 70 6f 69 6e 74 6f 75 74 0d 07 |......pointout..|
00000e50 b2 30 41 44 44 20 70 70 2c 70 70 2c 23 31 32 20 |.0ADD pp,pp,#12 |
00000e60 20 20 20 20 20 20 20 20 20 20 20 3b 6d 6f 76 65 | ;move|
00000e70 20 74 6f 20 6e 65 78 74 20 70 6f 69 6e 74 0d 07 | to next point..|
00000e80 bc 04 0d 07 c6 0e 41 44 44 20 78 2c 78 2c 23 31 |......ADD x,x,#1|
00000e90 0d 07 d0 11 43 4d 50 20 78 2c 23 64 69 73 70 78 |....CMP x,#dispx|
00000ea0 25 0d 07 da 0d 42 4c 45 20 78 6c 6f 6f 70 0d 07 |%....BLE xloop..|
00000eb0 e4 04 0d 07 ee 2e 41 44 44 20 70 70 2c 70 70 2c |......ADD pp,pp,|
00000ec0 23 31 32 20 20 20 20 20 20 20 20 20 20 20 3b 61 |#12 ;a|
00000ed0 64 6a 75 73 74 20 66 6f 72 20 62 6f 72 64 65 72 |djust for border|
00000ee0 0d 07 f8 0e 41 44 44 20 79 2c 79 2c 23 31 0d 08 |....ADD y,y,#1..|
00000ef0 02 11 43 4d 50 20 79 2c 23 64 69 73 70 79 25 0d |..CMP y,#dispy%.|
00000f00 08 0c 0d 42 4c 45 20 79 6c 6f 6f 70 0d 08 16 04 |...BLE yloop....|
00000f10 0d 08 20 2d 4c 44 52 20 72 30 2c 70 6f 69 6e 74 |.. -LDR r0,point|
00000f20 6d 69 64 20 20 20 20 20 20 20 3b 73 68 61 64 6f |mid ;shado|
00000f30 77 20 63 61 6c 63 75 6c 61 74 69 6f 6e 0d 08 2a |w calculation..*|
00000f40 12 4c 44 52 20 72 33 2c 5b 72 30 2c 23 34 5d 0d |.LDR r3,[r0,#4].|
00000f50 08 34 13 53 54 52 20 72 33 2c 73 68 61 64 70 6e |.4.STR r3,shadpn|
00000f60 74 73 0d 08 3e 04 0d 08 48 26 4c 44 52 20 72 31 |ts..>...H&LDR r1|
00000f70 35 2c 72 65 74 73 61 76 65 20 20 20 20 20 20 20 |5,retsave |
00000f80 3b 4d 4f 56 20 72 31 35 2c 72 31 34 0d 08 52 04 |;MOV r15,r14..R.|
00000f90 0d 08 5c 04 0d 08 66 0d 2e 64 72 61 77 73 68 61 |..\...f..drawsha|
00000fa0 64 0d 08 70 13 53 54 52 20 72 31 34 2c 72 65 74 |d..p.STR r14,ret|
00000fb0 73 61 76 65 0d 08 7a 0d 4d 4f 56 20 72 30 2c 23 |save..z.MOV r0,#|
00000fc0 30 0d 08 84 13 4c 44 52 20 72 31 2c 73 68 61 64 |0....LDR r1,shad|
00000fd0 70 6e 74 73 0d 08 8e 0d 4d 4f 56 20 72 32 2c 23 |pnts....MOV r2,#|
00000fe0 38 0d 08 98 10 41 44 44 20 72 33 2c 72 31 2c 23 |8....ADD r3,r1,#|
00000ff0 34 0d 08 a2 0d 4d 4f 56 20 72 34 2c 23 30 0d 08 |4....MOV r4,#0..|
00001000 ac 10 41 44 44 20 72 35 2c 72 31 2c 23 38 0d 08 |..ADD r5,r1,#8..|
00001010 b6 0f 4d 56 4e 20 72 36 2c 23 ac 2d 38 0d 08 c0 |..MVN r6,#.-8...|
00001020 10 41 44 44 20 72 37 2c 72 31 2c 23 34 0d 08 ca |.ADD r7,r1,#4...|
00001030 0d 4d 4f 56 20 72 38 2c 23 30 0d 08 d4 0b 42 4c |.MOV r8,#0....BL|
00001040 20 71 75 61 64 0d 08 de 13 4c 44 52 20 72 31 35 | quad....LDR r15|
00001050 2c 72 65 74 73 61 76 65 0d 08 e8 04 0d 08 f2 13 |,retsave........|
00001060 2e 73 68 61 64 70 6e 74 73 20 44 43 44 20 30 0d |.shadpnts DCD 0.|
00001070 08 fc 05 5d 0d 09 06 31 78 31 3d 30 3a 79 31 3d |...]...1x1=0:y1=|
00001080 31 3a 78 32 3d 32 3a 79 32 3d 33 3a 78 33 3d 34 |1:x2=2:y2=3:x3=4|
00001090 3a 79 33 3d 35 3a 78 34 3d 36 3a 79 34 3d 37 3a |:y3=5:x4=6:y4=7:|
000010a0 63 6f 6c 3d 38 0d 09 10 11 63 74 3d 39 3a 6e 3d |col=8....ct=9:n=|
000010b0 31 30 3a 70 3d 38 0d 09 1a 0e 62 70 3d 31 31 3a |10:p=8....bp=11:|
000010c0 62 3d 31 32 0d 09 24 04 0d 09 2e 07 6b 3d 30 0d |b=12..$.....k=0.|
000010d0 09 38 0a 5b 4f 50 54 69 25 0d 09 42 12 2e 72 65 |.8.[OPTi%..B..re|
000010e0 74 73 61 76 65 20 44 43 44 20 30 0d 09 4c 0f 2e |tsave DCD 0..L..|
000010f0 64 72 61 77 70 6f 69 6e 74 73 0d 09 56 13 53 54 |drawpoints..V.ST|
00001100 52 20 72 31 34 2c 72 65 74 73 61 76 65 0d 09 60 |R r14,retsave..`|
00001110 10 4c 44 52 20 62 2c 62 69 6e 70 74 72 0d 09 6a |.LDR b,binptr..j|
00001120 04 0d 09 74 0d 4d 4f 56 20 63 74 2c 23 30 0d 09 |...t.MOV ct,#0..|
00001130 7e 0c 2e 62 69 6e 6c 6f 6f 70 0d 09 88 15 41 44 |~..binloop....AD|
00001140 44 20 62 70 2c 62 2c 63 74 2c 41 53 4c 23 38 0d |D bp,b,ct,ASL#8.|
00001150 09 92 0e 4c 44 52 20 6e 2c 5b 62 70 5d 0d 09 9c |...LDR n,[bp]...|
00001160 04 0d 09 a6 0c 4d 4f 56 53 20 6e 2c 6e 0d 09 b0 |.....MOVS n,n...|
00001170 0e 42 45 51 20 6e 6f 6d 6f 72 65 0d 09 ba 0a 2e |.BEQ nomore.....|
00001180 69 6e 62 69 6e 0d 09 c4 31 4c 44 52 20 70 2c 5b |inbin...1LDR p,[|
00001190 62 70 2c 6e 2c 41 53 4c 23 32 5d 20 20 20 20 20 |bp,n,ASL#2] |
000011a0 20 20 20 20 3b 70 20 70 74 72 20 74 6f 20 64 65 | ;p ptr to de|
000011b0 20 70 6f 69 6e 74 0d 09 ce 13 4c 44 4d 49 41 20 | point....LDMIA |
000011c0 70 2c 7b 78 31 2c 79 31 7d 0d 09 d8 12 4c 44 52 |p,{x1,y1}....LDR|
000011d0 20 78 32 2c 5b 70 2c 23 31 32 5d 0d 09 e2 12 4c | x2,[p,#12]....L|
000011e0 44 52 20 79 32 2c 5b 70 2c 23 31 36 5d 0d 09 ec |DR y2,[p,#16]...|
000011f0 13 43 4d 50 20 78 32 2c 23 26 46 46 3c 3c 31 36 |.CMP x2,#&FF<<16|
00001200 0d 09 f6 1e 4c 44 52 4e 45 20 78 33 2c 5b 70 2c |....LDRNE x3,[p,|
00001210 23 70 6f 69 6e 74 6d 6f 64 25 2b 31 32 5d 0d 0a |#pointmod%+12]..|
00001220 00 1e 4c 44 52 4e 45 20 79 33 2c 5b 70 2c 23 70 |..LDRNE y3,[p,#p|
00001230 6f 69 6e 74 6d 6f 64 25 2b 31 36 5d 0d 0a 0a 15 |ointmod%+16]....|
00001240 43 4d 50 4e 45 20 78 33 2c 23 26 46 46 3c 3c 31 |CMPNE x3,#&FF<<1|
00001250 36 0d 0a 14 1b 4c 44 52 4e 45 20 78 34 2c 5b 70 |6....LDRNE x4,[p|
00001260 2c 23 70 6f 69 6e 74 6d 6f 64 25 5d 0d 0a 1e 1d |,#pointmod%]....|
00001270 4c 44 52 4e 45 20 79 34 2c 5b 70 2c 23 70 6f 69 |LDRNE y4,[p,#poi|
00001280 6e 74 6d 6f 64 25 2b 34 5d 0d 0a 28 15 43 4d 50 |ntmod%+4]..(.CMP|
00001290 4e 45 20 78 34 2c 23 26 46 46 3c 3c 31 36 0d 0a |NE x4,#&FF<<16..|
000012a0 32 04 0d 0a 3c 12 4c 44 52 4e 45 20 70 2c 5b 70 |2...<.LDRNE p,[p|
000012b0 2c 23 38 5d 0d 0a 46 1a 52 53 42 4e 45 20 72 31 |,#8]..F.RSBNE r1|
000012c0 34 2c 63 74 2c 23 64 69 73 70 79 25 2d 31 0d 0a |4,ct,#dispy%-1..|
000012d0 50 11 41 44 44 4e 45 20 70 2c 70 2c 72 31 34 0d |P.ADDNE p,p,r14.|
000012e0 0a 5a 15 41 44 52 4e 45 20 72 31 34 2c 63 6f 6c |.Z.ADRNE r14,col|
000012f0 6f 75 72 73 0d 0a 64 14 4c 44 52 4e 45 42 20 70 |ours..d.LDRNEB p|
00001300 2c 5b 72 31 34 2c 70 5d 0d 0a 6e 0d 42 4c 4e 45 |,[r14,p]..n.BLNE|
00001310 20 71 75 61 64 0d 0a 78 04 0d 0a 82 04 0d 0a 8c | quad..x........|
00001320 0f 53 55 42 53 20 6e 2c 6e 2c 23 31 0d 0a 96 0d |.SUBS n,n,#1....|
00001330 42 4e 45 20 69 6e 62 69 6e 0d 0a a0 04 0d 0a aa |BNE inbin.......|
00001340 0b 2e 6e 6f 6d 6f 72 65 0d 0a b4 10 41 44 44 20 |..nomore....ADD |
00001350 63 74 2c 63 74 2c 23 31 0d 0a be 12 43 4d 50 20 |ct,ct,#1....CMP |
00001360 63 74 2c 23 64 69 73 70 79 25 0d 0a c8 0f 42 4e |ct,#dispy%....BN|
00001370 45 20 62 69 6e 6c 6f 6f 70 0d 0a d2 04 0d 0a dc |E binloop.......|
00001380 04 0d 0a e6 3d 2e 65 6d 70 74 79 62 69 6e 73 20 |....=.emptybins |
00001390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
000013a0 3b 72 65 6d 6f 76 65 20 62 69 6e 73 20 61 6e 64 |;remove bins and|
000013b0 20 64 65 6c 65 74 65 20 70 6f 69 6e 74 73 0d 0a | delete points..|
000013c0 f0 12 4d 4f 56 20 6b 2c 23 26 46 46 3c 3c 31 36 |..MOV k,#&FF<<16|
000013d0 0d 0a fa 04 0d 0b 04 14 4d 4f 56 20 63 74 2c 23 |........MOV ct,#|
000013e0 64 69 73 70 79 25 2d 31 0d 0b 0e 0e 2e 65 6d 70 |dispy%-1.....emp|
000013f0 74 79 6c 6f 6f 70 0d 0b 18 15 41 44 44 20 62 70 |tyloop....ADD bp|
00001400 2c 62 2c 63 74 2c 41 53 4c 23 38 0d 0b 22 0e 4c |,b,ct,ASL#8..".L|
00001410 44 52 20 6e 2c 5b 62 70 5d 0d 0b 2c 04 0d 0b 36 |DR n,[bp]..,...6|
00001420 0c 4d 4f 56 53 20 6e 2c 6e 0d 0b 40 0f 42 45 51 |.MOVS n,n..@.BEQ|
00001430 20 6e 6f 6d 6f 72 65 32 0d 0b 4a 0b 2e 6f 75 74 | nomore2..J..out|
00001440 62 69 6e 0d 0b 54 31 4c 44 52 20 70 2c 5b 62 70 |bin..T1LDR p,[bp|
00001450 2c 6e 2c 41 53 4c 23 32 5d 20 20 20 20 20 20 20 |,n,ASL#2] |
00001460 20 20 3b 70 20 70 74 72 20 74 6f 20 64 65 20 70 | ;p ptr to de p|
00001470 6f 69 6e 74 0d 0b 5e 0d 53 54 52 20 6b 2c 5b 70 |oint..^.STR k,[p|
00001480 5d 0d 0b 68 04 0d 0b 72 0f 53 55 42 53 20 6e 2c |]..h...r.SUBS n,|
00001490 6e 2c 23 31 0d 0b 7c 0e 42 4e 45 20 6f 75 74 62 |n,#1..|.BNE outb|
000014a0 69 6e 0d 0b 86 29 53 54 52 20 6e 2c 5b 62 70 5d |in...)STR n,[bp]|
000014b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
000014c0 20 3b 65 6d 70 74 79 20 62 69 6e 0d 0b 90 04 0d | ;empty bin.....|
000014d0 0b 9a 0c 2e 6e 6f 6d 6f 72 65 32 0d 0b a4 11 53 |....nomore2....S|
000014e0 55 42 53 20 63 74 2c 63 74 2c 23 31 0d 0b ae 11 |UBS ct,ct,#1....|
000014f0 42 50 4c 20 65 6d 70 74 79 6c 6f 6f 70 0d 0b b8 |BPL emptyloop...|
00001500 04 0d 0b c2 13 4c 44 52 20 72 31 35 2c 72 65 74 |.....LDR r15,ret|
00001510 73 61 76 65 0d 0b cc 04 0d 0b d6 0c 2e 63 6f 6c |save.........col|
00001520 6f 75 72 73 0d 0b e0 33 a4 64 61 74 61 28 22 46 |ours...3.data("F|
00001530 46 46 45 46 44 46 43 44 33 44 32 44 31 44 30 32 |FFEFDFCD3D2D1D02|
00001540 46 32 45 32 44 32 43 32 43 32 43 32 43 32 43 22 |F2E2D2C2C2C2C2C"|
00001550 29 20 3b 67 72 65 79 0d 0b ea 39 a4 64 61 74 61 |) ;grey...9.data|
00001560 28 22 41 42 41 41 41 39 41 38 38 33 38 32 38 31 |("ABAAA9A8838281|
00001570 38 30 30 42 30 41 30 39 30 38 30 38 30 38 30 38 |800B0A0908080808|
00001580 30 38 22 29 20 3b 6c 69 67 68 74 20 62 6c 75 65 |08") ;light blue|
00001590 0d 0b f4 3a a4 64 61 74 61 28 22 33 46 33 45 33 |...:.data("3F3E3|
000015a0 44 33 43 31 33 31 32 31 31 31 30 30 37 30 36 30 |D3C1312111007060|
000015b0 35 30 34 30 33 30 32 30 31 30 30 22 29 20 3b 70 |50403020100") ;p|
000015c0 69 6e 6b 20 2d 3e 20 72 65 64 0d 0b fe 3b a4 64 |ink -> red...;.d|
000015d0 61 74 61 28 22 35 46 35 45 35 44 35 43 33 33 33 |ata("5F5E5D5C333|
000015e0 32 33 31 33 30 30 37 30 36 30 35 30 34 30 34 30 |2313007060504040|
000015f0 34 30 34 30 34 22 29 20 3b 70 65 61 63 68 20 2d |40404") ;peach -|
00001600 3e 20 72 65 64 0d 0c 08 3b a4 64 61 74 61 28 22 |> red...;.data("|
00001610 36 33 36 32 36 31 36 30 34 33 34 32 34 31 34 30 |6362616043424140|
00001620 32 33 32 32 32 31 32 30 32 30 32 30 32 30 32 30 |2322212020202020|
00001630 22 29 20 3b 62 72 69 67 68 74 20 67 72 65 65 6e |") ;bright green|
00001640 0d 0c 12 05 5d 0d 0c 1c 04 0d 0c 26 17 61 78 3d |....]......&.ax=|
00001650 30 3a 61 79 3d 31 3a 62 78 3d 32 3a 62 79 3d 33 |0:ay=1:bx=2:by=3|
00001660 0d 0c 30 17 63 78 3d 34 3a 63 79 3d 35 3a 64 78 |..0.cx=4:cy=5:dx|
00001670 3d 36 3a 64 79 3d 37 0d 0c 3a 0d 63 6f 6c 3d 38 |=6:dy=7..:.col=8|
00001680 3a 74 3d 39 0d 0c 44 04 0d 0c 4e 12 61 3d 31 30 |:t=9..D...N.a=10|
00001690 3a 62 3d 31 31 3a 63 3d 31 32 0d 0c 58 08 6e 3d |:b=11:c=12..X.n=|
000016a0 31 30 0d 0c 62 0d 71 3d 31 31 3a 73 3d 31 32 0d |10..b.q=11:s=12.|
000016b0 0c 6c 04 0d 0c 76 1a 78 6c 3d 30 3a 78 72 3d 31 |.l...v.xl=0:xr=1|
000016c0 3a 6c 3d 32 3a 72 3d 33 3a 63 74 3d 34 0d 0c 80 |:l=2:r=3:ct=4...|
000016d0 17 63 31 3d 35 3a 63 32 3d 36 3a 63 33 3d 37 3a |.c1=5:c2=6:c3=7:|
000016e0 63 34 3d 38 0d 0c 8a 14 6f 3d 31 30 3a 6c 61 3d |c4=8....o=10:la=|
000016f0 31 31 3a 72 61 3d 31 32 0d 0c 94 04 0d 0c 9e 17 |11:ra=12........|
00001700 73 70 3d 31 33 3a 6c 69 6e 6b 3d 31 34 3a 70 63 |sp=13:link=14:pc|
00001710 3d 31 35 0d 0c a8 0a 5b 4f 50 54 69 25 0d 0c b2 |=15....[OPTi%...|
00001720 0e 2e 61 78 64 20 45 51 55 44 30 0d 0c bc 0e 2e |..axd EQUD0.....|
00001730 62 78 64 20 45 51 55 44 30 0d 0c c6 08 2e 63 78 |bxd EQUD0.....cx|
00001740 64 0d 0c d0 0e 2e 64 78 64 20 45 51 55 44 30 0d |d.....dxd EQUD0.|
00001750 0c da 0d 2e 61 62 20 45 51 55 44 30 0d 0c e4 0d |....ab EQUD0....|
00001760 2e 62 63 20 45 51 55 44 30 0d 0c ee 07 2e 64 63 |.bc EQUD0.....dc|
00001770 0d 0c f8 0d 2e 63 64 20 45 51 55 44 30 0d 0d 02 |.....cd EQUD0...|
00001780 07 2e 61 63 0d 0d 0c 0d 2e 61 64 20 45 51 55 44 |..ac.....ad EQUD|
00001790 30 0d 0d 16 0d 2e 61 61 20 45 51 55 44 30 0d 0d |0.....aa EQUD0..|
000017a0 20 07 2e 64 64 0d 0d 2a 0d 2e 62 62 20 45 51 55 | ..dd..*..bb EQU|
000017b0 44 30 0d 0d 34 0d 2e 63 63 20 45 51 55 44 30 0d |D0..4..cc EQUD0.|
000017c0 0d 3e 10 2e 79 70 6f 73 71 20 45 51 55 44 30 0d |.>..yposq EQUD0.|
000017d0 0d 48 1a 2e 64 69 74 61 62 64 20 45 51 55 44 20 |.H..ditabd EQUD |
000017e0 64 69 76 74 61 62 6c 65 25 0d 0d 52 04 0d 0d 5c |divtable%..R...\|
000017f0 08 2e 74 72 69 0d 0d 66 1b 53 54 4d 46 44 20 72 |..tri..f.STMFD r|
00001800 31 33 21 2c 7b 72 39 2d 72 31 32 2c 72 31 34 7d |13!,{r9-r12,r14}|
00001810 0d 0d 70 04 0d 0d 7a 13 3b 80 20 63 6f 6c 2c 63 |..p...z.;. col,c|
00001820 6f 6c 2c 23 26 66 66 0d 0d 84 19 41 44 44 20 63 |ol,#&ff....ADD c|
00001830 6f 6c 2c 63 6f 6c 2c 63 6f 6c 2c 4c 53 4c 23 38 |ol,col,col,LSL#8|
00001840 0d 0d 8e 1a 41 44 44 20 63 6f 6c 2c 63 6f 6c 2c |....ADD col,col,|
00001850 63 6f 6c 2c 4c 53 4c 23 31 36 0d 0d 98 04 0d 0d |col,LSL#16......|
00001860 a2 16 41 44 44 20 61 78 2c 61 78 2c 23 6f 72 69 |..ADD ax,ax,#ori|
00001870 67 69 6e 58 0d 0d ac 16 41 44 44 20 62 78 2c 62 |ginX....ADD bx,b|
00001880 78 2c 23 6f 72 69 67 69 6e 58 0d 0d b6 16 41 44 |x,#originX....AD|
00001890 44 20 63 78 2c 63 78 2c 23 6f 72 69 67 69 6e 58 |D cx,cx,#originX|
000018a0 0d 0d c0 04 0d 0d ca 1f 43 4d 50 20 61 79 2c 62 |........CMP ay,b|
000018b0 79 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 73 |y ;s|
000018c0 6f 72 74 0d 0d d4 0e 4d 4f 56 47 54 20 74 2c 61 |ort....MOVGT t,a|
000018d0 78 0d 0d de 0f 4d 4f 56 47 54 20 61 78 2c 62 78 |x....MOVGT ax,bx|
000018e0 0d 0d e8 0e 4d 4f 56 47 54 20 62 78 2c 74 0d 0d |....MOVGT bx,t..|
000018f0 f2 0e 4d 4f 56 47 54 20 74 2c 61 79 0d 0d fc 0f |..MOVGT t,ay....|
00001900 4d 4f 56 47 54 20 61 79 2c 62 79 0d 0e 06 0e 4d |MOVGT ay,by....M|
00001910 4f 56 47 54 20 62 79 2c 74 0d 0e 10 0d 43 4d 50 |OVGT by,t....CMP|
00001920 20 62 79 2c 63 79 0d 0e 1a 0e 4d 4f 56 47 54 20 | by,cy....MOVGT |
00001930 74 2c 62 78 0d 0e 24 0f 4d 4f 56 47 54 20 62 78 |t,bx..$.MOVGT bx|
00001940 2c 63 78 0d 0e 2e 0e 4d 4f 56 47 54 20 63 78 2c |,cx....MOVGT cx,|
00001950 74 0d 0e 38 0e 4d 4f 56 47 54 20 74 2c 62 79 0d |t..8.MOVGT t,by.|
00001960 0e 42 0f 4d 4f 56 47 54 20 62 79 2c 63 79 0d 0e |.B.MOVGT by,cy..|
00001970 4c 0e 4d 4f 56 47 54 20 63 79 2c 74 0d 0e 56 0d |L.MOVGT cy,t..V.|
00001980 43 4d 50 20 61 79 2c 62 79 0d 0e 60 0e 4d 4f 56 |CMP ay,by..`.MOV|
00001990 47 54 20 74 2c 61 78 0d 0e 6a 0f 4d 4f 56 47 54 |GT t,ax..j.MOVGT|
000019a0 20 61 78 2c 62 78 0d 0e 74 0e 4d 4f 56 47 54 20 | ax,bx..t.MOVGT |
000019b0 62 78 2c 74 0d 0e 7e 0e 4d 4f 56 47 54 20 74 2c |bx,t..~.MOVGT t,|
000019c0 61 79 0d 0e 88 0f 4d 4f 56 47 54 20 61 79 2c 62 |ay....MOVGT ay,b|
000019d0 79 0d 0e 92 0e 4d 4f 56 47 54 20 62 79 2c 74 0d |y....MOVGT by,t.|
000019e0 0e 9c 04 0d 0e a6 04 0d 0e b0 15 41 44 44 20 74 |...........ADD t|
000019f0 2c 61 79 2c 23 6f 72 69 67 69 6e 59 0d 0e ba 0f |,ay,#originY....|
00001a00 53 54 52 20 74 2c 79 70 6f 73 71 0d 0e c4 04 0d |STR t,yposq.....|
00001a10 0e ce 04 0d 0e d8 0e 53 54 52 20 61 78 2c 61 78 |.......STR ax,ax|
00001a20 64 0d 0e e2 0e 53 54 52 20 62 78 2c 62 78 64 0d |d....STR bx,bxd.|
00001a30 0e ec 0e 53 54 52 20 63 78 2c 63 78 64 0d 0e f6 |...STR cx,cxd...|
00001a40 04 0d 0f 00 10 4c 44 52 20 71 2c 64 69 74 61 62 |.....LDR q,ditab|
00001a50 64 0d 0f 0a 0f 53 55 42 20 74 2c 62 78 2c 61 78 |d....SUB t,bx,ax|
00001a60 0d 0f 14 0f 53 55 42 20 6e 2c 62 79 2c 61 79 0d |....SUB n,by,ay.|
00001a70 0f 1e 0c 53 54 52 20 6e 2c 61 61 0d 0f 28 15 4c |...STR n,aa..(.L|
00001a80 44 52 20 6e 2c 5b 71 2c 6e 2c 41 53 4c 23 32 5d |DR n,[q,n,ASL#2]|
00001a90 0d 0f 32 0d 4d 55 4c 20 6e 2c 74 2c 6e 0d 0f 3c |..2.MUL n,t,n..<|
00001aa0 0c 53 54 52 20 6e 2c 61 62 0d 0f 46 04 0d 0f 50 |.STR n,ab..F...P|
00001ab0 0f 53 55 42 20 74 2c 63 78 2c 62 78 0d 0f 5a 0f |.SUB t,cx,bx..Z.|
00001ac0 53 55 42 20 6e 2c 63 79 2c 62 79 0d 0f 64 0c 53 |SUB n,cy,by..d.S|
00001ad0 54 52 20 6e 2c 62 62 0d 0f 6e 15 4c 44 52 20 6e |TR n,bb..n.LDR n|
00001ae0 2c 5b 71 2c 6e 2c 41 53 4c 23 32 5d 0d 0f 78 0d |,[q,n,ASL#2]..x.|
00001af0 4d 55 4c 20 6e 2c 74 2c 6e 0d 0f 82 0c 53 54 52 |MUL n,t,n....STR|
00001b00 20 6e 2c 62 63 0d 0f 8c 04 0d 0f 96 0f 53 55 42 | n,bc........SUB|
00001b10 20 74 2c 63 78 2c 61 78 0d 0f a0 0f 53 55 42 20 | t,cx,ax....SUB |
00001b20 6e 2c 63 79 2c 61 79 0d 0f aa 15 4c 44 52 20 6e |n,cy,ay....LDR n|
00001b30 2c 5b 71 2c 6e 2c 41 53 4c 23 32 5d 0d 0f b4 0d |,[q,n,ASL#2]....|
00001b40 4d 55 4c 20 6e 2c 74 2c 6e 0d 0f be 0c 53 54 52 |MUL n,t,n....STR|
00001b50 20 6e 2c 61 63 0d 0f c8 04 0d 0f d2 0d 4c 44 52 | n,ac........LDR|
00001b60 20 6f 2c 76 64 75 0d 0f dc 15 41 44 44 20 74 2c | o,vdu....ADD t,|
00001b70 61 79 2c 23 6f 72 69 67 69 6e 59 0d 0f e6 13 41 |ay,#originY....A|
00001b80 44 44 20 74 2c 74 2c 74 2c 41 53 4c 23 32 0d 0f |DD t,t,t,ASL#2..|
00001b90 f0 13 41 44 44 20 6f 2c 6f 2c 74 2c 41 53 4c 23 |..ADD o,o,t,ASL#|
00001ba0 36 0d 0f fa 04 0d 10 04 0d 4d 4f 56 20 63 31 2c |6........MOV c1,|
00001bb0 63 34 0d 10 0e 0d 4d 4f 56 20 63 32 2c 63 34 0d |c4....MOV c2,c4.|
00001bc0 10 18 0d 4d 4f 56 20 63 33 2c 63 34 0d 10 22 04 |...MOV c3,c4..".|
00001bd0 0d 10 2c 0d 4c 44 52 20 63 74 2c 61 61 0d 10 36 |..,.LDR ct,aa..6|
00001be0 0d 43 4d 50 20 63 74 2c 23 30 0d 10 40 0d 4c 44 |.CMP ct,#0..@.LD|
00001bf0 52 20 74 2c 61 78 64 0d 10 4a 13 4d 4f 56 20 6c |R t,axd..J.MOV l|
00001c00 2c 74 2c 41 53 4c 23 66 70 25 0d 10 54 13 4d 4f |,t,ASL#fp%..T.MO|
00001c10 56 20 72 2c 74 2c 41 53 4c 23 66 70 25 0d 10 5e |V r,t,ASL#fp%..^|
00001c20 0d 4c 44 52 20 6c 61 2c 61 63 0d 10 68 17 41 44 |.LDR la,ac..h.AD|
00001c30 44 20 6c 2c 6c 2c 23 31 3c 3c 28 66 70 25 2d 31 |D l,l,#1<<(fp%-1|
00001c40 29 0d 10 72 0d 4c 44 52 20 72 61 2c 61 62 0d 10 |)..r.LDR ra,ab..|
00001c50 7c 17 41 44 44 20 72 2c 72 2c 23 31 3c 3c 28 66 ||.ADD r,r,#1<<(f|
00001c60 70 25 2d 31 29 0d 10 86 0e 42 4c 4e 45 20 70 69 |p%-1)....BLNE pi|
00001c70 65 63 65 0d 10 90 04 0d 10 9a 0d 4c 44 52 20 63 |ece........LDR c|
00001c80 74 2c 62 62 0d 10 a4 0d 43 4d 50 20 63 74 2c 23 |t,bb....CMP ct,#|
00001c90 30 0d 10 ae 0d 4c 44 52 20 74 2c 62 78 64 0d 10 |0....LDR t,bxd..|
00001ca0 b8 13 4d 4f 56 20 72 2c 74 2c 41 53 4c 23 66 70 |..MOV r,t,ASL#fp|
00001cb0 25 0d 10 c2 0d 4c 44 52 20 72 61 2c 62 63 0d 10 |%....LDR ra,bc..|
00001cc0 cc 17 41 44 44 20 72 2c 72 2c 23 31 3c 3c 28 66 |..ADD r,r,#1<<(f|
00001cd0 70 25 2d 31 29 0d 10 d6 0e 42 4c 4e 45 20 70 69 |p%-1)....BLNE pi|
00001ce0 65 63 65 0d 10 e0 1c 4c 44 4d 46 44 20 72 31 33 |ece....LDMFD r13|
00001cf0 21 2c 7b 72 39 2d 72 31 32 2c 72 31 35 7d 5e 0d |!,{r9-r12,r15}^.|
00001d00 10 ea 04 0d 10 f4 39 2e 71 75 61 64 20 20 20 20 |......9.quad |
00001d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
00001d20 3b 62 61 73 65 64 20 6f 6e 20 61 20 72 6f 75 74 |;based on a rout|
00001d30 69 6e 65 20 62 79 20 4a 61 6e 20 ef 0d 10 fe 1b |ine by Jan .....|
00001d40 53 54 4d 46 44 20 72 31 33 21 2c 7b 72 39 2d 72 |STMFD r13!,{r9-r|
00001d50 31 32 2c 72 31 34 7d 0d 11 08 04 0d 11 12 13 3b |12,r14}........;|
00001d60 80 20 63 6f 6c 2c 63 6f 6c 2c 23 26 66 66 0d 11 |. col,col,#&ff..|
00001d70 1c 19 41 44 44 20 63 6f 6c 2c 63 6f 6c 2c 63 6f |..ADD col,col,co|
00001d80 6c 2c 4c 53 4c 23 38 0d 11 26 1a 41 44 44 20 63 |l,LSL#8..&.ADD c|
00001d90 6f 6c 2c 63 6f 6c 2c 63 6f 6c 2c 4c 53 4c 23 31 |ol,col,col,LSL#1|
00001da0 36 0d 11 30 04 0d 11 3a 16 41 44 44 20 61 78 2c |6..0...:.ADD ax,|
00001db0 61 78 2c 23 6f 72 69 67 69 6e 58 0d 11 44 16 41 |ax,#originX..D.A|
00001dc0 44 44 20 62 78 2c 62 78 2c 23 6f 72 69 67 69 6e |DD bx,bx,#origin|
00001dd0 58 0d 11 4e 16 41 44 44 20 63 78 2c 63 78 2c 23 |X..N.ADD cx,cx,#|
00001de0 6f 72 69 67 69 6e 58 0d 11 58 16 41 44 44 20 64 |originX..X.ADD d|
00001df0 78 2c 64 78 2c 23 6f 72 69 67 69 6e 58 0d 11 62 |x,dx,#originX..b|
00001e00 04 0d 11 6c 24 4d 4f 56 20 74 2c 61 79 20 20 3b |...l$MOV t,ay ;|
00001e10 66 69 6e 64 20 73 6d 61 6c 6c 65 73 74 20 28 74 |find smallest (t|
00001e20 6f 70 29 20 79 0d 11 76 0c 43 4d 50 20 74 2c 62 |op) y..v.CMP t,b|
00001e30 79 0d 11 80 0e 4d 4f 56 47 54 20 74 2c 62 79 0d |y....MOVGT t,by.|
00001e40 11 8a 0c 43 4d 50 20 74 2c 63 79 0d 11 94 0e 4d |...CMP t,cy....M|
00001e50 4f 56 47 54 20 74 2c 63 79 0d 11 9e 0c 43 4d 50 |OVGT t,cy....CMP|
00001e60 20 74 2c 64 79 0d 11 a8 0e 4d 4f 56 47 54 20 74 | t,dy....MOVGT t|
00001e70 2c 64 79 0d 11 b2 04 0d 11 bc 0a 2e 6f 72 64 65 |,dy.........orde|
00001e80 72 0d 11 c6 0c 43 4d 50 20 74 2c 61 79 0d 11 d0 |r....CMP t,ay...|
00001e90 0a 42 45 51 20 6f 6b 0d 11 da 08 a4 72 6f 74 0d |.BEQ ok.....rot.|
00001ea0 11 e4 0b 42 20 6f 72 64 65 72 0d 11 ee 07 2e 6f |...B order.....o|
00001eb0 6b 0d 11 f8 04 0d 12 02 15 41 44 44 20 74 2c 61 |k........ADD t,a|
00001ec0 79 2c 23 6f 72 69 67 69 6e 59 0d 12 0c 0f 53 54 |y,#originY....ST|
00001ed0 52 20 74 2c 79 70 6f 73 71 0d 12 16 04 0d 12 20 |R t,yposq...... |
00001ee0 0d 43 4d 50 20 62 79 2c 64 79 0d 12 2a 0e 4d 4f |.CMP by,dy..*.MO|
00001ef0 56 47 54 20 74 2c 62 78 0d 12 34 0e 4d 4f 56 47 |VGT t,bx..4.MOVG|
00001f00 54 20 73 2c 62 79 0d 12 3e 0f 4d 4f 56 47 54 20 |T s,by..>.MOVGT |
00001f10 62 78 2c 64 78 0d 12 48 0f 4d 4f 56 47 54 20 62 |bx,dx..H.MOVGT b|
00001f20 79 2c 64 79 0d 12 52 0e 4d 4f 56 47 54 20 64 78 |y,dy..R.MOVGT dx|
00001f30 2c 74 0d 12 5c 0e 4d 4f 56 47 54 20 64 79 2c 73 |,t..\.MOVGT dy,s|
00001f40 0d 12 66 04 0d 12 70 0d 43 4d 50 20 63 79 2c 64 |..f...p.CMP cy,d|
00001f50 79 0d 12 7a 0f 42 47 54 20 64 69 61 6d 6f 6e 64 |y..z.BGT diamond|
00001f60 0d 12 84 04 0d 12 8e 24 43 4d 50 20 63 79 2c 62 |.......$CMP cy,b|
00001f70 79 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |y |
00001f80 3b 44 55 42 49 4f 55 53 0d 12 98 25 4d 4f 56 4c |;DUBIOUS...%MOVL|
00001f90 54 20 63 79 2c 62 79 20 20 20 20 20 20 20 20 20 |T cy,by |
00001fa0 20 20 20 20 3b 53 4f 4c 55 54 49 4f 4e 0d 12 a2 | ;SOLUTION...|
00001fb0 04 0d 12 ac 0e 53 54 52 20 61 78 2c 61 78 64 0d |.....STR ax,axd.|
00001fc0 12 b6 0e 53 54 52 20 62 78 2c 62 78 64 0d 12 c0 |...STR bx,bxd...|
00001fd0 0e 53 54 52 20 63 78 2c 63 78 64 0d 12 ca 04 0d |.STR cx,cxd.....|
00001fe0 12 d4 10 4c 44 52 20 71 2c 64 69 74 61 62 64 0d |...LDR q,ditabd.|
00001ff0 12 de 0f 53 55 42 20 74 2c 62 78 2c 61 78 0d 12 |...SUB t,bx,ax..|
00002000 e8 0f 53 55 42 20 6e 2c 62 79 2c 61 79 0d 12 f2 |..SUB n,by,ay...|
00002010 0c 53 54 52 20 6e 2c 61 61 0d 12 fc 15 4c 44 52 |.STR n,aa....LDR|
00002020 20 6e 2c 5b 71 2c 6e 2c 41 53 4c 23 32 5d 0d 13 | n,[q,n,ASL#2]..|
00002030 06 0d 4d 55 4c 20 6e 2c 74 2c 6e 0d 13 10 0c 53 |..MUL n,t,n....S|
00002040 54 52 20 6e 2c 61 62 0d 13 1a 0f 53 55 42 20 74 |TR n,ab....SUB t|
00002050 2c 64 78 2c 61 78 0d 13 24 0f 53 55 42 20 6e 2c |,dx,ax..$.SUB n,|
00002060 64 79 2c 61 79 0d 13 2e 15 4c 44 52 20 6e 2c 5b |dy,ay....LDR n,[|
00002070 71 2c 6e 2c 41 53 4c 23 32 5d 0d 13 38 0d 4d 55 |q,n,ASL#2]..8.MU|
00002080 4c 20 6e 2c 74 2c 6e 0d 13 42 0c 53 54 52 20 6e |L n,t,n..B.STR n|
00002090 2c 61 64 0d 13 4c 0f 53 55 42 20 74 2c 63 78 2c |,ad..L.SUB t,cx,|
000020a0 62 78 0d 13 56 0f 53 55 42 20 6e 2c 63 79 2c 62 |bx..V.SUB n,cy,b|
000020b0 79 0d 13 60 0c 53 54 52 20 6e 2c 62 62 0d 13 6a |y..`.STR n,bb..j|
000020c0 15 4c 44 52 20 6e 2c 5b 71 2c 6e 2c 41 53 4c 23 |.LDR n,[q,n,ASL#|
000020d0 32 5d 0d 13 74 0d 4d 55 4c 20 6e 2c 74 2c 6e 0d |2]..t.MUL n,t,n.|
000020e0 13 7e 0c 53 54 52 20 6e 2c 62 63 0d 13 88 0f 53 |.~.STR n,bc....S|
000020f0 55 42 20 74 2c 64 78 2c 63 78 0d 13 92 0f 53 55 |UB t,dx,cx....SU|
00002100 42 20 6e 2c 64 79 2c 63 79 0d 13 9c 0c 53 54 52 |B n,dy,cy....STR|
00002110 20 6e 2c 63 63 0d 13 a6 15 4c 44 52 20 6e 2c 5b | n,cc....LDR n,[|
00002120 71 2c 6e 2c 41 53 4c 23 32 5d 0d 13 b0 0d 4d 55 |q,n,ASL#2]....MU|
00002130 4c 20 6e 2c 74 2c 6e 0d 13 ba 0c 53 54 52 20 6e |L n,t,n....STR n|
00002140 2c 63 64 0d 13 c4 04 0d 13 ce 0d 4c 44 52 20 6f |,cd........LDR o|
00002150 2c 76 64 75 0d 13 d8 15 41 44 44 20 74 2c 61 79 |,vdu....ADD t,ay|
00002160 2c 23 6f 72 69 67 69 6e 59 0d 13 e2 13 41 44 44 |,#originY....ADD|
00002170 20 74 2c 74 2c 74 2c 41 53 4c 23 32 0d 13 ec 13 | t,t,t,ASL#2....|
00002180 41 44 44 20 6f 2c 6f 2c 74 2c 41 53 4c 23 36 0d |ADD o,o,t,ASL#6.|
00002190 13 f6 04 0d 14 00 0d 4d 4f 56 20 63 31 2c 63 34 |.......MOV c1,c4|
000021a0 0d 14 0a 0d 4d 4f 56 20 63 32 2c 63 34 0d 14 14 |....MOV c2,c4...|
000021b0 0d 4d 4f 56 20 63 33 2c 63 34 0d 14 1e 04 0d 14 |.MOV c3,c4......|
000021c0 28 0d 4c 44 52 20 63 74 2c 61 61 0d 14 32 0d 43 |(.LDR ct,aa..2.C|
000021d0 4d 50 20 63 74 2c 23 30 0d 14 3c 0d 4c 44 52 20 |MP ct,#0..<.LDR |
000021e0 74 2c 61 78 64 0d 14 46 13 4d 4f 56 20 6c 2c 74 |t,axd..F.MOV l,t|
000021f0 2c 41 53 4c 23 66 70 25 0d 14 50 13 4d 4f 56 20 |,ASL#fp%..P.MOV |
00002200 72 2c 74 2c 41 53 4c 23 66 70 25 0d 14 5a 0d 4c |r,t,ASL#fp%..Z.L|
00002210 44 52 20 6c 61 2c 61 64 0d 14 64 17 41 44 44 20 |DR la,ad..d.ADD |
00002220 6c 2c 6c 2c 23 31 3c 3c 28 66 70 25 2d 31 29 0d |l,l,#1<<(fp%-1).|
00002230 14 6e 0d 4c 44 52 20 72 61 2c 61 62 0d 14 78 17 |.n.LDR ra,ab..x.|
00002240 41 44 44 20 72 2c 72 2c 23 31 3c 3c 28 66 70 25 |ADD r,r,#1<<(fp%|
00002250 2d 31 29 0d 14 82 0e 42 4c 4e 45 20 70 69 65 63 |-1)....BLNE piec|
00002260 65 0d 14 8c 04 0d 14 96 0d 4c 44 52 20 63 74 2c |e........LDR ct,|
00002270 62 62 0d 14 a0 0d 43 4d 50 20 63 74 2c 23 30 0d |bb....CMP ct,#0.|
00002280 14 aa 0d 4c 44 52 20 74 2c 62 78 64 0d 14 b4 13 |...LDR t,bxd....|
00002290 4d 4f 56 20 72 2c 74 2c 41 53 4c 23 66 70 25 0d |MOV r,t,ASL#fp%.|
000022a0 14 be 0d 4c 44 52 20 72 61 2c 62 63 0d 14 c8 17 |...LDR ra,bc....|
000022b0 41 44 44 20 72 2c 72 2c 23 31 3c 3c 28 66 70 25 |ADD r,r,#1<<(fp%|
000022c0 2d 31 29 0d 14 d2 0e 42 4c 4e 45 20 70 69 65 63 |-1)....BLNE piec|
000022d0 65 0d 14 dc 04 0d 14 e6 0d 4c 44 52 20 63 74 2c |e........LDR ct,|
000022e0 63 63 0d 14 f0 0d 43 4d 50 20 63 74 2c 23 30 0d |cc....CMP ct,#0.|
000022f0 14 fa 0d 4c 44 52 20 74 2c 63 78 64 0d 15 04 13 |...LDR t,cxd....|
00002300 4d 4f 56 20 72 2c 74 2c 41 53 4c 23 66 70 25 0d |MOV r,t,ASL#fp%.|
00002310 15 0e 0d 4c 44 52 20 72 61 2c 63 64 0d 15 18 17 |...LDR ra,cd....|
00002320 41 44 44 20 72 2c 72 2c 23 31 3c 3c 28 66 70 25 |ADD r,r,#1<<(fp%|
00002330 2d 31 29 0d 15 22 0e 42 4c 4e 45 20 70 69 65 63 |-1)..".BLNE piec|
00002340 65 0d 15 2c 1c 4c 44 4d 46 44 20 72 31 33 21 2c |e..,.LDMFD r13!,|
00002350 7b 72 39 2d 72 31 32 2c 72 31 35 7d 5e 0d 15 36 |{r9-r12,r15}^..6|
00002360 04 0d 15 40 04 0d 15 4a 0c 2e 64 69 61 6d 6f 6e |...@...J..diamon|
00002370 64 0d 15 54 0e 53 54 52 20 61 78 2c 61 78 64 0d |d..T.STR ax,axd.|
00002380 15 5e 0e 53 54 52 20 62 78 2c 62 78 64 0d 15 68 |.^.STR bx,bxd..h|
00002390 0e 53 54 52 20 64 78 2c 64 78 64 0d 15 72 04 0d |.STR dx,dxd..r..|
000023a0 15 7c 10 4c 44 52 20 71 2c 64 69 74 61 62 64 0d |.|.LDR q,ditabd.|
000023b0 15 86 0f 53 55 42 20 74 2c 62 78 2c 61 78 0d 15 |...SUB t,bx,ax..|
000023c0 90 0f 53 55 42 20 6e 2c 62 79 2c 61 79 0d 15 9a |..SUB n,by,ay...|
000023d0 0c 53 54 52 20 6e 2c 61 61 0d 15 a4 15 4c 44 52 |.STR n,aa....LDR|
000023e0 20 6e 2c 5b 71 2c 6e 2c 41 53 4c 23 32 5d 0d 15 | n,[q,n,ASL#2]..|
000023f0 ae 0d 4d 55 4c 20 6e 2c 74 2c 6e 0d 15 b8 0c 53 |..MUL n,t,n....S|
00002400 54 52 20 6e 2c 61 62 0d 15 c2 04 0d 15 cc 0f 53 |TR n,ab........S|
00002410 55 42 20 74 2c 64 78 2c 61 78 0d 15 d6 0f 53 55 |UB t,dx,ax....SU|
00002420 42 20 6e 2c 64 79 2c 61 79 0d 15 e0 15 4c 44 52 |B n,dy,ay....LDR|
00002430 20 6e 2c 5b 71 2c 6e 2c 41 53 4c 23 32 5d 0d 15 | n,[q,n,ASL#2]..|
00002440 ea 0d 4d 55 4c 20 6e 2c 74 2c 6e 0d 15 f4 0c 53 |..MUL n,t,n....S|
00002450 54 52 20 6e 2c 61 64 0d 15 fe 04 0d 16 08 0f 53 |TR n,ad........S|
00002460 55 42 20 74 2c 63 78 2c 62 78 0d 16 12 0f 53 55 |UB t,cx,bx....SU|
00002470 42 20 6e 2c 63 79 2c 62 79 0d 16 1c 15 4c 44 52 |B n,cy,by....LDR|
00002480 20 6e 2c 5b 71 2c 6e 2c 41 53 4c 23 32 5d 0d 16 | n,[q,n,ASL#2]..|
00002490 26 0d 4d 55 4c 20 6e 2c 74 2c 6e 0d 16 30 0c 53 |&.MUL n,t,n..0.S|
000024a0 54 52 20 6e 2c 62 63 0d 16 3a 04 0d 16 44 0f 53 |TR n,bc..:...D.S|
000024b0 55 42 20 74 2c 63 78 2c 64 78 0d 16 4e 0f 53 55 |UB t,cx,dx..N.SU|
000024c0 42 20 6e 2c 63 79 2c 64 79 0d 16 58 0c 53 54 52 |B n,cy,dy..X.STR|
000024d0 20 6e 2c 63 63 0d 16 62 15 4c 44 52 20 6e 2c 5b | n,cc..b.LDR n,[|
000024e0 71 2c 6e 2c 41 53 4c 23 32 5d 0d 16 6c 0d 4d 55 |q,n,ASL#2]..l.MU|
000024f0 4c 20 6e 2c 74 2c 6e 0d 16 76 0c 53 54 52 20 6e |L n,t,n..v.STR n|
00002500 2c 64 63 0d 16 80 04 0d 16 8a 0f 53 55 42 20 6e |,dc........SUB n|
00002510 2c 64 79 2c 62 79 0d 16 94 0c 53 54 52 20 6e 2c |,dy,by....STR n,|
00002520 64 64 0d 16 9e 04 0d 16 a8 0d 4c 44 52 20 6f 2c |dd........LDR o,|
00002530 76 64 75 0d 16 b2 15 41 44 44 20 74 2c 61 79 2c |vdu....ADD t,ay,|
00002540 23 6f 72 69 67 69 6e 59 0d 16 bc 13 41 44 44 20 |#originY....ADD |
00002550 74 2c 74 2c 74 2c 41 53 4c 23 32 0d 16 c6 13 41 |t,t,t,ASL#2....A|
00002560 44 44 20 6f 2c 6f 2c 74 2c 41 53 4c 23 36 0d 16 |DD o,o,t,ASL#6..|
00002570 d0 04 0d 16 da 0d 4d 4f 56 20 63 31 2c 63 34 0d |......MOV c1,c4.|
00002580 16 e4 0d 4d 4f 56 20 63 32 2c 63 34 0d 16 ee 0d |...MOV c2,c4....|
00002590 4d 4f 56 20 63 33 2c 63 34 0d 16 f8 04 0d 17 02 |MOV c3,c4.......|
000025a0 0d 4c 44 52 20 63 74 2c 61 61 0d 17 0c 0d 43 4d |.LDR ct,aa....CM|
000025b0 50 20 63 74 2c 23 30 0d 17 16 0d 4c 44 52 20 74 |P ct,#0....LDR t|
000025c0 2c 61 78 64 0d 17 20 13 4d 4f 56 20 6c 2c 74 2c |,axd.. .MOV l,t,|
000025d0 41 53 4c 23 66 70 25 0d 17 2a 13 4d 4f 56 20 72 |ASL#fp%..*.MOV r|
000025e0 2c 74 2c 41 53 4c 23 66 70 25 0d 17 34 0d 4c 44 |,t,ASL#fp%..4.LD|
000025f0 52 20 6c 61 2c 61 64 0d 17 3e 17 41 44 44 20 6c |R la,ad..>.ADD l|
00002600 2c 6c 2c 23 31 3c 3c 28 66 70 25 2d 31 29 0d 17 |,l,#1<<(fp%-1)..|
00002610 48 0d 4c 44 52 20 72 61 2c 61 62 0d 17 52 17 41 |H.LDR ra,ab..R.A|
00002620 44 44 20 72 2c 72 2c 23 31 3c 3c 28 66 70 25 2d |DD r,r,#1<<(fp%-|
00002630 31 29 0d 17 5c 0e 42 4c 4e 45 20 70 69 65 63 65 |1)..\.BLNE piece|
00002640 0d 17 66 04 0d 17 70 0d 4c 44 52 20 63 74 2c 64 |..f...p.LDR ct,d|
00002650 64 0d 17 7a 0d 43 4d 50 20 63 74 2c 23 30 0d 17 |d..z.CMP ct,#0..|
00002660 84 0d 4c 44 52 20 74 2c 62 78 64 0d 17 8e 13 4d |..LDR t,bxd....M|
00002670 4f 56 20 72 2c 74 2c 41 53 4c 23 66 70 25 0d 17 |OV r,t,ASL#fp%..|
00002680 98 0d 4c 44 52 20 72 61 2c 62 63 0d 17 a2 17 41 |..LDR ra,bc....A|
00002690 44 44 20 72 2c 72 2c 23 31 3c 3c 28 66 70 25 2d |DD r,r,#1<<(fp%-|
000026a0 31 29 0d 17 ac 0e 42 4c 4e 45 20 70 69 65 63 65 |1)....BLNE piece|
000026b0 0d 17 b6 04 0d 17 c0 0d 4c 44 52 20 63 74 2c 63 |........LDR ct,c|
000026c0 63 0d 17 ca 0d 43 4d 50 20 63 74 2c 23 30 0d 17 |c....CMP ct,#0..|
000026d0 d4 0d 4c 44 52 20 74 2c 64 78 64 0d 17 de 13 4d |..LDR t,dxd....M|
000026e0 4f 56 20 6c 2c 74 2c 41 53 4c 23 66 70 25 0d 17 |OV l,t,ASL#fp%..|
000026f0 e8 0d 4c 44 52 20 6c 61 2c 64 63 0d 17 f2 17 41 |..LDR la,dc....A|
00002700 44 44 20 6c 2c 6c 2c 23 31 3c 3c 28 66 70 25 2d |DD l,l,#1<<(fp%-|
00002710 31 29 0d 17 fc 0e 42 4c 4e 45 20 70 69 65 63 65 |1)....BLNE piece|
00002720 0d 18 06 1c 4c 44 4d 46 44 20 72 31 33 21 2c 7b |....LDMFD r13!,{|
00002730 72 39 2d 72 31 32 2c 72 31 35 7d 5e 0d 18 10 04 |r9-r12,r15}^....|
00002740 0d 18 1a 04 0d 18 24 1c 2e 70 69 65 63 65 20 3b |......$..piece ;|
00002750 53 54 4d 46 44 20 72 31 33 21 2c 7b 72 31 34 7d |STMFD r13!,{r14}|
00002760 0d 18 2e 07 2e 6c 6f 0d 18 38 0f 4c 44 52 20 74 |.....lo..8.LDR t|
00002770 2c 79 70 6f 73 71 0d 18 42 0e 41 44 44 20 74 2c |,yposq..B.ADD t,|
00002780 74 2c 23 31 0d 18 4c 0f 53 54 52 20 74 2c 79 70 |t,#1..L.STR t,yp|
00002790 6f 73 71 0d 18 56 11 43 4d 50 20 74 2c 23 66 72 |osq..V.CMP t,#fr|
000027a0 61 6d 65 54 0d 18 60 0f 42 4c 45 20 65 6e 64 73 |ameT..`.BLE ends|
000027b0 70 61 6e 0d 18 6a 11 43 4d 50 20 74 2c 23 66 72 |pan..j.CMP t,#fr|
000027c0 61 6d 65 42 0d 18 74 2f 4d 4f 56 47 54 20 72 31 |ameB..t/MOVGT r1|
000027d0 35 2c 72 31 34 20 20 20 20 20 20 20 20 20 20 20 |5,r14 |
000027e0 3b 4c 44 4d 46 44 47 54 20 72 31 33 21 2c 7b 72 |;LDMFDGT r13!,{r|
000027f0 31 35 7d 0d 18 7e 04 0d 18 88 0b 43 4d 50 20 6c |15}..~.....CMP l|
00002800 2c 72 0d 18 92 16 4d 4f 56 4c 54 20 78 6c 2c 6c |,r....MOVLT xl,l|
00002810 2c 41 53 52 23 66 70 25 0d 18 9c 16 4d 4f 56 4c |,ASR#fp%....MOVL|
00002820 54 20 78 72 2c 72 2c 41 53 52 23 66 70 25 0d 18 |T xr,r,ASR#fp%..|
00002830 a6 16 4d 4f 56 47 45 20 78 6c 2c 72 2c 41 53 52 |..MOVGE xl,r,ASR|
00002840 23 66 70 25 0d 18 b0 16 4d 4f 56 47 45 20 78 72 |#fp%....MOVGE xr|
00002850 2c 6c 2c 41 53 52 23 66 70 25 0d 18 ba 04 0d 18 |,l,ASR#fp%......|
00002860 c4 12 43 4d 50 20 78 6c 2c 23 66 72 61 6d 65 52 |..CMP xl,#frameR|
00002870 0d 18 ce 0f 42 47 54 20 65 6e 64 73 70 61 6e 0d |....BGT endspan.|
00002880 18 d8 12 43 4d 50 20 78 72 2c 23 66 72 61 6d 65 |...CMP xr,#frame|
00002890 4c 0d 18 e2 0f 42 4c 54 20 65 6e 64 73 70 61 6e |L....BLT endspan|
000028a0 0d 18 ec 12 43 4d 50 20 78 6c 2c 23 66 72 61 6d |....CMP xl,#fram|
000028b0 65 4c 0d 18 f6 14 4d 4f 56 4c 54 20 78 6c 2c 23 |eL....MOVLT xl,#|
000028c0 66 72 61 6d 65 4c 0d 19 00 12 43 4d 50 20 78 72 |frameL....CMP xr|
000028d0 2c 23 66 72 61 6d 65 52 0d 19 0a 14 4d 4f 56 47 |,#frameR....MOVG|
000028e0 54 20 78 72 2c 23 66 72 61 6d 65 52 0d 19 14 04 |T xr,#frameR....|
000028f0 0d 19 1e 0f 41 44 44 20 78 6c 2c 6f 2c 78 6c 0d |....ADD xl,o,xl.|
00002900 19 28 0f 41 44 44 20 78 72 2c 6f 2c 78 72 0d 19 |.(.ADD xr,o,xr..|
00002910 32 04 0d 19 3c 10 53 55 42 53 20 74 2c 78 72 2c |2...<.SUBS t,xr,|
00002920 78 6c 0d 19 46 0f 42 45 51 20 65 6e 64 73 70 61 |xl..F.BEQ endspa|
00002930 6e 0d 19 50 0c 43 4d 50 20 74 2c 23 32 0d 19 5a |n..P.CMP t,#2..Z|
00002940 12 53 54 52 4c 53 42 20 63 31 2c 5b 78 6c 5d 0d |.STRLSB c1,[xl].|
00002950 19 64 16 53 54 52 4c 53 42 20 63 31 2c 5b 78 72 |.d.STRLSB c1,[xr|
00002960 2c 23 2d 31 5d 0d 19 6e 0f 42 4c 53 20 65 6e 64 |,#-1]..n.BLS end|
00002970 73 70 61 6e 0d 19 78 0f 54 53 54 20 78 6c 2c 23 |span..x.TST xl,#|
00002980 25 30 31 0d 19 82 15 53 54 52 4e 45 42 20 63 31 |%01....STRNEB c1|
00002990 2c 5b 78 6c 5d 2c 23 31 0d 19 8c 0f 54 53 54 20 |,[xl],#1....TST |
000029a0 78 6c 2c 23 25 31 30 0d 19 96 15 53 54 52 4e 45 |xl,#%10....STRNE|
000029b0 42 20 63 32 2c 5b 78 6c 5d 2c 23 31 0d 19 a0 15 |B c2,[xl],#1....|
000029c0 53 54 52 4e 45 42 20 63 31 2c 5b 78 6c 5d 2c 23 |STRNEB c1,[xl],#|
000029d0 31 0d 19 aa 0f 54 53 54 20 78 72 2c 23 25 30 31 |1....TST xr,#%01|
000029e0 0d 19 b4 17 53 54 52 4e 45 42 20 63 32 2c 5b 78 |....STRNEB c2,[x|
000029f0 72 2c 23 2d 31 5d 21 0d 19 be 0f 54 53 54 20 78 |r,#-1]!....TST x|
00002a00 72 2c 23 25 31 30 0d 19 c8 17 53 54 52 4e 45 42 |r,#%10....STRNEB|
00002a10 20 63 31 2c 5b 78 72 2c 23 2d 31 5d 21 0d 19 d2 | c1,[xr,#-1]!...|
00002a20 17 53 54 52 4e 45 42 20 63 32 2c 5b 78 72 2c 23 |.STRNEB c2,[xr,#|
00002a30 2d 31 5d 21 0d 19 dc 10 53 55 42 53 20 74 2c 78 |-1]!....SUBS t,x|
00002a40 72 2c 78 6c 0d 19 e6 12 4d 4f 56 53 20 74 2c 74 |r,xl....MOVS t,t|
00002a50 2c 4c 53 52 23 33 0d 19 f0 14 53 54 52 43 53 20 |,LSR#3....STRCS |
00002a60 63 31 2c 5b 78 6c 5d 2c 23 34 0d 19 fa 12 4d 4f |c1,[xl],#4....MO|
00002a70 56 53 20 74 2c 74 2c 4c 53 52 23 31 0d 1a 04 19 |VS t,t,LSR#1....|
00002a80 53 54 4d 43 53 49 41 20 28 78 6c 29 21 2c 7b 63 |STMCSIA (xl)!,{c|
00002a90 31 2c 63 32 7d 0d 1a 0e 04 0d 1a 18 0f 41 44 52 |1,c2}........ADR|
00002aa0 20 78 72 2c 62 61 73 65 0d 1a 22 15 53 55 42 20 | xr,base..".SUB |
00002ab0 70 63 2c 78 72 2c 74 2c 4c 53 4c 23 32 0d 1a 2c |pc,xr,t,LSL#2..,|
00002ac0 09 a4 76 75 6c 63 0d 1a 36 09 2e 62 61 73 65 0d |..vulc..6..base.|
00002ad0 1a 40 04 0d 1a 4a 0c 2e 65 6e 64 73 70 61 6e 0d |.@...J..endspan.|
00002ae0 1a 54 0e 41 44 44 20 6c 2c 6c 2c 6c 61 0d 1a 5e |.T.ADD l,l,la..^|
00002af0 0e 41 44 44 20 72 2c 72 2c 72 61 0d 1a 68 10 41 |.ADD r,r,ra..h.A|
00002b00 44 44 20 6f 2c 6f 2c 23 33 32 30 0d 1a 72 11 53 |DD o,o,#320..r.S|
00002b10 55 42 53 20 63 74 2c 63 74 2c 23 31 0d 1a 7c 0a |UBS ct,ct,#1..|.|
00002b20 42 4e 45 20 6c 6f 0d 1a 86 2f 4d 4f 56 20 72 31 |BNE lo.../MOV r1|
00002b30 35 2c 72 31 34 20 20 20 20 20 20 20 20 20 20 20 |5,r14 |
00002b40 20 20 20 20 3b 4c 44 4d 46 44 20 72 31 33 21 2c | ;LDMFD r13!,|
00002b50 7b 72 31 35 7d 0d 1a 90 05 5d 0d 1a 9a 12 78 61 |{r15}....]....xa|
00002b60 3d 30 3a 79 61 3d 31 3a 7a 61 3d 32 0d 1a a4 0f |=0:ya=1:za=2....|
00002b70 78 3d 30 3a 79 3d 31 3a 7a 3d 32 0d 1a ae 15 73 |x=0:y=1:z=2....s|
00002b80 78 61 3d 33 3a 73 79 61 3d 34 3a 73 7a 61 3d 35 |xa=3:sya=4:sza=5|
00002b90 0d 1a b8 15 63 78 61 3d 36 3a 63 79 61 3d 37 3a |....cxa=6:cya=7:|
00002ba0 63 7a 61 3d 38 0d 1a c2 0c 6e 3d 39 3a 70 3d 31 |cza=8....n=9:p=1|
00002bb0 30 0d 1a cc 08 69 3d 31 30 0d 1a d6 11 70 6e 74 |0....i=10....pnt|
00002bc0 73 3d 31 31 3a 66 73 3d 31 31 0d 1a e0 0f 74 31 |s=11:fs=11....t1|
00002bd0 3d 31 32 3a 74 32 3d 31 34 0d 1a ea 04 0d 1a f4 |=12:t2=14.......|
00002be0 31 78 31 3d 30 3a 79 31 3d 31 3a 78 32 3d 32 3a |1x1=0:y1=1:x2=2:|
00002bf0 79 32 3d 33 3a 78 33 3d 34 3a 79 33 3d 35 3a 78 |y2=3:x3=4:y3=5:x|
00002c00 34 3d 36 3a 79 34 3d 37 3a 63 6f 6c 3d 38 0d 1a |4=6:y4=7:col=8..|
00002c10 fe 09 76 73 3d 31 32 0d 1b 08 04 0d 1b 12 0a 5b |..vs=12........[|
00002c20 4f 50 54 69 25 0d 1b 1c 11 2e 68 65 6c 69 70 20 |OPTi%.....helip |
00002c30 44 43 44 20 32 34 0d 1b 26 25 44 43 44 20 2d 35 |DCD 24..&%DCD -5|
00002c40 20 3a 44 43 44 20 32 20 20 3a 44 43 44 20 2d 31 | :DCD 2 :DCD -1|
00002c50 34 20 20 20 20 20 20 20 20 3b 30 0d 1b 30 1a 44 |4 ;0..0.D|
00002c60 43 44 20 2d 37 20 3a 44 43 44 20 2d 37 20 3a 44 |CD -7 :DCD -7 :D|
00002c70 43 44 20 2d 34 0d 1b 3a 1a 44 43 44 20 2d 31 30 |CD -4..:.DCD -10|
00002c80 3a 44 43 44 20 34 20 20 3a 44 43 44 20 2d 31 0d |:DCD 4 :DCD -1.|
00002c90 1b 44 18 44 43 44 20 2d 39 3a 44 43 44 20 34 20 |.D.DCD -9:DCD 4 |
00002ca0 20 3a 44 43 44 20 34 0d 1b 4e 19 44 43 44 20 2d | :DCD 4..N.DCD -|
00002cb0 35 20 3a 44 43 44 20 2d 36 20 3a 44 43 44 20 36 |5 :DCD -6 :DCD 6|
00002cc0 0d 1b 58 25 44 43 44 20 2d 36 20 3a 44 43 44 20 |..X%DCD -6 :DCD |
00002cd0 30 20 20 3a 44 43 44 20 31 30 20 20 20 20 20 20 |0 :DCD 10 |
00002ce0 20 20 20 3b 35 0d 1b 62 1a 44 43 44 20 36 20 20 | ;5..b.DCD 6 |
00002cf0 3a 44 43 44 20 30 20 20 3a 44 43 44 20 31 30 0d |:DCD 0 :DCD 10.|
00002d00 1b 6c 19 44 43 44 20 35 20 20 3a 44 43 44 20 2d |.l.DCD 5 :DCD -|
00002d10 36 20 3a 44 43 44 20 36 0d 1b 76 18 44 43 44 20 |6 :DCD 6..v.DCD |
00002d20 39 20 3a 44 43 44 20 34 20 20 3a 44 43 44 20 34 |9 :DCD 4 :DCD 4|
00002d30 0d 1b 80 1a 44 43 44 20 31 30 20 3a 44 43 44 20 |....DCD 10 :DCD |
00002d40 34 20 20 3a 44 43 44 20 2d 31 0d 1b 8a 1a 44 43 |4 :DCD -1....DC|
00002d50 44 20 37 20 20 3a 44 43 44 20 2d 37 20 3a 44 43 |D 7 :DCD -7 :DC|
00002d60 44 20 2d 34 0d 1b 94 26 44 43 44 20 35 20 20 3a |D -4...&DCD 5 :|
00002d70 44 43 44 20 32 20 20 3a 44 43 44 20 2d 31 34 20 |DCD 2 :DCD -14 |
00002d80 20 20 20 20 20 20 20 3b 31 31 0d 1b 9e 04 0d 1b | ;11......|
00002d90 a8 1b 44 43 44 20 2d 33 20 3a 44 43 44 20 35 20 |..DCD -3 :DCD 5 |
00002da0 20 3a 44 43 44 20 2d 31 32 0d 1b b2 1a 44 43 44 | :DCD -12....DCD|
00002db0 20 2d 36 20 3a 44 43 44 20 36 20 20 3a 44 43 44 | -6 :DCD 6 :DCD|
00002dc0 20 2d 32 0d 1b bc 25 44 43 44 20 2d 35 20 3a 44 | -2...%DCD -5 :D|
00002dd0 43 44 20 36 20 20 3a 44 43 44 20 37 20 20 20 20 |CD 6 :DCD 7 |
00002de0 20 20 20 20 20 3b 31 34 0d 1b c6 19 44 43 44 20 | ;14....DCD |
00002df0 35 20 20 3a 44 43 44 20 36 20 20 3a 44 43 44 20 |5 :DCD 6 :DCD |
00002e00 37 0d 1b d0 1a 44 43 44 20 36 20 20 3a 44 43 44 |7....DCD 6 :DCD|
00002e10 20 36 20 20 3a 44 43 44 20 2d 32 0d 1b da 1b 44 | 6 :DCD -2....D|
00002e20 43 44 20 33 20 20 3a 44 43 44 20 35 20 20 3a 44 |CD 3 :DCD 5 :D|
00002e30 43 44 20 2d 31 32 0d 1b e4 04 0d 1b ee 25 44 43 |CD -12.......%DC|
00002e40 44 20 30 20 20 3a 44 43 44 20 34 20 20 3a 44 43 |D 0 :DCD 4 :DC|
00002e50 44 20 38 20 20 20 20 20 20 20 20 20 3b 31 38 0d |D 8 ;18.|
00002e60 1b f8 1a 44 43 44 20 2d 32 20 3a 44 43 44 20 30 |...DCD -2 :DCD 0|
00002e70 20 20 3a 44 43 44 20 31 30 0d 1c 02 1a 44 43 44 | :DCD 10....DCD|
00002e80 20 2d 31 20 3a 44 43 44 20 30 20 20 3a 44 43 44 | -1 :DCD 0 :DCD|
00002e90 20 34 34 0d 1c 0c 1a 44 43 44 20 30 20 20 3a 44 | 44....DCD 0 :D|
00002ea0 43 44 20 32 20 20 3a 44 43 44 20 34 30 0d 1c 16 |CD 2 :DCD 40...|
00002eb0 1a 44 43 44 20 32 20 20 3a 44 43 44 20 30 20 20 |.DCD 2 :DCD 0 |
00002ec0 3a 44 43 44 20 31 30 0d 1c 20 1a 44 43 44 20 31 |:DCD 10.. .DCD 1|
00002ed0 20 20 3a 44 43 44 20 30 20 20 3a 44 43 44 20 34 | :DCD 0 :DCD 4|
00002ee0 34 0d 1c 2a 04 0d 1c 34 04 0d 1c 3e 11 2e 68 65 |4..*...4...>..he|
00002ef0 6c 69 66 20 44 43 44 20 32 32 0d 1c 48 19 44 43 |lif DCD 22..H.DC|
00002f00 44 20 26 30 37 3a 44 43 44 20 26 30 30 30 31 30 |D &07:DCD &00010|
00002f10 41 30 42 0d 1c 52 19 44 43 44 20 26 31 33 3a 44 |A0B..R.DCD &13:D|
00002f20 43 44 20 26 30 31 30 34 30 37 30 41 0d 1c 5c 19 |CD &0104070A..\.|
00002f30 44 43 44 20 26 31 33 3a 44 43 44 20 26 30 34 30 |DCD &13:DCD &040|
00002f40 35 30 36 30 37 0d 1c 66 19 44 43 44 20 26 31 31 |50607..f.DCD &11|
00002f50 3a 44 43 44 20 26 46 46 30 30 30 32 30 31 0d 1c |:DCD &FF000201..|
00002f60 70 19 44 43 44 20 26 31 31 3a 44 43 44 20 26 46 |p.DCD &11:DCD &F|
00002f70 46 30 42 30 41 30 39 0d 1c 7a 19 44 43 44 20 26 |F0B0A09..z.DCD &|
00002f80 31 30 3a 44 43 44 20 26 30 32 30 33 30 34 30 31 |10:DCD &02030401|
00002f90 0d 1c 84 19 44 43 44 20 26 31 30 3a 44 43 44 20 |....DCD &10:DCD |
00002fa0 26 30 41 30 37 30 38 30 39 0d 1c 8e 19 44 43 44 |&0A070809....DCD|
00002fb0 20 26 31 32 3a 44 43 44 20 26 46 46 30 33 30 35 | &12:DCD &FF0305|
00002fc0 30 34 0d 1c 98 19 44 43 44 20 26 31 32 3a 44 43 |04....DCD &12:DC|
00002fd0 44 20 26 46 46 30 37 30 36 30 38 0d 1c a2 04 0d |D &FF070608.....|
00002fe0 1c ac 19 44 43 44 20 26 33 46 3a 44 43 44 20 26 |...DCD &3F:DCD &|
00002ff0 30 30 30 42 31 31 30 43 0d 1c b6 19 44 43 44 20 |000B110C....DCD |
00003000 26 33 43 3a 44 43 44 20 26 30 43 31 31 31 30 30 |&3C:DCD &0C11100|
00003010 44 0d 1c c0 19 44 43 44 20 26 31 33 3a 44 43 44 |D....DCD &13:DCD|
00003020 20 26 30 44 31 30 30 46 30 45 0d 1c ca 19 44 43 | &0D100F0E....DC|
00003030 44 20 26 31 32 3a 44 43 44 20 26 30 45 30 46 30 |D &12:DCD &0E0F0|
00003040 36 30 35 0d 1c d4 04 0d 1c de 19 44 43 44 20 26 |605........DCD &|
00003050 30 37 3a 44 43 44 20 26 30 30 30 43 30 44 30 32 |07:DCD &000C0D02|
00003060 0d 1c e8 19 44 43 44 20 26 30 37 3a 44 43 44 20 |....DCD &07:DCD |
00003070 26 30 42 30 39 31 30 31 31 0d 1c f2 19 44 43 44 |&0B091011....DCD|
00003080 20 26 31 31 3a 44 43 44 20 26 30 32 30 44 30 45 | &11:DCD &020D0E|
00003090 30 33 0d 1c fc 19 44 43 44 20 26 31 31 3a 44 43 |03....DCD &11:DC|
000030a0 44 20 26 31 30 30 39 30 38 30 46 0d 1d 06 19 44 |D &1009080F....D|
000030b0 43 44 20 26 31 30 3a 44 43 44 20 26 46 46 30 33 |CD &10:DCD &FF03|
000030c0 30 45 30 35 0d 1d 10 19 44 43 44 20 26 31 30 3a |0E05....DCD &10:|
000030d0 44 43 44 20 26 46 46 30 46 30 38 30 36 0d 1d 1a |DCD &FF0F0806...|
000030e0 04 0d 1d 24 23 44 43 44 20 26 31 32 3a 44 43 44 |...$#DCD &12:DCD|
000030f0 20 26 31 36 31 37 31 35 31 32 20 20 20 20 20 3b | &16171512 ;|
00003100 74 61 69 6c 0d 1d 2e 19 44 43 44 20 26 31 32 3a |tail....DCD &12:|
00003110 44 43 44 20 26 31 33 31 32 31 35 31 34 0d 1d 38 |DCD &13121514..8|
00003120 19 44 43 44 20 26 31 33 3a 44 43 44 20 26 31 33 |.DCD &13:DCD &13|
00003130 31 34 31 37 31 36 0d 1d 42 04 0d 1d 4c 04 0d 1d |141716..B...L...|
00003140 56 04 0d 1d 60 04 0d 1d 6a 0f 2e 68 72 6f 74 20 |V...`...j..hrot |
00003150 44 43 44 20 30 0d 1d 74 11 2e 68 70 69 74 63 68 |DCD 0..t..hpitch|
00003160 20 44 43 44 20 30 0d 1d 7e 0f 2e 68 72 6f 6c 20 | DCD 0..~..hrol |
00003170 44 43 44 20 30 0d 1d 88 14 2e 68 78 20 44 43 44 |DCD 0.....hx DCD|
00003180 20 32 35 36 3c 3c 66 70 25 0d 1d 92 14 2e 68 79 | 256<<fp%.....hy|
00003190 20 44 43 44 20 33 30 30 3c 3c 66 70 25 0d 1d 9c | DCD 300<<fp%...|
000031a0 12 2e 68 68 65 69 67 68 74 20 44 43 44 20 30 0d |..hheight DCD 0.|
000031b0 1d a6 0e 2e 68 64 78 20 44 43 44 20 30 0d 1d b0 |....hdx DCD 0...|
000031c0 0e 2e 68 64 79 20 44 43 44 20 30 0d 1d ba 0e 2e |..hdy DCD 0.....|
000031d0 68 64 7a 20 44 43 44 20 30 0d 1d c4 13 2e 68 70 |hdz DCD 0.....hp|
000031e0 6f 77 65 72 20 44 43 44 20 2d 31 36 0d 1d ce 04 |ower DCD -16....|
000031f0 0d 1d d8 0c 2e 63 6f 6e 74 72 6f 6c 0d 1d e2 14 |.....control....|
00003200 53 54 4d 46 44 20 72 31 33 21 2c 7b 72 31 34 7d |STMFD r13!,{r14}|
00003210 0d 1d ec 0d 42 4c 20 75 70 64 61 74 65 0d 1d f6 |....BL update...|
00003220 11 42 4c 20 63 61 6c 63 70 6f 69 6e 74 73 0d 1e |.BL calcpoints..|
00003230 00 11 42 4c 20 64 72 61 77 70 6f 69 6e 74 73 0d |..BL drawpoints.|
00003240 1e 0a 0f 42 4c 20 64 72 61 77 68 65 6c 69 0d 1e |...BL drawheli..|
00003250 14 14 4c 44 4d 46 44 20 72 31 33 21 2c 7b 72 31 |..LDMFD r13!,{r1|
00003260 35 7d 0d 1e 1e 04 0d 1e 28 0b 2e 75 70 64 61 74 |5}......(..updat|
00003270 65 0d 1e 32 14 53 54 4d 46 44 20 72 31 33 21 2c |e..2.STMFD r13!,|
00003280 7b 72 31 34 7d 0d 1e 3c 12 53 57 49 20 22 4f 53 |{r14}..<.SWI "OS|
00003290 5f 4d 6f 75 73 65 22 0d 1e 46 0d 43 4d 50 20 72 |_Mouse"..F.CMP r|
000032a0 32 2c 23 31 0d 1e 50 13 4c 44 52 47 45 20 72 33 |2,#1..P.LDRGE r3|
000032b0 2c 68 70 6f 77 65 72 0d 1e 5a 12 41 44 44 45 51 |,hpower..Z.ADDEQ|
000032c0 20 72 33 2c 72 33 2c 23 32 0d 1e 64 13 53 54 52 | r3,r3,#2..d.STR|
000032d0 45 51 20 72 33 2c 68 70 6f 77 65 72 0d 1e 6e 0d |EQ r3,hpower..n.|
000032e0 43 4d 50 20 72 32 2c 23 34 0d 1e 78 12 53 55 42 |CMP r2,#4..x.SUB|
000032f0 45 51 20 72 33 2c 72 33 2c 23 32 0d 1e 82 13 53 |EQ r3,r3,#2....S|
00003300 54 52 45 51 20 72 33 2c 68 70 6f 77 65 72 0d 1e |TREQ r3,hpower..|
00003310 8c 04 0d 1e 96 11 4c 44 52 20 72 39 2c 68 70 69 |......LDR r9,hpi|
00003320 74 63 68 0d 1e a0 16 41 44 44 20 72 39 2c 72 39 |tch....ADD r9,r9|
00003330 2c 72 31 2c 41 53 52 23 31 0d 1e aa 14 4d 4f 56 |,r1,ASR#1....MOV|
00003340 20 72 39 2c 72 39 2c 4c 53 4c 23 32 33 0d 1e b4 | r9,r9,LSL#23...|
00003350 14 4d 4f 56 20 72 39 2c 72 39 2c 4c 53 52 23 32 |.MOV r9,r9,LSR#2|
00003360 33 0d 1e be 11 53 54 52 20 72 39 2c 68 70 69 74 |3....STR r9,hpit|
00003370 63 68 0d 1e c8 04 0d 1e d2 0f 4c 44 52 20 72 33 |ch........LDR r3|
00003380 2c 68 72 6f 74 0d 1e dc 16 53 55 42 20 72 33 2c |,hrot....SUB r3,|
00003390 72 33 2c 72 30 2c 41 53 52 23 32 0d 1e e6 14 4d |r3,r0,ASR#2....M|
000033a0 4f 56 20 72 33 2c 72 33 2c 4c 53 4c 23 32 33 0d |OV r3,r3,LSL#23.|
000033b0 1e f0 14 4d 4f 56 20 72 33 2c 72 33 2c 4c 53 52 |...MOV r3,r3,LSR|
000033c0 23 32 33 0d 1e fa 0f 53 54 52 20 72 33 2c 68 72 |#23....STR r3,hr|
000033d0 6f 74 0d 1f 04 0e 53 54 52 20 72 33 2c 72 6f 74 |ot....STR r3,rot|
000033e0 0d 1f 0e 04 0d 1f 18 11 4c 44 52 20 72 34 2c 68 |........LDR r4,h|
000033f0 70 6f 77 65 72 0d 1f 22 11 4c 44 52 20 72 35 2c |power..".LDR r5,|
00003400 73 69 6e 70 74 72 0d 1f 2c 11 4c 44 52 20 72 36 |sinptr..,.LDR r6|
00003410 2c 63 6f 73 70 74 72 0d 1f 36 04 0d 1f 40 18 4c |,cosptr..6...@.L|
00003420 44 52 20 72 37 2c 5b 72 35 2c 72 39 2c 41 53 4c |DR r7,[r5,r9,ASL|
00003430 23 32 5d 0d 1f 4a 18 4c 44 52 20 72 38 2c 5b 72 |#2]..J.LDR r8,[r|
00003440 36 2c 72 39 2c 41 53 4c 23 32 5d 0d 1f 54 2f 4d |6,r9,ASL#2]..T/M|
00003450 55 4c 20 72 38 2c 72 34 2c 72 38 20 20 20 20 20 |UL r8,r4,r8 |
00003460 20 20 20 20 20 20 20 20 20 20 20 3b 76 65 72 74 | ;vert|
00003470 69 63 6c 65 20 70 6f 77 65 72 0d 1f 5e 2e 4d 55 |icle power..^.MU|
00003480 4c 20 72 34 2c 72 37 2c 72 34 20 20 20 20 20 20 |L r4,r7,r4 |
00003490 20 20 20 20 20 20 20 20 20 20 3b 66 6f 72 77 61 | ;forwa|
000034a0 72 64 20 70 6f 77 65 72 0d 1f 68 15 4d 4f 56 20 |rd power..h.MOV |
000034b0 72 34 2c 72 34 2c 41 53 52 23 66 70 25 0d 1f 72 |r4,r4,ASR#fp%..r|
000034c0 16 3b 4d 4f 56 20 72 38 2c 72 38 2c 41 53 52 23 |.;MOV r8,r8,ASR#|
000034d0 66 70 25 0d 1f 7c 04 0d 1f 86 28 4c 44 52 20 72 |fp%..|....(LDR r|
000034e0 37 2c 68 64 7a 20 20 20 20 20 20 20 20 20 20 20 |7,hdz |
000034f0 20 20 20 20 20 20 3b 61 6c 74 65 72 20 64 7a 0d | ;alter dz.|
00003500 1f 90 16 53 55 42 20 72 37 2c 72 37 2c 72 38 2c |...SUB r7,r7,r8,|
00003510 41 53 52 23 36 0d 1f 9a 17 53 55 42 20 72 37 2c |ASR#6....SUB r7,|
00003520 72 37 2c 23 67 72 61 76 69 74 79 25 0d 1f a4 0e |r7,#gravity%....|
00003530 53 54 52 20 72 37 2c 68 64 7a 0d 1f ae 12 4c 44 |STR r7,hdz....LD|
00003540 52 20 72 38 2c 68 68 65 69 67 68 74 0d 1f b8 05 |R r8,hheight....|
00003550 5d 0d 1f c2 17 e7 20 ac 20 66 69 78 65 64 5f 68 |]..... . fixed_h|
00003560 65 69 67 68 74 25 20 8c 0d 1f cc 0a 5b 4f 50 54 |eight% .....[OPT|
00003570 69 25 0d 1f d6 10 41 44 44 20 72 38 2c 72 38 2c |i%....ADD r8,r8,|
00003580 72 37 0d 1f e0 05 5d 0d 1f ea 05 cd 0d 1f f4 0a |r7....].........|
00003590 5b 4f 50 54 69 25 0d 1f fe 12 53 54 52 20 72 38 |[OPTi%....STR r8|
000035a0 2c 68 68 65 69 67 68 74 0d 20 08 04 0d 20 12 33 |,hheight. ... .3|
000035b0 4d 4f 56 20 72 38 2c 72 38 2c 41 53 52 23 66 70 |MOV r8,r8,ASR#fp|
000035c0 25 2b 31 20 20 20 20 20 20 20 3b 66 69 67 75 72 |%+1 ;figur|
000035d0 65 20 6f 75 74 20 63 61 6d 20 61 6e 67 6c 65 0d |e out cam angle.|
000035e0 20 1c 17 41 44 44 20 72 38 2c 72 38 2c 23 63 61 | ..ADD r8,r8,#ca|
000035f0 6d 64 72 6f 70 25 0d 20 26 11 53 54 52 20 72 38 |mdrop%. &.STR r8|
00003600 2c 68 65 69 67 68 74 0d 20 30 04 0d 20 3a 18 4c |,height. 0.. :.L|
00003610 44 52 20 72 35 2c 5b 72 35 2c 72 33 2c 41 53 4c |DR r5,[r5,r3,ASL|
00003620 23 32 5d 0d 20 44 18 4c 44 52 20 72 36 2c 5b 72 |#2]. D.LDR r6,[r|
00003630 36 2c 72 33 2c 41 53 4c 23 32 5d 0d 20 4e 10 4d |6,r3,ASL#2]. N.M|
00003640 55 4c 20 72 35 2c 72 34 2c 72 35 0d 20 58 10 4d |UL r5,r4,r5. X.M|
00003650 55 4c 20 72 36 2c 72 34 2c 72 36 0d 20 62 04 0d |UL r6,r4,r6. b..|
00003660 20 6c 0e 4c 44 52 20 72 37 2c 68 64 78 0d 20 76 | l.LDR r7,hdx. v|
00003670 0e 4c 44 52 20 72 38 2c 68 64 79 0d 20 80 16 41 |.LDR r8,hdy. ..A|
00003680 44 44 20 72 37 2c 72 37 2c 72 35 2c 41 53 52 23 |DD r7,r7,r5,ASR#|
00003690 36 0d 20 8a 16 41 44 44 20 72 38 2c 72 38 2c 72 |6. ..ADD r8,r8,r|
000036a0 36 2c 41 53 52 23 36 0d 20 94 33 4d 4f 56 20 72 |6,ASR#6. .3MOV r|
000036b0 39 2c 72 37 2c 41 53 52 23 34 20 20 20 20 20 20 |9,r7,ASR#4 |
000036c0 20 20 20 20 20 20 3b 64 65 63 20 64 78 2f 64 79 | ;dec dx/dy|
000036d0 20 28 61 69 72 20 72 65 73 29 0d 20 9e 14 4d 4f | (air res). ..MO|
000036e0 56 20 72 31 30 2c 72 38 2c 41 53 52 23 34 0d 20 |V r10,r8,ASR#4. |
000036f0 a8 10 53 55 42 20 72 37 2c 72 37 2c 72 39 0d 20 |..SUB r7,r7,r9. |
00003700 b2 11 53 55 42 20 72 38 2c 72 38 2c 72 31 30 0d |..SUB r8,r8,r10.|
00003710 20 bc 0e 53 54 52 20 72 37 2c 68 64 78 0d 20 c6 | ..STR r7,hdx. .|
00003720 0e 53 54 52 20 72 38 2c 68 64 79 0d 20 d0 04 0d |.STR r8,hdy. ...|
00003730 20 da 0d 4c 44 52 20 72 39 2c 68 78 0d 20 e4 0e | ..LDR r9,hx. ..|
00003740 4c 44 52 20 72 31 30 2c 68 79 0d 20 ee 10 41 44 |LDR r10,hy. ..AD|
00003750 44 20 72 39 2c 72 39 2c 72 37 0d 20 f8 12 41 44 |D r9,r9,r7. ..AD|
00003760 44 20 72 31 30 2c 72 31 30 2c 72 38 0d 21 02 0d |D r10,r10,r8.!..|
00003770 53 54 52 20 72 39 2c 68 78 0d 21 0c 0e 53 54 52 |STR r9,hx.!..STR|
00003780 20 72 31 30 2c 68 79 0d 21 16 15 4d 4f 56 20 72 | r10,hy.!..MOV r|
00003790 39 2c 72 39 2c 41 53 52 23 66 70 25 0d 21 20 17 |9,r9,ASR#fp%.! .|
000037a0 4d 4f 56 20 72 31 30 2c 72 31 30 2c 41 53 52 23 |MOV r10,r10,ASR#|
000037b0 66 70 25 0d 21 2a 0f 53 54 52 20 72 39 2c 78 70 |fp%.!*.STR r9,xp|
000037c0 6f 73 0d 21 34 10 53 54 52 20 72 31 30 2c 79 70 |os.!4.STR r10,yp|
000037d0 6f 73 0d 21 3e 04 0d 21 48 04 0d 21 52 14 4c 44 |os.!>..!H..!R.LD|
000037e0 4d 46 44 20 72 31 33 21 2c 7b 72 31 35 7d 0d 21 |MFD r13!,{r15}.!|
000037f0 5c 04 0d 21 66 0d 2e 64 72 61 77 68 65 6c 69 0d |\..!f..drawheli.|
00003800 21 70 14 53 54 4d 46 44 20 72 31 33 21 2c 7b 72 |!p.STMFD r13!,{r|
00003810 31 34 7d 0d 21 7a 27 41 44 52 20 72 31 31 2c 68 |14}.!z'ADR r11,h|
00003820 65 6c 69 70 20 20 20 20 20 20 20 20 20 20 20 20 |elip |
00003830 20 3b 64 72 61 77 68 65 6c 69 0d 21 84 11 41 44 | ;drawheli.!..AD|
00003840 52 20 72 31 32 2c 68 65 6c 69 66 0d 21 8e 11 4c |R r12,helif.!..L|
00003850 44 52 20 72 30 2c 68 70 69 74 63 68 0d 21 98 0d |DR r0,hpitch.!..|
00003860 4d 4f 56 20 72 31 2c 23 30 0d 21 a2 0d 4d 4f 56 |MOV r1,#0.!..MOV|
00003870 20 72 32 2c 23 30 0d 21 ac 0d 4d 4f 56 20 72 33 | r2,#0.!..MOV r3|
00003880 2c 23 30 0d 21 b6 11 4c 44 52 20 72 36 2c 68 65 |,#0.!..LDR r6,he|
00003890 69 67 68 74 0d 21 c0 12 4c 44 52 20 72 37 2c 68 |ight.!..LDR r7,h|
000038a0 68 65 69 67 68 74 0d 21 ca 18 53 55 42 20 72 34 |height.!..SUB r4|
000038b0 2c 72 36 2c 72 37 2c 41 53 52 23 66 70 25 0d 21 |,r6,r7,ASR#fp%.!|
000038c0 d4 0d 4d 4f 56 20 72 35 2c 23 30 0d 21 de 0e 42 |..MOV r5,#0.!..B|
000038d0 4c 20 64 72 61 77 6f 62 6a 0d 21 e8 14 4c 44 4d |L drawobj.!..LDM|
000038e0 46 44 20 72 31 33 21 2c 7b 72 31 35 7d 0d 21 f2 |FD r13!,{r15}.!.|
000038f0 04 0d 21 fc 0f 2e 6f 62 6a 78 20 44 43 44 20 30 |..!...objx DCD 0|
00003900 0d 22 06 0f 2e 6f 62 6a 79 20 44 43 44 20 30 0d |."...objy DCD 0.|
00003910 22 10 0f 2e 6f 62 6a 7a 20 44 43 44 20 30 0d 22 |"...objz DCD 0."|
00003920 1a 10 2e 66 61 63 65 73 20 44 43 44 20 30 0d 22 |...faces DCD 0."|
00003930 24 42 2e 64 72 61 77 6f 62 6a 20 20 20 20 20 20 |$B.drawobj |
00003940 20 20 20 3b 72 30 3d 78 61 2c 20 72 31 3d 79 61 | ;r0=xa, r1=ya|
00003950 2c 20 72 32 3d 7a 61 2c 20 72 31 31 3d 70 6e 74 |, r2=za, r11=pnt|
00003960 70 74 72 2c 20 72 31 32 20 66 61 63 65 70 74 72 |ptr, r12 faceptr|
00003970 0d 22 2e 26 53 54 52 20 72 31 34 2c 72 65 74 73 |.".&STR r14,rets|
00003980 61 76 65 20 20 3b 72 33 3d 78 2c 20 72 34 3d 79 |ave ;r3=x, r4=y|
00003990 2c 20 72 35 3d 7a 0d 22 38 10 3b 53 54 52 20 72 |, r5=z."8.;STR r|
000039a0 33 2c 6f 62 6a 78 0d 22 42 0f 53 54 52 20 72 34 |3,objx."B.STR r4|
000039b0 2c 6f 62 6a 79 0d 22 4c 10 3b 53 54 52 20 72 35 |,objy."L.;STR r5|
000039c0 2c 6f 62 6a 7a 0d 22 56 11 53 54 52 20 72 31 32 |,objz."V.STR r12|
000039d0 2c 66 61 63 65 73 0d 22 60 04 0d 22 6a 10 4c 44 |,faces."`.."j.LD|
000039e0 52 20 70 2c 73 69 6e 70 74 72 0d 22 74 18 4c 44 |R p,sinptr."t.LD|
000039f0 52 20 73 78 61 2c 5b 70 2c 78 61 2c 41 53 4c 23 |R sxa,[p,xa,ASL#|
00003a00 32 5d 0d 22 7e 18 4c 44 52 20 73 79 61 2c 5b 70 |2]."~.LDR sya,[p|
00003a10 2c 79 61 2c 41 53 4c 23 32 5d 0d 22 88 18 4c 44 |,ya,ASL#2]."..LD|
00003a20 52 20 73 7a 61 2c 5b 70 2c 7a 61 2c 41 53 4c 23 |R sza,[p,za,ASL#|
00003a30 32 5d 0d 22 92 10 4c 44 52 20 70 2c 63 6f 73 70 |2]."..LDR p,cosp|
00003a40 74 72 0d 22 9c 18 4c 44 52 20 63 78 61 2c 5b 70 |tr."..LDR cxa,[p|
00003a50 2c 78 61 2c 41 53 4c 23 32 5d 0d 22 a6 18 4c 44 |,xa,ASL#2]."..LD|
00003a60 52 20 63 79 61 2c 5b 70 2c 79 61 2c 41 53 4c 23 |R cya,[p,ya,ASL#|
00003a70 32 5d 0d 22 b0 18 4c 44 52 20 63 7a 61 2c 5b 70 |2]."..LDR cza,[p|
00003a80 2c 7a 61 2c 41 53 4c 23 32 5d 0d 22 ba 04 0d 22 |,za,ASL#2]."..."|
00003a90 c4 0f 41 44 52 20 69 2c 69 6d 61 67 65 0d 22 ce |..ADR i,image.".|
00003aa0 2c 4c 44 52 20 6e 2c 5b 70 6e 74 73 5d 2c 23 34 |,LDR n,[pnts],#4|
00003ab0 20 20 20 20 20 20 20 20 20 20 20 3b 6e 75 6d 20 | ;num |
00003ac0 6f 66 20 70 6f 69 6e 74 73 0d 22 d8 04 0d 22 e2 |of points."...".|
00003ad0 0d 2e 70 6f 62 6a 6c 6f 6f 70 0d 22 ec 18 4c 44 |..pobjloop."..LD|
00003ae0 4d 49 41 20 70 6e 74 73 20 21 2c 7b 78 2c 79 2c |MIA pnts !,{x,y,|
00003af0 7a 7d 0d 22 f6 24 4d 55 4c 20 74 32 2c 7a 2c 73 |z}.".$MUL t2,z,s|
00003b00 78 61 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |xa |
00003b10 3b 72 6f 74 20 78 0d 23 00 10 52 53 42 20 74 32 |;rot x.#..RSB t2|
00003b20 2c 74 32 2c 23 30 0d 23 0a 13 4d 4c 41 20 74 31 |,t2,#0.#..MLA t1|
00003b30 2c 79 2c 63 78 61 2c 74 32 0d 23 14 10 4d 55 4c |,y,cxa,t2.#..MUL|
00003b40 20 74 32 2c 79 2c 73 78 61 0d 23 1e 13 4d 4c 41 | t2,y,sxa.#..MLA|
00003b50 20 74 32 2c 7a 2c 63 78 61 2c 74 32 0d 23 28 14 | t2,z,cxa,t2.#(.|
00003b60 4d 4f 56 20 79 2c 74 31 2c 41 53 52 23 66 70 25 |MOV y,t1,ASR#fp%|
00003b70 0d 23 32 14 4d 4f 56 20 7a 2c 74 32 2c 41 53 52 |.#2.MOV z,t2,ASR|
00003b80 23 66 70 25 0d 23 3c 04 0d 23 46 24 4d 55 4c 20 |#fp%.#<..#F$MUL |
00003b90 74 32 2c 7a 2c 73 79 61 20 20 20 20 20 20 20 20 |t2,z,sya |
00003ba0 20 20 20 20 20 20 3b 72 6f 74 20 79 0d 23 50 10 | ;rot y.#P.|
00003bb0 52 53 42 20 74 32 2c 74 32 2c 23 30 0d 23 5a 13 |RSB t2,t2,#0.#Z.|
00003bc0 4d 4c 41 20 74 31 2c 78 2c 63 79 61 2c 74 32 0d |MLA t1,x,cya,t2.|
00003bd0 23 64 10 4d 55 4c 20 74 32 2c 78 2c 73 79 61 0d |#d.MUL t2,x,sya.|
00003be0 23 6e 13 4d 4c 41 20 74 32 2c 7a 2c 63 79 61 2c |#n.MLA t2,z,cya,|
00003bf0 74 32 0d 23 78 14 4d 4f 56 20 78 2c 74 31 2c 41 |t2.#x.MOV x,t1,A|
00003c00 53 52 23 66 70 25 0d 23 82 14 4d 4f 56 20 7a 2c |SR#fp%.#..MOV z,|
00003c10 74 32 2c 41 53 52 23 66 70 25 0d 23 8c 04 0d 23 |t2,ASR#fp%.#...#|
00003c20 96 24 4d 55 4c 20 74 32 2c 79 2c 73 7a 61 20 20 |.$MUL t2,y,sza |
00003c30 20 20 20 20 20 20 20 20 20 20 20 20 3b 72 6f 74 | ;rot|
00003c40 20 7a 0d 23 a0 10 52 53 42 20 74 32 2c 74 32 2c | z.#..RSB t2,t2,|
00003c50 23 30 0d 23 aa 13 4d 4c 41 20 74 31 2c 78 2c 63 |#0.#..MLA t1,x,c|
00003c60 7a 61 2c 74 32 0d 23 b4 10 4d 55 4c 20 74 32 2c |za,t2.#..MUL t2,|
00003c70 78 2c 73 7a 61 0d 23 be 13 4d 4c 41 20 74 32 2c |x,sza.#..MLA t2,|
00003c80 79 2c 63 7a 61 2c 74 32 0d 23 c8 14 4d 4f 56 20 |y,cza,t2.#..MOV |
00003c90 78 2c 74 31 2c 41 53 52 23 66 70 25 0d 23 d2 14 |x,t1,ASR#fp%.#..|
00003ca0 4d 4f 56 20 79 2c 74 32 2c 41 53 52 23 66 70 25 |MOV y,t2,ASR#fp%|
00003cb0 0d 23 dc 04 0d 23 e6 2c 4c 44 52 20 74 31 2c 6f |.#...#.,LDR t1,o|
00003cc0 62 6a 79 20 20 20 20 20 20 20 20 20 20 20 20 20 |bjy |
00003cd0 20 20 3b 61 64 6a 75 73 74 20 63 6f 6f 72 64 73 | ;adjust coords|
00003ce0 0d 23 f0 10 3b 4c 44 52 20 74 32 2c 6f 62 6a 7a |.#..;LDR t2,objz|
00003cf0 0d 23 fa 0e 41 44 44 20 79 2c 79 2c 74 31 0d 24 |.#..ADD y,y,t1.$|
00003d00 04 0f 3b 41 44 44 20 7a 2c 7a 2c 74 32 0d 24 0e |..;ADD z,z,t2.$.|
00003d10 14 41 44 44 20 7a 2c 7a 2c 23 79 73 68 69 66 74 |.ADD z,z,#yshift|
00003d20 25 0d 24 18 04 0d 24 22 30 4c 44 52 20 74 31 2c |%.$...$"0LDR t1,|
00003d30 70 65 72 73 70 70 74 72 20 20 20 20 20 20 20 20 |perspptr |
00003d40 20 20 20 3b 61 70 70 6c 79 20 70 65 72 73 70 65 | ;apply perspe|
00003d50 63 74 69 76 65 0d 24 2c 17 4c 44 52 20 74 31 2c |ctive.$,.LDR t1,|
00003d60 5b 74 31 2c 7a 2c 41 53 4c 23 32 5d 0d 24 36 0e |[t1,z,ASL#2].$6.|
00003d70 4d 55 4c 20 78 2c 74 31 2c 78 0d 24 40 0e 4d 55 |MUL x,t1,x.$@.MU|
00003d80 4c 20 79 2c 74 31 2c 79 0d 24 4a 13 4d 4f 56 20 |L y,t1,y.$J.MOV |
00003d90 78 2c 78 2c 41 53 52 23 66 70 25 0d 24 54 13 4d |x,x,ASR#fp%.$T.M|
00003da0 4f 56 20 79 2c 79 2c 41 53 52 23 66 70 25 0d 24 |OV y,y,ASR#fp%.$|
00003db0 5e 13 53 54 4d 49 41 20 69 20 21 2c 7b 78 2c 79 |^.STMIA i !,{x,y|
00003dc0 7d 0d 24 68 0c 3b 42 4c 20 70 6c 6f 74 0d 24 72 |}.$h.;BL plot.$r|
00003dd0 04 0d 24 7c 0f 53 55 42 53 20 6e 2c 6e 2c 23 31 |..$|.SUBS n,n,#1|
00003de0 0d 24 86 10 42 4e 45 20 70 6f 62 6a 6c 6f 6f 70 |.$..BNE pobjloop|
00003df0 0d 24 90 04 0d 24 9a 27 4c 44 52 20 66 73 2c 66 |.$...$.'LDR fs,f|
00003e00 61 63 65 73 20 20 20 20 20 20 20 20 20 20 20 3b |aces ;|
00003e10 64 72 61 77 20 70 6f 6c 69 65 73 0d 24 a4 11 4c |draw polies.$..L|
00003e20 44 52 20 6e 2c 5b 66 73 5d 2c 23 34 0d 24 ae 0f |DR n,[fs],#4.$..|
00003e30 41 44 52 20 69 2c 69 6d 61 67 65 0d 24 b8 04 0d |ADR i,image.$...|
00003e40 24 c2 0d 2e 66 6f 62 6a 6c 6f 6f 70 0d 24 cc 3e |$...fobjloop.$.>|
00003e50 4c 44 4d 49 41 20 66 73 20 21 2c 7b 63 6f 6c 2c |LDMIA fs !,{col,|
00003e60 76 73 7d 20 20 20 20 20 3b 6c 6f 61 64 20 63 6f |vs} ;load co|
00003e70 6c 6f 75 72 20 61 6e 64 20 76 65 72 74 73 20 28 |lour and verts (|
00003e80 54 7c 34 3b 33 3b 32 3b 31 29 0d 24 d6 04 0d 24 |T|4;3;2;1).$...$|
00003e90 e0 10 80 20 74 32 2c 76 73 2c 23 26 46 46 0d 24 |... t2,vs,#&FF.$|
00003ea0 ea 15 41 44 44 20 74 32 2c 69 2c 74 32 2c 4c 53 |..ADD t2,i,t2,LS|
00003eb0 4c 23 33 0d 24 f4 14 4c 44 4d 49 41 20 74 32 2c |L#3.$..LDMIA t2,|
00003ec0 7b 78 31 2c 79 31 7d 0d 24 fe 04 0d 25 08 13 4d |{x1,y1}.$...%..M|
00003ed0 4f 56 20 76 73 2c 76 73 2c 4c 53 52 23 38 0d 25 |OV vs,vs,LSR#8.%|
00003ee0 12 10 80 20 74 32 2c 76 73 2c 23 26 46 46 0d 25 |... t2,vs,#&FF.%|
00003ef0 1c 15 41 44 44 20 74 32 2c 69 2c 74 32 2c 4c 53 |..ADD t2,i,t2,LS|
00003f00 4c 23 33 0d 25 26 14 4c 44 4d 49 41 20 74 32 2c |L#3.%&.LDMIA t2,|
00003f10 7b 78 32 2c 79 32 7d 0d 25 30 04 0d 25 3a 13 4d |{x2,y2}.%0..%:.M|
00003f20 4f 56 20 76 73 2c 76 73 2c 4c 53 52 23 38 0d 25 |OV vs,vs,LSR#8.%|
00003f30 44 10 80 20 74 32 2c 76 73 2c 23 26 46 46 0d 25 |D.. t2,vs,#&FF.%|
00003f40 4e 15 41 44 44 20 74 32 2c 69 2c 74 32 2c 4c 53 |N.ADD t2,i,t2,LS|
00003f50 4c 23 33 0d 25 58 14 4c 44 4d 49 41 20 74 32 2c |L#3.%X.LDMIA t2,|
00003f60 7b 78 33 2c 79 33 7d 0d 25 62 04 0d 25 6c 39 53 |{x3,y3}.%b..%l9S|
00003f70 55 42 20 79 34 2c 78 32 2c 78 31 20 20 20 20 20 |UB y4,x2,x1 |
00003f80 20 20 20 20 20 20 20 3b 63 6c 69 70 20 62 61 63 | ;clip bac|
00003f90 6b 77 61 72 64 73 20 28 78 34 2c 79 34 2d 74 65 |kwards (x4,y4-te|
00003fa0 6d 70 73 29 0d 25 76 10 53 55 42 20 78 34 2c 79 |mps).%v.SUB x4,y|
00003fb0 33 2c 79 32 0d 25 80 10 4d 55 4c 20 78 34 2c 79 |3,y2.%..MUL x4,y|
00003fc0 34 2c 78 34 0d 25 8a 10 53 55 42 20 79 34 2c 79 |4,x4.%..SUB y4,y|
00003fd0 32 2c 79 31 0d 25 94 10 53 55 42 20 74 32 2c 78 |2,y1.%..SUB t2,x|
00003fe0 33 2c 78 32 0d 25 9e 10 4d 55 4c 20 79 34 2c 74 |3,x2.%..MUL y4,t|
00003ff0 32 2c 79 34 0d 25 a8 0d 43 4d 50 20 78 34 2c 79 |2,y4.%..CMP x4,y|
00004000 34 0d 25 b2 2d 42 4c 54 20 79 63 61 6e 6e 65 20 |4.%.-BLT ycanne |
00004010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b | ;|
00004020 79 27 63 61 6e 6e 65 20 73 65 65 20 69 74 0d 25 |y'canne see it.%|
00004030 bc 04 0d 25 c6 13 4d 4f 56 20 76 73 2c 76 73 2c |...%..MOV vs,vs,|
00004040 4c 53 52 23 38 0d 25 d0 2c 43 4d 50 20 76 73 2c |LSR#8.%.,CMP vs,|
00004050 23 26 46 46 20 20 20 20 20 20 20 20 20 20 20 20 |#&FF |
00004060 20 20 20 3b 74 65 53 54 2c 20 26 46 46 2d 74 72 | ;teST, &FF-tr|
00004070 69 0d 25 da 12 80 4e 45 20 74 32 2c 76 73 2c 23 |i.%...NE t2,vs,#|
00004080 26 46 46 0d 25 e4 17 41 44 44 4e 45 20 74 32 2c |&FF.%..ADDNE t2,|
00004090 69 2c 74 32 2c 4c 53 4c 23 33 0d 25 ee 16 4c 44 |i,t2,LSL#3.%..LD|
000040a0 4d 4e 45 49 41 20 74 32 2c 7b 78 34 2c 79 34 7d |MNEIA t2,{x4,y4}|
000040b0 0d 25 f8 0d 42 4c 4e 45 20 71 75 61 64 0d 26 02 |.%..BLNE quad.&.|
000040c0 0c 42 4c 45 51 20 74 72 69 0d 26 0c 04 0d 26 16 |.BLEQ tri.&...&.|
000040d0 0b 2e 79 63 61 6e 6e 65 0d 26 20 0f 53 55 42 53 |..ycanne.& .SUBS|
000040e0 20 6e 2c 6e 2c 23 31 0d 26 2a 10 42 4e 45 20 66 | n,n,#1.&*.BNE f|
000040f0 6f 62 6a 6c 6f 6f 70 0d 26 34 04 0d 26 3e 27 4c |objloop.&4..&>'L|
00004100 44 52 20 72 31 35 2c 72 65 74 73 61 76 65 20 20 |DR r15,retsave |
00004110 20 20 20 20 20 20 3b 4d 4f 56 20 72 31 35 2c 72 | ;MOV r15,r|
00004120 31 34 0d 26 48 1c 2e 69 6d 61 67 65 20 a4 67 61 |14.&H..image .ga|
00004130 70 28 6d 61 78 33 64 70 74 73 25 2a 38 29 0d 26 |p(max3dpts%*8).&|
00004140 52 04 0d 26 5c 04 0d 26 66 06 5d ed 0d 26 70 0d |R..&\..&f.]..&p.|
00004150 f1 50 25 2d 63 6f 64 65 25 0d 26 7a 23 c8 99 22 |.P%-code%.&z#.."|
00004160 4f 53 5f 52 65 61 64 56 64 75 56 61 72 69 61 62 |OS_ReadVduVariab|
00004170 6c 65 73 22 2c 76 64 75 2c 76 64 75 0d 26 84 16 |les",vdu,vdu.&..|
00004180 76 64 75 21 34 3d 21 76 64 75 2b 32 35 36 2a 33 |vdu!4=!vdu+256*3|
00004190 32 30 0d 26 8e 05 e1 0d 26 98 04 0d 26 a2 0a dd |20.&....&...&...|
000041a0 a4 76 75 6c 63 0d 26 ac 0c e3 6a 25 3d 31 b8 32 |.vulc.&...j%=1.2|
000041b0 30 0d 26 b6 0a 5b 4f 50 54 69 25 0d 26 c0 1d 53 |0.&..[OPTi%.&..S|
000041c0 54 4d 49 41 20 28 78 6c 29 21 2c 7b 63 31 2c 63 |TMIA (xl)!,{c1,c|
000041d0 32 2c 63 33 2c 63 34 7d 0d 26 ca 06 5d ed 0d 26 |2,c3,c4}.&..]..&|
000041e0 d4 07 3d 22 22 0d 26 de 04 0d 26 e8 09 dd a4 72 |..="".&...&....r|
000041f0 6f 74 0d 26 f2 0a 5b 4f 50 54 69 25 0d 26 fc 0c |ot.&..[OPTi%.&..|
00004200 4d 4f 56 20 73 2c 61 78 0d 27 06 0d 4d 4f 56 20 |MOV s,ax.'..MOV |
00004210 61 78 2c 62 78 0d 27 10 0d 4d 4f 56 20 62 78 2c |ax,bx.'..MOV bx,|
00004220 63 78 0d 27 1a 0d 4d 4f 56 20 63 78 2c 64 78 0d |cx.'..MOV cx,dx.|
00004230 27 24 0c 4d 4f 56 20 64 78 2c 73 0d 27 2e 0c 4d |'$.MOV dx,s.'..M|
00004240 4f 56 20 73 2c 61 79 0d 27 38 0d 4d 4f 56 20 61 |OV s,ay.'8.MOV a|
00004250 79 2c 62 79 0d 27 42 0d 4d 4f 56 20 62 79 2c 63 |y,by.'B.MOV by,c|
00004260 79 0d 27 4c 0d 4d 4f 56 20 63 79 2c 64 79 0d 27 |y.'L.MOV cy,dy.'|
00004270 56 0c 4d 4f 56 20 64 79 2c 73 0d 27 60 05 5d 0d |V.MOV dy,s.'`.].|
00004280 27 6a 06 3d 30 0d 27 74 04 0d 27 7e 0d dd a4 67 |'j.=0.'t..'~...g|
00004290 61 70 28 67 25 29 0d 27 88 0c 50 25 3d 50 25 2b |ap(g%).'..P%=P%+|
000042a0 67 25 0d 27 92 06 3d 30 0d 27 9c 04 0d 27 a6 0e |g%.'..=0.'...'..|
000042b0 dd a4 64 61 74 61 28 61 24 29 0d 27 b0 14 e3 67 |..data(a$).'...g|
000042c0 25 3d 31 20 b8 20 a9 61 24 2d 31 20 88 32 0d 27 |%=1 . .a$-1 .2.'|
000042d0 ba 18 3f 50 25 3d a0 28 22 26 22 2b c1 61 24 2c |..?P%=.("&"+.a$,|
000042e0 67 25 2c 32 29 29 0d 27 c4 19 50 25 3f 31 3d a0 |g%,2)).'..P%?1=.|
000042f0 28 22 26 22 2b c1 61 24 2c 67 25 2c 32 29 29 0d |("&"+.a$,g%,2)).|
00004300 27 ce 09 50 25 2b 3d 32 0d 27 d8 05 ed 0d 27 e2 |'..P%+=2.'....'.|
00004310 06 3d 30 0d ff |.=0..|
00004315
.