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