Home » Archimedes archive » Acorn User » AU 1997-08 B.adf » Regulars » starinfo/Vlietinck/!Flynghi/Flynhi
starinfo/Vlietinck/!Flynghi/Flynhi
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 1997-08 B.adf » Regulars |
Filename: | starinfo/Vlietinck/!Flynghi/Flynhi |
Read OK: | ✔ |
File size: | 6C29 bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10REM> FLYNhi 20REM (c) Jan Vlietinck 30 40REMON ERROR:ON ERROR OFF:REPORT:PRINT ERL:END 50 60DIM stack 100000 70 80MOUSE ON 90*POINTER 100banks=2 110SH=7 :REM Determines the number of patches: 2^SH 120ED=2^SH:D1=ED:D2=ED 130FX=3:FIX=2^FX 140HORIZON=1024 :REM Determines how deep the land extends 150ZOOM=5 :REM Determines the phycical measures of patch 160DIM PUNT 16*D1*D2 170DIM VLAK 12*D1*D2 180REM The array PUNT is of size 2^SH and contains four words: 190REM the height, projected x, projected y and colour 200DIM map_sprite_height% 4000+(ED*ED) 210DIM map_sprite_colors% 4000+(ED*ED) 220SYS "OS_File",16,"<Flyn$Dir>.MAP_H2",map_sprite_height%,0 230SYS "OS_File",16,"<Flyn$Dir>.MAP_C",map_sprite_colors%,0 240 270PROCPUNTEN(PUNT) 280PROCgouraud 290CALL set_mode 300DIM BLK 40 310!BLK=7:BLK!4=150:BLK!8=-1 320SYS "OS_ReadVduVariables",BLK,BLK 330IF (banks>1) AND (BLK!4<2*!BLK) THEN 340SYS "OS_ChangeDynamicArea",2,banks*!BLK-BLK!4 350ENDIF 360P1=2*PI/3 370FOR I=1 TO 255 380 P=I/256*2*PI 390 R=128*(1+COS(P)) 400 G=128*(1+COS(2*P+P1)) 410 B=128*(1+COS(P-P1)) 420 COLOUR I,R,G,B 430NEXT I 440CALL set 450 460PROCASS2 470PROCmain 480CALL CALC_DIVTABLE 490MOUSE TO 640,512 500TIME=0 510CALL main 520T=TIME 530MODE 0 540PRINT T/100 550END 560 570DEF PROCPUNTEN(PUNT) 580LOCAL I%,J% 590FOR J%=0 TO D2-1 600FOR I%=0 TO D1-1 610height%=?(map_sprite_height%+56+I%+(J%*ED)) 620height%=(height%AND 255)-128 630!PUNT=height%*FIX*8 640col%=?(map_sprite_colors%+56+I%+(J%*ED)) 650col%=col% AND 255: IF col%=0 col%=1 660PUNT!12=col% 670PUNT+=16 680NEXT 690NEXT 700ENDPROC 710 720DEF PROCmain 730LOCAL P%,Q% 740DIM Q% 1000 750FOR PASS=0 TO 2 STEP 2 760P%=Q% 770[OPT PASS 780.spd DCD 0 790.main 800 STMFD 13!,{14} 810 STR 13,spd 820 FNadr(13,stack) 830 BL claim_interrupt 840.mainloop 850 MOV 0,#&70 860 LDR 1,bankrear 870 MOV 2,#0 880 SWI "OS_Byte" 890 900 BL set 910 BL clear 920 BL show 930 BL display_fps 940 BL next_frame 950 960 SWI "OS_ReadEscapeState" 970 BCC mainloop 980 990 BL release_interrupt 1000 LDR 13,spd 1010 LDMFD 13!,{PC} 1020 1030 1040.next_frame 1050 SWI "OS_IntOff" 1060 LDR 1,bankcount 1070 ADD 1,1,#1 1080 STR 1,bankcount 1090 SWI "OS_IntOn" 1100 LDR 1,bankrear 1110 CMP 1,#banks 1120 MOVEQ 1,#0 1130 ADD 1,1,#1 1140 STR 1,bankrear 1150.decim LDR 0,bankfront 1160 CMP 0,1 1170 BEQ decim 1180 MOV PC,R14 1190 1200.time_counter EQUD 0 1210.frame_counter EQUD 0 1220.frame_average EQUD 0 1230.output_buffer DCD 0:DCD 0:DCD 0:DCD 0 1240.display_fps 1250 STMFD 13!,{0-2,14} 1260 SWI &11E 1270 LDR R0,frame_average 1280 ADR R1,output_buffer 1290 MOV R2,#16 1300 SWI "OS_ConvertInteger1" 1310 SWI "OS_Write0" 1320 LDMFD 13!,{0-2,PC} 1330 1340.marker DCD 0 1350.ticker STMFD 13!,{0-3,14} 1360 LDR 0,marker 1370 EORS 0,0,#1 1380 STR 0,marker 1390 LDMEQFD 13!,{0-3,PC} 1400 LDR 0,time_counter ; execute at 50 Hz 1410 ADD 0,0,#1 1420 CMP 0,#50 1430 MOVEQ 0,#0 1440 STR 0,time_counter 1450 LDREQ 1,frame_counter 1460 STREQ 1,frame_average 1470 STREQ 0,frame_counter 1480 LDMFD 13!,{0-3,PC} 1490 1500 1510 .bankfront EQUD 1 ; the front frame is displayed 1520 .bankrear EQUD 2 ; the rear frame is drawn 1530 .bankcount EQUD 0 ; nr. of ready frames in queue 1540 1550.time_stamp DCD 0:DCD 0:DCD 0:DCD 0:DCD 0:DCD 0:DCD 0:DCD 0 1560.sync_time EQUD 0 1570 1580 .vsync 1590 CMP 0,#4 ; check if event is vsync 1600 MOVNES PC,14 ; else exit 1610 STMFD 13!,{0-1} 1620 MOV R0,PC 1630 ORR R1,R0,#1 ; put in scv mode 1640 TEQP R1,#0 1650 MOV R0,R0 1660 STMFD 13!,{0-2,14} 1670 1680 LDR 0,sync_time ; increment sync time every 1690 ADD 0,0,#1 ; vsync 1700 STR 0,sync_time 1710 1720 LDR R0,bankcount ; if no new frames available 1730 CMP R0,#0 ; then display the previous frame 1740 BEQ no_hurry 1750 1760 SUB R0,R0,#1 ; else display new frame and update queue 1770 STR R0,bankcount 1780 LDR R1,bankfront 1790 CMP R1,#banks 1800 MOVEQ R1,#0 1810 ADD R1,R1,#1 1820 STR R1,bankfront 1830 MOV R0,#&71 1840 SWI 6 ; "OS_Byte" 1850 1860 LDR R0,frame_counter 1870 ADD R0,R0,#1 1880 STR R0,frame_counter 1890 1900 .no_hurry 1910 LDMFD 13!,{0-2,14} 1920 TEQP R0,#0 ; put back in irq mode 1930 MOV R0,R0 1940 LDMFD 13!,{0-1} 1950 MOVS PC,R14 1960 1970.claim_interrupt 1980 MOV R0,#&70 1990 LDR R1,bankfront 2000 SWI "OS_Byte" 2010 SWI &10C ; clear frame at front 2020 MOV R0,#&1C ; claim ticker 2030 ADR R1,ticker 2040 MOV R2,#0 2050 SWI "OS_Claim" 2060 MOV R0,#&10 2070 ADR R1,vsync 2080 MOV R2,#0 2090 SWI "OS_Claim" 2100 MOV R0,#14 2110 MOV R1,#4 2120 SWI "OS_Byte" 2130 MOV PC,R14 2140 2150.release_interrupt 2160 LDR R0,bankcount 2170 CMP R0,#0 2180 BNE release_interrupt ; display remaining frames in queue 2190 MOV R0,#13 2200 MOV R1,#4 2210 SWI "OS_Byte" 2220 MOV R0,#&10 2230 ADR R1,vsync 2240 MOV R2,#0 2250 SWI "OS_Release" 2260 MOV R0,#&1C 2270 ADR R1,ticker 2280 MOV R2,#0 2290 SWI "OS_Release" 2300 MOV PC,R14 2310] 2320NEXT 2330Q%=P% 2340ENDPROC 2350 2360DEF PROCASS2 2370LOCAL P%,Q% 2380DIM Q% 20000 2390 2400DIM CSTAB 8*1024 2410FOR I=0 TO 1023 2420H=PI/512*I 2430CSTAB!(I*8)=COS(H)*256 2440CSTAB!(I*8+4)=SIN(H)*256 2450NEXT 2460 2470DIM DITABLE 4000*16*4 2480FOR PASS=0 TO 2 STEP 2 2490A=0:B=1:TAB=2:T=3:NR=4:X=5:Y=6:I=7:J=8:CS=9:SN=10:H=11:DIT=12 2500Z=T:N=4:Q=2 2510P0=A:P1=B:P2=I:P3=J:P4=SN 2520P%=Q% 2530[OPT PASS 2540 2550.FREED EQUD 0 2560.VLTAB EQUD VLAK 2570.PUTAB EQUD PUNT 2580.nr EQUD D1*D2 2590.nr2 EQUD D1*D2 2600.RX EQUD 0 2610.RY EQUD 0 2620.CSD EQUD COS(PI/20)*256 2630.SND EQUD SIN(PI/20)*256 2640.CSTABD EQUD CSTAB 2650.H1D EQUD 16*8 2660.H2D EQUD 0 2670.DITD EQUD DITABLE 2680.DNRD EQUD 4000*16 2690.yrot EQUD 0:EQUD 0 2700.hight EQUD 0 2710 2720 2730.CALC_DIVTABLE 2740LDR DIT,DITD 2750LDR I,DNRD 2760.DVLOOP2 2770MOV T,#200<<16 2780MOV N,I 2790MOV J,#0 2800MOV Q,#0 2810.DVLOOP3 2820CMP N,T 2830MOVLO N,N,LSL #1 2840ADDLO J,J,#1 2850BLO DVLOOP3 2860MOV N,N,LSR J 2870.DVLOOP1 2880CMP T,N,LSL J 2890SUBHS T,T,N,LSL J 2900ADC Q,Q,Q 2910SUBS J,J,#1 2920BPL DVLOOP1 2930STR Q,[DIT,I,LSL #2] 2940SUBS I,I,#1 2950BNE DVLOOP2 2960MOV PC,R14 2970 2980.DEB DCD 0:DCD 0 2990.show 3000STMFD 13!,{14} 3010SWI "OS_Mouse" 3020SUB A,A,#640 3030 3040 3050LDR T,H1D 3060CMP Q,#4:ADDEQ T,T,#16 3070CMP Q,#1:SUBEQ T,T,#16 3080STR T,H1D 3090 3100LDR T,H2D 3110CMP Q,#6:ADDEQ T,T,#16 3120CMP Q,#3:SUBEQ T,T,#16 3130STR T,H2D 3140 3150LDR T,hight 3160CMP Q,#5:ADDEQ T,T,#32*FIX 3170CMP Q,#2:SUBEQ T,T,#32*FIX 3180CMP T,#256*FIX*6 3190MOVGE T,#256*FIX*6 3200CMN T,#256*FIX*6 3210MVNLE T,#256*FIX*6 3220STR T,hight 3230 3240 3250 3260LDR TAB,CSTABD 3270MVN T,#0 3280MOV T,T,LSR #22 3290MVN H,#0 3300MOV H,H,LSR #16 3310 3320AND I,A,T 3330ADD I,TAB,I,LSL #3 ; get cos and sin y-angle 3340LDMIA I,{CS,SN} 3350ADR J,yrot 3360STMIA J,{CS,SN} 3370 3380 3390RSB SN,SN,#0 3400MUL A,SN,B 3410MUL B,CS,B 3420 3430LDR X,RX 3440LDR Y,RY 3450ADDS X,X,A,ASR #8 3460ADDLT X,X,#D1*ED*16 3470CMP X,#D1*ED*16 3480SUBGE X,X,#D1*ED*16 3490ADDS Y,Y,B,ASR #8 3500ADDLT Y,Y,#D2*ED*16 3510CMP Y,#D2*ED*16 3520SUBGE Y,Y,#D2*ED*16 3530STR X,RX 3540STR Y,RY 3550MOV A,X 3560MOV B,Y 3570 3580 3590 3600 3610LDR I,H1D 3620MOV I,I,LSR #1 3630AND I,I,T 3640ADD I,TAB,I,LSL #3 3650LDMIA I,{CS,SN} 3660AND CS,CS,H 3670AND SN,SN,H 3680 3690LDR I,H2D 3700MOV I,I,LSR #1 3710AND I,I,T 3720ADD I,TAB,I,LSL #3 3730LDMIA I,{I,J} 3740ADD CS,CS,I,LSL #16 3750ADD SN,SN,J,LSL #16 3760 3770LDR DIT,DITD 3780 3790; configure bins 3800LDR N,VLTAB 3810MOV I,#HORIZON/8 3820MOV J,#0 3830.initbin 3840STR J,[N],#4 3850SUBS I,I,#1 3860BNE initbin 3870STR N,FREED 3880 3890 3900MOV J,#0 3910MOV I,#0 3920 3930MOV H,#0 3940.vlop 3950MOV I,H 3960BL checkpoint 3970CMP T,#100:BEQ vfound 3980RSB I,I,#0 3990BL checkpoint 4000CMP T,#100:BEQ vfound 4010MOV I,#0 4020MOV J,H 4030BL checkpoint 4040CMP T,#100:BEQ vfound 4050RSB J,J,#0 4060BL checkpoint 4070CMP T,#100:BEQ vfound 4080MOV J,#0 4090ADD H,H,#1 4100CMP H,#ED/2 4110BNE vlop 4120LDMFD 13!,{PC} 4130.vfound 4140 4150 4160FNadr(T,SCREEN2) 4170LDR H,[T] 4180ADD H,H,#640*64 4190ADD H,H,#64 4200;STR H,[T] 4210 4220 4230LDR N,VLTAB 4240BL rec 4250MOV T,#1<<31 4260;STR T,[N] 4270 4280LDR H,VLTAB 4290BL tek 4300LDMFD 13!,{PC} 4310 4320; check point (I,J) to be visible 4330; X*,Y*,Z*=T*,N*, A,B,I,J,CS,SN,DIT 4340.checkpoint 4350STMFD 13!,{I,J,N,Q,14}^ 4360ADD X,I,A,ASR #SH+FX 4370ADD Z,J,B,ASR #SH+FX 4380 4390AND Q,X,#D1-1 4400ADD Q,Q,Z,LSL #SH 4410MOV Q,Q,LSL #(32-2*SH) 4420 4430LDR N,PUTAB 4440ADD N,N,Q,LSR #(32-2*SH-4) 4450 4460LDR J,hight 4470RSB X,A,X,LSL #SH+FX 4480LDR Y,[N],#4 4490ADD Y,Y,J 4500RSB Z,B,Z,LSL #SH+FX:] 4510 4520IF SH-ZOOM > 0 THEN 4530[OPT PASS 4540MOV X,X,ASR #SH-ZOOM 4550MOV Y,Y,ASR #SH-ZOOM 4560MOV Z,Z,ASR #SH-ZOOM:] 4570ENDIF 4580 4590IF SH-ZOOM <0 THEN 4600[OPT PASS 4610MOV X,X,LSL #ZOOM-SH 4620MOV Y,Y,LSL #ZOOM-SH 4630MOV Z,Z,LSL #ZOOM-SH:] 4640ENDIF 4650 4660[ OPT PASS 4670 4680ADR J,yrot 4690LDMIA J,{I,J} 4700MUL Q,I,X 4710MLA Q,J,Z,Q 4720MUL X,J,X 4730MUL Z,I,Z 4740SUB Z,Z,X 4750MOV X,Q,ASR #8 4760MOV Z,Z,ASR #8 4770 4780MOV I,CS,LSL #16 4790MOV J,SN,LSL #16 4800MOV I,I,ASR #16 4810MOV J,J,ASR #16 4820MUL Q,I,Y 4830MLA Q,J,Z,Q 4840MUL Y,J,Y 4850MUL Z,I,Z 4860SUB Z,Z,Y 4870MOV Y,Q,ASR #8 4880MOV Z,Z,ASR #8 4890 4900MOV I,CS,ASR #16 4910MOV J,SN,ASR #16 4920MUL Q,I,X 4930MLA Q,J,Y,Q 4940MUL X,J,X 4950MUL Y,I,Y 4960SUB Y,Y,X 4970MOV X,Q,ASR #8 4980MOV Y,Y,ASR #8 4990 5000ADD I,Z,#300*FIX 5010CMP I,#0 5020LDRPL Z,[DIT,I,LSL #2] 5030MUL X,Z,X 5040MUL Y,Z,Y 5050MOV X,X,ASR #15 5060MOV Y,Y,ASR #15 5070ADD X,X,#160*2 5080RSB Y,Y,#120*2 5090STMIA N,{X,Y} ;perspective transformed (x,y,z) 5100 5110CMP I,#10*FIX ; to close 5120;MOVLT T,#101 5130BLT toclose 5140 5150CMP I,#HORIZON*FIX ; too far 5160BGE outscreen 5170 5180CMP X,#640 ; out left or right 5190BHS outscreen 5200 5210CMP Y,#480 ; out up or down 5220BHS outscreen 5230 5240MOV T,#100 5250MOV X,N ; place where transformed coord is stored 5260MOV Y,I ; z-coord used for depth bin sort 5270LDMFD 13!,{I,J,N,Q,PC}^ 5280 5290.outscreen 5300MOV T,#101 5310MOV X,N ; place where transformed coord is stored 5320MOV Y,I ; z-coord used for depth bin sort 5330LDMFD 13!,{I,J,N,Q,PC}^ 5340 5350.toclose 5360MOV T,#104 5370MOV X,N ; place where transformed coord is stored 5380MOV Y,I ; z-coord used for depth bin sort 5390LDMFD 13!,{I,J,N,Q,PC}^ 5400 5410 5420 5430; Q*, H* 5440.rec 5450; T=101 => point out of screen 5460STMFD 13!,{14} 5470;SWI 4 5480 5490MOV Q,#100 5500ADD H,H,#640-2*64-32 5510 5520ADD I,I,#1 5530LDRB T,[H,#1]:CMP T,#0 5540BLEQ checkpoint 5550STREQB T,[H,#1] 5560CMP T,#101 5570ADD Q,Q,T 5580 5590ADD J,J,#1 5600LDRB T,[H,#641]:CMP T,#0 5610BLEQ checkpoint 5620STREQB T,[H,#641] 5630CMP T,#101 5640ADD Q,Q,T 5650 5660SUB I,I,#1 5670LDRB T,[H,#640]:CMP T,#0 5680BLEQ checkpoint 5690STREQB T,[H,#640] 5700CMP T,#101 5710ADD Q,Q,T 5720 5730SUB J,J,#1 5740BL checkpoint 5750STRB T,[H] 5760CMP T,#101 5770ADD Q,Q,T ;flag on if beyond horizon or off screen 5780 5790LDRB T,[X,#8] 5800STRB T,[H,#-(640-2*64-32)]! 5810 5820 5830CMP Q,#504 ; all four points of patch out of screen 5840LDMHSFD 13!,{PC} ; so reject this one 5850 5860STMFD 13!,{I,J,H} 5870 5880MOVS Y,Y,ASR #FX+3 ; depth of patch 5890MOVMI Y,#0 5900CMP Y,#HORIZON/8 5910MOVHS Y,#HORIZON/8 5920SUBHS Y,Y,#1 5930 5940LDR N,VLTAB 5950LDR Y,[N,Y,LSL #2]! ; load depth link pointer 5960LDR T,FREED 5970STR T,[N] ; replace with new link pointer 5980;CMP Q,#100 5990STMIA (T)!,{X,Y} ; insert new patch node in depth linked list 6000STR T,FREED 6010 6020SUB J,J,#1 6030LDRB Q,[H,#-640]! 6040CMP Q,#0 6050BLEQ rec 6060LDMFD 13,{I,J,H} 6070SUB I,I,#1 6080LDRB Q,[H,#-1]! 6090CMP Q,#0 6100BLEQ rec 6110LDMFD 13,{I,J,H} 6120ADD I,I,#1 6130LDRB Q,[H,#1]! 6140CMP Q,#0 6150BLEQ rec 6160LDMFD 13!,{I,J,H} 6170ADD J,J,#1 6180LDRB Q,[H,#640]! 6190CMP Q,#0 6200BLEQ rec 6210LDMFD 13!,{PC} 6220 6230 6240.tek 6250STMFD 13!,{14} 6260 6270ADR TAB,vlak 6280MOV NR,#4 6290LDR DIT,PUTAB 6300ADD DIT,DIT,#4 6310MOV NR,#4 6320ADR TAB,vlak 6330MOV CS,#HORIZON/8 6340LDR H,VLTAB 6350ADD H,H,CS,LSL #2 ; put at bin with highest z 6360.next_bin 6370LDR Y,[H,#-4]! 6380CMP Y,#0 6390BEQ end_bin 6400LDMIA Y,{P0,Y} 6410.draw_bin 6420SUB X,P0,DIT 6430MOV X,X,LSL #32-2*SH-4 6440ADD T,X,#1 << (32-SH) ; j+=1 6450ADD P1,DIT,T,LSR #32-2*SH-4 6460MOV T,T,ROR #32-SH 6470ADD T,T,#1 << (32-SH) ; i+=1 6480ADD P2,DIT,T,ROR #32-SH-4 6490MOV T,T,ROR #SH 6500SUB T,T,#1 << (32-SH) ; j-=1 6510ADD P3,DIT,T,ROR #32-2*SH-4 6520 6530SUBS X,CS,#100/8 6540MOVMI X,#0 6550MOV X,X,LSR #7-3 ; depth queue color of patch 6560LDR T,[P0,#8] 6570ORR T,T,#3 6580EOR P4,T,X 6590STMIA TAB,{P0,P1,P2} 6600BL poly_fill 6610STMIA TAB,{P0,P2,P3} 6620BL poly_fill 6630CMP Y,#0 6640LDMNEIA Y,{P0,Y} 6650BNE draw_bin 6660.end_bin 6670SUBS CS,CS,#1 6680BNE next_bin 6690LDMFD 13!,{PC} 6700 6710 6720.vlak 6730EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0 6740] 6750NEXT 6760Q%=P% 6770ENDPROC 6780 6790 6800DEF PROCcalc_invers 6810DIM INVERS 4094*4*4 6820!INVERS=1 6830K=1<<21 6840FOR I=1 TO 4*4094-1:INVERS!(4*I)=K/(I+0.5):NEXT 6850ENDPROC 6860 6870 6880DEF PROCgouraud 6890LOCAL SF,FIX,SM,FP,I,G 6900LOCAL DXD,DYD,TXD,TYD,XD,YD 6910 6920 6930PROCcalc_invers 6940 6950SF=12:FIX=2^SF 6960SM=10 6970FP=SF+SM 6980 6990H=0:C1=1:L=2:R=3:CT=4:I=5:XL=6:XR=7:C2=8:T=9:O=10:LA=11:RA=12 7000 7010X1=0:Y1=1:X2=2:Y2=3:X3=4:Y3=5 7020I1=6:I2=7:I3=8 7030SCREEN=12:BITMAP=13:Tmp=14 7040 7050A=0:B=1:C=9:D=10:Tmp2=12:Help=13 7060 7070DIM Q% 20000 7080FOR PASS=0 TO 2 STEP 2 7090P%=Q% 7100[OPT PASS 7110 7120.clear 7130MOV R0,#0:MOV R1,#0:MOV R2,#0:MOV R3,#0 7140MOV R4,#0:MOV R5,#0:MOV R6,#0:MOV R7,#0 7150MOV R8,#0:MOV R9,#0 7160LDR R10,SCREEN2:MOV R11,#640*480 7170.cloop 7180STMIA R10!,{R0-R9} 7190STMIA R10!,{R0-R9} 7200STMIA R10!,{R0-R9} 7210STMIA R10!,{R0-R9} 7220SUBS R11,R11,#4*10*4 7230BNE cloop 7240MOV PC,R14 7250 7260.SCREEN1 EQUD 148:EQUD -1 7270.SCREEN2 EQUD 0 7280.SCREEN3 DCD 0 7290.set 7300ADR R0,SCREEN1 7310ADR R1,SCREEN2 7320SWI "OS_ReadVduVariables" 7330MOV 15,14 7340 7350.mode DCD 1 7360 DCD 640 7370 DCD 480 7380 DCD 3 7390 DCD -1 7400 DCD 0:DCD 128 7410 DCD 3:DCD 255 7420 DCD -1 7430.set_mode 7440MOV R0,#0 7450ADR R1,mode 7460SWI "OS_ScreenMode" 7470SWI "OS_RemoveCursors" 7480MOV pc,r14 7490 7500FNpredef 7510.poly_fill 7520FNprecalc 7530FNpiece 7540] 7550NEXT 7560Q%=P% 7570ENDPROC 7580 7590 7600 7610 7620DEF FNadr(reg,address) 7630offset=address-P%-8 7640IF offset>0 THEN 7650offset1=offset AND 255*4 7660offset2=offset AND 255*256*4 7670offset3=offset AND 255*256*256*4 7680 [OPT PASS:ADD reg, 15,#offset1:] 7690IF offset2<>0 [OPT PASS:ADD reg,reg,#offset2:] 7700IF offset3<>0 [OPT PASS:ADD reg,reg,#offset3:] 7710ELSE 7720offset1=-offset AND 255*4 7730offset2=-offset AND 255*256*4 7740offset3=-offset AND 255*256*256*4 7750 [OPT PASS:SUB reg, 15,#offset1:] 7760IF offset2<>0 [OPT PASS:SUB reg,reg,#offset2:] 7770IF offset3<>0 [OPT PASS:SUB reg,reg,#offset3:] 7780ENDIF 7790ENDIF 7800="" 7810 7820DEF FNpredef 7830[OPT PASS 7840.save_regs DCD 0:DCD 0:DCD 0:DCD 0:DCD 0:DCD 0:DCD 0 7850 7860.X1D EQUD 0 7870.X2D EQUD 0 7880 7890.DX21 EQUD 0 7900.DX32 EQUD 0 7910.DX31 EQUD 0 7920 7930.DY21 EQUD 0 7940.DY32 EQUD 0 7950 7960 7970.SCREEND EQUD 0 7980.spd DCD 0 7990 8000] 8010="" 8020 8030 8040DEF FNprecalc 8050[OPT PASS 8060;REM paramters R0-R8=x0,y0,x1,y1,x2,y2,i0,i1,i2 8070 8080 STMFD 13!,{0-12,14} 8090 STR 13,spd 8100 8110LDMIA 2,{0,1,2} 8120LDMIA 2,{4,5,8} 8130LDMIA 1,{2,3,7} 8140LDMIA 0,{0,1,6} 8150 8160MOV 6,6,LSL #6 8170MOV 7,7,LSL #6 8180MOV 8,8,LSL #6 8190 8200 8210;sort vertices so that y1,y2,y3 are in ascending order 8220 CMP Y1,Y2 8230 BLE inorder1 8240; if y1 > y2 then swap(x1,x2) swap(y1,y2) swap(u1,u2) swap(v1,v2) 8250 EOR Y1,Y1,Y2 8260 EOR X1,X1,X2 8270 EOR I1,I1,I2 8280 EOR Y2,Y2,Y1 8290 EOR X2,X2,X1 8300 EOR I2,I2,I1 8310 EOR Y1,Y1,Y2 8320 EOR X1,X1,X2 8330 EOR I1,I1,I2 8340.inorder1 8350 CMP Y2,Y3 8360 BLE inorder2 8370; if y2 > y3 then swap(x2,x3) swap(y2,y3) swap(u2,u3) swap(v2,v3) 8380 EOR Y2,Y2,Y3 8390 EOR X2,X2,X3 8400 EOR I2,I2,I3 8410 EOR Y3,Y3,Y2 8420 EOR X3,X3,X2 8430 EOR I3,I3,I2 8440 EOR Y2,Y2,Y3 8450 EOR X2,X2,X3 8460 EOR I2,I2,I3 8470.inorder2 8480 CMP Y1,Y2 8490 BLE inorder3 8500; if (y1 > y2) or (y1=y2 and x1>x2) then 8510; swap(x1,x2) swap(y1,y2) swap(u1,u2) swap(v1,v2) 8520 EOR Y1,Y1,Y2 8530 EOR X1,X1,X2 8540 EOR I1,I1,I2 8550 EOR Y2,Y2,Y1 8560 EOR X2,X2,X1 8570 EOR I2,I2,I1 8580 EOR Y1,Y1,Y2 8590 EOR X1,X1,X2 8600 EOR I1,I1,I2 8610.inorder3 8620 STR X1,X1D 8630 STR X2,X2D 8640 STR I1,I1D 8650 SUB X2,X2,X1 8660 SUB Y2,Y2,Y1 8670 SUB X3,X3,X1 8680 SUB Y3,Y3,Y1 8690 SUB I2,I2,I1 8700 SUB I3,I3,I1 8710 8720; screen'=screen + 320*y1 (mode 13) 8730 FNadr (SCREEN,SCREEN2) 8740 LDR SCREEN,[SCREEN] 8750 ADD Tmp,Y1,Y1,LSL #2 8760 ADD SCREEN,SCREEN,Tmp,LSL #6+1 8770 STR SCREEN,SCREEND 8780 8790 FNadr (Help,INVERS) 8800 STR Y2,DY21 8810; calc x2/y2 8820 LDR Tmp,[Help,Y2,LSL #2] 8830 MUL Tmp,X2,Tmp 8840 MOV Tmp,Tmp,ASR #9 8850 STR Tmp,DX21 8860 SUB Y1,Y3,Y2 8870 STR Y1,DY32 8880; calc (x3-x2)/(y3-y2) 8890 LDR Tmp,[Help,Y1,LSL #2] 8900 SUB X1,X3,X2 8910 MUL Tmp,X1,Tmp 8920 MOV Tmp,Tmp,ASR #9 8930 STR Tmp,DX32 8940; calc dx1 = x3/y3 8950 LDR Tmp,[Help,Y3,LSL #2] 8960 MUL Tmp2,X3,Tmp 8970 MOV Tmp2,Tmp2,ASR #9 8980 STR Tmp2,DX31 8990 9000; shading increment in y direction 9010; calc di1 = i3/y3 ; i 8.6 di 8.16 9020 MOV Tmp,Tmp,LSR #4 ; .17 9030 MUL I3,Tmp,I3 ; 8.23 9040 MOV I3,I3,ASR #17-10 ; 8.16 9050 MOV I1,I1,LSL #10 9060 ADD I1,I1,I3,ASR #1 9070 STR I3,I3D 9080 STR I1,I1D 9090 9100; calc 2^21/floor(abs(x2 - dx1*y2)) 9110 MUL Tmp,Y2,Tmp2 ; (x3/y3)*y2 9120 RSB Tmp,Tmp,X2,LSL #12 ; x2-(x3/y3)*y2 9130 MOVS Tmp,Tmp,ASR #10 ; int( ... ) 9140 RSBMI Tmp,Tmp,#0 9150 LDR Tmp,[Help,Tmp,LSL #2] ; .19 9160 9170 9180; shading increment in x direction 9190; calc di2 = (i2-di1*y2) / abs( x2 - dx1*y2) 9200 MOV I2,I2,LSL #10 ; 8.16 9210 MUL I3,Y2,I3 9220 RSB I2,I3,I2 ; 8.16 9230 MOV I2,I2,ASR #8 ; 8.8 9240 MOV Tmp,Tmp,LSR #3 ; .16 9250 MUL I2,Tmp,I2 ; 8.24 9260 MOV I2,I2,ASR #16 9270 STR I2,I2D ; 8.8 9280 LDR I1,I1D 9290 ADD I1,I1,I2,LSL #7 9300 STR I1,I1D 9310 9320 LDR O,SCREEND 9330 9340 LDR T,X1D 9350 MOV L,T,LSL #12 ; xl = (X1+0.5)*FIX 9360 ADD L,L,#1<<11 9370 LDR LA,DX31 ; dxl = dx31 9380 MOV R,L ; xr = (X1+0.5)*FIX 9390 LDR RA,DX21 ; dxr = dx21 9400 ADD L,L,LA,ASR #1 ; xl += 0.5*dxl 9410 ADD R,R,RA,ASR #1 ; xr += 0.5*dxr 9420 LDR CT,DY21 9430 CMP CT,#0 ; count = dy21 9440 BLNE PIECE 9450 9460 LDR T,X2D 9470 MOV R,T,LSL #12 ; dxr = dx32 9480 ADD R,R,#1<<11 ; xr = (X2+0.5)*FIX 9490 LDR LA,DX31 9500 LDR RA,DX32 9510 ADD R,R,RA,ASR #1 ; xr+= 0.5*dxr 9520 LDR CT,DY32 9530 CMP CT,#0 ; count= dy32 9540 BLNE PIECE 9550.end 9560 LDR 13,spd 9570 LDMFD 13!,{0-12,PC}^ 9580] 9590="" 9600 9610 9620DEF FNpiece 9630[OPT PASS 9640.I1D DCD 0 9650.I2D DCD 0 9660.I3D DCD 0 9670 9680.PIECE STMFD 13!,{CT,14} 9690 9700; clip to top 9710 FNadr (T,SCREEN2) 9720 LDR T,[T] 9730 CMP O,T 9740 BHS eclip 9750.clip 9760 ADD L,L,LA 9770 ADD R,R,RA 9780 ADD O,O,#320*2 9790; increment y shading 9800 9810 LDR I,I1D 9820 LDR H,I3D 9830 ADD I,I,H 9840 STR I,I1D 9850 9860 SUBS CT,CT,#1 9870 LDMEQFD 13!,{CT,15} 9880 CMP O,T 9890 BLO clip 9900.eclip 9910; clip to bottom 9920 ADD T,T,#640*480 9930 SUBS T,T,O 9940 LDMLSFD 13!,{CT,15} 9950 ADD CT,CT,CT,LSL #2 9960 CMP CT,T,LSR #6+1 9970 MOVHI CT,T,LSR #6+1 9980 CMP L,R ; left or right oriented ? 9990 BGT span_2 10000 BAL span 10010.endspan 10020 ADD O,O,#320*2 10030 ADD L,L,LA 10040 ADD R,R,RA 10050 SUBS CT,CT,#5 10060; increment y shading 10070 10080 LDR T,I1D 10090 LDR I,I3D 10100 ADD I,I,T 10110 STR I,I1D 10120 10130 LDMEQFD 13!,{CT,15} 10140.span 10150 10160 10170; clip to right 10180 CMP R,#640<<12 10190 ADD XR,O,R,ASR #12 10200 ADDGT XR,O,#320*2 10210; Clip to left 10220 MOVS T,L,ASR #12 10230 ADD XL,O,T 10240 MOVLT XL,O 10250 RSBMI T,T,#0 10260 10270 10280; Load line shade and shade increment 10290 LDR I,I1D ; 10.4 10300 MOV I,I,ASR #8 10310 LDR H,I2D ; 10.4 10320 MLAMI I,T,H,I 10330 10340 MOV T,L,ASR #4 10350 AND T,T,#255 10360 MUL T,H,T 10370 SUB I,I,T,ASR #8 10380 10390 MOV I,I,LSL #16 ; 10.22 10400 MOV H,H,LSL #16 ; 10.22 10410 ADD I,I,H,LSR #16 10420 10430 SUB T,XR,XL 10440 CMP T,#3 10450 BLE smallspan 10460 TST XL,#3 10470 BEQ endloop1 10480.loop1 FNmapbyte(C1) 10490 STRB C1,[XL],#1 10500 TST XL,#3 10510 BNE loop1 10520 10530.endloop1 SUB H,XR,XL 10540 MOVS H,H,LSR #3 10550 BCC doit 10560 FNmapbyte(C1) 10570 FNmapbyte(T) 10580 ADD C1,C1,T,LSL #8 10590 FNmapbyte(T) 10600 ADD C1,C1,T,LSL #16 10610 FNmapbyte(T) 10620 ADD C1,C1,T,LSL #24 10630 STR C1,[XL],#4 10640 CMP H,#0 10650.doit BEQ smallspan 10660 10670.loop2 FNmapbyte(C1) 10680 FNmapbyte(T) 10690 ADD C1,C1,T,LSL #8 10700 FNmapbyte(T) 10710 ADD C1,C1,T,LSL #16 10720 FNmapbyte(T) 10730 ADD C1,C1,T,LSL #24 10740 FNmapbyte(C2) 10750 FNmapbyte(T) 10760 ADD C2,C2,T,LSL #8 10770 FNmapbyte(T) 10780 ADD C2,C2,T,LSL #16 10790 FNmapbyte(T) 10800 ADD C2,C2,T,LSL #24 10810 STMIA (XL)!,{C1,C2} 10820 SUBS H,H,#1 10830 BNE loop2 10840.smallspan 10850 CMP XL,XR 10860 BGE endspan 10870 FNmapbyte(C1) 10880 STRB C1,[XL],#1 10890 CMP XL,XR 10900 BEQ endspan 10910 FNmapbyte(C1) 10920 STRB C1,[XL],#1 10930 CMP XL,XR 10940 BEQ endspan 10950 FNmapbyte(C1) 10960 STRB C1,[XL],#1 10970 BAL endspan 10980.endspan_2 10990 ADD O,O,#320*2 11000 ADD L,L,LA 11010 ADD R,R,RA 11020 SUBS CT,CT,#5 11030; increment y shading 11040 LDR T,I1D 11050 LDR I,I3D 11060 ADD I,I,T 11070 STR I,I1D 11080 LDMEQFD 13!,{CT,15} 11090.span_2 11100; Clip to left 11110 MOVS T,R,ASR #12 11120 ADDPL XR,O,R,ASR #12 11130 MOVMI XR,O 11140; clip to right 11150 MOV T,#320*2 11160 RSBS T,T,L,ASR #12 11170 ADD XL,O,L,ASR #12 11180 ADDPL XL,O,#320*2 11190; Load line shade and shade increment 11200 LDR I,I1D 11210 MOV I,I,ASR #8 11220 LDR H,I2D 11230 MLAPL I,T,H,I 11240 11250 MOV T,L,ASR #4 11260 AND T,T,#255 11270 MUL T,H,T 11280 ADD I,I,T,ASR #8 11290 11300 MOV I,I,LSL #16 11310 MOV H,H,LSL #16 11320 ADD I,I,H,LSR#16 11330 SUB T,XL,XR 11340 CMP T,#3 11350 BLE smallspan_2 11360 TST XL,#3 11370 BEQ endloop1_2 11380.loop1_2 FNmapbyte(C1) 11390 STRB C1,[XL,#-1]! 11400 TST XL,#3 11410 BNE loop1_2 11420.endloop1_2 11430 SUB H,XL,XR 11440 MOVS H,H,LSR #3 11450 BCC doit_2 11460 FNmapbyte(C1) 11470 FNmapbyte(T) 11480 ADD C1,C1,T,LSL #24 11490 FNmapbyte(T) 11500 ADD C1,C1,T,LSL #16 11510 FNmapbyte(T) 11520 ADD C1,T,C1,ROR #8 11530 STR C1,[XL,#-4]! 11540 CMP H,#0 11550.doit_2 BEQ smallspan_2 11560.loop2_2 11570 FNmapbyte(C2) 11580 FNmapbyte(T) 11590 ADD C2,C2,T,LSL #24 11600 FNmapbyte(T) 11610 ADD C2,C2,T,LSL #16 11620 FNmapbyte(T) 11630 ADD C2,T,C2,ROR #8 11640 FNmapbyte(C1) 11650 FNmapbyte(T) 11660 ADD C1,C1,T,LSL #24 11670 FNmapbyte(T) 11680 ADD C1,C1,T,LSL #16 11690 FNmapbyte(T) 11700 ADD C1,T,C1,ROR #8 11710 STMDB (XL)!,{C1,C2} 11720 SUBS H,H,#1 11730 BNE loop2_2 11740.smallspan_2 11750 CMP XR,XL 11760 BGE endspan_2 11770 FNmapbyte(C1) 11780 STRB C1,[XL,#-1]! 11790 CMP XR,XL 11800 BEQ endspan_2 11810 FNmapbyte(C1) 11820 STRB C1,[XL,#-1]! 11830 CMP XR,XL 11840 BEQ endspan_2 11850 FNmapbyte(C1) 11860 STRB C1,[XL,#-1]! 11870 BAL endspan_2 11880] 11890="" 11900 11910DEF FNmapbyte(reg) 11920[OPT PASS 11930 MOV reg,I,LSR #24 11940 ADD I,I,I,LSL #16 11950] 11960 =""
�> FLYNhi � (c) Jan Vlietinck (/�ON ERROR:ON ERROR OFF:REPORT:PRINT ERL:END 2 <� stack 100000 F Pȗ � Z*POINTER dbanks=2 n>SH=7 :� Determines the number of patches: 2^SH xED=2^SH:D1=ED:D2=ED �FX=3:FIX=2^FX �>HORIZON=1024 :� Determines how deep the land extends �BZOOM=5 :� Determines the phycical measures of patch �� PUNT 16*D1*D2 �� VLAK 12*D1*D2 �=� The array PUNT is of size 2^SH and contains four words: �5� the height, projected x, projected y and colour �%� map_sprite_height% 4000+(ED*ED) �%� map_sprite_colors% 4000+(ED*ED) �<ș "OS_File",16,"<Flyn$Dir>.MAP_H2",map_sprite_height%,0 �;ș "OS_File",16,"<Flyn$Dir>.MAP_C",map_sprite_colors%,0 � �PUNTEN(PUNT) �gouraud "� set_mode ,� BLK 40 6!BLK=7:BLK!4=150:BLK!8=-1 @$ș "OS_ReadVduVariables",BLK,BLK J"� (banks>1) � (BLK!4<2*!BLK) � T0ș "OS_ChangeDynamicArea",2,banks*!BLK-BLK!4 ^� hP1=2*�/3 r� I=1 � 255 | P=I/256*2*� � R=128*(1+�(P)) � G=128*(1+�(2*P+P1)) � B=128*(1+�(P-P1)) � � I,R,G,B �� I � � set � � �ASS2 � �main �� CALC_DIVTABLE �ȗ � 640,512 ��=0 � � main T=� � 0 � T/100 &� 0 :� �PUNTEN(PUNT) D� I%,J% N� J%=0 � D2-1 X� I%=0 � D1-1 b/height%=?(map_sprite_height%+56+I%+(J%*ED)) lheight%=(height%� 255)-128 v!PUNT=height%*FIX*8 �,col%=?(map_sprite_colors%+56+I%+(J%*ED)) �$col%=col% � 255: � col%=0 col%=1 �PUNT!12=col% �PUNT+=16 �� �� �� � �� �main �� P%,Q% � � Q% 1000 �� PASS=0 � 2 � 2 � P%=Q% [OPT PASS .spd DCD 0 .main STMFD 13!,{14} * STR 13,spd 4 �adr(13,stack) >' BL claim_interrupt H .mainloop R MOV 0,#&70 \" LDR 1,bankrear f MOV 2,#0 p! SWI "OS_Byte" z � BL set � BL clear � BL show �# BL display_fps �" BL next_frame � �, SWI "OS_ReadEscapeState" � BCC mainloop � �) BL release_interrupt � LDR 13,spd � LDMFD 13!,{PC} � .next_frame # SWI "OS_IntOff" $# LDR 1,bankcount . ADD 1,1,#1 8# STR 1,bankcount B" SWI "OS_IntOn" L" LDR 1,bankrear V CMP 1,#banks ` �Q 1,#0 j ADD 1,1,#1 t" STR 1,bankrear ~#.decim LDR 0,bankfront � CMP 0,1 � BEQ decim � MOV PC,R14 � �.time_counter EQUD 0 �.frame_counter EQUD 0 �.frame_average EQUD 0 �/.output_buffer DCD 0:DCD 0:DCD 0:DCD 0 �.display_fps �$ STMFD 13!,{0-2,14} � SWI &11E �( LDR R0,frame_average ( ADR R1,output_buffer MOV R2,#16 , SWI "OS_ConvertInteger1" # SWI "OS_Write0" ($ LDMFD 13!,{0-2,PC} 2 <.marker DCD 0 F$.ticker STMFD 13!,{0-3,14} P LDR 0,marker Z �S 0,0,#1 d STR 0,marker n$ LDMEQFD 13!,{0-3,PC} x: LDR 0,time_counter ; execute at 50 Hz � ADD 0,0,#1 � CMP 0,#50 � �Q 0,#0 �& STR 0,time_counter �' LDREQ 1,frame_counter �' STREQ 1,frame_average �' STREQ 0,frame_counter �$ LDMFD 13!,{0-3,PC} � � �: .bankfront EQUD 1 ; the front frame is displayed �5 .bankrear EQUD 2 ; the rear frame is drawn �: .bankcount EQUD 0 ; nr. of ready frames in queue ?.time_stamp DCD 0:DCD 0:DCD 0:DCD 0:DCD 0:DCD 0:DCD 0:DCD 0 .sync_time EQUD 0 " , .vsync 6; CMP 0,#4 ; check if event is vsync @- MOVNES PC,14 ; else exit J! STMFD 13!,{0-1} T MOV R0,PC ^5 �R R1,R0,#1 ; put in scv mode h TEQP R1,#0 r MOV R0,R0 |$ STMFD 13!,{0-2,14} � �C LDR 0,sync_time ; increment sync time every �/ ADD 0,0,#1 ; vsync �# STR 0,sync_time � �C LDR R0,bankcount ; if no new frames available �H CMP R0,#0 ; then display the previous frame � BEQ no_hurry � �P SUB R0,R0,#1 ; else display new frame and update queue �$ STR R0,bankcount �$ LDR R1,bankfront �! CMP R1,#banks �Q R1,#0 ADD R1,R1,#1 $ STR R1,bankfront & MOV R0,#&71 04 SWI 6 ; "OS_Byte" : D( LDR R0,frame_counter N ADD R0,R0,#1 X( STR R0,frame_counter b l .no_hurry v$ LDMFD 13!,{0-2,14} �8 TEQP R0,#0 ; put back in irq mode � MOV R0,R0 �! LDMFD 13!,{0-1} � MOVS PC,R14 � �.claim_interrupt � MOV R0,#&70 �$ LDR R1,bankfront �! SWI "OS_Byte" �B SWI &10C ; clear frame at front �0 MOV R0,#&1C ; claim ticker �! ADR R1,ticker � MOV R2,#0 " SWI "OS_Claim" MOV R0,#&10 ADR R1,vsync MOV R2,#0 *" SWI "OS_Claim" 4 MOV R0,#14 > MOV R1,#4 H! SWI "OS_Byte" R MOV PC,R14 \ f.release_interrupt p$ LDR R0,bankcount z CMP R0,#0 �O BNE release_interrupt ; display remaining frames in queue � MOV R0,#13 � MOV R1,#4 �! SWI "OS_Byte" � MOV R0,#&10 � ADR R1,vsync � MOV R2,#0 �$ SWI "OS_Release" � MOV R0,#&1C �! ADR R1,ticker � MOV R2,#0 �$ SWI "OS_Release" � MOV PC,R14 ] � Q%=P% $� . 8� �ASS2 B� P%,Q% L� Q% 20000 V `� CSTAB 8*1024 j� I=0 � 1023 t H=�/512*I ~CSTAB!(I*8)=�(H)*256 �CSTAB!(I*8+4)=�(H)*256 �� � �� DITABLE 4000*16*4 �� PASS=0 � 2 � 2 �AA=0:B=1:TAB=2:T=3:NR=4:X=5:Y=6:I=7:J=8:CS=9:SN=10:H=11:DIT=12 �Z=T:N=4:Q=2 �P0=A:P1=B:P2=I:P3=J:P4=SN � P%=Q% � [OPT PASS � �.FREED EQUD 0 .VLTAB EQUD VLAK .PUTAB EQUD PUNT .nr EQUD D1*D2 .nr2 EQUD D1*D2 (.RX EQUD 0 2.RY EQUD 0 <.CSD EQUD �(�/20)*256 F.SND EQUD �(�/20)*256 P.CSTABD EQUD CSTAB Z.H1D EQUD 16*8 d.H2D EQUD 0 n.DITD EQUD DITABLE x.DNRD EQUD 4000*16 �.yrot EQUD 0:EQUD 0 �.hight EQUD 0 � � �.CALC_DIVTABLE �LDR DIT,DITD �LDR I,DNRD �.DVLOOP2 �MOV T,#200<<16 �MOV N,I �MOV J,#0 �MOV Q,#0 �.DVLOOP3 CMP N,T MOVLO N,N,LSL #1 ADDLO J,J,#1 "BLO DVLOOP3 ,MOV N,N,LSR J 6.DVLOOP1 @CMP T,N,LSL J JSUBHS T,T,N,LSL J T ADC Q,Q,Q ^SUBS J,J,#1 hBPL DVLOOP1 rSTR Q,[DIT,I,LSL #2] |SUBS I,I,#1 �BNE DVLOOP2 �MOV PC,R14 � �.DEB DCD 0:DCD 0 � .show �STMFD 13!,{14} �SWI "OS_Mouse" �SUB A,A,#640 � � � LDR T,H1D �CMP Q,#4:ADDEQ T,T,#16 �CMP Q,#1:SUBEQ T,T,#16 STR T,H1D LDR T,H2D &CMP Q,#6:ADDEQ T,T,#16 0CMP Q,#3:SUBEQ T,T,#16 : STR T,H2D D NLDR T,hight XCMP Q,#5:ADDEQ T,T,#32*FIX bCMP Q,#2:SUBEQ T,T,#32*FIX lCMP T,#256*FIX*6 vMOVGE T,#256*FIX*6 �CMN T,#256*FIX*6 �MVNLE T,#256*FIX*6 �STR T,hight � � � �LDR TAB,CSTABD �MVN T,#0 �MOV T,T,LSR #22 �MVN H,#0 �MOV H,H,LSR #16 � �� I,A,T 3ADD I,TAB,I,LSL #3 ; get cos and sin y-angle LDMIA I,{CS,SN} ADR J,yrot STMIA J,{CS,SN} * 4 >RSB SN,SN,#0 HMUL A,SN,B RMUL B,CS,B \ fLDR X,RX pLDR Y,RY zADDS X,X,A,ASR #8 �ADDLT X,X,#D1*ED*16 �CMP X,#D1*ED*16 �SUBGE X,X,#D1*ED*16 �ADDS Y,Y,B,ASR #8 �ADDLT Y,Y,#D2*ED*16 �CMP Y,#D2*ED*16 �SUBGE Y,Y,#D2*ED*16 �STR X,RX �STR Y,RY �MOV A,X �MOV B,Y � � LDR I,H1D $MOV I,I,LSR #1 .� I,I,T 8ADD I,TAB,I,LSL #3 BLDMIA I,{CS,SN} L � CS,CS,H V � SN,SN,H ` j LDR I,H2D tMOV I,I,LSR #1 ~� I,I,T �ADD I,TAB,I,LSL #3 �LDMIA I,{I,J} �ADD CS,CS,I,LSL #16 �ADD SN,SN,J,LSL #16 � �LDR DIT,DITD � �; configure bins �LDR N,VLTAB �MOV I,#HORIZON/8 �MOV J,#0 �.initbin STR J,[N],#4 SUBS I,I,#1 BNE initbin STR N,FREED ( 2 <MOV J,#0 FMOV I,#0 P ZMOV H,#0 d .vlop nMOV I,H xBL checkpoint �CMP T,#100:BEQ vfound �RSB I,I,#0 �BL checkpoint �CMP T,#100:BEQ vfound �MOV I,#0 �MOV J,H �BL checkpoint �CMP T,#100:BEQ vfound �RSB J,J,#0 �BL checkpoint �CMP T,#100:BEQ vfound �MOV J,#0 �ADD H,H,#1 CMP H,#ED/2 BNE vlop LDMFD 13!,{PC} ".vfound , 6 @�adr(T,SCREEN2) J LDR H,[T] TADD H,H,#640*64 ^ADD H,H,#64 h;STR H,[T] r | �LDR N,VLTAB � BL rec �MOV T,#1<<31 �;STR T,[N] � �LDR H,VLTAB � BL tek �LDMFD 13!,{PC} � �%; check point (I,J) to be visible �'; X*,Y*,Z*=T*,N*, A,B,I,J,CS,SN,DIT �.checkpoint �STMFD 13!,{I,J,N,Q,14}^ ADD X,I,A,ASR #SH+FX ADD Z,J,B,ASR #SH+FX &� Q,X,#D1-1 0ADD Q,Q,Z,LSL #SH :MOV Q,Q,LSL #(32-2*SH) D NLDR N,PUTAB XADD N,N,Q,LSR #(32-2*SH-4) b lLDR J,hight vRSB X,A,X,LSL #SH+FX �LDR Y,[N],#4 � ADD Y,Y,J �RSB Z,B,Z,LSL #SH+FX:] � �� SH-ZOOM > 0 � � [OPT PASS �MOV X,X,ASR #SH-ZOOM �MOV Y,Y,ASR #SH-ZOOM �MOV Z,Z,ASR #SH-ZOOM:] �� � �� SH-ZOOM <0 � � [OPT PASS MOV X,X,LSL #ZOOM-SH MOV Y,Y,LSL #ZOOM-SH MOV Z,Z,LSL #ZOOM-SH:] � * 4[ OPT PASS > HADR J,yrot RLDMIA J,{I,J} \ MUL Q,I,X fMLA Q,J,Z,Q p MUL X,J,X z MUL Z,I,Z � SUB Z,Z,X �MOV X,Q,ASR #8 �MOV Z,Z,ASR #8 � �MOV I,CS,LSL #16 �MOV J,SN,LSL #16 �MOV I,I,ASR #16 �MOV J,J,ASR #16 � MUL Q,I,Y �MLA Q,J,Z,Q � MUL Y,J,Y � MUL Z,I,Z � SUB Z,Z,Y MOV Y,Q,ASR #8 MOV Z,Z,ASR #8 $MOV I,CS,ASR #16 .MOV J,SN,ASR #16 8 MUL Q,I,X BMLA Q,J,Y,Q L MUL X,J,X V MUL Y,I,Y ` SUB Y,Y,X jMOV X,Q,ASR #8 tMOV Y,Y,ASR #8 ~ �ADD I,Z,#300*FIX �CMP I,#0 �LDRPL Z,[DIT,I,LSL #2] � MUL X,Z,X � MUL Y,Z,Y �MOV X,X,ASR #15 �MOV Y,Y,ASR #15 �ADD X,X,#160*2 �RSB Y,Y,#120*2 �4STMIA N,{X,Y} ;perspective transformed (x,y,z) � � CMP I,#10*FIX ; to close ;MOVLT T,#101 BLT toclose #CMP I,#HORIZON*FIX ; too far (BGE outscreen 2 <'CMP X,#640 ; out left or right FBHS outscreen P Z$CMP Y,#480 ; out up or down dBHS outscreen n xMOV T,#100 �<MOV X,N ; place where transformed coord is stored �4MOV Y,I ; z-coord used for depth bin sort �LDMFD 13!,{I,J,N,Q,PC}^ � �.outscreen �MOV T,#101 �<MOV X,N ; place where transformed coord is stored �4MOV Y,I ; z-coord used for depth bin sort �LDMFD 13!,{I,J,N,Q,PC}^ � �.toclose �MOV T,#104 �<MOV X,N ; place where transformed coord is stored 4MOV Y,I ; z-coord used for depth bin sort LDMFD 13!,{I,J,N,Q,PC}^ " , 6; Q*, H* @.rec J"; T=101 => point out of screen TSTMFD 13!,{14} ^ ;SWI 4 h rMOV Q,#100 |ADD H,H,#640-2*64-32 � �ADD I,I,#1 �LDRB T,[H,#1]:CMP T,#0 �BLEQ checkpoint �STREQB T,[H,#1] �CMP T,#101 � ADD Q,Q,T � �ADD J,J,#1 �LDRB T,[H,#641]:CMP T,#0 �BLEQ checkpoint �STREQB T,[H,#641] �CMP T,#101 ADD Q,Q,T SUB I,I,#1 &LDRB T,[H,#640]:CMP T,#0 0BLEQ checkpoint :STREQB T,[H,#640] DCMP T,#101 N ADD Q,Q,T X bSUB J,J,#1 lBL checkpoint vSTRB T,[H] �CMP T,#101 �6ADD Q,Q,T ;flag on if beyond horizon or off screen � �LDRB T,[X,#8] �STRB T,[H,#-(640-2*64-32)]! � � �?CMP Q,#504 ; all four points of patch out of screen �+LDMHSFD 13!,{PC} ; so reject this one � �STMFD 13!,{I,J,H} � �(MOVS Y,Y,ASR #FX+3 ; depth of patch MOVMI Y,#0 CMP Y,#HORIZON/8 MOVHS Y,#HORIZON/8 SUBHS Y,Y,#1 * 4LDR N,VLTAB >6LDR Y,[N,Y,LSL #2]! ; load depth link pointer HLDR T,FREED R<STR T,[N] ; replace with new link pointer \;CMP Q,#100 fBSTMIA (T)!,{X,Y} ; insert new patch node in depth linked list pSTR T,FREED z �SUB J,J,#1 �LDRB Q,[H,#-640]! �CMP Q,#0 �BLEQ rec �LDMFD 13,{I,J,H} �SUB I,I,#1 �LDRB Q,[H,#-1]! �CMP Q,#0 �BLEQ rec �LDMFD 13,{I,J,H} �ADD I,I,#1 �LDRB Q,[H,#1]! �CMP Q,#0 BLEQ rec LDMFD 13!,{I,J,H} ADD J,J,#1 $LDRB Q,[H,#640]! .CMP Q,#0 8BLEQ rec BLDMFD 13!,{PC} L V `.tek jSTMFD 13!,{14} t ~ADR TAB,vlak � MOV NR,#4 �LDR DIT,PUTAB �ADD DIT,DIT,#4 � MOV NR,#4 �ADR TAB,vlak �MOV CS,#HORIZON/8 �LDR H,VLTAB �6ADD H,H,CS,LSL #2 ; put at bin with highest z � .next_bin �LDR Y,[H,#-4]! �CMP Y,#0 �BEQ end_bin LDMIA Y,{P0,Y} .draw_bin SUB X,P0,DIT MOV X,X,LSL #32-2*SH-4 (%ADD T,X,#1 << (32-SH) ; j+=1 2ADD P1,DIT,T,LSR #32-2*SH-4 <MOV T,T,ROR #32-SH F%ADD T,T,#1 << (32-SH) ; i+=1 PADD P2,DIT,T,ROR #32-SH-4 ZMOV T,T,ROR #SH d%SUB T,T,#1 << (32-SH) ; j-=1 nADD P3,DIT,T,ROR #32-2*SH-4 x �SUBS X,CS,#100/8 �MOVMI X,#0 �=MOV X,X,LSR #7-3 ; depth queue color of patch �LDR T,[P0,#8] � �R T,T,#3 �� P4,T,X �STMIA TAB,{P0,P1,P2} �BL poly_fill �STMIA TAB,{P0,P2,P3} �BL poly_fill �CMP Y,#0 �LDMNEIA Y,{P0,Y} �BNE draw_bin .end_bin SUBS CS,CS,#1 BNE next_bin "LDMFD 13!,{PC} , 6 @ .vlak J&EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0 T] ^� h Q%=P% r� | � �� �calc_invers �� INVERS 4094*4*4 � !INVERS=1 �K=1<<21 �-� I=1 � 4*4094-1:INVERS!(4*I)=K/(I+0.5):� �� � � �� �gouraud �� SF,FIX,SM,FP,I,G �� DXD,DYD,TXD,TYD,XD,YD � �calc_invers &SF=12:FIX=2^SF 0 SM=10 :FP=SF+SM D NAH=0:C1=1:L=2:R=3:CT=4:I=5:XL=6:XR=7:C2=8:T=9:O=10:LA=11:RA=12 X b!X1=0:Y1=1:X2=2:Y2=3:X3=4:Y3=5 lI1=6:I2=7:I3=8 vSCREEN=12:BITMAP=13:Tmp=14 � �$A=0:B=1:C=9:D=10:Tmp2=12:Help=13 � �� Q% 20000 �� PASS=0 � 2 � 2 � P%=Q% � [OPT PASS � � .clear �+MOV R0,#0:MOV R1,#0:MOV R2,#0:MOV R3,#0 �+MOV R4,#0:MOV R5,#0:MOV R6,#0:MOV R7,#0 �MOV R8,#0:MOV R9,#0 �$LDR R10,SCREEN2:MOV R11,#640*480 .cloop STMIA R10!,{R0-R9} STMIA R10!,{R0-R9} STMIA R10!,{R0-R9} *STMIA R10!,{R0-R9} 4SUBS R11,R11,#4*10*4 > BNE cloop HMOV PC,R14 R \.SCREEN1 EQUD 148:EQUD -1 f.SCREEN2 EQUD 0 p.SCREEN3 DCD 0 z.set �ADR R0,SCREEN1 �ADR R1,SCREEN2 �SWI "OS_ReadVduVariables" � MOV 15,14 � �.mode DCD 1 � DCD 640 � DCD 480 � DCD 3 � DCD -1 � DCD 0:DCD 128 � DCD 3:DCD 255 � DCD -1 .set_mode MOV R0,#0 ADR R1,mode $SWI "OS_ScreenMode" .SWI "OS_RemoveCursors" 8MOV pc,r14 B L�predef V.poly_fill `�precalc j �piece t] ~� � Q%=P% �� � � � � �� �adr(reg,address) �offset=address-P%-8 �� offset>0 � �offset1=offset � 255*4 �offset2=offset � 255*256*4 �"offset3=offset � 255*256*256*4 9 [OPT PASS:ADD reg, 15,#offset1:] 8� offset2<>0 [OPT PASS:ADD reg,reg,#offset2:] 8� offset3<>0 [OPT PASS:ADD reg,reg,#offset3:] � (offset1=-offset � 255*4 2offset2=-offset � 255*256*4 <#offset3=-offset � 255*256*256*4 F9 [OPT PASS:SUB reg, 15,#offset1:] P8� offset2<>0 [OPT PASS:SUB reg,reg,#offset2:] Z8� offset3<>0 [OPT PASS:SUB reg,reg,#offset3:] d� n� x="" � � � �predef � [OPT PASS �8.save_regs DCD 0:DCD 0:DCD 0:DCD 0:DCD 0:DCD 0:DCD 0 � �.X1D EQUD 0 �.X2D EQUD 0 � �.DX21 EQUD 0 �.DX32 EQUD 0 �.DX31 EQUD 0 � �.DY21 EQUD 0 .DY32 EQUD 0 ".SCREEND EQUD 0 ,.spd DCD 0 6 @] J="" T ^ h� �precalc r [OPT PASS |1;� paramters R0-R8=x0,y0,x1,y1,x2,y2,i0,i1,i2 � �% STMFD 13!,{0-12,14} � STR 13,spd � �LDMIA 2,{0,1,2} �LDMIA 2,{4,5,8} �LDMIA 1,{2,3,7} �LDMIA 0,{0,1,6} � �MOV 6,6,LSL #6 �MOV 7,7,LSL #6 �MOV 8,8,LSL #6 � :;sort vertices so that y1,y2,y3 are in ascending order CMP Y1,Y2 & BLE inorder1 0E; if y1 > y2 then swap(x1,x2) swap(y1,y2) swap(u1,u2) swap(v1,v2) : � Y1,Y1,Y2 D � X1,X1,X2 N � I1,I1,I2 X � Y2,Y2,Y1 b � X2,X2,X1 l � I2,I2,I1 v � Y1,Y1,Y2 � � X1,X1,X2 � � I1,I1,I2 � .inorder1 � CMP Y2,Y3 � BLE inorder2 �E; if y2 > y3 then swap(x2,x3) swap(y2,y3) swap(u2,u3) swap(v2,v3) � � Y2,Y2,Y3 � � X2,X2,X3 � � I2,I2,I3 � � Y3,Y3,Y2 � � X3,X3,X2 � � I3,I3,I2 � � Y2,Y2,Y3 ! � X2,X2,X3 ! � I2,I2,I3 ! .inorder2 ! CMP Y1,Y2 !* BLE inorder3 !4,; if (y1 > y2) or (y1=y2 and x1>x2) then !>5; swap(x1,x2) swap(y1,y2) swap(u1,u2) swap(v1,v2) !H � Y1,Y1,Y2 !R � X1,X1,X2 !\ � I1,I1,I2 !f � Y2,Y2,Y1 !p � X2,X2,X1 !z � I2,I2,I1 !� � Y1,Y1,Y2 !� � X1,X1,X2 !� � I1,I1,I2 !� .inorder3 !� STR X1,X1D !� STR X2,X2D !� STR I1,I1D !� SUB X2,X2,X1 !� SUB Y2,Y2,Y1 !� SUB X3,X3,X1 !� SUB Y3,Y3,Y1 !� SUB I2,I2,I1 !� SUB I3,I3,I1 " "*; screen'=screen + 320*y1 (mode 13) "' �adr (SCREEN,SCREEN2) "$' LDR SCREEN,[SCREEN] ".( ADD Tmp,Y1,Y1,LSL #2 "82 ADD SCREEN,SCREEN,Tmp,LSL #6+1 "B& STR SCREEN,SCREEND "L "V$ �adr (Help,INVERS) "` STR Y2,DY21 "j; calc x2/y2 "t, LDR Tmp,[Help,Y2,LSL #2] "~" MUL Tmp,X2,Tmp "�& MOV Tmp,Tmp,ASR #9 "� STR Tmp,DX21 "� SUB Y1,Y3,Y2 "� STR Y1,DY32 "�; calc (x3-x2)/(y3-y2) "�, LDR Tmp,[Help,Y1,LSL #2] "� SUB X1,X3,X2 "�" MUL Tmp,X1,Tmp "�& MOV Tmp,Tmp,ASR #9 "� STR Tmp,DX32 "�; calc dx1 = x3/y3 "�, LDR Tmp,[Help,Y3,LSL #2] # # MUL Tmp2,X3,Tmp # ( MOV Tmp2,Tmp2,ASR #9 #! STR Tmp2,DX31 # #(&; shading increment in y direction #2,; calc di1 = i3/y3 ; i 8.6 di 8.16 #<2 MOV Tmp,Tmp,LSR #4 ; .17 #F5 MUL I3,Tmp,I3 ; 8.23 #P3 MOV I3,I3,ASR #17-10 ; 8.16 #Z% MOV I1,I1,LSL #10 #d' ADD I1,I1,I3,ASR #1 #n STR I3,I3D #x STR I1,I1D #� #�'; calc 2^21/floor(abs(x2 - dx1*y2)) #�8 MUL Tmp,Y2,Tmp2 ; (x3/y3)*y2 #�; RSB Tmp,Tmp,X2,LSL #12 ; x2-(x3/y3)*y2 #�8 MOVS Tmp,Tmp,ASR #10 ; int( ... ) #�" RSBMI Tmp,Tmp,#0 #�4 LDR Tmp,[Help,Tmp,LSL #2] ; .19 #� #� #�&; shading increment in x direction #�0; calc di2 = (i2-di1*y2) / abs( x2 - dx1*y2) #�/ MOV I2,I2,LSL #10 ; 8.16 #� MUL I3,Y2,I3 $- RSB I2,I3,I2 ; 8.16 $, MOV I2,I2,ASR #8 ; 8.8 $- MOV Tmp,Tmp,LSR #3 ; .16 $"- MUL I2,Tmp,I2 ; 8.24 $,% MOV I2,I2,ASR #16 $6, STR I2,I2D ; 8.8 $@ LDR I1,I1D $J' ADD I1,I1,I2,LSL #7 $T STR I1,I1D $^ $h! LDR O,SCREEND $r $| LDR T,X1D $�8 MOV L,T,LSL #12 ; xl = (X1+0.5)*FIX $�" ADD L,L,#1<<11 $�1 LDR LA,DX31 ; dxl = dx31 $�8 MOV R,L ; xr = (X1+0.5)*FIX $�1 LDR RA,DX21 ; dxr = dx21 $�6 ADD L,L,LA,ASR #1 ; xl += 0.5*dxl $�6 ADD R,R,RA,ASR #1 ; xr += 0.5*dxr $� LDR CT,DY21 $�5 CMP CT,#0 ; count = dy21 $� BLNE PIECE $� $� LDR T,X2D $�2 MOV R,T,LSL #12 ; dxr = dx32 %9 ADD R,R,#1<<11 ; xr = (X2+0.5)*FIX % LDR LA,DX31 % LDR RA,DX32 %&5 ADD R,R,RA,ASR #1 ; xr+= 0.5*dxr %0 LDR CT,DY32 %:4 CMP CT,#0 ; count= dy32 %D BLNE PIECE %N.end %X LDR 13,spd %b& LDMFD 13!,{0-12,PC}^ %l] %v="" %� %� %�� �piece %� [OPT PASS %�.I1D DCD 0 %�.I2D DCD 0 %�.I3D DCD 0 %� %� .PIECE STMFD 13!,{CT,14} %� %�; clip to top %�" �adr (T,SCREEN2) %� LDR T,[T] & CMP O,T & BHS eclip & .clip & ADD L,L,LA &* ADD R,R,RA &4" ADD O,O,#320*2 &>; increment y shading &H &R LDR I,I1D &\ LDR H,I3D &f ADD I,I,H &p STR I,I1D &z &� SUBS CT,CT,#1 &�# LDMEQFD 13!,{CT,15} &� CMP O,T &� BLO clip &� .eclip &�; clip to bottom &�$ ADD T,T,#640*480 &� SUBS T,T,O &�# LDMLSFD 13!,{CT,15} &�' ADD CT,CT,CT,LSL #2 &�% CMP CT,T,LSR #6+1 &�% MOVHI CT,T,LSR #6+1 &�? CMP L,R ; left or right oriented ? ' BGT span_2 ' BAL span '.endspan '$" ADD O,O,#320*2 '. ADD L,L,LA '8 ADD R,R,RA 'B SUBS CT,CT,#5 'L; increment y shading 'V '` LDR T,I1D 'j LDR I,I3D 't ADD I,I,T '~ STR I,I1D '� '�# LDMEQFD 13!,{CT,15} '� .span '� '� '�; clip to right '�" CMP R,#640<<12 '�& ADD XR,O,R,ASR #12 '�# ADDGT XR,O,#320*2 '�; Clip to left '�# MOVS T,L,ASR #12 '� ADD XL,O,T ( MOVLT XL,O ( RSBMI T,T,#0 ( ( ((); Load line shade and shade increment (2. LDR I,I1D ; 10.4 (<" MOV I,I,ASR #8 (F. LDR H,I2D ; 10.4 (P MLAMI I,T,H,I (Z (d! MOV T,L,ASR #4 (n � T,T,#255 (x MUL T,H,T (�# SUB I,I,T,ASR #8 (� (�0 MOV I,I,LSL #16 ; 10.22 (�0 MOV H,H,LSL #16 ; 10.22 (�% ADD I,I,H,LSR #16 (� (� SUB T,XR,XL (� CMP T,#3 (�! BLE smallspan (� TST XL,#3 (� BEQ endloop1 (�.loop1 �mapbyte(C1) (�" STRB C1,[XL],#1 ) TST XL,#3 ) BNE loop1 ) )".endloop1 SUB H,XR,XL )," MOVS H,H,LSR #3 )6 BCC doit )@ �mapbyte(C1) )J �mapbyte(T) )T& ADD C1,C1,T,LSL #8 )^ �mapbyte(T) )h' ADD C1,C1,T,LSL #16 )r �mapbyte(T) )|' ADD C1,C1,T,LSL #24 )�" STR C1,[XL],#4 )� CMP H,#0 )�!.doit BEQ smallspan )� )�.loop2 �mapbyte(C1) )� �mapbyte(T) )�& ADD C1,C1,T,LSL #8 )� �mapbyte(T) )�' ADD C1,C1,T,LSL #16 )� �mapbyte(T) )�' ADD C1,C1,T,LSL #24 )� �mapbyte(C2) )� �mapbyte(T) *& ADD C2,C2,T,LSL #8 * �mapbyte(T) *' ADD C2,C2,T,LSL #16 *& �mapbyte(T) *0' ADD C2,C2,T,LSL #24 *:% STMIA (XL)!,{C1,C2} *D SUBS H,H,#1 *N BNE loop2 *X.smallspan *b CMP XL,XR *l BGE endspan *v �mapbyte(C1) *�" STRB C1,[XL],#1 *� CMP XL,XR *� BEQ endspan *� �mapbyte(C1) *�" STRB C1,[XL],#1 *� CMP XL,XR *� BEQ endspan *� �mapbyte(C1) *�" STRB C1,[XL],#1 *� BAL endspan *�.endspan_2 *�" ADD O,O,#320*2 *� ADD L,L,LA + ADD R,R,RA + SUBS CT,CT,#5 +; increment y shading + LDR T,I1D +* LDR I,I3D +4 ADD I,I,T +> STR I,I1D +H# LDMEQFD 13!,{CT,15} +R.span_2 +\; Clip to left +f# MOVS T,R,ASR #12 +p& ADDPL XR,O,R,ASR #12 +z MOVMI XR,O +�; clip to right +� MOV T,#320*2 +�% RSBS T,T,L,ASR #12 +�& ADD XL,O,L,ASR #12 +�# ADDPL XL,O,#320*2 +�); Load line shade and shade increment +� LDR I,I1D +�" MOV I,I,ASR #8 +� LDR H,I2D +� MLAPL I,T,H,I +� +�" MOV T,L,ASR #4 +� � T,T,#255 , MUL T,H,T ,. ADD I,I,T,ASR #8 , ,$# MOV I,I,LSL #16 ,.# MOV H,H,LSL #16 ,8$ ADD I,I,H,LSR#16 ,B SUB T,XL,XR ,L CMP T,#3 ,V# BLE smallspan_2 ,` TST XL,#3 ,j" BEQ endloop1_2 ,t.loop1_2 �mapbyte(C1) ,~$ STRB C1,[XL,#-1]! ,� TST XL,#3 ,� BNE loop1_2 ,�.endloop1_2 ,� SUB H,XL,XR ,�" MOVS H,H,LSR #3 ,� BCC doit_2 ,� �mapbyte(C1) ,� �mapbyte(T) ,�' ADD C1,C1,T,LSL #24 ,� �mapbyte(T) ,�' ADD C1,C1,T,LSL #16 ,� �mapbyte(T) - & ADD C1,T,C1,ROR #8 - $ STR C1,[XL,#-4]! - CMP H,#0 -#.doit_2 BEQ smallspan_2 -(.loop2_2 -2 �mapbyte(C2) -< �mapbyte(T) -F' ADD C2,C2,T,LSL #24 -P �mapbyte(T) -Z' ADD C2,C2,T,LSL #16 -d �mapbyte(T) -n& ADD C2,T,C2,ROR #8 -x �mapbyte(C1) -� �mapbyte(T) -�' ADD C1,C1,T,LSL #24 -� �mapbyte(T) -�' ADD C1,C1,T,LSL #16 -� �mapbyte(T) -�& ADD C1,T,C1,ROR #8 -�% STMDB (XL)!,{C1,C2} -� SUBS H,H,#1 -� BNE loop2_2 -�.smallspan_2 -� CMP XR,XL -�! BGE endspan_2 -� �mapbyte(C1) .$ STRB C1,[XL,#-1]! . CMP XR,XL .! BEQ endspan_2 ." �mapbyte(C1) .,$ STRB C1,[XL,#-1]! .6 CMP XR,XL .@! BEQ endspan_2 .J �mapbyte(C1) .T$ STRB C1,[XL,#-1]! .^! BAL endspan_2 .h] .r="" .| .�� �mapbyte(reg) .� [OPT PASS .�! MOV reg,I,LSR #24 .�! ADD I,I,I,LSL #16 .�] .� ="" �
00000000 0d 00 0a 0d f4 3e 20 46 4c 59 4e 68 69 0d 00 14 |.....> FLYNhi...| 00000010 17 f4 20 28 63 29 20 4a 61 6e 20 56 6c 69 65 74 |.. (c) Jan Vliet| 00000020 69 6e 63 6b 0d 00 1e 04 0d 00 28 2f f4 4f 4e 20 |inck......(/.ON | 00000030 45 52 52 4f 52 3a 4f 4e 20 45 52 52 4f 52 20 4f |ERROR:ON ERROR O| 00000040 46 46 3a 52 45 50 4f 52 54 3a 50 52 49 4e 54 20 |FF:REPORT:PRINT | 00000050 45 52 4c 3a 45 4e 44 0d 00 32 04 0d 00 3c 12 de |ERL:END..2...<..| 00000060 20 73 74 61 63 6b 20 31 30 30 30 30 30 0d 00 46 | stack 100000..F| 00000070 04 0d 00 50 08 c8 97 20 ee 0d 00 5a 0c 2a 50 4f |...P... ...Z.*PO| 00000080 49 4e 54 45 52 0d 00 64 0b 62 61 6e 6b 73 3d 32 |INTER..d.banks=2| 00000090 0d 00 6e 3e 53 48 3d 37 20 20 20 20 20 20 20 20 |..n>SH=7 | 000000a0 20 20 20 20 20 3a f4 20 44 65 74 65 72 6d 69 6e | :. Determin| 000000b0 65 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 |es the number of| 000000c0 20 70 61 74 63 68 65 73 3a 20 32 5e 53 48 0d 00 | patches: 2^SH..| 000000d0 78 17 45 44 3d 32 5e 53 48 3a 44 31 3d 45 44 3a |x.ED=2^SH:D1=ED:| 000000e0 44 32 3d 45 44 0d 00 82 11 46 58 3d 33 3a 46 49 |D2=ED....FX=3:FI| 000000f0 58 3d 32 5e 46 58 0d 00 8c 3e 48 4f 52 49 5a 4f |X=2^FX...>HORIZO| 00000100 4e 3d 31 30 32 34 20 20 20 20 20 20 20 3a f4 20 |N=1024 :. | 00000110 44 65 74 65 72 6d 69 6e 65 73 20 68 6f 77 20 64 |Determines how d| 00000120 65 65 70 20 74 68 65 20 6c 61 6e 64 20 65 78 74 |eep the land ext| 00000130 65 6e 64 73 0d 00 96 42 5a 4f 4f 4d 3d 35 20 20 |ends...BZOOM=5 | 00000140 20 20 20 20 20 20 20 20 20 20 3a f4 20 44 65 74 | :. Det| 00000150 65 72 6d 69 6e 65 73 20 74 68 65 20 70 68 79 63 |ermines the phyc| 00000160 69 63 61 6c 20 6d 65 61 73 75 72 65 73 20 6f 66 |ical measures of| 00000170 20 70 61 74 63 68 0d 00 a0 13 de 20 50 55 4e 54 | patch..... PUNT| 00000180 20 31 36 2a 44 31 2a 44 32 0d 00 aa 13 de 20 56 | 16*D1*D2..... V| 00000190 4c 41 4b 20 31 32 2a 44 31 2a 44 32 0d 00 b4 3d |LAK 12*D1*D2...=| 000001a0 f4 20 54 68 65 20 61 72 72 61 79 20 50 55 4e 54 |. The array PUNT| 000001b0 20 69 73 20 6f 66 20 73 69 7a 65 20 32 5e 53 48 | is of size 2^SH| 000001c0 20 61 6e 64 20 63 6f 6e 74 61 69 6e 73 20 66 6f | and contains fo| 000001d0 75 72 20 77 6f 72 64 73 3a 0d 00 be 35 f4 20 74 |ur words:...5. t| 000001e0 68 65 20 68 65 69 67 68 74 2c 20 70 72 6f 6a 65 |he height, proje| 000001f0 63 74 65 64 20 78 2c 20 70 72 6f 6a 65 63 74 65 |cted x, projecte| 00000200 64 20 79 20 61 6e 64 20 63 6f 6c 6f 75 72 0d 00 |d y and colour..| 00000210 c8 25 de 20 6d 61 70 5f 73 70 72 69 74 65 5f 68 |.%. map_sprite_h| 00000220 65 69 67 68 74 25 20 34 30 30 30 2b 28 45 44 2a |eight% 4000+(ED*| 00000230 45 44 29 0d 00 d2 25 de 20 6d 61 70 5f 73 70 72 |ED)...%. map_spr| 00000240 69 74 65 5f 63 6f 6c 6f 72 73 25 20 34 30 30 30 |ite_colors% 4000| 00000250 2b 28 45 44 2a 45 44 29 0d 00 dc 3c c8 99 20 22 |+(ED*ED)...<.. "| 00000260 4f 53 5f 46 69 6c 65 22 2c 31 36 2c 22 3c 46 6c |OS_File",16,"<Fl| 00000270 79 6e 24 44 69 72 3e 2e 4d 41 50 5f 48 32 22 2c |yn$Dir>.MAP_H2",| 00000280 6d 61 70 5f 73 70 72 69 74 65 5f 68 65 69 67 68 |map_sprite_heigh| 00000290 74 25 2c 30 0d 00 e6 3b c8 99 20 22 4f 53 5f 46 |t%,0...;.. "OS_F| 000002a0 69 6c 65 22 2c 31 36 2c 22 3c 46 6c 79 6e 24 44 |ile",16,"<Flyn$D| 000002b0 69 72 3e 2e 4d 41 50 5f 43 22 2c 6d 61 70 5f 73 |ir>.MAP_C",map_s| 000002c0 70 72 69 74 65 5f 63 6f 6c 6f 72 73 25 2c 30 0d |prite_colors%,0.| 000002d0 00 f0 04 0d 01 0e 11 f2 50 55 4e 54 45 4e 28 50 |........PUNTEN(P| 000002e0 55 4e 54 29 0d 01 18 0c f2 67 6f 75 72 61 75 64 |UNT).....gouraud| 000002f0 0d 01 22 0e d6 20 73 65 74 5f 6d 6f 64 65 0d 01 |..".. set_mode..| 00000300 2c 0c de 20 42 4c 4b 20 34 30 0d 01 36 1d 21 42 |,.. BLK 40..6.!B| 00000310 4c 4b 3d 37 3a 42 4c 4b 21 34 3d 31 35 30 3a 42 |LK=7:BLK!4=150:B| 00000320 4c 4b 21 38 3d 2d 31 0d 01 40 24 c8 99 20 22 4f |LK!8=-1..@$.. "O| 00000330 53 5f 52 65 61 64 56 64 75 56 61 72 69 61 62 6c |S_ReadVduVariabl| 00000340 65 73 22 2c 42 4c 4b 2c 42 4c 4b 0d 01 4a 22 e7 |es",BLK,BLK..J".| 00000350 20 28 62 61 6e 6b 73 3e 31 29 20 80 20 28 42 4c | (banks>1) . (BL| 00000360 4b 21 34 3c 32 2a 21 42 4c 4b 29 20 8c 0d 01 54 |K!4<2*!BLK) ...T| 00000370 30 c8 99 20 22 4f 53 5f 43 68 61 6e 67 65 44 79 |0.. "OS_ChangeDy| 00000380 6e 61 6d 69 63 41 72 65 61 22 2c 32 2c 62 61 6e |namicArea",2,ban| 00000390 6b 73 2a 21 42 4c 4b 2d 42 4c 4b 21 34 0d 01 5e |ks*!BLK-BLK!4..^| 000003a0 05 cd 0d 01 68 0c 50 31 3d 32 2a af 2f 33 0d 01 |....h.P1=2*./3..| 000003b0 72 0f e3 20 49 3d 31 20 b8 20 32 35 35 0d 01 7c |r.. I=1 . 255..|| 000003c0 10 20 50 3d 49 2f 32 35 36 2a 32 2a af 0d 01 86 |. P=I/256*2*....| 000003d0 13 20 52 3d 31 32 38 2a 28 31 2b 9b 28 50 29 29 |. R=128*(1+.(P))| 000003e0 0d 01 90 18 20 47 3d 31 32 38 2a 28 31 2b 9b 28 |.... G=128*(1+.(| 000003f0 32 2a 50 2b 50 31 29 29 0d 01 9a 16 20 42 3d 31 |2*P+P1)).... B=1| 00000400 32 38 2a 28 31 2b 9b 28 50 2d 50 31 29 29 0d 01 |28*(1+.(P-P1))..| 00000410 a4 0e 20 fb 20 49 2c 52 2c 47 2c 42 0d 01 ae 07 |.. . I,R,G,B....| 00000420 ed 20 49 0d 01 b8 09 d6 20 73 65 74 0d 01 c2 04 |. I..... set....| 00000430 0d 01 cc 09 f2 41 53 53 32 0d 01 d6 09 f2 6d 61 |.....ASS2.....ma| 00000440 69 6e 0d 01 e0 13 d6 20 43 41 4c 43 5f 44 49 56 |in..... CALC_DIV| 00000450 54 41 42 4c 45 0d 01 ea 10 c8 97 20 b8 20 36 34 |TABLE...... . 64| 00000460 30 2c 35 31 32 0d 01 f4 07 d1 3d 30 0d 01 fe 0a |0,512.....=0....| 00000470 d6 20 6d 61 69 6e 0d 02 08 07 54 3d 91 0d 02 12 |. main....T=....| 00000480 07 eb 20 30 0d 02 1c 0b f1 20 54 2f 31 30 30 0d |.. 0..... T/100.| 00000490 02 26 05 e0 0d 02 30 04 0d 02 3a 13 dd 20 f2 50 |.&....0...:.. .P| 000004a0 55 4e 54 45 4e 28 50 55 4e 54 29 0d 02 44 0b ea |UNTEN(PUNT)..D..| 000004b0 20 49 25 2c 4a 25 0d 02 4e 11 e3 20 4a 25 3d 30 | I%,J%..N.. J%=0| 000004c0 20 b8 20 44 32 2d 31 0d 02 58 11 e3 20 49 25 3d | . D2-1..X.. I%=| 000004d0 30 20 b8 20 44 31 2d 31 0d 02 62 2f 68 65 69 67 |0 . D1-1..b/heig| 000004e0 68 74 25 3d 3f 28 6d 61 70 5f 73 70 72 69 74 65 |ht%=?(map_sprite| 000004f0 5f 68 65 69 67 68 74 25 2b 35 36 2b 49 25 2b 28 |_height%+56+I%+(| 00000500 4a 25 2a 45 44 29 29 0d 02 6c 1e 68 65 69 67 68 |J%*ED))..l.heigh| 00000510 74 25 3d 28 68 65 69 67 68 74 25 80 20 32 35 35 |t%=(height%. 255| 00000520 29 2d 31 32 38 0d 02 76 17 21 50 55 4e 54 3d 68 |)-128..v.!PUNT=h| 00000530 65 69 67 68 74 25 2a 46 49 58 2a 38 0d 02 80 2c |eight%*FIX*8...,| 00000540 63 6f 6c 25 3d 3f 28 6d 61 70 5f 73 70 72 69 74 |col%=?(map_sprit| 00000550 65 5f 63 6f 6c 6f 72 73 25 2b 35 36 2b 49 25 2b |e_colors%+56+I%+| 00000560 28 4a 25 2a 45 44 29 29 0d 02 8a 24 63 6f 6c 25 |(J%*ED))...$col%| 00000570 3d 63 6f 6c 25 20 80 20 32 35 35 3a 20 e7 20 63 |=col% . 255: . c| 00000580 6f 6c 25 3d 30 20 63 6f 6c 25 3d 31 0d 02 94 10 |ol%=0 col%=1....| 00000590 50 55 4e 54 21 31 32 3d 63 6f 6c 25 0d 02 9e 0c |PUNT!12=col%....| 000005a0 50 55 4e 54 2b 3d 31 36 0d 02 a8 05 ed 0d 02 b2 |PUNT+=16........| 000005b0 05 ed 0d 02 bc 05 e1 0d 02 c6 04 0d 02 d0 0b dd |................| 000005c0 20 f2 6d 61 69 6e 0d 02 da 0b ea 20 50 25 2c 51 | .main..... P%,Q| 000005d0 25 0d 02 e4 0d de 20 51 25 20 31 30 30 30 0d 02 |%..... Q% 1000..| 000005e0 ee 14 e3 20 50 41 53 53 3d 30 20 b8 20 32 20 88 |... PASS=0 . 2 .| 000005f0 20 32 0d 02 f8 09 50 25 3d 51 25 0d 03 02 0d 5b | 2....P%=Q%....[| 00000600 4f 50 54 20 50 41 53 53 0d 03 0c 0e 2e 73 70 64 |OPT PASS.....spd| 00000610 20 44 43 44 20 30 0d 03 16 09 2e 6d 61 69 6e 0d | DCD 0.....main.| 00000620 03 20 20 20 20 20 20 20 20 20 20 20 20 53 54 4d |. STM| 00000630 46 44 20 20 20 20 20 31 33 21 2c 7b 31 34 7d 0d |FD 13!,{14}.| 00000640 03 2a 1e 20 20 20 20 20 20 20 20 20 20 53 54 52 |.*. STR| 00000650 20 20 20 20 20 20 20 31 33 2c 73 70 64 0d 03 34 | 13,spd..4| 00000660 1c 20 20 20 20 20 20 20 20 20 20 a4 61 64 72 28 |. .adr(| 00000670 31 33 2c 73 74 61 63 6b 29 0d 03 3e 27 20 20 20 |13,stack)..>' | 00000680 20 20 20 20 20 20 20 42 4c 20 20 20 20 20 20 20 | BL | 00000690 20 63 6c 61 69 6d 5f 69 6e 74 65 72 72 75 70 74 | claim_interrupt| 000006a0 0d 03 48 0d 2e 6d 61 69 6e 6c 6f 6f 70 0d 03 52 |..H..mainloop..R| 000006b0 1e 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 20 |. MOV | 000006c0 20 20 20 20 20 30 2c 23 26 37 30 0d 03 5c 22 20 | 0,#&70..\" | 000006d0 20 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 | LDR | 000006e0 20 20 20 31 2c 62 61 6e 6b 72 65 61 72 0d 03 66 | 1,bankrear..f| 000006f0 1c 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 20 |. MOV | 00000700 20 20 20 20 20 32 2c 23 30 0d 03 70 21 20 20 20 | 2,#0..p! | 00000710 20 20 20 20 20 20 20 53 57 49 20 20 20 20 20 20 | SWI | 00000720 20 22 4f 53 5f 42 79 74 65 22 0d 03 7a 04 0d 03 | "OS_Byte"..z...| 00000730 84 1b 20 20 20 20 20 20 20 20 20 20 42 4c 20 20 |.. BL | 00000740 20 20 20 20 20 20 73 65 74 0d 03 8e 1d 20 20 20 | set.... | 00000750 20 20 20 20 20 20 20 42 4c 20 20 20 20 20 20 20 | BL | 00000760 20 63 6c 65 61 72 0d 03 98 1c 20 20 20 20 20 20 | clear.... | 00000770 20 20 20 20 42 4c 20 20 20 20 20 20 20 20 73 68 | BL sh| 00000780 6f 77 0d 03 a2 23 20 20 20 20 20 20 20 20 20 20 |ow...# | 00000790 42 4c 20 20 20 20 20 20 20 20 64 69 73 70 6c 61 |BL displa| 000007a0 79 5f 66 70 73 0d 03 ac 22 20 20 20 20 20 20 20 |y_fps..." | 000007b0 20 20 20 42 4c 20 20 20 20 20 20 20 20 6e 65 78 | BL nex| 000007c0 74 5f 66 72 61 6d 65 0d 03 b6 0e 20 20 20 20 20 |t_frame.... | 000007d0 20 20 20 20 20 0d 03 c0 2c 20 20 20 20 20 20 20 | ..., | 000007e0 20 20 20 53 57 49 20 20 20 20 20 20 20 22 4f 53 | SWI "OS| 000007f0 5f 52 65 61 64 45 73 63 61 70 65 53 74 61 74 65 |_ReadEscapeState| 00000800 22 0d 03 ca 20 20 20 20 20 20 20 20 20 20 20 42 |"... B| 00000810 43 43 20 20 20 20 20 20 20 6d 61 69 6e 6c 6f 6f |CC mainloo| 00000820 70 0d 03 d4 0e 20 20 20 20 20 20 20 20 20 20 0d |p.... .| 00000830 03 de 29 20 20 20 20 20 20 20 20 20 20 42 4c 20 |..) BL | 00000840 20 20 20 20 20 20 20 72 65 6c 65 61 73 65 5f 69 | release_i| 00000850 6e 74 65 72 72 75 70 74 0d 03 e8 18 20 20 20 20 |nterrupt.... | 00000860 20 20 20 20 20 20 4c 44 52 20 31 33 2c 73 70 64 | LDR 13,spd| 00000870 0d 03 f2 20 20 20 20 20 20 20 20 20 20 20 4c 44 |... LD| 00000880 4d 46 44 20 20 20 20 20 31 33 21 2c 7b 50 43 7d |MFD 13!,{PC}| 00000890 0d 03 fc 04 0d 04 06 04 0d 04 10 0f 2e 6e 65 78 |.............nex| 000008a0 74 5f 66 72 61 6d 65 0d 04 1a 23 20 20 20 20 20 |t_frame...# | 000008b0 20 20 20 20 20 53 57 49 20 20 20 20 20 20 20 22 | SWI "| 000008c0 4f 53 5f 49 6e 74 4f 66 66 22 0d 04 24 23 20 20 |OS_IntOff"..$# | 000008d0 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 | LDR | 000008e0 20 20 31 2c 62 61 6e 6b 63 6f 75 6e 74 0d 04 2e | 1,bankcount...| 000008f0 1e 20 20 20 20 20 20 20 20 20 20 41 44 44 20 20 |. ADD | 00000900 20 20 20 20 20 31 2c 31 2c 23 31 0d 04 38 23 20 | 1,1,#1..8# | 00000910 20 20 20 20 20 20 20 20 20 53 54 52 20 20 20 20 | STR | 00000920 20 20 20 31 2c 62 61 6e 6b 63 6f 75 6e 74 0d 04 | 1,bankcount..| 00000930 42 22 20 20 20 20 20 20 20 20 20 20 53 57 49 20 |B" SWI | 00000940 20 20 20 20 20 20 22 4f 53 5f 49 6e 74 4f 6e 22 | "OS_IntOn"| 00000950 0d 04 4c 22 20 20 20 20 20 20 20 20 20 20 4c 44 |..L" LD| 00000960 52 20 20 20 20 20 20 20 31 2c 62 61 6e 6b 72 65 |R 1,bankre| 00000970 61 72 0d 04 56 20 20 20 20 20 20 20 20 20 20 20 |ar..V | 00000980 43 4d 50 20 20 20 20 20 20 20 31 2c 23 62 61 6e |CMP 1,#ban| 00000990 6b 73 0d 04 60 19 20 20 20 20 20 20 20 20 20 20 |ks..`. | 000009a0 ec 51 20 20 20 20 20 31 2c 23 30 0d 04 6a 1e 20 |.Q 1,#0..j. | 000009b0 20 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 | ADD | 000009c0 20 20 20 31 2c 31 2c 23 31 0d 04 74 22 20 20 20 | 1,1,#1..t" | 000009d0 20 20 20 20 20 20 20 53 54 52 20 20 20 20 20 20 | STR | 000009e0 20 31 2c 62 61 6e 6b 72 65 61 72 0d 04 7e 23 2e | 1,bankrear..~#.| 000009f0 64 65 63 69 6d 20 20 20 20 4c 44 52 20 20 20 20 |decim LDR | 00000a00 20 20 20 30 2c 62 61 6e 6b 66 72 6f 6e 74 0d 04 | 0,bankfront..| 00000a10 88 1b 20 20 20 20 20 20 20 20 20 20 43 4d 50 20 |.. CMP | 00000a20 20 20 20 20 20 20 30 2c 31 0d 04 92 1d 20 20 20 | 0,1.... | 00000a30 20 20 20 20 20 20 20 42 45 51 20 20 20 20 20 20 | BEQ | 00000a40 20 64 65 63 69 6d 0d 04 9c 1e 20 20 20 20 20 20 | decim.... | 00000a50 20 20 20 20 4d 4f 56 20 20 20 20 20 20 20 50 43 | MOV PC| 00000a60 2c 52 31 34 0d 04 a6 04 0d 04 b0 1e 2e 74 69 6d |,R14.........tim| 00000a70 65 5f 63 6f 75 6e 74 65 72 20 20 20 20 20 20 20 |e_counter | 00000a80 45 51 55 44 20 30 0d 04 ba 1e 2e 66 72 61 6d 65 |EQUD 0.....frame| 00000a90 5f 63 6f 75 6e 74 65 72 20 20 20 20 20 20 45 51 |_counter EQ| 00000aa0 55 44 20 30 0d 04 c4 1e 2e 66 72 61 6d 65 5f 61 |UD 0.....frame_a| 00000ab0 76 65 72 61 67 65 20 20 20 20 20 20 45 51 55 44 |verage EQUD| 00000ac0 20 30 0d 04 ce 2f 2e 6f 75 74 70 75 74 5f 62 75 | 0.../.output_bu| 00000ad0 66 66 65 72 20 20 20 20 20 20 44 43 44 20 30 3a |ffer DCD 0:| 00000ae0 44 43 44 20 30 3a 44 43 44 20 30 3a 44 43 44 20 |DCD 0:DCD 0:DCD | 00000af0 30 0d 04 d8 10 2e 64 69 73 70 6c 61 79 5f 66 70 |0.....display_fp| 00000b00 73 0d 04 e2 24 20 20 20 20 20 20 20 20 20 20 53 |s...$ S| 00000b10 54 4d 46 44 20 20 20 20 20 31 33 21 2c 7b 30 2d |TMFD 13!,{0-| 00000b20 32 2c 31 34 7d 0d 04 ec 1c 20 20 20 20 20 20 20 |2,14}.... | 00000b30 20 20 20 53 57 49 20 20 20 20 20 20 20 26 31 31 | SWI &11| 00000b40 45 0d 04 f6 28 20 20 20 20 20 20 20 20 20 20 4c |E...( L| 00000b50 44 52 20 20 20 20 20 20 20 52 30 2c 66 72 61 6d |DR R0,fram| 00000b60 65 5f 61 76 65 72 61 67 65 0d 05 00 28 20 20 20 |e_average...( | 00000b70 20 20 20 20 20 20 20 41 44 52 20 20 20 20 20 20 | ADR | 00000b80 20 52 31 2c 6f 75 74 70 75 74 5f 62 75 66 66 65 | R1,output_buffe| 00000b90 72 0d 05 0a 1e 20 20 20 20 20 20 20 20 20 20 4d |r.... M| 00000ba0 4f 56 20 20 20 20 20 20 20 52 32 2c 23 31 36 0d |OV R2,#16.| 00000bb0 05 14 2c 20 20 20 20 20 20 20 20 20 20 53 57 49 |.., SWI| 00000bc0 20 20 20 20 20 20 20 22 4f 53 5f 43 6f 6e 76 65 | "OS_Conve| 00000bd0 72 74 49 6e 74 65 67 65 72 31 22 0d 05 1e 23 20 |rtInteger1"...# | 00000be0 20 20 20 20 20 20 20 20 20 53 57 49 20 20 20 20 | SWI | 00000bf0 20 20 20 22 4f 53 5f 57 72 69 74 65 30 22 0d 05 | "OS_Write0"..| 00000c00 28 24 20 20 20 20 20 20 20 20 20 20 4c 44 4d 46 |($ LDMF| 00000c10 44 20 20 20 20 20 31 33 21 2c 7b 30 2d 32 2c 50 |D 13!,{0-2,P| 00000c20 43 7d 0d 05 32 04 0d 05 3c 11 2e 6d 61 72 6b 65 |C}..2...<..marke| 00000c30 72 20 44 43 44 20 30 0d 05 46 24 2e 74 69 63 6b |r DCD 0..F$.tick| 00000c40 65 72 20 20 20 53 54 4d 46 44 20 20 20 20 20 31 |er STMFD 1| 00000c50 33 21 2c 7b 30 2d 33 2c 31 34 7d 0d 05 50 20 20 |3!,{0-3,14}..P | 00000c60 20 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 | LDR | 00000c70 20 20 20 30 2c 6d 61 72 6b 65 72 0d 05 5a 1c 20 | 0,marker..Z. | 00000c80 20 20 20 20 20 20 20 20 20 82 53 20 20 20 20 20 | .S | 00000c90 20 30 2c 30 2c 23 31 0d 05 64 20 20 20 20 20 20 | 0,0,#1..d | 00000ca0 20 20 20 20 20 53 54 52 20 20 20 20 20 20 20 30 | STR 0| 00000cb0 2c 6d 61 72 6b 65 72 0d 05 6e 24 20 20 20 20 20 |,marker..n$ | 00000cc0 20 20 20 20 20 4c 44 4d 45 51 46 44 20 20 20 31 | LDMEQFD 1| 00000cd0 33 21 2c 7b 30 2d 33 2c 50 43 7d 0d 05 78 3a 20 |3!,{0-3,PC}..x: | 00000ce0 20 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 | LDR | 00000cf0 20 20 20 30 2c 74 69 6d 65 5f 63 6f 75 6e 74 65 | 0,time_counte| 00000d00 72 20 20 3b 20 65 78 65 63 75 74 65 20 61 74 20 |r ; execute at | 00000d10 35 30 20 48 7a 0d 05 82 1e 20 20 20 20 20 20 20 |50 Hz.... | 00000d20 20 20 20 41 44 44 20 20 20 20 20 20 20 30 2c 30 | ADD 0,0| 00000d30 2c 23 31 0d 05 8c 1d 20 20 20 20 20 20 20 20 20 |,#1.... | 00000d40 20 43 4d 50 20 20 20 20 20 20 20 30 2c 23 35 30 | CMP 0,#50| 00000d50 0d 05 96 19 20 20 20 20 20 20 20 20 20 20 ec 51 |.... .Q| 00000d60 20 20 20 20 20 30 2c 23 30 0d 05 a0 26 20 20 20 | 0,#0...& | 00000d70 20 20 20 20 20 20 20 53 54 52 20 20 20 20 20 20 | STR | 00000d80 20 30 2c 74 69 6d 65 5f 63 6f 75 6e 74 65 72 0d | 0,time_counter.| 00000d90 05 aa 27 20 20 20 20 20 20 20 20 20 20 4c 44 52 |..' LDR| 00000da0 45 51 20 20 20 20 20 31 2c 66 72 61 6d 65 5f 63 |EQ 1,frame_c| 00000db0 6f 75 6e 74 65 72 0d 05 b4 27 20 20 20 20 20 20 |ounter...' | 00000dc0 20 20 20 20 53 54 52 45 51 20 20 20 20 20 31 2c | STREQ 1,| 00000dd0 66 72 61 6d 65 5f 61 76 65 72 61 67 65 0d 05 be |frame_average...| 00000de0 27 20 20 20 20 20 20 20 20 20 20 53 54 52 45 51 |' STREQ| 00000df0 20 20 20 20 20 30 2c 66 72 61 6d 65 5f 63 6f 75 | 0,frame_cou| 00000e00 6e 74 65 72 0d 05 c8 24 20 20 20 20 20 20 20 20 |nter...$ | 00000e10 20 20 4c 44 4d 46 44 20 20 20 20 20 31 33 21 2c | LDMFD 13!,| 00000e20 7b 30 2d 33 2c 50 43 7d 0d 05 d2 04 0d 05 dc 04 |{0-3,PC}........| 00000e30 0d 05 e6 3a 20 2e 62 61 6e 6b 66 72 6f 6e 74 20 |...: .bankfront | 00000e40 45 51 55 44 20 31 20 20 20 20 20 20 3b 20 74 68 |EQUD 1 ; th| 00000e50 65 20 66 72 6f 6e 74 20 66 72 61 6d 65 20 69 73 |e front frame is| 00000e60 20 64 69 73 70 6c 61 79 65 64 0d 05 f0 35 20 2e | displayed...5 .| 00000e70 62 61 6e 6b 72 65 61 72 20 20 45 51 55 44 20 32 |bankrear EQUD 2| 00000e80 20 20 20 20 20 20 3b 20 74 68 65 20 72 65 61 72 | ; the rear| 00000e90 20 66 72 61 6d 65 20 69 73 20 64 72 61 77 6e 0d | frame is drawn.| 00000ea0 05 fa 3a 20 2e 62 61 6e 6b 63 6f 75 6e 74 20 45 |..: .bankcount E| 00000eb0 51 55 44 20 30 20 20 20 20 20 20 3b 20 6e 72 2e |QUD 0 ; nr.| 00000ec0 20 6f 66 20 72 65 61 64 79 20 66 72 61 6d 65 73 | of ready frames| 00000ed0 20 69 6e 20 71 75 65 75 65 0d 06 04 04 0d 06 0e | in queue.......| 00000ee0 3f 2e 74 69 6d 65 5f 73 74 61 6d 70 20 44 43 44 |?.time_stamp DCD| 00000ef0 20 30 3a 44 43 44 20 30 3a 44 43 44 20 30 3a 44 | 0:DCD 0:DCD 0:D| 00000f00 43 44 20 30 3a 44 43 44 20 30 3a 44 43 44 20 30 |CD 0:DCD 0:DCD 0| 00000f10 3a 44 43 44 20 30 3a 44 43 44 20 30 0d 06 18 16 |:DCD 0:DCD 0....| 00000f20 2e 73 79 6e 63 5f 74 69 6d 65 20 20 45 51 55 44 |.sync_time EQUD| 00000f30 20 30 0d 06 22 04 0d 06 2c 0b 20 2e 76 73 79 6e | 0.."...,. .vsyn| 00000f40 63 0d 06 36 3b 20 20 20 20 20 20 20 20 20 20 43 |c..6; C| 00000f50 4d 50 20 20 20 20 20 20 20 30 2c 23 34 20 20 20 |MP 0,#4 | 00000f60 20 20 20 3b 20 63 68 65 63 6b 20 69 66 20 65 76 | ; check if ev| 00000f70 65 6e 74 20 69 73 20 76 73 79 6e 63 0d 06 40 2d |ent is vsync..@-| 00000f80 20 20 20 20 20 20 20 20 20 20 4d 4f 56 4e 45 53 | MOVNES| 00000f90 20 20 20 20 50 43 2c 31 34 20 20 20 20 20 3b 20 | PC,14 ; | 00000fa0 65 6c 73 65 20 65 78 69 74 0d 06 4a 21 20 20 20 |else exit..J! | 00000fb0 20 20 20 20 20 20 20 53 54 4d 46 44 20 20 20 20 | STMFD | 00000fc0 20 31 33 21 2c 7b 30 2d 31 7d 0d 06 54 1d 20 20 | 13!,{0-1}..T. | 00000fd0 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 | MOV | 00000fe0 20 20 52 30 2c 50 43 0d 06 5e 35 20 20 20 20 20 | R0,PC..^5 | 00000ff0 20 20 20 20 20 84 52 20 20 20 20 20 20 20 52 31 | .R R1| 00001000 2c 52 30 2c 23 31 20 20 20 20 20 3b 20 70 75 74 |,R0,#1 ; put| 00001010 20 69 6e 20 73 63 76 20 6d 6f 64 65 0d 06 68 1d | in scv mode..h.| 00001020 20 20 20 20 20 20 20 20 20 20 54 45 51 50 20 20 | TEQP | 00001030 20 20 20 20 52 31 2c 23 30 0d 06 72 1d 20 20 20 | R1,#0..r. | 00001040 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 20 | MOV | 00001050 20 52 30 2c 52 30 0d 06 7c 24 20 20 20 20 20 20 | R0,R0..|$ | 00001060 20 20 20 20 53 54 4d 46 44 20 20 20 20 20 31 33 | STMFD 13| 00001070 21 2c 7b 30 2d 32 2c 31 34 7d 0d 06 86 04 0d 06 |!,{0-2,14}......| 00001080 90 43 20 20 20 20 20 20 20 20 20 20 4c 44 52 20 |.C LDR | 00001090 20 20 20 20 20 20 30 2c 73 79 6e 63 5f 74 69 6d | 0,sync_tim| 000010a0 65 20 20 20 20 20 3b 20 69 6e 63 72 65 6d 65 6e |e ; incremen| 000010b0 74 20 73 79 6e 63 20 74 69 6d 65 20 65 76 65 72 |t sync time ever| 000010c0 79 0d 06 9a 2f 20 20 20 20 20 20 20 20 20 20 41 |y.../ A| 000010d0 44 44 20 20 20 20 20 20 20 30 2c 30 2c 23 31 20 |DD 0,0,#1 | 000010e0 20 20 20 20 20 20 20 20 20 3b 20 76 73 79 6e 63 | ; vsync| 000010f0 0d 06 a4 23 20 20 20 20 20 20 20 20 20 20 53 54 |...# ST| 00001100 52 20 20 20 20 20 20 20 30 2c 73 79 6e 63 5f 74 |R 0,sync_t| 00001110 69 6d 65 0d 06 ae 04 0d 06 b8 43 20 20 20 20 20 |ime.......C | 00001120 20 20 20 20 20 4c 44 52 20 20 20 20 20 20 20 52 | LDR R| 00001130 30 2c 62 61 6e 6b 63 6f 75 6e 74 20 20 20 3b 20 |0,bankcount ; | 00001140 69 66 20 6e 6f 20 6e 65 77 20 66 72 61 6d 65 73 |if no new frames| 00001150 20 61 76 61 69 6c 61 62 6c 65 0d 06 c2 48 20 20 | available...H | 00001160 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 | CMP | 00001170 20 20 52 30 2c 23 30 20 20 20 20 20 20 20 20 20 | R0,#0 | 00001180 20 3b 20 74 68 65 6e 20 64 69 73 70 6c 61 79 20 | ; then display | 00001190 74 68 65 20 70 72 65 76 69 6f 75 73 20 66 72 61 |the previous fra| 000011a0 6d 65 0d 06 cc 20 20 20 20 20 20 20 20 20 20 20 |me... | 000011b0 42 45 51 20 20 20 20 20 20 20 6e 6f 5f 68 75 72 |BEQ no_hur| 000011c0 72 79 0d 06 d6 04 0d 06 e0 50 20 20 20 20 20 20 |ry.......P | 000011d0 20 20 20 20 53 55 42 20 20 20 20 20 20 20 52 30 | SUB R0| 000011e0 2c 52 30 2c 23 31 20 20 20 20 20 20 20 3b 20 65 |,R0,#1 ; e| 000011f0 6c 73 65 20 64 69 73 70 6c 61 79 20 6e 65 77 20 |lse display new | 00001200 66 72 61 6d 65 20 61 6e 64 20 75 70 64 61 74 65 |frame and update| 00001210 20 71 75 65 75 65 0d 06 ea 24 20 20 20 20 20 20 | queue...$ | 00001220 20 20 20 20 53 54 52 20 20 20 20 20 20 20 52 30 | STR R0| 00001230 2c 62 61 6e 6b 63 6f 75 6e 74 0d 06 f4 24 20 20 |,bankcount...$ | 00001240 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 | LDR | 00001250 20 20 52 31 2c 62 61 6e 6b 66 72 6f 6e 74 0d 06 | R1,bankfront..| 00001260 fe 21 20 20 20 20 20 20 20 20 20 20 43 4d 50 20 |.! CMP | 00001270 20 20 20 20 20 20 52 31 2c 23 62 61 6e 6b 73 0d | R1,#banks.| 00001280 07 08 1a 20 20 20 20 20 20 20 20 20 20 ec 51 20 |... .Q | 00001290 20 20 20 20 52 31 2c 23 30 0d 07 12 20 20 20 20 | R1,#0... | 000012a0 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 20 | ADD | 000012b0 20 52 31 2c 52 31 2c 23 31 0d 07 1c 24 20 20 20 | R1,R1,#1...$ | 000012c0 20 20 20 20 20 20 20 53 54 52 20 20 20 20 20 20 | STR | 000012d0 20 52 31 2c 62 61 6e 6b 66 72 6f 6e 74 0d 07 26 | R1,bankfront..&| 000012e0 1f 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 20 |. MOV | 000012f0 20 20 20 20 20 52 30 2c 23 26 37 31 0d 07 30 34 | R0,#&71..04| 00001300 20 20 20 20 20 20 20 20 20 20 53 57 49 20 20 20 | SWI | 00001310 20 20 20 20 36 20 20 20 20 20 20 20 20 20 20 20 | 6 | 00001320 20 20 20 20 20 3b 20 22 4f 53 5f 42 79 74 65 22 | ; "OS_Byte"| 00001330 0d 07 3a 04 0d 07 44 28 20 20 20 20 20 20 20 20 |..:...D( | 00001340 20 20 4c 44 52 20 20 20 20 20 20 20 52 30 2c 66 | LDR R0,f| 00001350 72 61 6d 65 5f 63 6f 75 6e 74 65 72 0d 07 4e 20 |rame_counter..N | 00001360 20 20 20 20 20 20 20 20 20 20 41 44 44 20 20 20 | ADD | 00001370 20 20 20 20 52 30 2c 52 30 2c 23 31 0d 07 58 28 | R0,R0,#1..X(| 00001380 20 20 20 20 20 20 20 20 20 20 53 54 52 20 20 20 | STR | 00001390 20 20 20 20 52 30 2c 66 72 61 6d 65 5f 63 6f 75 | R0,frame_cou| 000013a0 6e 74 65 72 0d 07 62 04 0d 07 6c 0e 20 2e 6e 6f |nter..b...l. .no| 000013b0 5f 68 75 72 72 79 0d 07 76 24 20 20 20 20 20 20 |_hurry..v$ | 000013c0 20 20 20 20 4c 44 4d 46 44 20 20 20 20 20 31 33 | LDMFD 13| 000013d0 21 2c 7b 30 2d 32 2c 31 34 7d 0d 07 80 38 20 20 |!,{0-2,14}...8 | 000013e0 20 20 20 20 20 20 20 20 54 45 51 50 20 20 20 20 | TEQP | 000013f0 20 20 52 30 2c 23 30 20 20 20 20 20 3b 20 70 75 | R0,#0 ; pu| 00001400 74 20 62 61 63 6b 20 69 6e 20 69 72 71 20 6d 6f |t back in irq mo| 00001410 64 65 0d 07 8a 1d 20 20 20 20 20 20 20 20 20 20 |de.... | 00001420 4d 4f 56 20 20 20 20 20 20 20 52 30 2c 52 30 0d |MOV R0,R0.| 00001430 07 94 21 20 20 20 20 20 20 20 20 20 20 4c 44 4d |..! LDM| 00001440 46 44 20 20 20 20 20 31 33 21 2c 7b 30 2d 31 7d |FD 13!,{0-1}| 00001450 0d 07 9e 1e 20 20 20 20 20 20 20 20 20 20 4d 4f |.... MO| 00001460 56 53 20 20 20 20 20 20 50 43 2c 52 31 34 0d 07 |VS PC,R14..| 00001470 a8 04 0d 07 b2 14 2e 63 6c 61 69 6d 5f 69 6e 74 |.......claim_int| 00001480 65 72 72 75 70 74 0d 07 bc 1f 20 20 20 20 20 20 |errupt.... | 00001490 20 20 20 20 4d 4f 56 20 20 20 20 20 20 20 52 30 | MOV R0| 000014a0 2c 23 26 37 30 0d 07 c6 24 20 20 20 20 20 20 20 |,#&70...$ | 000014b0 20 20 20 4c 44 52 20 20 20 20 20 20 20 52 31 2c | LDR R1,| 000014c0 62 61 6e 6b 66 72 6f 6e 74 0d 07 d0 21 20 20 20 |bankfront...! | 000014d0 20 20 20 20 20 20 20 53 57 49 20 20 20 20 20 20 | SWI | 000014e0 20 22 4f 53 5f 42 79 74 65 22 0d 07 da 42 20 20 | "OS_Byte"...B | 000014f0 20 20 20 20 20 20 20 20 53 57 49 20 20 20 20 20 | SWI | 00001500 20 20 26 31 30 43 20 20 20 20 20 20 20 20 20 20 | &10C | 00001510 20 20 20 20 20 20 3b 20 63 6c 65 61 72 20 66 72 | ; clear fr| 00001520 61 6d 65 20 61 74 20 66 72 6f 6e 74 0d 07 e4 30 |ame at front...0| 00001530 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 | MOV | 00001540 20 20 20 20 52 30 2c 23 26 31 43 20 20 20 3b 20 | R0,#&1C ; | 00001550 63 6c 61 69 6d 20 74 69 63 6b 65 72 0d 07 ee 21 |claim ticker...!| 00001560 20 20 20 20 20 20 20 20 20 20 41 44 52 20 20 20 | ADR | 00001570 20 20 20 20 52 31 2c 74 69 63 6b 65 72 0d 07 f8 | R1,ticker...| 00001580 1d 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 20 |. MOV | 00001590 20 20 20 20 20 52 32 2c 23 30 0d 08 02 22 20 20 | R2,#0..." | 000015a0 20 20 20 20 20 20 20 20 53 57 49 20 20 20 20 20 | SWI | 000015b0 20 20 22 4f 53 5f 43 6c 61 69 6d 22 0d 08 0c 1f | "OS_Claim"....| 000015c0 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 | MOV | 000015d0 20 20 20 20 52 30 2c 23 26 31 30 0d 08 16 20 20 | R0,#&10... | 000015e0 20 20 20 20 20 20 20 20 20 41 44 52 20 20 20 20 | ADR | 000015f0 20 20 20 52 31 2c 76 73 79 6e 63 0d 08 20 1d 20 | R1,vsync.. . | 00001600 20 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 | MOV | 00001610 20 20 20 52 32 2c 23 30 0d 08 2a 22 20 20 20 20 | R2,#0..*" | 00001620 20 20 20 20 20 20 53 57 49 20 20 20 20 20 20 20 | SWI | 00001630 22 4f 53 5f 43 6c 61 69 6d 22 0d 08 34 1e 20 20 |"OS_Claim"..4. | 00001640 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 | MOV | 00001650 20 20 52 30 2c 23 31 34 0d 08 3e 1d 20 20 20 20 | R0,#14..>. | 00001660 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 20 20 | MOV | 00001670 52 31 2c 23 34 0d 08 48 21 20 20 20 20 20 20 20 |R1,#4..H! | 00001680 20 20 20 53 57 49 20 20 20 20 20 20 20 22 4f 53 | SWI "OS| 00001690 5f 42 79 74 65 22 0d 08 52 1e 20 20 20 20 20 20 |_Byte"..R. | 000016a0 20 20 20 20 4d 4f 56 20 20 20 20 20 20 20 50 43 | MOV PC| 000016b0 2c 52 31 34 0d 08 5c 04 0d 08 66 16 2e 72 65 6c |,R14..\...f..rel| 000016c0 65 61 73 65 5f 69 6e 74 65 72 72 75 70 74 0d 08 |ease_interrupt..| 000016d0 70 24 20 20 20 20 20 20 20 20 20 20 4c 44 52 20 |p$ LDR | 000016e0 20 20 20 20 20 20 52 30 2c 62 61 6e 6b 63 6f 75 | R0,bankcou| 000016f0 6e 74 0d 08 7a 1d 20 20 20 20 20 20 20 20 20 20 |nt..z. | 00001700 43 4d 50 20 20 20 20 20 20 20 52 30 2c 23 30 0d |CMP R0,#0.| 00001710 08 84 4f 20 20 20 20 20 20 20 20 20 20 42 4e 45 |..O BNE| 00001720 20 20 20 20 20 20 20 72 65 6c 65 61 73 65 5f 69 | release_i| 00001730 6e 74 65 72 72 75 70 74 20 20 20 3b 20 64 69 73 |nterrupt ; dis| 00001740 70 6c 61 79 20 72 65 6d 61 69 6e 69 6e 67 20 66 |play remaining f| 00001750 72 61 6d 65 73 20 69 6e 20 71 75 65 75 65 0d 08 |rames in queue..| 00001760 8e 1e 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 |.. MOV | 00001770 20 20 20 20 20 20 52 30 2c 23 31 33 0d 08 98 1d | R0,#13....| 00001780 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 | MOV | 00001790 20 20 20 20 52 31 2c 23 34 0d 08 a2 21 20 20 20 | R1,#4...! | 000017a0 20 20 20 20 20 20 20 53 57 49 20 20 20 20 20 20 | SWI | 000017b0 20 22 4f 53 5f 42 79 74 65 22 0d 08 ac 1f 20 20 | "OS_Byte".... | 000017c0 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 | MOV | 000017d0 20 20 52 30 2c 23 26 31 30 0d 08 b6 20 20 20 20 | R0,#&10... | 000017e0 20 20 20 20 20 20 20 41 44 52 20 20 20 20 20 20 | ADR | 000017f0 20 52 31 2c 76 73 79 6e 63 0d 08 c0 1d 20 20 20 | R1,vsync.... | 00001800 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 20 | MOV | 00001810 20 52 32 2c 23 30 0d 08 ca 24 20 20 20 20 20 20 | R2,#0...$ | 00001820 20 20 20 20 53 57 49 20 20 20 20 20 20 20 22 4f | SWI "O| 00001830 53 5f 52 65 6c 65 61 73 65 22 0d 08 d4 1f 20 20 |S_Release".... | 00001840 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 | MOV | 00001850 20 20 52 30 2c 23 26 31 43 0d 08 de 21 20 20 20 | R0,#&1C...! | 00001860 20 20 20 20 20 20 20 41 44 52 20 20 20 20 20 20 | ADR | 00001870 20 52 31 2c 74 69 63 6b 65 72 0d 08 e8 1d 20 20 | R1,ticker.... | 00001880 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 | MOV | 00001890 20 20 52 32 2c 23 30 0d 08 f2 24 20 20 20 20 20 | R2,#0...$ | 000018a0 20 20 20 20 20 53 57 49 20 20 20 20 20 20 20 22 | SWI "| 000018b0 4f 53 5f 52 65 6c 65 61 73 65 22 0d 08 fc 1e 20 |OS_Release".... | 000018c0 20 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 | MOV | 000018d0 20 20 20 50 43 2c 52 31 34 0d 09 06 05 5d 0d 09 | PC,R14....]..| 000018e0 10 05 ed 0d 09 1a 09 51 25 3d 50 25 0d 09 24 05 |.......Q%=P%..$.| 000018f0 e1 0d 09 2e 04 0d 09 38 0b dd 20 f2 41 53 53 32 |.......8.. .ASS2| 00001900 0d 09 42 0b ea 20 50 25 2c 51 25 0d 09 4c 0e de |..B.. P%,Q%..L..| 00001910 20 51 25 20 32 30 30 30 30 0d 09 56 04 0d 09 60 | Q% 20000..V...`| 00001920 12 de 20 43 53 54 41 42 20 38 2a 31 30 32 34 0d |.. CSTAB 8*1024.| 00001930 09 6a 10 e3 20 49 3d 30 20 b8 20 31 30 32 33 0d |.j.. I=0 . 1023.| 00001940 09 74 0d 48 3d af 2f 35 31 32 2a 49 0d 09 7e 18 |.t.H=./512*I..~.| 00001950 43 53 54 41 42 21 28 49 2a 38 29 3d 9b 28 48 29 |CSTAB!(I*8)=.(H)| 00001960 2a 32 35 36 0d 09 88 1a 43 53 54 41 42 21 28 49 |*256....CSTAB!(I| 00001970 2a 38 2b 34 29 3d b5 28 48 29 2a 32 35 36 0d 09 |*8+4)=.(H)*256..| 00001980 92 05 ed 0d 09 9c 04 0d 09 a6 17 de 20 44 49 54 |............ DIT| 00001990 41 42 4c 45 20 34 30 30 30 2a 31 36 2a 34 0d 09 |ABLE 4000*16*4..| 000019a0 b0 14 e3 20 50 41 53 53 3d 30 20 b8 20 32 20 88 |... PASS=0 . 2 .| 000019b0 20 32 0d 09 ba 41 41 3d 30 3a 42 3d 31 3a 54 41 | 2...AA=0:B=1:TA| 000019c0 42 3d 32 3a 54 3d 33 3a 4e 52 3d 34 3a 58 3d 35 |B=2:T=3:NR=4:X=5| 000019d0 3a 59 3d 36 3a 49 3d 37 3a 4a 3d 38 3a 43 53 3d |:Y=6:I=7:J=8:CS=| 000019e0 39 3a 53 4e 3d 31 30 3a 48 3d 31 31 3a 44 49 54 |9:SN=10:H=11:DIT| 000019f0 3d 31 32 0d 09 c4 0f 5a 3d 54 3a 4e 3d 34 3a 51 |=12....Z=T:N=4:Q| 00001a00 3d 32 0d 09 ce 1d 50 30 3d 41 3a 50 31 3d 42 3a |=2....P0=A:P1=B:| 00001a10 50 32 3d 49 3a 50 33 3d 4a 3a 50 34 3d 53 4e 0d |P2=I:P3=J:P4=SN.| 00001a20 09 d8 09 50 25 3d 51 25 0d 09 e2 0d 5b 4f 50 54 |...P%=Q%....[OPT| 00001a30 20 50 41 53 53 0d 09 ec 04 0d 09 f6 11 2e 46 52 | PASS.........FR| 00001a40 45 45 44 20 45 51 55 44 20 30 0d 0a 00 14 2e 56 |EED EQUD 0.....V| 00001a50 4c 54 41 42 20 45 51 55 44 20 56 4c 41 4b 0d 0a |LTAB EQUD VLAK..| 00001a60 0a 14 2e 50 55 54 41 42 20 45 51 55 44 20 50 55 |...PUTAB EQUD PU| 00001a70 4e 54 0d 0a 14 12 2e 6e 72 20 45 51 55 44 20 44 |NT.....nr EQUD D| 00001a80 31 2a 44 32 0d 0a 1e 13 2e 6e 72 32 20 45 51 55 |1*D2.....nr2 EQU| 00001a90 44 20 44 31 2a 44 32 0d 0a 28 0e 2e 52 58 20 45 |D D1*D2..(..RX E| 00001aa0 51 55 44 20 30 0d 0a 32 0e 2e 52 59 20 45 51 55 |QUD 0..2..RY EQU| 00001ab0 44 20 30 0d 0a 3c 19 2e 43 53 44 20 45 51 55 44 |D 0..<..CSD EQUD| 00001ac0 20 9b 28 af 2f 32 30 29 2a 32 35 36 0d 0a 46 19 | .(./20)*256..F.| 00001ad0 2e 53 4e 44 20 45 51 55 44 20 b5 28 af 2f 32 30 |.SND EQUD .(./20| 00001ae0 29 2a 32 35 36 0d 0a 50 16 2e 43 53 54 41 42 44 |)*256..P..CSTABD| 00001af0 20 45 51 55 44 20 43 53 54 41 42 0d 0a 5a 12 2e | EQUD CSTAB..Z..| 00001b00 48 31 44 20 45 51 55 44 20 31 36 2a 38 0d 0a 64 |H1D EQUD 16*8..d| 00001b10 0f 2e 48 32 44 20 45 51 55 44 20 30 0d 0a 6e 16 |..H2D EQUD 0..n.| 00001b20 2e 44 49 54 44 20 45 51 55 44 20 44 49 54 41 42 |.DITD EQUD DITAB| 00001b30 4c 45 0d 0a 78 16 2e 44 4e 52 44 20 45 51 55 44 |LE..x..DNRD EQUD| 00001b40 20 34 30 30 30 2a 31 36 0d 0a 82 17 2e 79 72 6f | 4000*16.....yro| 00001b50 74 20 45 51 55 44 20 30 3a 45 51 55 44 20 30 0d |t EQUD 0:EQUD 0.| 00001b60 0a 8c 11 2e 68 69 67 68 74 20 45 51 55 44 20 30 |....hight EQUD 0| 00001b70 0d 0a 96 04 0d 0a a0 04 0d 0a aa 12 2e 43 41 4c |.............CAL| 00001b80 43 5f 44 49 56 54 41 42 4c 45 0d 0a b4 10 4c 44 |C_DIVTABLE....LD| 00001b90 52 20 44 49 54 2c 44 49 54 44 0d 0a be 0e 4c 44 |R DIT,DITD....LD| 00001ba0 52 20 49 2c 44 4e 52 44 0d 0a c8 0c 2e 44 56 4c |R I,DNRD.....DVL| 00001bb0 4f 4f 50 32 0d 0a d2 12 4d 4f 56 20 54 2c 23 32 |OOP2....MOV T,#2| 00001bc0 30 30 3c 3c 31 36 0d 0a dc 0b 4d 4f 56 20 4e 2c |00<<16....MOV N,| 00001bd0 49 0d 0a e6 0c 4d 4f 56 20 4a 2c 23 30 0d 0a f0 |I....MOV J,#0...| 00001be0 0c 4d 4f 56 20 51 2c 23 30 0d 0a fa 0c 2e 44 56 |.MOV Q,#0.....DV| 00001bf0 4c 4f 4f 50 33 0d 0b 04 0b 43 4d 50 20 4e 2c 54 |LOOP3....CMP N,T| 00001c00 0d 0b 0e 14 4d 4f 56 4c 4f 20 4e 2c 4e 2c 4c 53 |....MOVLO N,N,LS| 00001c10 4c 20 23 31 0d 0b 18 10 41 44 44 4c 4f 20 4a 2c |L #1....ADDLO J,| 00001c20 4a 2c 23 31 0d 0b 22 0f 42 4c 4f 20 44 56 4c 4f |J,#1..".BLO DVLO| 00001c30 4f 50 33 0d 0b 2c 11 4d 4f 56 20 4e 2c 4e 2c 4c |OP3..,.MOV N,N,L| 00001c40 53 52 20 4a 0d 0b 36 0c 2e 44 56 4c 4f 4f 50 31 |SR J..6..DVLOOP1| 00001c50 0d 0b 40 11 43 4d 50 20 54 2c 4e 2c 4c 53 4c 20 |..@.CMP T,N,LSL | 00001c60 4a 0d 0b 4a 15 53 55 42 48 53 20 54 2c 54 2c 4e |J..J.SUBHS T,T,N| 00001c70 2c 4c 53 4c 20 4a 0d 0b 54 0d 41 44 43 20 51 2c |,LSL J..T.ADC Q,| 00001c80 51 2c 51 0d 0b 5e 0f 53 55 42 53 20 4a 2c 4a 2c |Q,Q..^.SUBS J,J,| 00001c90 23 31 0d 0b 68 0f 42 50 4c 20 44 56 4c 4f 4f 50 |#1..h.BPL DVLOOP| 00001ca0 31 0d 0b 72 18 53 54 52 20 51 2c 5b 44 49 54 2c |1..r.STR Q,[DIT,| 00001cb0 49 2c 4c 53 4c 20 23 32 5d 0d 0b 7c 0f 53 55 42 |I,LSL #2]..|.SUB| 00001cc0 53 20 49 2c 49 2c 23 31 0d 0b 86 0f 42 4e 45 20 |S I,I,#1....BNE | 00001cd0 44 56 4c 4f 4f 50 32 0d 0b 90 0e 4d 4f 56 20 50 |DVLOOP2....MOV P| 00001ce0 43 2c 52 31 34 0d 0b 9a 04 0d 0b a4 14 2e 44 45 |C,R14.........DE| 00001cf0 42 20 44 43 44 20 30 3a 44 43 44 20 30 0d 0b ae |B DCD 0:DCD 0...| 00001d00 09 2e 73 68 6f 77 0d 0b b8 12 53 54 4d 46 44 20 |..show....STMFD | 00001d10 31 33 21 2c 7b 31 34 7d 0d 0b c2 12 53 57 49 20 |13!,{14}....SWI | 00001d20 22 4f 53 5f 4d 6f 75 73 65 22 0d 0b cc 10 53 55 |"OS_Mouse"....SU| 00001d30 42 20 41 2c 41 2c 23 36 34 30 0d 0b d6 04 0d 0b |B A,A,#640......| 00001d40 e0 04 0d 0b ea 0d 4c 44 52 20 54 2c 48 31 44 0d |......LDR T,H1D.| 00001d50 0b f4 1a 43 4d 50 20 51 2c 23 34 3a 41 44 44 45 |...CMP Q,#4:ADDE| 00001d60 51 20 54 2c 54 2c 23 31 36 0d 0b fe 1a 43 4d 50 |Q T,T,#16....CMP| 00001d70 20 51 2c 23 31 3a 53 55 42 45 51 20 54 2c 54 2c | Q,#1:SUBEQ T,T,| 00001d80 23 31 36 0d 0c 08 0d 53 54 52 20 54 2c 48 31 44 |#16....STR T,H1D| 00001d90 0d 0c 12 04 0d 0c 1c 0d 4c 44 52 20 54 2c 48 32 |........LDR T,H2| 00001da0 44 0d 0c 26 1a 43 4d 50 20 51 2c 23 36 3a 41 44 |D..&.CMP Q,#6:AD| 00001db0 44 45 51 20 54 2c 54 2c 23 31 36 0d 0c 30 1a 43 |DEQ T,T,#16..0.C| 00001dc0 4d 50 20 51 2c 23 33 3a 53 55 42 45 51 20 54 2c |MP Q,#3:SUBEQ T,| 00001dd0 54 2c 23 31 36 0d 0c 3a 0d 53 54 52 20 54 2c 48 |T,#16..:.STR T,H| 00001de0 32 44 0d 0c 44 04 0d 0c 4e 0f 4c 44 52 20 54 2c |2D..D...N.LDR T,| 00001df0 68 69 67 68 74 0d 0c 58 1e 43 4d 50 20 51 2c 23 |hight..X.CMP Q,#| 00001e00 35 3a 41 44 44 45 51 20 54 2c 54 2c 23 33 32 2a |5:ADDEQ T,T,#32*| 00001e10 46 49 58 0d 0c 62 1e 43 4d 50 20 51 2c 23 32 3a |FIX..b.CMP Q,#2:| 00001e20 53 55 42 45 51 20 54 2c 54 2c 23 33 32 2a 46 49 |SUBEQ T,T,#32*FI| 00001e30 58 0d 0c 6c 14 43 4d 50 20 54 2c 23 32 35 36 2a |X..l.CMP T,#256*| 00001e40 46 49 58 2a 36 0d 0c 76 16 4d 4f 56 47 45 20 54 |FIX*6..v.MOVGE T| 00001e50 2c 23 32 35 36 2a 46 49 58 2a 36 0d 0c 80 14 43 |,#256*FIX*6....C| 00001e60 4d 4e 20 54 2c 23 32 35 36 2a 46 49 58 2a 36 0d |MN T,#256*FIX*6.| 00001e70 0c 8a 16 4d 56 4e 4c 45 20 54 2c 23 32 35 36 2a |...MVNLE T,#256*| 00001e80 46 49 58 2a 36 0d 0c 94 0f 53 54 52 20 54 2c 68 |FIX*6....STR T,h| 00001e90 69 67 68 74 0d 0c 9e 04 0d 0c a8 04 0d 0c b2 04 |ight............| 00001ea0 0d 0c bc 12 4c 44 52 20 54 41 42 2c 43 53 54 41 |....LDR TAB,CSTA| 00001eb0 42 44 0d 0c c6 0c 4d 56 4e 20 54 2c 23 30 0d 0c |BD....MVN T,#0..| 00001ec0 d0 13 4d 4f 56 20 54 2c 54 2c 4c 53 52 20 23 32 |..MOV T,T,LSR #2| 00001ed0 32 0d 0c da 0c 4d 56 4e 20 48 2c 23 30 0d 0c e4 |2....MVN H,#0...| 00001ee0 13 4d 4f 56 20 48 2c 48 2c 4c 53 52 20 23 31 36 |.MOV H,H,LSR #16| 00001ef0 0d 0c ee 04 0d 0c f8 0b 80 20 49 2c 41 2c 54 0d |......... I,A,T.| 00001f00 0d 02 33 41 44 44 20 49 2c 54 41 42 2c 49 2c 4c |..3ADD I,TAB,I,L| 00001f10 53 4c 20 23 33 20 20 20 20 3b 20 67 65 74 20 63 |SL #3 ; get c| 00001f20 6f 73 20 61 6e 64 20 73 69 6e 20 79 2d 61 6e 67 |os and sin y-ang| 00001f30 6c 65 0d 0d 0c 13 4c 44 4d 49 41 20 49 2c 7b 43 |le....LDMIA I,{C| 00001f40 53 2c 53 4e 7d 0d 0d 16 0f 41 44 52 20 20 4a 2c |S,SN}....ADR J,| 00001f50 79 72 6f 74 0d 0d 20 13 53 54 4d 49 41 20 4a 2c |yrot.. .STMIA J,| 00001f60 7b 43 53 2c 53 4e 7d 0d 0d 2a 04 0d 0d 34 04 0d |{CS,SN}..*...4..| 00001f70 0d 3e 10 52 53 42 20 53 4e 2c 53 4e 2c 23 30 0d |.>.RSB SN,SN,#0.| 00001f80 0d 48 0e 4d 55 4c 20 41 2c 53 4e 2c 42 0d 0d 52 |.H.MUL A,SN,B..R| 00001f90 0e 4d 55 4c 20 42 2c 43 53 2c 42 0d 0d 5c 04 0d |.MUL B,CS,B..\..| 00001fa0 0d 66 0c 4c 44 52 20 58 2c 52 58 0d 0d 70 0c 4c |.f.LDR X,RX..p.L| 00001fb0 44 52 20 59 2c 52 59 0d 0d 7a 15 41 44 44 53 20 |DR Y,RY..z.ADDS | 00001fc0 58 2c 58 2c 41 2c 41 53 52 20 23 38 0d 0d 84 17 |X,X,A,ASR #8....| 00001fd0 41 44 44 4c 54 20 58 2c 58 2c 23 44 31 2a 45 44 |ADDLT X,X,#D1*ED| 00001fe0 2a 31 36 0d 0d 8e 13 43 4d 50 20 58 2c 23 44 31 |*16....CMP X,#D1| 00001ff0 2a 45 44 2a 31 36 0d 0d 98 17 53 55 42 47 45 20 |*ED*16....SUBGE | 00002000 58 2c 58 2c 23 44 31 2a 45 44 2a 31 36 0d 0d a2 |X,X,#D1*ED*16...| 00002010 15 41 44 44 53 20 59 2c 59 2c 42 2c 41 53 52 20 |.ADDS Y,Y,B,ASR | 00002020 23 38 0d 0d ac 17 41 44 44 4c 54 20 59 2c 59 2c |#8....ADDLT Y,Y,| 00002030 23 44 32 2a 45 44 2a 31 36 0d 0d b6 13 43 4d 50 |#D2*ED*16....CMP| 00002040 20 59 2c 23 44 32 2a 45 44 2a 31 36 0d 0d c0 17 | Y,#D2*ED*16....| 00002050 53 55 42 47 45 20 59 2c 59 2c 23 44 32 2a 45 44 |SUBGE Y,Y,#D2*ED| 00002060 2a 31 36 0d 0d ca 0c 53 54 52 20 58 2c 52 58 0d |*16....STR X,RX.| 00002070 0d d4 0c 53 54 52 20 59 2c 52 59 0d 0d de 0b 4d |...STR Y,RY....M| 00002080 4f 56 20 41 2c 58 0d 0d e8 0b 4d 4f 56 20 42 2c |OV A,X....MOV B,| 00002090 59 0d 0d f2 04 0d 0d fc 04 0d 0e 06 04 0d 0e 10 |Y...............| 000020a0 04 0d 0e 1a 0d 4c 44 52 20 49 2c 48 31 44 0d 0e |.....LDR I,H1D..| 000020b0 24 12 4d 4f 56 20 49 2c 49 2c 4c 53 52 20 23 31 |$.MOV I,I,LSR #1| 000020c0 0d 0e 2e 0b 80 20 49 2c 49 2c 54 0d 0e 38 16 41 |..... I,I,T..8.A| 000020d0 44 44 20 49 2c 54 41 42 2c 49 2c 4c 53 4c 20 23 |DD I,TAB,I,LSL #| 000020e0 33 0d 0e 42 13 4c 44 4d 49 41 20 49 2c 7b 43 53 |3..B.LDMIA I,{CS| 000020f0 2c 53 4e 7d 0d 0e 4c 0d 80 20 43 53 2c 43 53 2c |,SN}..L.. CS,CS,| 00002100 48 0d 0e 56 0d 80 20 53 4e 2c 53 4e 2c 48 0d 0e |H..V.. SN,SN,H..| 00002110 60 04 0d 0e 6a 0d 4c 44 52 20 49 2c 48 32 44 0d |`...j.LDR I,H2D.| 00002120 0e 74 12 4d 4f 56 20 49 2c 49 2c 4c 53 52 20 23 |.t.MOV I,I,LSR #| 00002130 31 0d 0e 7e 0b 80 20 49 2c 49 2c 54 0d 0e 88 16 |1..~.. I,I,T....| 00002140 41 44 44 20 49 2c 54 41 42 2c 49 2c 4c 53 4c 20 |ADD I,TAB,I,LSL | 00002150 23 33 0d 0e 92 11 4c 44 4d 49 41 20 49 2c 7b 49 |#3....LDMIA I,{I| 00002160 2c 4a 7d 0d 0e 9c 17 41 44 44 20 43 53 2c 43 53 |,J}....ADD CS,CS| 00002170 2c 49 2c 4c 53 4c 20 23 31 36 0d 0e a6 17 41 44 |,I,LSL #16....AD| 00002180 44 20 53 4e 2c 53 4e 2c 4a 2c 4c 53 4c 20 23 31 |D SN,SN,J,LSL #1| 00002190 36 0d 0e b0 04 0d 0e ba 10 4c 44 52 20 44 49 54 |6........LDR DIT| 000021a0 2c 44 49 54 44 0d 0e c4 04 0d 0e ce 14 3b 20 63 |,DITD........; c| 000021b0 6f 6e 66 69 67 75 72 65 20 62 69 6e 73 0d 0e d8 |onfigure bins...| 000021c0 0f 4c 44 52 20 4e 2c 56 4c 54 41 42 0d 0e e2 14 |.LDR N,VLTAB....| 000021d0 4d 4f 56 20 49 2c 23 48 4f 52 49 5a 4f 4e 2f 38 |MOV I,#HORIZON/8| 000021e0 0d 0e ec 0c 4d 4f 56 20 4a 2c 23 30 0d 0e f6 0c |....MOV J,#0....| 000021f0 2e 69 6e 69 74 62 69 6e 0d 0f 00 10 53 54 52 20 |.initbin....STR | 00002200 4a 2c 5b 4e 5d 2c 23 34 0d 0f 0a 0f 53 55 42 53 |J,[N],#4....SUBS| 00002210 20 49 2c 49 2c 23 31 0d 0f 14 0f 42 4e 45 20 69 | I,I,#1....BNE i| 00002220 6e 69 74 62 69 6e 0d 0f 1e 0f 53 54 52 20 4e 2c |nitbin....STR N,| 00002230 46 52 45 45 44 0d 0f 28 04 0d 0f 32 04 0d 0f 3c |FREED..(...2...<| 00002240 0c 4d 4f 56 20 4a 2c 23 30 0d 0f 46 0c 4d 4f 56 |.MOV J,#0..F.MOV| 00002250 20 49 2c 23 30 0d 0f 50 04 0d 0f 5a 0c 4d 4f 56 | I,#0..P...Z.MOV| 00002260 20 48 2c 23 30 0d 0f 64 09 2e 76 6c 6f 70 0d 0f | H,#0..d..vlop..| 00002270 6e 0b 4d 4f 56 20 49 2c 48 0d 0f 78 11 42 4c 20 |n.MOV I,H..x.BL | 00002280 63 68 65 63 6b 70 6f 69 6e 74 0d 0f 82 19 43 4d |checkpoint....CM| 00002290 50 20 54 2c 23 31 30 30 3a 42 45 51 20 76 66 6f |P T,#100:BEQ vfo| 000022a0 75 6e 64 0d 0f 8c 0e 52 53 42 20 49 2c 49 2c 23 |und....RSB I,I,#| 000022b0 30 0d 0f 96 11 42 4c 20 63 68 65 63 6b 70 6f 69 |0....BL checkpoi| 000022c0 6e 74 0d 0f a0 19 43 4d 50 20 54 2c 23 31 30 30 |nt....CMP T,#100| 000022d0 3a 42 45 51 20 76 66 6f 75 6e 64 0d 0f aa 0c 4d |:BEQ vfound....M| 000022e0 4f 56 20 49 2c 23 30 0d 0f b4 0b 4d 4f 56 20 4a |OV I,#0....MOV J| 000022f0 2c 48 0d 0f be 11 42 4c 20 63 68 65 63 6b 70 6f |,H....BL checkpo| 00002300 69 6e 74 0d 0f c8 19 43 4d 50 20 54 2c 23 31 30 |int....CMP T,#10| 00002310 30 3a 42 45 51 20 76 66 6f 75 6e 64 0d 0f d2 0e |0:BEQ vfound....| 00002320 52 53 42 20 4a 2c 4a 2c 23 30 0d 0f dc 11 42 4c |RSB J,J,#0....BL| 00002330 20 63 68 65 63 6b 70 6f 69 6e 74 0d 0f e6 19 43 | checkpoint....C| 00002340 4d 50 20 54 2c 23 31 30 30 3a 42 45 51 20 76 66 |MP T,#100:BEQ vf| 00002350 6f 75 6e 64 0d 0f f0 0c 4d 4f 56 20 4a 2c 23 30 |ound....MOV J,#0| 00002360 0d 0f fa 0e 41 44 44 20 48 2c 48 2c 23 31 0d 10 |....ADD H,H,#1..| 00002370 04 0f 43 4d 50 20 48 2c 23 45 44 2f 32 0d 10 0e |..CMP H,#ED/2...| 00002380 0c 42 4e 45 20 76 6c 6f 70 0d 10 18 12 4c 44 4d |.BNE vlop....LDM| 00002390 46 44 20 31 33 21 2c 7b 50 43 7d 0d 10 22 0b 2e |FD 13!,{PC}.."..| 000023a0 76 66 6f 75 6e 64 0d 10 2c 04 0d 10 36 04 0d 10 |vfound..,...6...| 000023b0 40 13 a4 61 64 72 28 54 2c 53 43 52 45 45 4e 32 |@..adr(T,SCREEN2| 000023c0 29 0d 10 4a 0d 4c 44 52 20 48 2c 5b 54 5d 0d 10 |)..J.LDR H,[T]..| 000023d0 54 13 41 44 44 20 48 2c 48 2c 23 36 34 30 2a 36 |T.ADD H,H,#640*6| 000023e0 34 0d 10 5e 0f 41 44 44 20 48 2c 48 2c 23 36 34 |4..^.ADD H,H,#64| 000023f0 0d 10 68 0e 3b 53 54 52 20 48 2c 5b 54 5d 0d 10 |..h.;STR H,[T]..| 00002400 72 04 0d 10 7c 04 0d 10 86 0f 4c 44 52 20 4e 2c |r...|.....LDR N,| 00002410 56 4c 54 41 42 0d 10 90 0a 42 4c 20 72 65 63 0d |VLTAB....BL rec.| 00002420 10 9a 10 4d 4f 56 20 54 2c 23 31 3c 3c 33 31 0d |...MOV T,#1<<31.| 00002430 10 a4 0e 3b 53 54 52 20 54 2c 5b 4e 5d 0d 10 ae |...;STR T,[N]...| 00002440 04 0d 10 b8 0f 4c 44 52 20 48 2c 56 4c 54 41 42 |.....LDR H,VLTAB| 00002450 0d 10 c2 0a 42 4c 20 74 65 6b 0d 10 cc 12 4c 44 |....BL tek....LD| 00002460 4d 46 44 20 31 33 21 2c 7b 50 43 7d 0d 10 d6 04 |MFD 13!,{PC}....| 00002470 0d 10 e0 25 3b 20 63 68 65 63 6b 20 70 6f 69 6e |...%; check poin| 00002480 74 20 28 49 2c 4a 29 20 74 6f 20 62 65 20 76 69 |t (I,J) to be vi| 00002490 73 69 62 6c 65 0d 10 ea 27 3b 20 58 2a 2c 59 2a |sible...'; X*,Y*| 000024a0 2c 5a 2a 3d 54 2a 2c 4e 2a 2c 20 41 2c 42 2c 49 |,Z*=T*,N*, A,B,I| 000024b0 2c 4a 2c 43 53 2c 53 4e 2c 44 49 54 0d 10 f4 0f |,J,CS,SN,DIT....| 000024c0 2e 63 68 65 63 6b 70 6f 69 6e 74 0d 10 fe 1b 53 |.checkpoint....S| 000024d0 54 4d 46 44 20 31 33 21 2c 7b 49 2c 4a 2c 4e 2c |TMFD 13!,{I,J,N,| 000024e0 51 2c 31 34 7d 5e 0d 11 08 18 41 44 44 20 58 2c |Q,14}^....ADD X,| 000024f0 49 2c 41 2c 41 53 52 20 23 53 48 2b 46 58 0d 11 |I,A,ASR #SH+FX..| 00002500 12 18 41 44 44 20 5a 2c 4a 2c 42 2c 41 53 52 20 |..ADD Z,J,B,ASR | 00002510 23 53 48 2b 46 58 0d 11 1c 04 0d 11 26 0f 80 20 |#SH+FX......&.. | 00002520 51 2c 58 2c 23 44 31 2d 31 0d 11 30 15 41 44 44 |Q,X,#D1-1..0.ADD| 00002530 20 51 2c 51 2c 5a 2c 4c 53 4c 20 23 53 48 0d 11 | Q,Q,Z,LSL #SH..| 00002540 3a 1a 4d 4f 56 20 51 2c 51 2c 4c 53 4c 20 23 28 |:.MOV Q,Q,LSL #(| 00002550 33 32 2d 32 2a 53 48 29 0d 11 44 04 0d 11 4e 0f |32-2*SH)..D...N.| 00002560 4c 44 52 20 4e 2c 50 55 54 41 42 0d 11 58 1e 41 |LDR N,PUTAB..X.A| 00002570 44 44 20 4e 2c 4e 2c 51 2c 4c 53 52 20 23 28 33 |DD N,N,Q,LSR #(3| 00002580 32 2d 32 2a 53 48 2d 34 29 0d 11 62 04 0d 11 6c |2-2*SH-4)..b...l| 00002590 0f 4c 44 52 20 4a 2c 68 69 67 68 74 0d 11 76 18 |.LDR J,hight..v.| 000025a0 52 53 42 20 58 2c 41 2c 58 2c 4c 53 4c 20 23 53 |RSB X,A,X,LSL #S| 000025b0 48 2b 46 58 0d 11 80 10 4c 44 52 20 59 2c 5b 4e |H+FX....LDR Y,[N| 000025c0 5d 2c 23 34 0d 11 8a 0d 41 44 44 20 59 2c 59 2c |],#4....ADD Y,Y,| 000025d0 4a 0d 11 94 1a 52 53 42 20 5a 2c 42 2c 5a 2c 4c |J....RSB Z,B,Z,L| 000025e0 53 4c 20 23 53 48 2b 46 58 3a 5d 0d 11 9e 04 0d |SL #SH+FX:].....| 000025f0 11 a8 13 e7 20 53 48 2d 5a 4f 4f 4d 20 3e 20 30 |.... SH-ZOOM > 0| 00002600 20 8c 0d 11 b2 0d 5b 4f 50 54 20 50 41 53 53 0d | .....[OPT PASS.| 00002610 11 bc 18 4d 4f 56 20 58 2c 58 2c 41 53 52 20 23 |...MOV X,X,ASR #| 00002620 53 48 2d 5a 4f 4f 4d 0d 11 c6 18 4d 4f 56 20 59 |SH-ZOOM....MOV Y| 00002630 2c 59 2c 41 53 52 20 23 53 48 2d 5a 4f 4f 4d 0d |,Y,ASR #SH-ZOOM.| 00002640 11 d0 1a 4d 4f 56 20 5a 2c 5a 2c 41 53 52 20 23 |...MOV Z,Z,ASR #| 00002650 53 48 2d 5a 4f 4f 4d 3a 5d 0d 11 da 05 cd 0d 11 |SH-ZOOM:].......| 00002660 e4 04 0d 11 ee 12 e7 20 53 48 2d 5a 4f 4f 4d 20 |....... SH-ZOOM | 00002670 3c 30 20 8c 0d 11 f8 0d 5b 4f 50 54 20 50 41 53 |<0 .....[OPT PAS| 00002680 53 0d 12 02 18 4d 4f 56 20 58 2c 58 2c 4c 53 4c |S....MOV X,X,LSL| 00002690 20 23 5a 4f 4f 4d 2d 53 48 0d 12 0c 18 4d 4f 56 | #ZOOM-SH....MOV| 000026a0 20 59 2c 59 2c 4c 53 4c 20 23 5a 4f 4f 4d 2d 53 | Y,Y,LSL #ZOOM-S| 000026b0 48 0d 12 16 1a 4d 4f 56 20 5a 2c 5a 2c 4c 53 4c |H....MOV Z,Z,LSL| 000026c0 20 23 5a 4f 4f 4d 2d 53 48 3a 5d 0d 12 20 05 cd | #ZOOM-SH:].. ..| 000026d0 0d 12 2a 04 0d 12 34 0e 5b 20 4f 50 54 20 50 41 |..*...4.[ OPT PA| 000026e0 53 53 0d 12 3e 04 0d 12 48 0f 41 44 52 20 20 4a |SS..>...H.ADR J| 000026f0 2c 79 72 6f 74 0d 12 52 11 4c 44 4d 49 41 20 4a |,yrot..R.LDMIA J| 00002700 2c 7b 49 2c 4a 7d 0d 12 5c 0d 4d 55 4c 20 51 2c |,{I,J}..\.MUL Q,| 00002710 49 2c 58 0d 12 66 0f 4d 4c 41 20 51 2c 4a 2c 5a |I,X..f.MLA Q,J,Z| 00002720 2c 51 0d 12 70 0d 4d 55 4c 20 58 2c 4a 2c 58 0d |,Q..p.MUL X,J,X.| 00002730 12 7a 0d 4d 55 4c 20 5a 2c 49 2c 5a 0d 12 84 0d |.z.MUL Z,I,Z....| 00002740 53 55 42 20 5a 2c 5a 2c 58 0d 12 8e 12 4d 4f 56 |SUB Z,Z,X....MOV| 00002750 20 58 2c 51 2c 41 53 52 20 23 38 0d 12 98 12 4d | X,Q,ASR #8....M| 00002760 4f 56 20 5a 2c 5a 2c 41 53 52 20 23 38 0d 12 a2 |OV Z,Z,ASR #8...| 00002770 04 0d 12 ac 14 4d 4f 56 20 49 2c 43 53 2c 4c 53 |.....MOV I,CS,LS| 00002780 4c 20 23 31 36 0d 12 b6 14 4d 4f 56 20 4a 2c 53 |L #16....MOV J,S| 00002790 4e 2c 4c 53 4c 20 23 31 36 0d 12 c0 13 4d 4f 56 |N,LSL #16....MOV| 000027a0 20 49 2c 49 2c 41 53 52 20 23 31 36 0d 12 ca 13 | I,I,ASR #16....| 000027b0 4d 4f 56 20 4a 2c 4a 2c 41 53 52 20 23 31 36 0d |MOV J,J,ASR #16.| 000027c0 12 d4 0d 4d 55 4c 20 51 2c 49 2c 59 0d 12 de 0f |...MUL Q,I,Y....| 000027d0 4d 4c 41 20 51 2c 4a 2c 5a 2c 51 0d 12 e8 0d 4d |MLA Q,J,Z,Q....M| 000027e0 55 4c 20 59 2c 4a 2c 59 0d 12 f2 0d 4d 55 4c 20 |UL Y,J,Y....MUL | 000027f0 5a 2c 49 2c 5a 0d 12 fc 0d 53 55 42 20 5a 2c 5a |Z,I,Z....SUB Z,Z| 00002800 2c 59 0d 13 06 12 4d 4f 56 20 59 2c 51 2c 41 53 |,Y....MOV Y,Q,AS| 00002810 52 20 23 38 0d 13 10 12 4d 4f 56 20 5a 2c 5a 2c |R #8....MOV Z,Z,| 00002820 41 53 52 20 23 38 0d 13 1a 04 0d 13 24 14 4d 4f |ASR #8......$.MO| 00002830 56 20 49 2c 43 53 2c 41 53 52 20 23 31 36 0d 13 |V I,CS,ASR #16..| 00002840 2e 14 4d 4f 56 20 4a 2c 53 4e 2c 41 53 52 20 23 |..MOV J,SN,ASR #| 00002850 31 36 0d 13 38 0d 4d 55 4c 20 51 2c 49 2c 58 0d |16..8.MUL Q,I,X.| 00002860 13 42 0f 4d 4c 41 20 51 2c 4a 2c 59 2c 51 0d 13 |.B.MLA Q,J,Y,Q..| 00002870 4c 0d 4d 55 4c 20 58 2c 4a 2c 58 0d 13 56 0d 4d |L.MUL X,J,X..V.M| 00002880 55 4c 20 59 2c 49 2c 59 0d 13 60 0d 53 55 42 20 |UL Y,I,Y..`.SUB | 00002890 59 2c 59 2c 58 0d 13 6a 12 4d 4f 56 20 58 2c 51 |Y,Y,X..j.MOV X,Q| 000028a0 2c 41 53 52 20 23 38 0d 13 74 12 4d 4f 56 20 59 |,ASR #8..t.MOV Y| 000028b0 2c 59 2c 41 53 52 20 23 38 0d 13 7e 04 0d 13 88 |,Y,ASR #8..~....| 000028c0 14 41 44 44 20 49 2c 5a 2c 23 33 30 30 2a 46 49 |.ADD I,Z,#300*FI| 000028d0 58 0d 13 92 0c 43 4d 50 20 49 2c 23 30 0d 13 9c |X....CMP I,#0...| 000028e0 1a 4c 44 52 50 4c 20 5a 2c 5b 44 49 54 2c 49 2c |.LDRPL Z,[DIT,I,| 000028f0 4c 53 4c 20 23 32 5d 0d 13 a6 0d 4d 55 4c 20 58 |LSL #2]....MUL X| 00002900 2c 5a 2c 58 0d 13 b0 0d 4d 55 4c 20 59 2c 5a 2c |,Z,X....MUL Y,Z,| 00002910 59 0d 13 ba 13 4d 4f 56 20 58 2c 58 2c 41 53 52 |Y....MOV X,X,ASR| 00002920 20 23 31 35 0d 13 c4 13 4d 4f 56 20 59 2c 59 2c | #15....MOV Y,Y,| 00002930 41 53 52 20 23 31 35 0d 13 ce 12 41 44 44 20 58 |ASR #15....ADD X| 00002940 2c 58 2c 23 31 36 30 2a 32 0d 13 d8 12 52 53 42 |,X,#160*2....RSB| 00002950 20 59 2c 59 2c 23 31 32 30 2a 32 0d 13 e2 34 53 | Y,Y,#120*2...4S| 00002960 54 4d 49 41 20 4e 2c 7b 58 2c 59 7d 20 20 20 3b |TMIA N,{X,Y} ;| 00002970 70 65 72 73 70 65 63 74 69 76 65 20 74 72 61 6e |perspective tran| 00002980 73 66 6f 72 6d 65 64 20 28 78 2c 79 2c 7a 29 0d |sformed (x,y,z).| 00002990 13 ec 04 0d 13 f6 20 43 4d 50 20 20 20 49 2c 23 |...... CMP I,#| 000029a0 31 30 2a 46 49 58 20 20 20 3b 20 74 6f 20 63 6c |10*FIX ; to cl| 000029b0 6f 73 65 0d 14 00 11 3b 4d 4f 56 4c 54 20 54 2c |ose....;MOVLT T,| 000029c0 23 31 30 31 0d 14 0a 15 42 4c 54 20 20 20 20 20 |#101....BLT | 000029d0 20 20 74 6f 63 6c 6f 73 65 0d 14 14 04 0d 14 1e | toclose.......| 000029e0 23 43 4d 50 20 20 20 49 2c 23 48 4f 52 49 5a 4f |#CMP I,#HORIZO| 000029f0 4e 2a 46 49 58 20 20 3b 20 74 6f 6f 20 66 61 72 |N*FIX ; too far| 00002a00 0d 14 28 17 42 47 45 20 20 20 20 20 20 20 6f 75 |..(.BGE ou| 00002a10 74 73 63 72 65 65 6e 0d 14 32 04 0d 14 3c 27 43 |tscreen..2...<'C| 00002a20 4d 50 20 58 2c 23 36 34 30 20 20 20 20 20 20 3b |MP X,#640 ;| 00002a30 20 6f 75 74 20 6c 65 66 74 20 6f 72 20 72 69 67 | out left or rig| 00002a40 68 74 0d 14 46 16 42 48 53 20 20 20 20 20 20 6f |ht..F.BHS o| 00002a50 75 74 73 63 72 65 65 6e 0d 14 50 04 0d 14 5a 24 |utscreen..P...Z$| 00002a60 43 4d 50 20 59 2c 23 34 38 30 20 20 20 20 20 20 |CMP Y,#480 | 00002a70 3b 20 6f 75 74 20 75 70 20 6f 72 20 64 6f 77 6e |; out up or down| 00002a80 0d 14 64 17 42 48 53 20 20 20 20 20 20 20 6f 75 |..d.BHS ou| 00002a90 74 73 63 72 65 65 6e 0d 14 6e 04 0d 14 78 0e 4d |tscreen..n...x.M| 00002aa0 4f 56 20 54 2c 23 31 30 30 0d 14 82 3c 4d 4f 56 |OV T,#100...<MOV| 00002ab0 20 58 2c 4e 20 20 20 20 20 20 20 20 3b 20 70 6c | X,N ; pl| 00002ac0 61 63 65 20 77 68 65 72 65 20 74 72 61 6e 73 66 |ace where transf| 00002ad0 6f 72 6d 65 64 20 63 6f 6f 72 64 20 69 73 20 73 |ormed coord is s| 00002ae0 74 6f 72 65 64 0d 14 8c 34 4d 4f 56 20 59 2c 49 |tored...4MOV Y,I| 00002af0 20 20 20 20 20 20 20 20 3b 20 7a 2d 63 6f 6f 72 | ; z-coor| 00002b00 64 20 75 73 65 64 20 66 6f 72 20 64 65 70 74 68 |d used for depth| 00002b10 20 62 69 6e 20 73 6f 72 74 0d 14 96 1b 4c 44 4d | bin sort....LDM| 00002b20 46 44 20 31 33 21 2c 7b 49 2c 4a 2c 4e 2c 51 2c |FD 13!,{I,J,N,Q,| 00002b30 50 43 7d 5e 0d 14 a0 04 0d 14 aa 0e 2e 6f 75 74 |PC}^.........out| 00002b40 73 63 72 65 65 6e 0d 14 b4 0e 4d 4f 56 20 54 2c |screen....MOV T,| 00002b50 23 31 30 31 0d 14 be 3c 4d 4f 56 20 58 2c 4e 20 |#101...<MOV X,N | 00002b60 20 20 20 20 20 20 20 3b 20 70 6c 61 63 65 20 77 | ; place w| 00002b70 68 65 72 65 20 74 72 61 6e 73 66 6f 72 6d 65 64 |here transformed| 00002b80 20 63 6f 6f 72 64 20 69 73 20 73 74 6f 72 65 64 | coord is stored| 00002b90 0d 14 c8 34 4d 4f 56 20 59 2c 49 20 20 20 20 20 |...4MOV Y,I | 00002ba0 20 20 20 3b 20 7a 2d 63 6f 6f 72 64 20 75 73 65 | ; z-coord use| 00002bb0 64 20 66 6f 72 20 64 65 70 74 68 20 62 69 6e 20 |d for depth bin | 00002bc0 73 6f 72 74 0d 14 d2 1b 4c 44 4d 46 44 20 31 33 |sort....LDMFD 13| 00002bd0 21 2c 7b 49 2c 4a 2c 4e 2c 51 2c 50 43 7d 5e 0d |!,{I,J,N,Q,PC}^.| 00002be0 14 dc 04 0d 14 e6 0c 2e 74 6f 63 6c 6f 73 65 0d |........toclose.| 00002bf0 14 f0 0e 4d 4f 56 20 54 2c 23 31 30 34 0d 14 fa |...MOV T,#104...| 00002c00 3c 4d 4f 56 20 58 2c 4e 20 20 20 20 20 20 20 20 |<MOV X,N | 00002c10 3b 20 70 6c 61 63 65 20 77 68 65 72 65 20 74 72 |; place where tr| 00002c20 61 6e 73 66 6f 72 6d 65 64 20 63 6f 6f 72 64 20 |ansformed coord | 00002c30 69 73 20 73 74 6f 72 65 64 0d 15 04 34 4d 4f 56 |is stored...4MOV| 00002c40 20 59 2c 49 20 20 20 20 20 20 20 20 3b 20 7a 2d | Y,I ; z-| 00002c50 63 6f 6f 72 64 20 75 73 65 64 20 66 6f 72 20 64 |coord used for d| 00002c60 65 70 74 68 20 62 69 6e 20 73 6f 72 74 0d 15 0e |epth bin sort...| 00002c70 1b 4c 44 4d 46 44 20 31 33 21 2c 7b 49 2c 4a 2c |.LDMFD 13!,{I,J,| 00002c80 4e 2c 51 2c 50 43 7d 5e 0d 15 18 04 0d 15 22 04 |N,Q,PC}^......".| 00002c90 0d 15 2c 04 0d 15 36 0c 3b 20 51 2a 2c 20 48 2a |..,...6.; Q*, H*| 00002ca0 0d 15 40 08 2e 72 65 63 0d 15 4a 22 3b 20 54 3d |..@..rec..J"; T=| 00002cb0 31 30 31 20 3d 3e 20 70 6f 69 6e 74 20 6f 75 74 |101 => point out| 00002cc0 20 6f 66 20 73 63 72 65 65 6e 0d 15 54 12 53 54 | of screen..T.ST| 00002cd0 4d 46 44 20 31 33 21 2c 7b 31 34 7d 0d 15 5e 0a |MFD 13!,{14}..^.| 00002ce0 3b 53 57 49 20 34 0d 15 68 04 0d 15 72 0e 4d 4f |;SWI 4..h...r.MO| 00002cf0 56 20 51 2c 23 31 30 30 0d 15 7c 18 41 44 44 20 |V Q,#100..|.ADD | 00002d00 48 2c 48 2c 23 36 34 30 2d 32 2a 36 34 2d 33 32 |H,H,#640-2*64-32| 00002d10 0d 15 86 04 0d 15 90 0e 41 44 44 20 49 2c 49 2c |........ADD I,I,| 00002d20 23 31 0d 15 9a 1a 4c 44 52 42 20 54 2c 5b 48 2c |#1....LDRB T,[H,| 00002d30 23 31 5d 3a 43 4d 50 20 54 2c 23 30 0d 15 a4 13 |#1]:CMP T,#0....| 00002d40 42 4c 45 51 20 63 68 65 63 6b 70 6f 69 6e 74 0d |BLEQ checkpoint.| 00002d50 15 ae 13 53 54 52 45 51 42 20 54 2c 5b 48 2c 23 |...STREQB T,[H,#| 00002d60 31 5d 0d 15 b8 0e 43 4d 50 20 54 2c 23 31 30 31 |1]....CMP T,#101| 00002d70 0d 15 c2 0d 41 44 44 20 51 2c 51 2c 54 0d 15 cc |....ADD Q,Q,T...| 00002d80 04 0d 15 d6 0e 41 44 44 20 4a 2c 4a 2c 23 31 0d |.....ADD J,J,#1.| 00002d90 15 e0 1c 4c 44 52 42 20 54 2c 5b 48 2c 23 36 34 |...LDRB T,[H,#64| 00002da0 31 5d 3a 43 4d 50 20 54 2c 23 30 0d 15 ea 13 42 |1]:CMP T,#0....B| 00002db0 4c 45 51 20 63 68 65 63 6b 70 6f 69 6e 74 0d 15 |LEQ checkpoint..| 00002dc0 f4 15 53 54 52 45 51 42 20 54 2c 5b 48 2c 23 36 |..STREQB T,[H,#6| 00002dd0 34 31 5d 0d 15 fe 0e 43 4d 50 20 54 2c 23 31 30 |41]....CMP T,#10| 00002de0 31 0d 16 08 0d 41 44 44 20 51 2c 51 2c 54 0d 16 |1....ADD Q,Q,T..| 00002df0 12 04 0d 16 1c 0e 53 55 42 20 49 2c 49 2c 23 31 |......SUB I,I,#1| 00002e00 0d 16 26 1c 4c 44 52 42 20 54 2c 5b 48 2c 23 36 |..&.LDRB T,[H,#6| 00002e10 34 30 5d 3a 43 4d 50 20 54 2c 23 30 0d 16 30 13 |40]:CMP T,#0..0.| 00002e20 42 4c 45 51 20 63 68 65 63 6b 70 6f 69 6e 74 0d |BLEQ checkpoint.| 00002e30 16 3a 15 53 54 52 45 51 42 20 54 2c 5b 48 2c 23 |.:.STREQB T,[H,#| 00002e40 36 34 30 5d 0d 16 44 0e 43 4d 50 20 54 2c 23 31 |640]..D.CMP T,#1| 00002e50 30 31 0d 16 4e 0d 41 44 44 20 51 2c 51 2c 54 0d |01..N.ADD Q,Q,T.| 00002e60 16 58 04 0d 16 62 0e 53 55 42 20 4a 2c 4a 2c 23 |.X...b.SUB J,J,#| 00002e70 31 0d 16 6c 13 42 4c 20 20 20 63 68 65 63 6b 70 |1..l.BL checkp| 00002e80 6f 69 6e 74 0d 16 76 0e 53 54 52 42 20 54 2c 5b |oint..v.STRB T,[| 00002e90 48 5d 0d 16 80 0e 43 4d 50 20 54 2c 23 31 30 31 |H]....CMP T,#101| 00002ea0 0d 16 8a 36 41 44 44 20 51 2c 51 2c 54 20 3b 66 |...6ADD Q,Q,T ;f| 00002eb0 6c 61 67 20 6f 6e 20 69 66 20 62 65 79 6f 6e 64 |lag on if beyond| 00002ec0 20 68 6f 72 69 7a 6f 6e 20 6f 72 20 6f 66 66 20 | horizon or off | 00002ed0 73 63 72 65 65 6e 0d 16 94 04 0d 16 9e 11 4c 44 |screen........LD| 00002ee0 52 42 20 54 2c 5b 58 2c 23 38 5d 0d 16 a8 1f 53 |RB T,[X,#8]....S| 00002ef0 54 52 42 20 54 2c 5b 48 2c 23 2d 28 36 34 30 2d |TRB T,[H,#-(640-| 00002f00 32 2a 36 34 2d 33 32 29 5d 21 0d 16 b2 04 0d 16 |2*64-32)]!......| 00002f10 bc 04 0d 16 c6 3f 43 4d 50 20 51 2c 23 35 30 34 |.....?CMP Q,#504| 00002f20 20 20 20 20 20 20 20 20 20 3b 20 61 6c 6c 20 66 | ; all f| 00002f30 6f 75 72 20 70 6f 69 6e 74 73 20 6f 66 20 70 61 |our points of pa| 00002f40 74 63 68 20 6f 75 74 20 6f 66 20 73 63 72 65 65 |tch out of scree| 00002f50 6e 0d 16 d0 2b 4c 44 4d 48 53 46 44 20 31 33 21 |n...+LDMHSFD 13!| 00002f60 2c 7b 50 43 7d 20 20 20 3b 20 73 6f 20 72 65 6a |,{PC} ; so rej| 00002f70 65 63 74 20 74 68 69 73 20 6f 6e 65 0d 16 da 04 |ect this one....| 00002f80 0d 16 e4 15 53 54 4d 46 44 20 31 33 21 2c 7b 49 |....STMFD 13!,{I| 00002f90 2c 4a 2c 48 7d 0d 16 ee 04 0d 16 f8 28 4d 4f 56 |,J,H}.......(MOV| 00002fa0 53 20 20 59 2c 59 2c 41 53 52 20 23 46 58 2b 33 |S Y,Y,ASR #FX+3| 00002fb0 20 3b 20 64 65 70 74 68 20 6f 66 20 70 61 74 63 | ; depth of patc| 00002fc0 68 0d 17 02 0e 4d 4f 56 4d 49 20 59 2c 23 30 0d |h....MOVMI Y,#0.| 00002fd0 17 0c 14 43 4d 50 20 59 2c 23 48 4f 52 49 5a 4f |...CMP Y,#HORIZO| 00002fe0 4e 2f 38 0d 17 16 16 4d 4f 56 48 53 20 59 2c 23 |N/8....MOVHS Y,#| 00002ff0 48 4f 52 49 5a 4f 4e 2f 38 0d 17 20 10 53 55 42 |HORIZON/8.. .SUB| 00003000 48 53 20 59 2c 59 2c 23 31 0d 17 2a 04 0d 17 34 |HS Y,Y,#1..*...4| 00003010 0f 4c 44 52 20 4e 2c 56 4c 54 41 42 0d 17 3e 36 |.LDR N,VLTAB..>6| 00003020 4c 44 52 20 59 2c 5b 4e 2c 59 2c 4c 53 4c 20 23 |LDR Y,[N,Y,LSL #| 00003030 32 5d 21 20 20 20 20 20 20 3b 20 6c 6f 61 64 20 |2]! ; load | 00003040 64 65 70 74 68 20 6c 69 6e 6b 20 70 6f 69 6e 74 |depth link point| 00003050 65 72 0d 17 48 0f 4c 44 52 20 54 2c 46 52 45 45 |er..H.LDR T,FREE| 00003060 44 0d 17 52 3c 53 54 52 20 54 2c 5b 4e 5d 20 20 |D..R<STR T,[N] | 00003070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 | ; | 00003080 72 65 70 6c 61 63 65 20 77 69 74 68 20 6e 65 77 |replace with new| 00003090 20 6c 69 6e 6b 20 70 6f 69 6e 74 65 72 0d 17 5c | link pointer..\| 000030a0 0f 3b 43 4d 50 20 51 2c 23 31 30 30 0d 17 66 42 |.;CMP Q,#100..fB| 000030b0 53 54 4d 49 41 20 28 54 29 21 2c 7b 58 2c 59 7d |STMIA (T)!,{X,Y}| 000030c0 20 20 3b 20 69 6e 73 65 72 74 20 6e 65 77 20 70 | ; insert new p| 000030d0 61 74 63 68 20 6e 6f 64 65 20 69 6e 20 64 65 70 |atch node in dep| 000030e0 74 68 20 6c 69 6e 6b 65 64 20 6c 69 73 74 0d 17 |th linked list..| 000030f0 70 0f 53 54 52 20 54 2c 46 52 45 45 44 0d 17 7a |p.STR T,FREED..z| 00003100 04 0d 17 84 0e 53 55 42 20 4a 2c 4a 2c 23 31 0d |.....SUB J,J,#1.| 00003110 17 8e 15 4c 44 52 42 20 51 2c 5b 48 2c 23 2d 36 |...LDRB Q,[H,#-6| 00003120 34 30 5d 21 0d 17 98 0c 43 4d 50 20 51 2c 23 30 |40]!....CMP Q,#0| 00003130 0d 17 a2 0c 42 4c 45 51 20 72 65 63 0d 17 ac 14 |....BLEQ rec....| 00003140 4c 44 4d 46 44 20 31 33 2c 7b 49 2c 4a 2c 48 7d |LDMFD 13,{I,J,H}| 00003150 0d 17 b6 0e 53 55 42 20 49 2c 49 2c 23 31 0d 17 |....SUB I,I,#1..| 00003160 c0 13 4c 44 52 42 20 51 2c 5b 48 2c 23 2d 31 5d |..LDRB Q,[H,#-1]| 00003170 21 0d 17 ca 0c 43 4d 50 20 51 2c 23 30 0d 17 d4 |!....CMP Q,#0...| 00003180 0c 42 4c 45 51 20 72 65 63 0d 17 de 14 4c 44 4d |.BLEQ rec....LDM| 00003190 46 44 20 31 33 2c 7b 49 2c 4a 2c 48 7d 0d 17 e8 |FD 13,{I,J,H}...| 000031a0 0e 41 44 44 20 49 2c 49 2c 23 31 0d 17 f2 12 4c |.ADD I,I,#1....L| 000031b0 44 52 42 20 51 2c 5b 48 2c 23 31 5d 21 0d 17 fc |DRB Q,[H,#1]!...| 000031c0 0c 43 4d 50 20 51 2c 23 30 0d 18 06 0c 42 4c 45 |.CMP Q,#0....BLE| 000031d0 51 20 72 65 63 0d 18 10 15 4c 44 4d 46 44 20 31 |Q rec....LDMFD 1| 000031e0 33 21 2c 7b 49 2c 4a 2c 48 7d 0d 18 1a 0e 41 44 |3!,{I,J,H}....AD| 000031f0 44 20 4a 2c 4a 2c 23 31 0d 18 24 14 4c 44 52 42 |D J,J,#1..$.LDRB| 00003200 20 51 2c 5b 48 2c 23 36 34 30 5d 21 0d 18 2e 0c | Q,[H,#640]!....| 00003210 43 4d 50 20 51 2c 23 30 0d 18 38 0c 42 4c 45 51 |CMP Q,#0..8.BLEQ| 00003220 20 72 65 63 0d 18 42 12 4c 44 4d 46 44 20 31 33 | rec..B.LDMFD 13| 00003230 21 2c 7b 50 43 7d 0d 18 4c 04 0d 18 56 04 0d 18 |!,{PC}..L...V...| 00003240 60 08 2e 74 65 6b 0d 18 6a 12 53 54 4d 46 44 20 |`..tek..j.STMFD | 00003250 31 33 21 2c 7b 31 34 7d 0d 18 74 04 0d 18 7e 10 |13!,{14}..t...~.| 00003260 41 44 52 20 54 41 42 2c 76 6c 61 6b 0d 18 88 0d |ADR TAB,vlak....| 00003270 4d 4f 56 20 4e 52 2c 23 34 0d 18 92 11 4c 44 52 |MOV NR,#4....LDR| 00003280 20 44 49 54 2c 50 55 54 41 42 0d 18 9c 12 41 44 | DIT,PUTAB....AD| 00003290 44 20 44 49 54 2c 44 49 54 2c 23 34 0d 18 a6 0d |D DIT,DIT,#4....| 000032a0 4d 4f 56 20 4e 52 2c 23 34 0d 18 b0 10 41 44 52 |MOV NR,#4....ADR| 000032b0 20 54 41 42 2c 76 6c 61 6b 0d 18 ba 15 4d 4f 56 | TAB,vlak....MOV| 000032c0 20 43 53 2c 23 48 4f 52 49 5a 4f 4e 2f 38 0d 18 | CS,#HORIZON/8..| 000032d0 c4 0f 4c 44 52 20 48 2c 56 4c 54 41 42 0d 18 ce |..LDR H,VLTAB...| 000032e0 36 41 44 44 20 48 2c 48 2c 43 53 2c 4c 53 4c 20 |6ADD H,H,CS,LSL | 000032f0 23 32 20 20 20 20 20 20 3b 20 70 75 74 20 61 74 |#2 ; put at| 00003300 20 62 69 6e 20 77 69 74 68 20 68 69 67 68 65 73 | bin with highes| 00003310 74 20 7a 0d 18 d8 0d 2e 6e 65 78 74 5f 62 69 6e |t z.....next_bin| 00003320 0d 18 e2 12 4c 44 52 20 59 2c 5b 48 2c 23 2d 34 |....LDR Y,[H,#-4| 00003330 5d 21 0d 18 ec 0e 43 4d 50 20 20 20 59 2c 23 30 |]!....CMP Y,#0| 00003340 0d 18 f6 0f 42 45 51 20 65 6e 64 5f 62 69 6e 0d |....BEQ end_bin.| 00003350 19 00 12 4c 44 4d 49 41 20 59 2c 7b 50 30 2c 59 |...LDMIA Y,{P0,Y| 00003360 7d 0d 19 0a 0d 2e 64 72 61 77 5f 62 69 6e 0d 19 |}.....draw_bin..| 00003370 14 10 53 55 42 20 58 2c 50 30 2c 44 49 54 0d 19 |..SUB X,P0,DIT..| 00003380 1e 1a 4d 4f 56 20 58 2c 58 2c 4c 53 4c 20 23 33 |..MOV X,X,LSL #3| 00003390 32 2d 32 2a 53 48 2d 34 0d 19 28 25 41 44 44 20 |2-2*SH-4..(%ADD | 000033a0 54 2c 58 2c 23 31 20 3c 3c 20 28 33 32 2d 53 48 |T,X,#1 << (32-SH| 000033b0 29 20 20 20 20 20 20 3b 20 6a 2b 3d 31 0d 19 32 |) ; j+=1..2| 000033c0 1f 41 44 44 20 50 31 2c 44 49 54 2c 54 2c 4c 53 |.ADD P1,DIT,T,LS| 000033d0 52 20 23 33 32 2d 32 2a 53 48 2d 34 0d 19 3c 16 |R #32-2*SH-4..<.| 000033e0 4d 4f 56 20 54 2c 54 2c 52 4f 52 20 23 33 32 2d |MOV T,T,ROR #32-| 000033f0 53 48 0d 19 46 25 41 44 44 20 54 2c 54 2c 23 31 |SH..F%ADD T,T,#1| 00003400 20 3c 3c 20 28 33 32 2d 53 48 29 20 20 20 20 20 | << (32-SH) | 00003410 20 3b 20 69 2b 3d 31 0d 19 50 1d 41 44 44 20 50 | ; i+=1..P.ADD P| 00003420 32 2c 44 49 54 2c 54 2c 52 4f 52 20 23 33 32 2d |2,DIT,T,ROR #32-| 00003430 53 48 2d 34 0d 19 5a 13 4d 4f 56 20 54 2c 54 2c |SH-4..Z.MOV T,T,| 00003440 52 4f 52 20 23 53 48 0d 19 64 25 53 55 42 20 54 |ROR #SH..d%SUB T| 00003450 2c 54 2c 23 31 20 3c 3c 20 28 33 32 2d 53 48 29 |,T,#1 << (32-SH)| 00003460 20 20 20 20 20 20 3b 20 6a 2d 3d 31 0d 19 6e 1f | ; j-=1..n.| 00003470 41 44 44 20 50 33 2c 44 49 54 2c 54 2c 52 4f 52 |ADD P3,DIT,T,ROR| 00003480 20 23 33 32 2d 32 2a 53 48 2d 34 0d 19 78 04 0d | #32-2*SH-4..x..| 00003490 19 82 14 53 55 42 53 20 58 2c 43 53 2c 23 31 30 |...SUBS X,CS,#10| 000034a0 30 2f 38 0d 19 8c 0e 4d 4f 56 4d 49 20 58 2c 23 |0/8....MOVMI X,#| 000034b0 30 0d 19 96 3d 4d 4f 56 20 58 2c 58 2c 4c 53 52 |0...=MOV X,X,LSR| 000034c0 20 23 37 2d 33 20 20 20 20 20 20 20 20 20 20 20 | #7-3 | 000034d0 20 20 3b 20 64 65 70 74 68 20 71 75 65 75 65 20 | ; depth queue | 000034e0 63 6f 6c 6f 72 20 6f 66 20 70 61 74 63 68 0d 19 |color of patch..| 000034f0 a0 11 4c 44 52 20 54 2c 5b 50 30 2c 23 38 5d 0d |..LDR T,[P0,#8].| 00003500 19 aa 0d 84 52 20 54 2c 54 2c 23 33 0d 19 b4 0c |....R T,T,#3....| 00003510 82 20 50 34 2c 54 2c 58 0d 19 be 18 53 54 4d 49 |. P4,T,X....STMI| 00003520 41 20 54 41 42 2c 7b 50 30 2c 50 31 2c 50 32 7d |A TAB,{P0,P1,P2}| 00003530 0d 19 c8 10 42 4c 20 70 6f 6c 79 5f 66 69 6c 6c |....BL poly_fill| 00003540 0d 19 d2 18 53 54 4d 49 41 20 54 41 42 2c 7b 50 |....STMIA TAB,{P| 00003550 30 2c 50 32 2c 50 33 7d 0d 19 dc 10 42 4c 20 70 |0,P2,P3}....BL p| 00003560 6f 6c 79 5f 66 69 6c 6c 0d 19 e6 0e 43 4d 50 20 |oly_fill....CMP | 00003570 20 20 59 2c 23 30 0d 19 f0 14 4c 44 4d 4e 45 49 | Y,#0....LDMNEI| 00003580 41 20 59 2c 7b 50 30 2c 59 7d 0d 19 fa 10 42 4e |A Y,{P0,Y}....BN| 00003590 45 20 64 72 61 77 5f 62 69 6e 0d 1a 04 0c 2e 65 |E draw_bin.....e| 000035a0 6e 64 5f 62 69 6e 0d 1a 0e 11 53 55 42 53 20 43 |nd_bin....SUBS C| 000035b0 53 2c 43 53 2c 23 31 0d 1a 18 10 42 4e 45 20 6e |S,CS,#1....BNE n| 000035c0 65 78 74 5f 62 69 6e 0d 1a 22 12 4c 44 4d 46 44 |ext_bin..".LDMFD| 000035d0 20 31 33 21 2c 7b 50 43 7d 0d 1a 2c 04 0d 1a 36 | 13!,{PC}..,...6| 000035e0 04 0d 1a 40 09 2e 76 6c 61 6b 0d 1a 4a 26 45 51 |...@..vlak..J&EQ| 000035f0 55 44 20 30 3a 45 51 55 44 20 30 3a 45 51 55 44 |UD 0:EQUD 0:EQUD| 00003600 20 30 3a 45 51 55 44 20 30 3a 45 51 55 44 20 30 | 0:EQUD 0:EQUD 0| 00003610 0d 1a 54 05 5d 0d 1a 5e 05 ed 0d 1a 68 09 51 25 |..T.]..^....h.Q%| 00003620 3d 50 25 0d 1a 72 05 e1 0d 1a 7c 04 0d 1a 86 04 |=P%..r....|.....| 00003630 0d 1a 90 12 dd 20 f2 63 61 6c 63 5f 69 6e 76 65 |..... .calc_inve| 00003640 72 73 0d 1a 9a 15 de 20 49 4e 56 45 52 53 20 34 |rs..... INVERS 4| 00003650 30 39 34 2a 34 2a 34 0d 1a a4 0d 21 49 4e 56 45 |094*4*4....!INVE| 00003660 52 53 3d 31 0d 1a ae 0b 4b 3d 31 3c 3c 32 31 0d |RS=1....K=1<<21.| 00003670 1a b8 2d e3 20 49 3d 31 20 b8 20 34 2a 34 30 39 |..-. I=1 . 4*409| 00003680 34 2d 31 3a 49 4e 56 45 52 53 21 28 34 2a 49 29 |4-1:INVERS!(4*I)| 00003690 3d 4b 2f 28 49 2b 30 2e 35 29 3a ed 0d 1a c2 05 |=K/(I+0.5):.....| 000036a0 e1 0d 1a cc 04 0d 1a d6 04 0d 1a e0 0e dd 20 f2 |.............. .| 000036b0 67 6f 75 72 61 75 64 0d 1a ea 16 ea 20 53 46 2c |gouraud..... SF,| 000036c0 46 49 58 2c 53 4d 2c 46 50 2c 49 2c 47 0d 1a f4 |FIX,SM,FP,I,G...| 000036d0 1b ea 20 44 58 44 2c 44 59 44 2c 54 58 44 2c 54 |.. DXD,DYD,TXD,T| 000036e0 59 44 2c 58 44 2c 59 44 0d 1a fe 04 0d 1b 08 04 |YD,XD,YD........| 000036f0 0d 1b 12 10 f2 63 61 6c 63 5f 69 6e 76 65 72 73 |.....calc_invers| 00003700 0d 1b 1c 04 0d 1b 26 12 53 46 3d 31 32 3a 46 49 |......&.SF=12:FI| 00003710 58 3d 32 5e 53 46 0d 1b 30 09 53 4d 3d 31 30 0d |X=2^SF..0.SM=10.| 00003720 1b 3a 0c 46 50 3d 53 46 2b 53 4d 0d 1b 44 04 0d |.:.FP=SF+SM..D..| 00003730 1b 4e 41 48 3d 30 3a 43 31 3d 31 3a 4c 3d 32 3a |.NAH=0:C1=1:L=2:| 00003740 52 3d 33 3a 43 54 3d 34 3a 49 3d 35 3a 58 4c 3d |R=3:CT=4:I=5:XL=| 00003750 36 3a 58 52 3d 37 3a 43 32 3d 38 3a 54 3d 39 3a |6:XR=7:C2=8:T=9:| 00003760 4f 3d 31 30 3a 4c 41 3d 31 31 3a 52 41 3d 31 32 |O=10:LA=11:RA=12| 00003770 0d 1b 58 04 0d 1b 62 21 58 31 3d 30 3a 59 31 3d |..X...b!X1=0:Y1=| 00003780 31 3a 58 32 3d 32 3a 59 32 3d 33 3a 58 33 3d 34 |1:X2=2:Y2=3:X3=4| 00003790 3a 59 33 3d 35 0d 1b 6c 12 49 31 3d 36 3a 49 32 |:Y3=5..l.I1=6:I2| 000037a0 3d 37 3a 49 33 3d 38 0d 1b 76 1e 53 43 52 45 45 |=7:I3=8..v.SCREE| 000037b0 4e 3d 31 32 3a 42 49 54 4d 41 50 3d 31 33 3a 54 |N=12:BITMAP=13:T| 000037c0 6d 70 3d 31 34 0d 1b 80 04 0d 1b 8a 24 41 3d 30 |mp=14.......$A=0| 000037d0 3a 42 3d 31 3a 43 3d 39 3a 44 3d 31 30 3a 54 6d |:B=1:C=9:D=10:Tm| 000037e0 70 32 3d 31 32 3a 48 65 6c 70 3d 31 33 0d 1b 94 |p2=12:Help=13...| 000037f0 04 0d 1b 9e 0e de 20 51 25 20 32 30 30 30 30 0d |...... Q% 20000.| 00003800 1b a8 14 e3 20 50 41 53 53 3d 30 20 b8 20 32 20 |.... PASS=0 . 2 | 00003810 88 20 32 0d 1b b2 09 50 25 3d 51 25 0d 1b bc 0d |. 2....P%=Q%....| 00003820 5b 4f 50 54 20 50 41 53 53 0d 1b c6 04 0d 1b d0 |[OPT PASS.......| 00003830 0a 2e 63 6c 65 61 72 0d 1b da 2b 4d 4f 56 20 52 |..clear...+MOV R| 00003840 30 2c 23 30 3a 4d 4f 56 20 52 31 2c 23 30 3a 4d |0,#0:MOV R1,#0:M| 00003850 4f 56 20 52 32 2c 23 30 3a 4d 4f 56 20 52 33 2c |OV R2,#0:MOV R3,| 00003860 23 30 0d 1b e4 2b 4d 4f 56 20 52 34 2c 23 30 3a |#0...+MOV R4,#0:| 00003870 4d 4f 56 20 52 35 2c 23 30 3a 4d 4f 56 20 52 36 |MOV R5,#0:MOV R6| 00003880 2c 23 30 3a 4d 4f 56 20 52 37 2c 23 30 0d 1b ee |,#0:MOV R7,#0...| 00003890 17 4d 4f 56 20 52 38 2c 23 30 3a 4d 4f 56 20 52 |.MOV R8,#0:MOV R| 000038a0 39 2c 23 30 0d 1b f8 24 4c 44 52 20 52 31 30 2c |9,#0...$LDR R10,| 000038b0 53 43 52 45 45 4e 32 3a 4d 4f 56 20 52 31 31 2c |SCREEN2:MOV R11,| 000038c0 23 36 34 30 2a 34 38 30 0d 1c 02 0a 2e 63 6c 6f |#640*480.....clo| 000038d0 6f 70 0d 1c 0c 16 53 54 4d 49 41 20 52 31 30 21 |op....STMIA R10!| 000038e0 2c 7b 52 30 2d 52 39 7d 0d 1c 16 16 53 54 4d 49 |,{R0-R9}....STMI| 000038f0 41 20 52 31 30 21 2c 7b 52 30 2d 52 39 7d 0d 1c |A R10!,{R0-R9}..| 00003900 20 16 53 54 4d 49 41 20 52 31 30 21 2c 7b 52 30 | .STMIA R10!,{R0| 00003910 2d 52 39 7d 0d 1c 2a 16 53 54 4d 49 41 20 52 31 |-R9}..*.STMIA R1| 00003920 30 21 2c 7b 52 30 2d 52 39 7d 0d 1c 34 18 53 55 |0!,{R0-R9}..4.SU| 00003930 42 53 20 52 31 31 2c 52 31 31 2c 23 34 2a 31 30 |BS R11,R11,#4*10| 00003940 2a 34 0d 1c 3e 0d 42 4e 45 20 63 6c 6f 6f 70 0d |*4..>.BNE cloop.| 00003950 1c 48 0e 4d 4f 56 20 50 43 2c 52 31 34 0d 1c 52 |.H.MOV PC,R14..R| 00003960 04 0d 1c 5c 1d 2e 53 43 52 45 45 4e 31 20 45 51 |...\..SCREEN1 EQ| 00003970 55 44 20 31 34 38 3a 45 51 55 44 20 2d 31 0d 1c |UD 148:EQUD -1..| 00003980 66 13 2e 53 43 52 45 45 4e 32 20 45 51 55 44 20 |f..SCREEN2 EQUD | 00003990 30 0d 1c 70 12 2e 53 43 52 45 45 4e 33 20 44 43 |0..p..SCREEN3 DC| 000039a0 44 20 30 0d 1c 7a 08 2e 73 65 74 0d 1c 84 12 41 |D 0..z..set....A| 000039b0 44 52 20 52 30 2c 53 43 52 45 45 4e 31 0d 1c 8e |DR R0,SCREEN1...| 000039c0 12 41 44 52 20 52 31 2c 53 43 52 45 45 4e 32 0d |.ADR R1,SCREEN2.| 000039d0 1c 98 1d 53 57 49 20 22 4f 53 5f 52 65 61 64 56 |...SWI "OS_ReadV| 000039e0 64 75 56 61 72 69 61 62 6c 65 73 22 0d 1c a2 0d |duVariables"....| 000039f0 4d 4f 56 20 31 35 2c 31 34 0d 1c ac 04 0d 1c b6 |MOV 15,14.......| 00003a00 13 2e 6d 6f 64 65 20 20 20 20 20 44 43 44 20 31 |..mode DCD 1| 00003a10 0d 1c c0 15 20 20 20 20 20 20 20 20 20 20 44 43 |.... DC| 00003a20 44 20 36 34 30 0d 1c ca 15 20 20 20 20 20 20 20 |D 640.... | 00003a30 20 20 20 44 43 44 20 34 38 30 0d 1c d4 13 20 20 | DCD 480.... | 00003a40 20 20 20 20 20 20 20 20 44 43 44 20 33 0d 1c de | DCD 3...| 00003a50 14 20 20 20 20 20 20 20 20 20 20 44 43 44 20 2d |. DCD -| 00003a60 31 0d 1c e8 1b 20 20 20 20 20 20 20 20 20 20 44 |1.... D| 00003a70 43 44 20 30 3a 44 43 44 20 31 32 38 0d 1c f2 1b |CD 0:DCD 128....| 00003a80 20 20 20 20 20 20 20 20 20 20 44 43 44 20 33 3a | DCD 3:| 00003a90 44 43 44 20 32 35 35 0d 1c fc 14 20 20 20 20 20 |DCD 255.... | 00003aa0 20 20 20 20 20 44 43 44 20 2d 31 0d 1d 06 0d 2e | DCD -1.....| 00003ab0 73 65 74 5f 6d 6f 64 65 0d 1d 10 0d 4d 4f 56 20 |set_mode....MOV | 00003ac0 52 30 2c 23 30 0d 1d 1a 0f 41 44 52 20 52 31 2c |R0,#0....ADR R1,| 00003ad0 6d 6f 64 65 0d 1d 24 17 53 57 49 20 22 4f 53 5f |mode..$.SWI "OS_| 00003ae0 53 63 72 65 65 6e 4d 6f 64 65 22 0d 1d 2e 1a 53 |ScreenMode"....S| 00003af0 57 49 20 22 4f 53 5f 52 65 6d 6f 76 65 43 75 72 |WI "OS_RemoveCur| 00003b00 73 6f 72 73 22 0d 1d 38 0e 4d 4f 56 20 70 63 2c |sors"..8.MOV pc,| 00003b10 72 31 34 0d 1d 42 04 0d 1d 4c 0b a4 70 72 65 64 |r14..B...L..pred| 00003b20 65 66 0d 1d 56 0e 2e 70 6f 6c 79 5f 66 69 6c 6c |ef..V..poly_fill| 00003b30 0d 1d 60 0c a4 70 72 65 63 61 6c 63 0d 1d 6a 0a |..`..precalc..j.| 00003b40 a4 70 69 65 63 65 0d 1d 74 05 5d 0d 1d 7e 05 ed |.piece..t.]..~..| 00003b50 0d 1d 88 09 51 25 3d 50 25 0d 1d 92 05 e1 0d 1d |....Q%=P%.......| 00003b60 9c 04 0d 1d a6 04 0d 1d b0 04 0d 1d ba 04 0d 1d |................| 00003b70 c4 17 dd 20 a4 61 64 72 28 72 65 67 2c 61 64 64 |... .adr(reg,add| 00003b80 72 65 73 73 29 0d 1d ce 17 6f 66 66 73 65 74 3d |ress)....offset=| 00003b90 61 64 64 72 65 73 73 2d 50 25 2d 38 0d 1d d8 10 |address-P%-8....| 00003ba0 e7 20 6f 66 66 73 65 74 3e 30 20 8c 0d 1d e2 1a |. offset>0 .....| 00003bb0 6f 66 66 73 65 74 31 3d 6f 66 66 73 65 74 20 80 |offset1=offset .| 00003bc0 20 32 35 35 2a 34 0d 1d ec 1e 6f 66 66 73 65 74 | 255*4....offset| 00003bd0 32 3d 6f 66 66 73 65 74 20 80 20 32 35 35 2a 32 |2=offset . 255*2| 00003be0 35 36 2a 34 0d 1d f6 22 6f 66 66 73 65 74 33 3d |56*4..."offset3=| 00003bf0 6f 66 66 73 65 74 20 80 20 32 35 35 2a 32 35 36 |offset . 255*256| 00003c00 2a 32 35 36 2a 34 0d 1e 00 39 20 20 20 20 20 20 |*256*4...9 | 00003c10 20 20 20 20 20 20 20 20 20 5b 4f 50 54 20 50 41 | [OPT PA| 00003c20 53 53 3a 41 44 44 20 20 20 20 20 20 20 72 65 67 |SS:ADD reg| 00003c30 2c 20 31 35 2c 23 6f 66 66 73 65 74 31 3a 5d 0d |, 15,#offset1:].| 00003c40 1e 0a 38 e7 20 6f 66 66 73 65 74 32 3c 3e 30 20 |..8. offset2<>0 | 00003c50 20 5b 4f 50 54 20 50 41 53 53 3a 41 44 44 20 20 | [OPT PASS:ADD | 00003c60 20 20 20 20 20 72 65 67 2c 72 65 67 2c 23 6f 66 | reg,reg,#of| 00003c70 66 73 65 74 32 3a 5d 0d 1e 14 38 e7 20 6f 66 66 |fset2:]...8. off| 00003c80 73 65 74 33 3c 3e 30 20 20 5b 4f 50 54 20 50 41 |set3<>0 [OPT PA| 00003c90 53 53 3a 41 44 44 20 20 20 20 20 20 20 72 65 67 |SS:ADD reg| 00003ca0 2c 72 65 67 2c 23 6f 66 66 73 65 74 33 3a 5d 0d |,reg,#offset3:].| 00003cb0 1e 1e 05 cc 0d 1e 28 1b 6f 66 66 73 65 74 31 3d |......(.offset1=| 00003cc0 2d 6f 66 66 73 65 74 20 80 20 32 35 35 2a 34 0d |-offset . 255*4.| 00003cd0 1e 32 1f 6f 66 66 73 65 74 32 3d 2d 6f 66 66 73 |.2.offset2=-offs| 00003ce0 65 74 20 80 20 32 35 35 2a 32 35 36 2a 34 0d 1e |et . 255*256*4..| 00003cf0 3c 23 6f 66 66 73 65 74 33 3d 2d 6f 66 66 73 65 |<#offset3=-offse| 00003d00 74 20 80 20 32 35 35 2a 32 35 36 2a 32 35 36 2a |t . 255*256*256*| 00003d10 34 0d 1e 46 39 20 20 20 20 20 20 20 20 20 20 20 |4..F9 | 00003d20 20 20 20 20 5b 4f 50 54 20 50 41 53 53 3a 53 55 | [OPT PASS:SU| 00003d30 42 20 20 20 20 20 20 20 72 65 67 2c 20 31 35 2c |B reg, 15,| 00003d40 23 6f 66 66 73 65 74 31 3a 5d 0d 1e 50 38 e7 20 |#offset1:]..P8. | 00003d50 6f 66 66 73 65 74 32 3c 3e 30 20 20 5b 4f 50 54 |offset2<>0 [OPT| 00003d60 20 50 41 53 53 3a 53 55 42 20 20 20 20 20 20 20 | PASS:SUB | 00003d70 72 65 67 2c 72 65 67 2c 23 6f 66 66 73 65 74 32 |reg,reg,#offset2| 00003d80 3a 5d 0d 1e 5a 38 e7 20 6f 66 66 73 65 74 33 3c |:]..Z8. offset3<| 00003d90 3e 30 20 20 5b 4f 50 54 20 50 41 53 53 3a 53 55 |>0 [OPT PASS:SU| 00003da0 42 20 20 20 20 20 20 20 72 65 67 2c 72 65 67 2c |B reg,reg,| 00003db0 23 6f 66 66 73 65 74 33 3a 5d 0d 1e 64 05 cd 0d |#offset3:]..d...| 00003dc0 1e 6e 05 cd 0d 1e 78 07 3d 22 22 0d 1e 82 04 0d |.n....x.="".....| 00003dd0 1e 8c 0d dd 20 a4 70 72 65 64 65 66 0d 1e 96 0d |.... .predef....| 00003de0 5b 4f 50 54 20 50 41 53 53 0d 1e a0 38 2e 73 61 |[OPT PASS...8.sa| 00003df0 76 65 5f 72 65 67 73 20 44 43 44 20 30 3a 44 43 |ve_regs DCD 0:DC| 00003e00 44 20 30 3a 44 43 44 20 30 3a 44 43 44 20 30 3a |D 0:DCD 0:DCD 0:| 00003e10 44 43 44 20 30 3a 44 43 44 20 30 3a 44 43 44 20 |DCD 0:DCD 0:DCD | 00003e20 30 0d 1e aa 04 0d 1e b4 0f 2e 58 31 44 20 45 51 |0.........X1D EQ| 00003e30 55 44 20 30 0d 1e be 0f 2e 58 32 44 20 45 51 55 |UD 0.....X2D EQU| 00003e40 44 20 30 0d 1e c8 04 0d 1e d2 10 2e 44 58 32 31 |D 0.........DX21| 00003e50 20 45 51 55 44 20 30 0d 1e dc 10 2e 44 58 33 32 | EQUD 0.....DX32| 00003e60 20 45 51 55 44 20 30 0d 1e e6 10 2e 44 58 33 31 | EQUD 0.....DX31| 00003e70 20 45 51 55 44 20 30 0d 1e f0 04 0d 1e fa 10 2e | EQUD 0.........| 00003e80 44 59 32 31 20 45 51 55 44 20 30 0d 1f 04 10 2e |DY21 EQUD 0.....| 00003e90 44 59 33 32 20 45 51 55 44 20 30 0d 1f 0e 04 0d |DY32 EQUD 0.....| 00003ea0 1f 18 04 0d 1f 22 13 2e 53 43 52 45 45 4e 44 20 |....."..SCREEND | 00003eb0 45 51 55 44 20 30 0d 1f 2c 13 2e 73 70 64 20 20 |EQUD 0..,..spd | 00003ec0 20 20 20 20 44 43 44 20 30 0d 1f 36 04 0d 1f 40 | DCD 0..6...@| 00003ed0 05 5d 0d 1f 4a 07 3d 22 22 0d 1f 54 04 0d 1f 5e |.]..J.=""..T...^| 00003ee0 04 0d 1f 68 0e dd 20 a4 70 72 65 63 61 6c 63 0d |...h.. .precalc.| 00003ef0 1f 72 0d 5b 4f 50 54 20 50 41 53 53 0d 1f 7c 31 |.r.[OPT PASS..|1| 00003f00 3b f4 20 70 61 72 61 6d 74 65 72 73 20 52 30 2d |;. paramters R0-| 00003f10 52 38 3d 78 30 2c 79 30 2c 78 31 2c 79 31 2c 78 |R8=x0,y0,x1,y1,x| 00003f20 32 2c 79 32 2c 69 30 2c 69 31 2c 69 32 0d 1f 86 |2,y2,i0,i1,i2...| 00003f30 04 0d 1f 90 25 20 20 20 20 20 20 20 20 20 20 53 |....% S| 00003f40 54 4d 46 44 20 20 20 20 20 31 33 21 2c 7b 30 2d |TMFD 13!,{0-| 00003f50 31 32 2c 31 34 7d 0d 1f 9a 1e 20 20 20 20 20 20 |12,14}.... | 00003f60 20 20 20 20 53 54 52 20 20 20 20 20 20 20 31 33 | STR 13| 00003f70 2c 73 70 64 0d 1f a4 04 0d 1f ae 13 4c 44 4d 49 |,spd........LDMI| 00003f80 41 20 32 2c 7b 30 2c 31 2c 32 7d 0d 1f b8 13 4c |A 2,{0,1,2}....L| 00003f90 44 4d 49 41 20 32 2c 7b 34 2c 35 2c 38 7d 0d 1f |DMIA 2,{4,5,8}..| 00003fa0 c2 13 4c 44 4d 49 41 20 31 2c 7b 32 2c 33 2c 37 |..LDMIA 1,{2,3,7| 00003fb0 7d 0d 1f cc 13 4c 44 4d 49 41 20 30 2c 7b 30 2c |}....LDMIA 0,{0,| 00003fc0 31 2c 36 7d 0d 1f d6 04 0d 1f e0 12 4d 4f 56 20 |1,6}........MOV | 00003fd0 36 2c 36 2c 4c 53 4c 20 23 36 0d 1f ea 12 4d 4f |6,6,LSL #6....MO| 00003fe0 56 20 37 2c 37 2c 4c 53 4c 20 23 36 0d 1f f4 12 |V 7,7,LSL #6....| 00003ff0 4d 4f 56 20 38 2c 38 2c 4c 53 4c 20 23 36 0d 1f |MOV 8,8,LSL #6..| 00004000 fe 04 0d 20 08 04 0d 20 12 3a 3b 73 6f 72 74 20 |... ... .:;sort | 00004010 76 65 72 74 69 63 65 73 20 73 6f 20 74 68 61 74 |vertices so that| 00004020 20 79 31 2c 79 32 2c 79 33 20 61 72 65 20 69 6e | y1,y2,y3 are in| 00004030 20 61 73 63 65 6e 64 69 6e 67 20 6f 72 64 65 72 | ascending order| 00004040 0d 20 1c 1d 20 20 20 20 20 20 20 20 20 20 43 4d |. .. CM| 00004050 50 20 20 20 20 20 20 20 59 31 2c 59 32 0d 20 26 |P Y1,Y2. &| 00004060 20 20 20 20 20 20 20 20 20 20 20 42 4c 45 20 20 | BLE | 00004070 20 20 20 20 20 69 6e 6f 72 64 65 72 31 0d 20 30 | inorder1. 0| 00004080 45 3b 20 69 66 20 79 31 20 3e 20 79 32 20 74 68 |E; if y1 > y2 th| 00004090 65 6e 20 73 77 61 70 28 78 31 2c 78 32 29 20 73 |en swap(x1,x2) s| 000040a0 77 61 70 28 79 31 2c 79 32 29 20 73 77 61 70 28 |wap(y1,y2) swap(| 000040b0 75 31 2c 75 32 29 20 73 77 61 70 28 76 31 2c 76 |u1,u2) swap(v1,v| 000040c0 32 29 0d 20 3a 1e 20 20 20 20 20 20 20 20 20 20 |2). :. | 000040d0 82 20 20 20 20 20 20 20 59 31 2c 59 31 2c 59 32 |. Y1,Y1,Y2| 000040e0 0d 20 44 1e 20 20 20 20 20 20 20 20 20 20 82 20 |. D. . | 000040f0 20 20 20 20 20 20 58 31 2c 58 31 2c 58 32 0d 20 | X1,X1,X2. | 00004100 4e 1e 20 20 20 20 20 20 20 20 20 20 82 20 20 20 |N. . | 00004110 20 20 20 20 49 31 2c 49 31 2c 49 32 0d 20 58 1e | I1,I1,I2. X.| 00004120 20 20 20 20 20 20 20 20 20 20 82 20 20 20 20 20 | . | 00004130 20 20 59 32 2c 59 32 2c 59 31 0d 20 62 1e 20 20 | Y2,Y2,Y1. b. | 00004140 20 20 20 20 20 20 20 20 82 20 20 20 20 20 20 20 | . | 00004150 58 32 2c 58 32 2c 58 31 0d 20 6c 1e 20 20 20 20 |X2,X2,X1. l. | 00004160 20 20 20 20 20 20 82 20 20 20 20 20 20 20 49 32 | . I2| 00004170 2c 49 32 2c 49 31 0d 20 76 1e 20 20 20 20 20 20 |,I2,I1. v. | 00004180 20 20 20 20 82 20 20 20 20 20 20 20 59 31 2c 59 | . Y1,Y| 00004190 31 2c 59 32 0d 20 80 1e 20 20 20 20 20 20 20 20 |1,Y2. .. | 000041a0 20 20 82 20 20 20 20 20 20 20 58 31 2c 58 31 2c | . X1,X1,| 000041b0 58 32 0d 20 8a 1e 20 20 20 20 20 20 20 20 20 20 |X2. .. | 000041c0 82 20 20 20 20 20 20 20 49 31 2c 49 31 2c 49 32 |. I1,I1,I2| 000041d0 0d 20 94 0d 2e 69 6e 6f 72 64 65 72 31 0d 20 9e |. ...inorder1. .| 000041e0 1d 20 20 20 20 20 20 20 20 20 20 43 4d 50 20 20 |. CMP | 000041f0 20 20 20 20 20 59 32 2c 59 33 0d 20 a8 20 20 20 | Y2,Y3. . | 00004200 20 20 20 20 20 20 20 20 42 4c 45 20 20 20 20 20 | BLE | 00004210 20 20 69 6e 6f 72 64 65 72 32 0d 20 b2 45 3b 20 | inorder2. .E; | 00004220 69 66 20 79 32 20 3e 20 79 33 20 74 68 65 6e 20 |if y2 > y3 then | 00004230 73 77 61 70 28 78 32 2c 78 33 29 20 73 77 61 70 |swap(x2,x3) swap| 00004240 28 79 32 2c 79 33 29 20 73 77 61 70 28 75 32 2c |(y2,y3) swap(u2,| 00004250 75 33 29 20 73 77 61 70 28 76 32 2c 76 33 29 0d |u3) swap(v2,v3).| 00004260 20 bc 1e 20 20 20 20 20 20 20 20 20 20 82 20 20 | .. . | 00004270 20 20 20 20 20 59 32 2c 59 32 2c 59 33 0d 20 c6 | Y2,Y2,Y3. .| 00004280 1e 20 20 20 20 20 20 20 20 20 20 82 20 20 20 20 |. . | 00004290 20 20 20 58 32 2c 58 32 2c 58 33 0d 20 d0 1e 20 | X2,X2,X3. .. | 000042a0 20 20 20 20 20 20 20 20 20 82 20 20 20 20 20 20 | . | 000042b0 20 49 32 2c 49 32 2c 49 33 0d 20 da 1e 20 20 20 | I2,I2,I3. .. | 000042c0 20 20 20 20 20 20 20 82 20 20 20 20 20 20 20 59 | . Y| 000042d0 33 2c 59 33 2c 59 32 0d 20 e4 1e 20 20 20 20 20 |3,Y3,Y2. .. | 000042e0 20 20 20 20 20 82 20 20 20 20 20 20 20 58 33 2c | . X3,| 000042f0 58 33 2c 58 32 0d 20 ee 1e 20 20 20 20 20 20 20 |X3,X2. .. | 00004300 20 20 20 82 20 20 20 20 20 20 20 49 33 2c 49 33 | . I3,I3| 00004310 2c 49 32 0d 20 f8 1e 20 20 20 20 20 20 20 20 20 |,I2. .. | 00004320 20 82 20 20 20 20 20 20 20 59 32 2c 59 32 2c 59 | . Y2,Y2,Y| 00004330 33 0d 21 02 1e 20 20 20 20 20 20 20 20 20 20 82 |3.!.. .| 00004340 20 20 20 20 20 20 20 58 32 2c 58 32 2c 58 33 0d | X2,X2,X3.| 00004350 21 0c 1e 20 20 20 20 20 20 20 20 20 20 82 20 20 |!.. . | 00004360 20 20 20 20 20 49 32 2c 49 32 2c 49 33 0d 21 16 | I2,I2,I3.!.| 00004370 0d 2e 69 6e 6f 72 64 65 72 32 0d 21 20 1d 20 20 |..inorder2.! . | 00004380 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 | CMP | 00004390 20 20 59 31 2c 59 32 0d 21 2a 20 20 20 20 20 20 | Y1,Y2.!* | 000043a0 20 20 20 20 20 42 4c 45 20 20 20 20 20 20 20 69 | BLE i| 000043b0 6e 6f 72 64 65 72 33 0d 21 34 2c 3b 20 69 66 20 |norder3.!4,; if | 000043c0 28 79 31 20 3e 20 79 32 29 20 6f 72 20 28 79 31 |(y1 > y2) or (y1| 000043d0 3d 79 32 20 61 6e 64 20 78 31 3e 78 32 29 20 74 |=y2 and x1>x2) t| 000043e0 68 65 6e 0d 21 3e 35 3b 20 73 77 61 70 28 78 31 |hen.!>5; swap(x1| 000043f0 2c 78 32 29 20 73 77 61 70 28 79 31 2c 79 32 29 |,x2) swap(y1,y2)| 00004400 20 73 77 61 70 28 75 31 2c 75 32 29 20 73 77 61 | swap(u1,u2) swa| 00004410 70 28 76 31 2c 76 32 29 0d 21 48 1e 20 20 20 20 |p(v1,v2).!H. | 00004420 20 20 20 20 20 20 82 20 20 20 20 20 20 20 59 31 | . Y1| 00004430 2c 59 31 2c 59 32 0d 21 52 1e 20 20 20 20 20 20 |,Y1,Y2.!R. | 00004440 20 20 20 20 82 20 20 20 20 20 20 20 58 31 2c 58 | . X1,X| 00004450 31 2c 58 32 0d 21 5c 1e 20 20 20 20 20 20 20 20 |1,X2.!\. | 00004460 20 20 82 20 20 20 20 20 20 20 49 31 2c 49 31 2c | . I1,I1,| 00004470 49 32 0d 21 66 1e 20 20 20 20 20 20 20 20 20 20 |I2.!f. | 00004480 82 20 20 20 20 20 20 20 59 32 2c 59 32 2c 59 31 |. Y2,Y2,Y1| 00004490 0d 21 70 1e 20 20 20 20 20 20 20 20 20 20 82 20 |.!p. . | 000044a0 20 20 20 20 20 20 58 32 2c 58 32 2c 58 31 0d 21 | X2,X2,X1.!| 000044b0 7a 1e 20 20 20 20 20 20 20 20 20 20 82 20 20 20 |z. . | 000044c0 20 20 20 20 49 32 2c 49 32 2c 49 31 0d 21 84 1e | I2,I2,I1.!..| 000044d0 20 20 20 20 20 20 20 20 20 20 82 20 20 20 20 20 | . | 000044e0 20 20 59 31 2c 59 31 2c 59 32 0d 21 8e 1e 20 20 | Y1,Y1,Y2.!.. | 000044f0 20 20 20 20 20 20 20 20 82 20 20 20 20 20 20 20 | . | 00004500 58 31 2c 58 31 2c 58 32 0d 21 98 1e 20 20 20 20 |X1,X1,X2.!.. | 00004510 20 20 20 20 20 20 82 20 20 20 20 20 20 20 49 31 | . I1| 00004520 2c 49 31 2c 49 32 0d 21 a2 0d 2e 69 6e 6f 72 64 |,I1,I2.!...inord| 00004530 65 72 33 0d 21 ac 1e 20 20 20 20 20 20 20 20 20 |er3.!.. | 00004540 20 53 54 52 20 20 20 20 20 20 20 58 31 2c 58 31 | STR X1,X1| 00004550 44 0d 21 b6 1e 20 20 20 20 20 20 20 20 20 20 53 |D.!.. S| 00004560 54 52 20 20 20 20 20 20 20 58 32 2c 58 32 44 0d |TR X2,X2D.| 00004570 21 c0 1e 20 20 20 20 20 20 20 20 20 20 53 54 52 |!.. STR| 00004580 20 20 20 20 20 20 20 49 31 2c 49 31 44 0d 21 ca | I1,I1D.!.| 00004590 20 20 20 20 20 20 20 20 20 20 20 53 55 42 20 20 | SUB | 000045a0 20 20 20 20 20 58 32 2c 58 32 2c 58 31 0d 21 d4 | X2,X2,X1.!.| 000045b0 20 20 20 20 20 20 20 20 20 20 20 53 55 42 20 20 | SUB | 000045c0 20 20 20 20 20 59 32 2c 59 32 2c 59 31 0d 21 de | Y2,Y2,Y1.!.| 000045d0 20 20 20 20 20 20 20 20 20 20 20 53 55 42 20 20 | SUB | 000045e0 20 20 20 20 20 58 33 2c 58 33 2c 58 31 0d 21 e8 | X3,X3,X1.!.| 000045f0 20 20 20 20 20 20 20 20 20 20 20 53 55 42 20 20 | SUB | 00004600 20 20 20 20 20 59 33 2c 59 33 2c 59 31 0d 21 f2 | Y3,Y3,Y1.!.| 00004610 20 20 20 20 20 20 20 20 20 20 20 53 55 42 20 20 | SUB | 00004620 20 20 20 20 20 49 32 2c 49 32 2c 49 31 0d 21 fc | I2,I2,I1.!.| 00004630 20 20 20 20 20 20 20 20 20 20 20 53 55 42 20 20 | SUB | 00004640 20 20 20 20 20 49 33 2c 49 33 2c 49 31 0d 22 06 | I3,I3,I1.".| 00004650 04 0d 22 10 2a 3b 20 73 63 72 65 65 6e 27 3d 73 |..".*; screen'=s| 00004660 63 72 65 65 6e 20 2b 20 33 32 30 2a 79 31 20 20 |creen + 320*y1 | 00004670 20 20 28 6d 6f 64 65 20 31 33 29 0d 22 1a 27 20 | (mode 13).".' | 00004680 20 20 20 20 20 20 20 20 20 a4 61 64 72 20 20 20 | .adr | 00004690 20 20 28 53 43 52 45 45 4e 2c 53 43 52 45 45 4e | (SCREEN,SCREEN| 000046a0 32 29 0d 22 24 27 20 20 20 20 20 20 20 20 20 20 |2)."$' | 000046b0 4c 44 52 20 20 20 20 20 20 20 53 43 52 45 45 4e |LDR SCREEN| 000046c0 2c 5b 53 43 52 45 45 4e 5d 0d 22 2e 28 20 20 20 |,[SCREEN].".( | 000046d0 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 20 | ADD | 000046e0 20 54 6d 70 2c 59 31 2c 59 31 2c 4c 53 4c 20 23 | Tmp,Y1,Y1,LSL #| 000046f0 32 0d 22 38 32 20 20 20 20 20 20 20 20 20 20 41 |2."82 A| 00004700 44 44 20 20 20 20 20 20 20 53 43 52 45 45 4e 2c |DD SCREEN,| 00004710 53 43 52 45 45 4e 2c 54 6d 70 2c 4c 53 4c 20 23 |SCREEN,Tmp,LSL #| 00004720 36 2b 31 0d 22 42 26 20 20 20 20 20 20 20 20 20 |6+1."B& | 00004730 20 53 54 52 20 20 20 20 20 20 20 53 43 52 45 45 | STR SCREE| 00004740 4e 2c 53 43 52 45 45 4e 44 0d 22 4c 04 0d 22 56 |N,SCREEND."L.."V| 00004750 24 20 20 20 20 20 20 20 20 20 20 a4 61 64 72 20 |$ .adr | 00004760 20 20 20 20 28 48 65 6c 70 2c 49 4e 56 45 52 53 | (Help,INVERS| 00004770 29 0d 22 60 1f 20 20 20 20 20 20 20 20 20 20 53 |)."`. S| 00004780 54 52 20 20 20 20 20 20 20 59 32 2c 44 59 32 31 |TR Y2,DY21| 00004790 0d 22 6a 11 3b 20 63 61 6c 63 20 20 78 32 2f 79 |."j.; calc x2/y| 000047a0 32 0d 22 74 2c 20 20 20 20 20 20 20 20 20 20 4c |2."t, L| 000047b0 44 52 20 20 20 20 20 20 20 54 6d 70 2c 5b 48 65 |DR Tmp,[He| 000047c0 6c 70 2c 59 32 2c 4c 53 4c 20 23 32 5d 0d 22 7e |lp,Y2,LSL #2]."~| 000047d0 22 20 20 20 20 20 20 20 20 20 20 4d 55 4c 20 20 |" MUL | 000047e0 20 20 20 20 20 54 6d 70 2c 58 32 2c 54 6d 70 0d | Tmp,X2,Tmp.| 000047f0 22 88 26 20 20 20 20 20 20 20 20 20 20 4d 4f 56 |".& MOV| 00004800 20 20 20 20 20 20 20 54 6d 70 2c 54 6d 70 2c 41 | Tmp,Tmp,A| 00004810 53 52 20 23 39 0d 22 92 20 20 20 20 20 20 20 20 |SR #9.". | 00004820 20 20 20 53 54 52 20 20 20 20 20 20 20 54 6d 70 | STR Tmp| 00004830 2c 44 58 32 31 0d 22 9c 20 20 20 20 20 20 20 20 |,DX21.". | 00004840 20 20 20 53 55 42 20 20 20 20 20 20 20 59 31 2c | SUB Y1,| 00004850 59 33 2c 59 32 0d 22 a6 1f 20 20 20 20 20 20 20 |Y3,Y2.".. | 00004860 20 20 20 53 54 52 20 20 20 20 20 20 20 59 31 2c | STR Y1,| 00004870 44 59 33 32 0d 22 b0 1a 3b 20 63 61 6c 63 20 28 |DY32."..; calc (| 00004880 78 33 2d 78 32 29 2f 28 79 33 2d 79 32 29 0d 22 |x3-x2)/(y3-y2)."| 00004890 ba 2c 20 20 20 20 20 20 20 20 20 20 4c 44 52 20 |., LDR | 000048a0 20 20 20 20 20 20 54 6d 70 2c 5b 48 65 6c 70 2c | Tmp,[Help,| 000048b0 59 31 2c 4c 53 4c 20 23 32 5d 0d 22 c4 20 20 20 |Y1,LSL #2].". | 000048c0 20 20 20 20 20 20 20 20 53 55 42 20 20 20 20 20 | SUB | 000048d0 20 20 58 31 2c 58 33 2c 58 32 0d 22 ce 22 20 20 | X1,X3,X2."." | 000048e0 20 20 20 20 20 20 20 20 4d 55 4c 20 20 20 20 20 | MUL | 000048f0 20 20 54 6d 70 2c 58 31 2c 54 6d 70 0d 22 d8 26 | Tmp,X1,Tmp.".&| 00004900 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 | MOV | 00004910 20 20 20 20 54 6d 70 2c 54 6d 70 2c 41 53 52 20 | Tmp,Tmp,ASR | 00004920 23 39 0d 22 e2 20 20 20 20 20 20 20 20 20 20 20 |#9.". | 00004930 53 54 52 20 20 20 20 20 20 20 54 6d 70 2c 44 58 |STR Tmp,DX| 00004940 33 32 0d 22 ec 16 3b 20 63 61 6c 63 20 64 78 31 |32."..; calc dx1| 00004950 20 3d 20 78 33 2f 79 33 0d 22 f6 2c 20 20 20 20 | = x3/y3."., | 00004960 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 20 20 | LDR | 00004970 54 6d 70 2c 5b 48 65 6c 70 2c 59 33 2c 4c 53 4c |Tmp,[Help,Y3,LSL| 00004980 20 23 32 5d 0d 23 00 23 20 20 20 20 20 20 20 20 | #2].#.# | 00004990 20 20 4d 55 4c 20 20 20 20 20 20 20 54 6d 70 32 | MUL Tmp2| 000049a0 2c 58 33 2c 54 6d 70 0d 23 0a 28 20 20 20 20 20 |,X3,Tmp.#.( | 000049b0 20 20 20 20 20 4d 4f 56 20 20 20 20 20 20 20 54 | MOV T| 000049c0 6d 70 32 2c 54 6d 70 32 2c 41 53 52 20 23 39 0d |mp2,Tmp2,ASR #9.| 000049d0 23 14 21 20 20 20 20 20 20 20 20 20 20 53 54 52 |#.! STR| 000049e0 20 20 20 20 20 20 20 54 6d 70 32 2c 44 58 33 31 | Tmp2,DX31| 000049f0 0d 23 1e 0e 20 20 20 20 20 20 20 20 20 20 0d 23 |.#.. .#| 00004a00 28 26 3b 20 73 68 61 64 69 6e 67 20 69 6e 63 72 |(&; shading incr| 00004a10 65 6d 65 6e 74 20 69 6e 20 79 20 64 69 72 65 63 |ement in y direc| 00004a20 74 69 6f 6e 0d 23 32 2c 3b 20 63 61 6c 63 20 64 |tion.#2,; calc d| 00004a30 69 31 20 3d 20 69 33 2f 79 33 20 20 20 20 20 20 |i1 = i3/y3 | 00004a40 20 3b 20 69 20 38 2e 36 20 64 69 20 38 2e 31 36 | ; i 8.6 di 8.16| 00004a50 0d 23 3c 32 20 20 20 20 20 20 20 20 20 20 4d 4f |.#<2 MO| 00004a60 56 20 20 20 20 20 20 20 54 6d 70 2c 54 6d 70 2c |V Tmp,Tmp,| 00004a70 4c 53 52 20 23 34 20 20 20 20 20 20 20 3b 20 2e |LSR #4 ; .| 00004a80 31 37 0d 23 46 35 20 20 20 20 20 20 20 20 20 20 |17.#F5 | 00004a90 4d 55 4c 20 20 20 20 20 20 20 49 33 2c 54 6d 70 |MUL I3,Tmp| 00004aa0 2c 49 33 20 20 20 20 20 20 20 20 20 20 20 20 20 |,I3 | 00004ab0 20 3b 20 38 2e 32 33 0d 23 50 33 20 20 20 20 20 | ; 8.23.#P3 | 00004ac0 20 20 20 20 20 4d 4f 56 20 20 20 20 20 20 20 49 | MOV I| 00004ad0 33 2c 49 33 2c 41 53 52 20 23 31 37 2d 31 30 20 |3,I3,ASR #17-10 | 00004ae0 20 20 20 20 3b 20 38 2e 31 36 0d 23 5a 25 20 20 | ; 8.16.#Z% | 00004af0 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 | MOV | 00004b00 20 20 49 31 2c 49 31 2c 4c 53 4c 20 23 31 30 0d | I1,I1,LSL #10.| 00004b10 23 64 27 20 20 20 20 20 20 20 20 20 20 41 44 44 |#d' ADD| 00004b20 20 20 20 20 20 20 20 49 31 2c 49 31 2c 49 33 2c | I1,I1,I3,| 00004b30 41 53 52 20 23 31 0d 23 6e 1e 20 20 20 20 20 20 |ASR #1.#n. | 00004b40 20 20 20 20 53 54 52 20 20 20 20 20 20 20 49 33 | STR I3| 00004b50 2c 49 33 44 0d 23 78 1e 20 20 20 20 20 20 20 20 |,I3D.#x. | 00004b60 20 20 53 54 52 20 20 20 20 20 20 20 49 31 2c 49 | STR I1,I| 00004b70 31 44 0d 23 82 0e 20 20 20 20 20 20 20 20 20 20 |1D.#.. | 00004b80 0d 23 8c 27 3b 20 63 61 6c 63 20 32 5e 32 31 2f |.#.'; calc 2^21/| 00004b90 66 6c 6f 6f 72 28 61 62 73 28 78 32 20 2d 20 64 |floor(abs(x2 - d| 00004ba0 78 31 2a 79 32 29 29 0d 23 96 38 20 20 20 20 20 |x1*y2)).#.8 | 00004bb0 20 20 20 20 20 4d 55 4c 20 20 20 20 20 20 20 54 | MUL T| 00004bc0 6d 70 2c 59 32 2c 54 6d 70 32 20 20 20 20 20 20 |mp,Y2,Tmp2 | 00004bd0 20 20 20 3b 20 28 78 33 2f 79 33 29 2a 79 32 0d | ; (x3/y3)*y2.| 00004be0 23 a0 3b 20 20 20 20 20 20 20 20 20 20 52 53 42 |#.; RSB| 00004bf0 20 20 20 20 20 20 20 54 6d 70 2c 54 6d 70 2c 58 | Tmp,Tmp,X| 00004c00 32 2c 4c 53 4c 20 23 31 32 20 20 3b 20 78 32 2d |2,LSL #12 ; x2-| 00004c10 28 78 33 2f 79 33 29 2a 79 32 0d 23 aa 38 20 20 |(x3/y3)*y2.#.8 | 00004c20 20 20 20 20 20 20 20 20 4d 4f 56 53 20 20 20 20 | MOVS | 00004c30 20 20 54 6d 70 2c 54 6d 70 2c 41 53 52 20 23 31 | Tmp,Tmp,ASR #1| 00004c40 30 20 20 20 20 20 3b 20 69 6e 74 28 20 2e 2e 2e |0 ; int( ...| 00004c50 20 29 0d 23 b4 22 20 20 20 20 20 20 20 20 20 20 | ).#." | 00004c60 52 53 42 4d 49 20 20 20 20 20 54 6d 70 2c 54 6d |RSBMI Tmp,Tm| 00004c70 70 2c 23 30 0d 23 be 34 20 20 20 20 20 20 20 20 |p,#0.#.4 | 00004c80 20 20 4c 44 52 20 20 20 20 20 20 20 54 6d 70 2c | LDR Tmp,| 00004c90 5b 48 65 6c 70 2c 54 6d 70 2c 4c 53 4c 20 23 32 |[Help,Tmp,LSL #2| 00004ca0 5d 20 20 3b 20 2e 31 39 0d 23 c8 0e 20 20 20 20 |] ; .19.#.. | 00004cb0 20 20 20 20 20 20 0d 23 d2 0e 20 20 20 20 20 20 | .#.. | 00004cc0 20 20 20 20 0d 23 dc 26 3b 20 73 68 61 64 69 6e | .#.&; shadin| 00004cd0 67 20 69 6e 63 72 65 6d 65 6e 74 20 69 6e 20 78 |g increment in x| 00004ce0 20 64 69 72 65 63 74 69 6f 6e 0d 23 e6 30 3b 20 | direction.#.0; | 00004cf0 63 61 6c 63 20 64 69 32 20 3d 20 28 69 32 2d 64 |calc di2 = (i2-d| 00004d00 69 31 2a 79 32 29 20 2f 20 61 62 73 28 20 78 32 |i1*y2) / abs( x2| 00004d10 20 2d 20 64 78 31 2a 79 32 29 0d 23 f0 2f 20 20 | - dx1*y2).#./ | 00004d20 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 | MOV | 00004d30 20 20 49 32 2c 49 32 2c 4c 53 4c 20 23 31 30 20 | I2,I2,LSL #10 | 00004d40 20 20 20 3b 20 38 2e 31 36 0d 23 fa 20 20 20 20 | ; 8.16.#. | 00004d50 20 20 20 20 20 20 20 4d 55 4c 20 20 20 20 20 20 | MUL | 00004d60 20 49 33 2c 59 32 2c 49 33 0d 24 04 2d 20 20 20 | I3,Y2,I3.$.- | 00004d70 20 20 20 20 20 20 20 52 53 42 20 20 20 20 20 20 | RSB | 00004d80 20 49 32 2c 49 33 2c 49 32 20 20 20 20 20 20 20 | I2,I3,I2 | 00004d90 3b 20 38 2e 31 36 0d 24 0e 2c 20 20 20 20 20 20 |; 8.16.$., | 00004da0 20 20 20 20 4d 4f 56 20 20 20 20 20 20 20 49 32 | MOV I2| 00004db0 2c 49 32 2c 41 53 52 20 23 38 20 20 20 3b 20 38 |,I2,ASR #8 ; 8| 00004dc0 2e 38 0d 24 18 2d 20 20 20 20 20 20 20 20 20 20 |.8.$.- | 00004dd0 4d 4f 56 20 20 20 20 20 20 20 54 6d 70 2c 54 6d |MOV Tmp,Tm| 00004de0 70 2c 4c 53 52 20 23 33 20 20 3b 20 2e 31 36 0d |p,LSR #3 ; .16.| 00004df0 24 22 2d 20 20 20 20 20 20 20 20 20 20 4d 55 4c |$"- MUL| 00004e00 20 20 20 20 20 20 20 49 32 2c 54 6d 70 2c 49 32 | I2,Tmp,I2| 00004e10 20 20 20 20 20 3b 20 20 38 2e 32 34 0d 24 2c 25 | ; 8.24.$,%| 00004e20 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 | MOV | 00004e30 20 20 20 20 49 32 2c 49 32 2c 41 53 52 20 23 31 | I2,I2,ASR #1| 00004e40 36 0d 24 36 2c 20 20 20 20 20 20 20 20 20 20 53 |6.$6, S| 00004e50 54 52 20 20 20 20 20 20 20 49 32 2c 49 32 44 20 |TR I2,I2D | 00004e60 20 20 20 20 20 20 20 20 3b 20 38 2e 38 0d 24 40 | ; 8.8.$@| 00004e70 1e 20 20 20 20 20 20 20 20 20 20 4c 44 52 20 20 |. LDR | 00004e80 20 20 20 20 20 49 31 2c 49 31 44 0d 24 4a 27 20 | I1,I1D.$J' | 00004e90 20 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 | ADD | 00004ea0 20 20 20 49 31 2c 49 31 2c 49 32 2c 4c 53 4c 20 | I1,I1,I2,LSL | 00004eb0 23 37 0d 24 54 1e 20 20 20 20 20 20 20 20 20 20 |#7.$T. | 00004ec0 53 54 52 20 20 20 20 20 20 20 49 31 2c 49 31 44 |STR I1,I1D| 00004ed0 0d 24 5e 04 0d 24 68 21 20 20 20 20 20 20 20 20 |.$^..$h! | 00004ee0 20 20 4c 44 52 20 20 20 20 20 20 20 4f 2c 53 43 | LDR O,SC| 00004ef0 52 45 45 4e 44 0d 24 72 04 0d 24 7c 1d 20 20 20 |REEND.$r..$|. | 00004f00 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 20 | LDR | 00004f10 20 54 2c 58 31 44 0d 24 86 38 20 20 20 20 20 20 | T,X1D.$.8 | 00004f20 20 20 20 20 4d 4f 56 20 20 20 20 20 20 20 4c 2c | MOV L,| 00004f30 54 2c 4c 53 4c 20 23 31 32 20 20 3b 20 78 6c 20 |T,LSL #12 ; xl | 00004f40 3d 20 28 58 31 2b 30 2e 35 29 2a 46 49 58 0d 24 |= (X1+0.5)*FIX.$| 00004f50 90 22 20 20 20 20 20 20 20 20 20 20 41 44 44 20 |." ADD | 00004f60 20 20 20 20 20 20 4c 2c 4c 2c 23 31 3c 3c 31 31 | L,L,#1<<11| 00004f70 0d 24 9a 31 20 20 20 20 20 20 20 20 20 20 4c 44 |.$.1 LD| 00004f80 52 20 20 20 20 20 20 20 4c 41 2c 44 58 33 31 20 |R LA,DX31 | 00004f90 20 20 20 20 20 3b 20 64 78 6c 20 3d 20 64 78 33 | ; dxl = dx3| 00004fa0 31 0d 24 a4 38 20 20 20 20 20 20 20 20 20 20 4d |1.$.8 M| 00004fb0 4f 56 20 20 20 20 20 20 20 52 2c 4c 20 20 20 20 |OV R,L | 00004fc0 20 20 20 20 20 20 3b 20 78 72 20 3d 20 28 58 31 | ; xr = (X1| 00004fd0 2b 30 2e 35 29 2a 46 49 58 0d 24 ae 31 20 20 20 |+0.5)*FIX.$.1 | 00004fe0 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 20 | LDR | 00004ff0 20 52 41 2c 44 58 32 31 20 20 20 20 20 20 3b 20 | RA,DX21 ; | 00005000 64 78 72 20 3d 20 64 78 32 31 0d 24 b8 36 20 20 |dxr = dx21.$.6 | 00005010 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 | ADD | 00005020 20 20 4c 2c 4c 2c 4c 41 2c 41 53 52 20 23 31 20 | L,L,LA,ASR #1 | 00005030 20 3b 20 78 6c 20 2b 3d 20 30 2e 35 2a 64 78 6c | ; xl += 0.5*dxl| 00005040 0d 24 c2 36 20 20 20 20 20 20 20 20 20 20 41 44 |.$.6 AD| 00005050 44 20 20 20 20 20 20 20 52 2c 52 2c 52 41 2c 41 |D R,R,RA,A| 00005060 53 52 20 23 31 20 20 3b 20 78 72 20 2b 3d 20 30 |SR #1 ; xr += 0| 00005070 2e 35 2a 64 78 72 0d 24 cc 1f 20 20 20 20 20 20 |.5*dxr.$.. | 00005080 20 20 20 20 4c 44 52 20 20 20 20 20 20 20 43 54 | LDR CT| 00005090 2c 44 59 32 31 0d 24 d6 35 20 20 20 20 20 20 20 |,DY21.$.5 | 000050a0 20 20 20 43 4d 50 20 20 20 20 20 20 20 43 54 2c | CMP CT,| 000050b0 23 30 20 20 20 20 20 20 20 20 20 20 3b 20 63 6f |#0 ; co| 000050c0 75 6e 74 20 3d 20 64 79 32 31 0d 24 e0 1d 20 20 |unt = dy21.$.. | 000050d0 20 20 20 20 20 20 20 20 42 4c 4e 45 20 20 20 20 | BLNE | 000050e0 20 20 50 49 45 43 45 0d 24 ea 04 0d 24 f4 1d 20 | PIECE.$...$.. | 000050f0 20 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 | LDR | 00005100 20 20 20 54 2c 58 32 44 0d 24 fe 32 20 20 20 20 | T,X2D.$.2 | 00005110 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 20 20 | MOV | 00005120 52 2c 54 2c 4c 53 4c 20 23 31 32 20 20 20 3b 20 |R,T,LSL #12 ; | 00005130 64 78 72 20 3d 20 64 78 33 32 0d 25 08 39 20 20 |dxr = dx32.%.9 | 00005140 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 | ADD | 00005150 20 20 52 2c 52 2c 23 31 3c 3c 31 31 20 20 20 20 | R,R,#1<<11 | 00005160 3b 20 78 72 20 3d 20 28 58 32 2b 30 2e 35 29 2a |; xr = (X2+0.5)*| 00005170 46 49 58 0d 25 12 1f 20 20 20 20 20 20 20 20 20 |FIX.%.. | 00005180 20 4c 44 52 20 20 20 20 20 20 20 4c 41 2c 44 58 | LDR LA,DX| 00005190 33 31 0d 25 1c 1f 20 20 20 20 20 20 20 20 20 20 |31.%.. | 000051a0 4c 44 52 20 20 20 20 20 20 20 52 41 2c 44 58 33 |LDR RA,DX3| 000051b0 32 0d 25 26 35 20 20 20 20 20 20 20 20 20 20 41 |2.%&5 A| 000051c0 44 44 20 20 20 20 20 20 20 52 2c 52 2c 52 41 2c |DD R,R,RA,| 000051d0 41 53 52 20 23 31 20 20 3b 20 78 72 2b 3d 20 30 |ASR #1 ; xr+= 0| 000051e0 2e 35 2a 64 78 72 0d 25 30 1f 20 20 20 20 20 20 |.5*dxr.%0. | 000051f0 20 20 20 20 4c 44 52 20 20 20 20 20 20 20 43 54 | LDR CT| 00005200 2c 44 59 33 32 0d 25 3a 34 20 20 20 20 20 20 20 |,DY32.%:4 | 00005210 20 20 20 43 4d 50 20 20 20 20 20 20 20 43 54 2c | CMP CT,| 00005220 23 30 20 20 20 20 20 20 20 20 20 20 3b 20 63 6f |#0 ; co| 00005230 75 6e 74 3d 20 64 79 33 32 0d 25 44 1d 20 20 20 |unt= dy32.%D. | 00005240 20 20 20 20 20 20 20 42 4c 4e 45 20 20 20 20 20 | BLNE | 00005250 20 50 49 45 43 45 0d 25 4e 08 2e 65 6e 64 0d 25 | PIECE.%N..end.%| 00005260 58 1e 20 20 20 20 20 20 20 20 20 20 4c 44 52 20 |X. LDR | 00005270 20 20 20 20 20 20 31 33 2c 73 70 64 0d 25 62 26 | 13,spd.%b&| 00005280 20 20 20 20 20 20 20 20 20 20 4c 44 4d 46 44 20 | LDMFD | 00005290 20 20 20 20 31 33 21 2c 7b 30 2d 31 32 2c 50 43 | 13!,{0-12,PC| 000052a0 7d 5e 0d 25 6c 05 5d 0d 25 76 07 3d 22 22 0d 25 |}^.%l.].%v.="".%| 000052b0 80 04 0d 25 8a 04 0d 25 94 0c dd 20 a4 70 69 65 |...%...%... .pie| 000052c0 63 65 0d 25 9e 0d 5b 4f 50 54 20 50 41 53 53 0d |ce.%..[OPT PASS.| 000052d0 25 a8 0e 2e 49 31 44 20 44 43 44 20 30 0d 25 b2 |%...I1D DCD 0.%.| 000052e0 0e 2e 49 32 44 20 44 43 44 20 30 0d 25 bc 0e 2e |..I2D DCD 0.%...| 000052f0 49 33 44 20 44 43 44 20 30 0d 25 c6 04 0d 25 d0 |I3D DCD 0.%...%.| 00005300 20 2e 50 49 45 43 45 20 53 54 4d 46 44 20 20 20 | .PIECE STMFD | 00005310 20 20 31 33 21 2c 7b 43 54 2c 31 34 7d 0d 25 da | 13!,{CT,14}.%.| 00005320 04 0d 25 e4 11 3b 20 63 6c 69 70 20 74 6f 20 74 |..%..; clip to t| 00005330 6f 70 0d 25 ee 22 20 20 20 20 20 20 20 20 20 20 |op.%." | 00005340 a4 61 64 72 20 20 20 20 20 28 54 2c 53 43 52 45 |.adr (T,SCRE| 00005350 45 4e 32 29 0d 25 f8 1d 20 20 20 20 20 20 20 20 |EN2).%.. | 00005360 20 20 4c 44 52 20 20 20 20 20 20 20 54 2c 5b 54 | LDR T,[T| 00005370 5d 0d 26 02 1b 20 20 20 20 20 20 20 20 20 20 43 |].&.. C| 00005380 4d 50 20 20 20 20 20 20 20 4f 2c 54 0d 26 0c 1d |MP O,T.&..| 00005390 20 20 20 20 20 20 20 20 20 20 42 48 53 20 20 20 | BHS | 000053a0 20 20 20 20 65 63 6c 69 70 0d 26 16 09 2e 63 6c | eclip.&...cl| 000053b0 69 70 0d 26 20 1e 20 20 20 20 20 20 20 20 20 20 |ip.& . | 000053c0 41 44 44 20 20 20 20 20 20 20 4c 2c 4c 2c 4c 41 |ADD L,L,LA| 000053d0 0d 26 2a 1e 20 20 20 20 20 20 20 20 20 20 41 44 |.&*. AD| 000053e0 44 20 20 20 20 20 20 20 52 2c 52 2c 52 41 0d 26 |D R,R,RA.&| 000053f0 34 22 20 20 20 20 20 20 20 20 20 20 41 44 44 20 |4" ADD | 00005400 20 20 20 20 20 20 4f 2c 4f 2c 23 33 32 30 2a 32 | O,O,#320*2| 00005410 0d 26 3e 19 3b 20 69 6e 63 72 65 6d 65 6e 74 20 |.&>.; increment | 00005420 79 20 73 68 61 64 69 6e 67 0d 26 48 04 0d 26 52 |y shading.&H..&R| 00005430 1d 20 20 20 20 20 20 20 20 20 20 4c 44 52 20 20 |. LDR | 00005440 20 20 20 20 20 49 2c 49 31 44 0d 26 5c 1d 20 20 | I,I1D.&\. | 00005450 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 | LDR | 00005460 20 20 48 2c 49 33 44 0d 26 66 1d 20 20 20 20 20 | H,I3D.&f. | 00005470 20 20 20 20 20 41 44 44 20 20 20 20 20 20 20 49 | ADD I| 00005480 2c 49 2c 48 0d 26 70 1d 20 20 20 20 20 20 20 20 |,I,H.&p. | 00005490 20 20 53 54 52 20 20 20 20 20 20 20 49 2c 49 31 | STR I,I1| 000054a0 44 0d 26 7a 04 0d 26 84 20 20 20 20 20 20 20 20 |D.&z..&. | 000054b0 20 20 20 53 55 42 53 20 20 20 20 20 20 43 54 2c | SUBS CT,| 000054c0 43 54 2c 23 31 0d 26 8e 23 20 20 20 20 20 20 20 |CT,#1.&.# | 000054d0 20 20 20 4c 44 4d 45 51 46 44 20 20 20 31 33 21 | LDMEQFD 13!| 000054e0 2c 7b 43 54 2c 31 35 7d 0d 26 98 1b 20 20 20 20 |,{CT,15}.&.. | 000054f0 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 20 20 | CMP | 00005500 4f 2c 54 0d 26 a2 1c 20 20 20 20 20 20 20 20 20 |O,T.&.. | 00005510 20 42 4c 4f 20 20 20 20 20 20 20 63 6c 69 70 0d | BLO clip.| 00005520 26 ac 0a 2e 65 63 6c 69 70 0d 26 b6 14 3b 20 63 |&...eclip.&..; c| 00005530 6c 69 70 20 74 6f 20 62 6f 74 74 6f 6d 0d 26 c0 |lip to bottom.&.| 00005540 24 20 20 20 20 20 20 20 20 20 20 41 44 44 20 20 |$ ADD | 00005550 20 20 20 20 20 54 2c 54 2c 23 36 34 30 2a 34 38 | T,T,#640*48| 00005560 30 0d 26 ca 1d 20 20 20 20 20 20 20 20 20 20 53 |0.&.. S| 00005570 55 42 53 20 20 20 20 20 20 54 2c 54 2c 4f 0d 26 |UBS T,T,O.&| 00005580 d4 23 20 20 20 20 20 20 20 20 20 20 4c 44 4d 4c |.# LDML| 00005590 53 46 44 20 20 20 31 33 21 2c 7b 43 54 2c 31 35 |SFD 13!,{CT,15| 000055a0 7d 0d 26 de 27 20 20 20 20 20 20 20 20 20 20 41 |}.&.' A| 000055b0 44 44 20 20 20 20 20 20 20 43 54 2c 43 54 2c 43 |DD CT,CT,C| 000055c0 54 2c 4c 53 4c 20 23 32 0d 26 e8 25 20 20 20 20 |T,LSL #2.&.% | 000055d0 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 20 20 | CMP | 000055e0 43 54 2c 54 2c 4c 53 52 20 23 36 2b 31 0d 26 f2 |CT,T,LSR #6+1.&.| 000055f0 25 20 20 20 20 20 20 20 20 20 20 4d 4f 56 48 49 |% MOVHI| 00005600 20 20 20 20 20 43 54 2c 54 2c 4c 53 52 20 23 36 | CT,T,LSR #6| 00005610 2b 31 0d 26 fc 3f 20 20 20 20 20 20 20 20 20 20 |+1.&.? | 00005620 43 4d 50 20 20 20 20 20 20 20 4c 2c 52 20 20 20 |CMP L,R | 00005630 20 20 20 20 20 20 20 3b 20 6c 65 66 74 20 6f 72 | ; left or| 00005640 20 72 69 67 68 74 20 6f 72 69 65 6e 74 65 64 20 | right oriented | 00005650 3f 0d 27 06 1e 20 20 20 20 20 20 20 20 20 20 42 |?.'.. B| 00005660 47 54 20 20 20 20 20 20 20 73 70 61 6e 5f 32 0d |GT span_2.| 00005670 27 10 1c 20 20 20 20 20 20 20 20 20 20 42 41 4c |'.. BAL| 00005680 20 20 20 20 20 20 20 73 70 61 6e 0d 27 1a 0c 2e | span.'...| 00005690 65 6e 64 73 70 61 6e 0d 27 24 22 20 20 20 20 20 |endspan.'$" | 000056a0 20 20 20 20 20 41 44 44 20 20 20 20 20 20 20 4f | ADD O| 000056b0 2c 4f 2c 23 33 32 30 2a 32 0d 27 2e 1e 20 20 20 |,O,#320*2.'.. | 000056c0 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 20 | ADD | 000056d0 20 4c 2c 4c 2c 4c 41 0d 27 38 1e 20 20 20 20 20 | L,L,LA.'8. | 000056e0 20 20 20 20 20 41 44 44 20 20 20 20 20 20 20 52 | ADD R| 000056f0 2c 52 2c 52 41 0d 27 42 20 20 20 20 20 20 20 20 |,R,RA.'B | 00005700 20 20 20 53 55 42 53 20 20 20 20 20 20 43 54 2c | SUBS CT,| 00005710 43 54 2c 23 35 0d 27 4c 19 3b 20 69 6e 63 72 65 |CT,#5.'L.; incre| 00005720 6d 65 6e 74 20 79 20 73 68 61 64 69 6e 67 0d 27 |ment y shading.'| 00005730 56 04 0d 27 60 1d 20 20 20 20 20 20 20 20 20 20 |V..'`. | 00005740 4c 44 52 20 20 20 20 20 20 20 54 2c 49 31 44 0d |LDR T,I1D.| 00005750 27 6a 1d 20 20 20 20 20 20 20 20 20 20 4c 44 52 |'j. LDR| 00005760 20 20 20 20 20 20 20 49 2c 49 33 44 0d 27 74 1d | I,I3D.'t.| 00005770 20 20 20 20 20 20 20 20 20 20 41 44 44 20 20 20 | ADD | 00005780 20 20 20 20 49 2c 49 2c 54 0d 27 7e 1d 20 20 20 | I,I,T.'~. | 00005790 20 20 20 20 20 20 20 53 54 52 20 20 20 20 20 20 | STR | 000057a0 20 49 2c 49 31 44 0d 27 88 04 0d 27 92 23 20 20 | I,I1D.'...'.# | 000057b0 20 20 20 20 20 20 20 20 4c 44 4d 45 51 46 44 20 | LDMEQFD | 000057c0 20 20 31 33 21 2c 7b 43 54 2c 31 35 7d 0d 27 9c | 13!,{CT,15}.'.| 000057d0 09 2e 73 70 61 6e 0d 27 a6 04 0d 27 b0 04 0d 27 |..span.'...'...'| 000057e0 ba 13 3b 20 63 6c 69 70 20 74 6f 20 72 69 67 68 |..; clip to righ| 000057f0 74 0d 27 c4 22 20 20 20 20 20 20 20 20 20 20 43 |t.'." C| 00005800 4d 50 20 20 20 20 20 20 20 52 2c 23 36 34 30 3c |MP R,#640<| 00005810 3c 31 32 0d 27 ce 26 20 20 20 20 20 20 20 20 20 |<12.'.& | 00005820 20 41 44 44 20 20 20 20 20 20 20 58 52 2c 4f 2c | ADD XR,O,| 00005830 52 2c 41 53 52 20 23 31 32 0d 27 d8 23 20 20 20 |R,ASR #12.'.# | 00005840 20 20 20 20 20 20 20 41 44 44 47 54 20 20 20 20 | ADDGT | 00005850 20 58 52 2c 4f 2c 23 33 32 30 2a 32 0d 27 e2 12 | XR,O,#320*2.'..| 00005860 3b 20 43 6c 69 70 20 74 6f 20 6c 65 66 74 0d 27 |; Clip to left.'| 00005870 ec 23 20 20 20 20 20 20 20 20 20 20 4d 4f 56 53 |.# MOVS| 00005880 20 20 20 20 20 20 54 2c 4c 2c 41 53 52 20 23 31 | T,L,ASR #1| 00005890 32 0d 27 f6 1e 20 20 20 20 20 20 20 20 20 20 41 |2.'.. A| 000058a0 44 44 20 20 20 20 20 20 20 58 4c 2c 4f 2c 54 0d |DD XL,O,T.| 000058b0 28 00 1c 20 20 20 20 20 20 20 20 20 20 4d 4f 56 |(.. MOV| 000058c0 4c 54 20 20 20 20 20 58 4c 2c 4f 0d 28 0a 1e 20 |LT XL,O.(.. | 000058d0 20 20 20 20 20 20 20 20 20 52 53 42 4d 49 20 20 | RSBMI | 000058e0 20 20 20 54 2c 54 2c 23 30 0d 28 14 04 0d 28 1e | T,T,#0.(...(.| 000058f0 04 0d 28 28 29 3b 20 4c 6f 61 64 20 6c 69 6e 65 |..((); Load line| 00005900 20 73 68 61 64 65 20 61 6e 64 20 73 68 61 64 65 | shade and shade| 00005910 20 69 6e 63 72 65 6d 65 6e 74 0d 28 32 2e 20 20 | increment.(2. | 00005920 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 | LDR | 00005930 20 20 49 2c 49 31 44 20 20 20 20 20 20 20 20 20 | I,I1D | 00005940 20 20 3b 20 31 30 2e 34 0d 28 3c 22 20 20 20 20 | ; 10.4.(<" | 00005950 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 20 20 | MOV | 00005960 49 2c 49 2c 41 53 52 20 23 38 0d 28 46 2e 20 20 |I,I,ASR #8.(F. | 00005970 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 | LDR | 00005980 20 20 48 2c 49 32 44 20 20 20 20 20 20 20 20 20 | H,I2D | 00005990 20 20 3b 20 31 30 2e 34 0d 28 50 1f 20 20 20 20 | ; 10.4.(P. | 000059a0 20 20 20 20 20 20 4d 4c 41 4d 49 20 20 20 20 20 | MLAMI | 000059b0 49 2c 54 2c 48 2c 49 0d 28 5a 04 0d 28 64 21 20 |I,T,H,I.(Z..(d! | 000059c0 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 | MOV | 000059d0 20 20 54 2c 4c 2c 41 53 52 20 23 34 0d 28 6e 1d | T,L,ASR #4.(n.| 000059e0 20 20 20 20 20 20 20 20 20 80 20 20 20 20 20 20 | . | 000059f0 20 54 2c 54 2c 23 32 35 35 0d 28 78 1c 20 20 20 | T,T,#255.(x. | 00005a00 20 20 20 20 20 20 4d 55 4c 20 20 20 20 20 20 20 | MUL | 00005a10 54 2c 48 2c 54 0d 28 82 23 20 20 20 20 20 20 20 |T,H,T.(.# | 00005a20 20 20 53 55 42 20 20 20 20 20 20 20 49 2c 49 2c | SUB I,I,| 00005a30 54 2c 41 53 52 20 23 38 0d 28 8c 04 0d 28 96 30 |T,ASR #8.(...(.0| 00005a40 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 | MOV | 00005a50 20 20 20 20 49 2c 49 2c 4c 53 4c 20 23 31 36 20 | I,I,LSL #16 | 00005a60 20 20 20 20 20 3b 20 31 30 2e 32 32 0d 28 a0 30 | ; 10.22.(.0| 00005a70 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 | MOV | 00005a80 20 20 20 20 48 2c 48 2c 4c 53 4c 20 23 31 36 20 | H,H,LSL #16 | 00005a90 20 20 20 20 20 3b 20 31 30 2e 32 32 0d 28 aa 25 | ; 10.22.(.%| 00005aa0 20 20 20 20 20 20 20 20 20 20 41 44 44 20 20 20 | ADD | 00005ab0 20 20 20 20 49 2c 49 2c 48 2c 4c 53 52 20 23 31 | I,I,H,LSR #1| 00005ac0 36 0d 28 b4 04 0d 28 be 1f 20 20 20 20 20 20 20 |6.(...(.. | 00005ad0 20 20 20 53 55 42 20 20 20 20 20 20 20 54 2c 58 | SUB T,X| 00005ae0 52 2c 58 4c 0d 28 c8 1c 20 20 20 20 20 20 20 20 |R,XL.(.. | 00005af0 20 20 43 4d 50 20 20 20 20 20 20 20 54 2c 23 33 | CMP T,#3| 00005b00 0d 28 d2 21 20 20 20 20 20 20 20 20 20 20 42 4c |.(.! BL| 00005b10 45 20 20 20 20 20 20 20 73 6d 61 6c 6c 73 70 61 |E smallspa| 00005b20 6e 0d 28 dc 1d 20 20 20 20 20 20 20 20 20 20 54 |n.(.. T| 00005b30 53 54 20 20 20 20 20 20 20 58 4c 2c 23 33 0d 28 |ST XL,#3.(| 00005b40 e6 20 20 20 20 20 20 20 20 20 20 20 42 45 51 20 |. BEQ | 00005b50 20 20 20 20 20 20 65 6e 64 6c 6f 6f 70 31 0d 28 | endloop1.(| 00005b60 f0 1a 2e 6c 6f 6f 70 31 20 20 20 20 a4 6d 61 70 |...loop1 .map| 00005b70 62 79 74 65 28 43 31 29 0d 28 fa 22 20 20 20 20 |byte(C1).(." | 00005b80 20 20 20 20 20 20 53 54 52 42 20 20 20 20 20 20 | STRB | 00005b90 43 31 2c 5b 58 4c 5d 2c 23 31 0d 29 04 1d 20 20 |C1,[XL],#1.).. | 00005ba0 20 20 20 20 20 20 20 20 54 53 54 20 20 20 20 20 | TST | 00005bb0 20 20 58 4c 2c 23 33 0d 29 0e 1d 20 20 20 20 20 | XL,#3.).. | 00005bc0 20 20 20 20 20 42 4e 45 20 20 20 20 20 20 20 6c | BNE l| 00005bd0 6f 6f 70 31 0d 29 18 04 0d 29 22 1f 2e 65 6e 64 |oop1.)...)"..end| 00005be0 6c 6f 6f 70 31 20 53 55 42 20 20 20 20 20 20 20 |loop1 SUB | 00005bf0 48 2c 58 52 2c 58 4c 0d 29 2c 22 20 20 20 20 20 |H,XR,XL.)," | 00005c00 20 20 20 20 20 4d 4f 56 53 20 20 20 20 20 20 48 | MOVS H| 00005c10 2c 48 2c 4c 53 52 20 23 33 0d 29 36 1c 20 20 20 |,H,LSR #3.)6. | 00005c20 20 20 20 20 20 20 20 42 43 43 20 20 20 20 20 20 | BCC | 00005c30 20 64 6f 69 74 0d 29 40 1a 20 20 20 20 20 20 20 | doit.)@. | 00005c40 20 20 20 a4 6d 61 70 62 79 74 65 28 43 31 29 0d | .mapbyte(C1).| 00005c50 29 4a 19 20 20 20 20 20 20 20 20 20 20 a4 6d 61 |)J. .ma| 00005c60 70 62 79 74 65 28 54 29 0d 29 54 26 20 20 20 20 |pbyte(T).)T& | 00005c70 20 20 20 20 20 20 41 44 44 20 20 20 20 20 20 20 | ADD | 00005c80 43 31 2c 43 31 2c 54 2c 4c 53 4c 20 23 38 0d 29 |C1,C1,T,LSL #8.)| 00005c90 5e 19 20 20 20 20 20 20 20 20 20 20 a4 6d 61 70 |^. .map| 00005ca0 62 79 74 65 28 54 29 0d 29 68 27 20 20 20 20 20 |byte(T).)h' | 00005cb0 20 20 20 20 20 41 44 44 20 20 20 20 20 20 20 43 | ADD C| 00005cc0 31 2c 43 31 2c 54 2c 4c 53 4c 20 23 31 36 0d 29 |1,C1,T,LSL #16.)| 00005cd0 72 19 20 20 20 20 20 20 20 20 20 20 a4 6d 61 70 |r. .map| 00005ce0 62 79 74 65 28 54 29 0d 29 7c 27 20 20 20 20 20 |byte(T).)|' | 00005cf0 20 20 20 20 20 41 44 44 20 20 20 20 20 20 20 43 | ADD C| 00005d00 31 2c 43 31 2c 54 2c 4c 53 4c 20 23 32 34 0d 29 |1,C1,T,LSL #24.)| 00005d10 86 22 20 20 20 20 20 20 20 20 20 20 53 54 52 20 |." STR | 00005d20 20 20 20 20 20 20 43 31 2c 5b 58 4c 5d 2c 23 34 | C1,[XL],#4| 00005d30 0d 29 90 1c 20 20 20 20 20 20 20 20 20 20 43 4d |.).. CM| 00005d40 50 20 20 20 20 20 20 20 48 2c 23 30 0d 29 9a 21 |P H,#0.).!| 00005d50 2e 64 6f 69 74 20 20 20 20 20 42 45 51 20 20 20 |.doit BEQ | 00005d60 20 20 20 20 73 6d 61 6c 6c 73 70 61 6e 0d 29 a4 | smallspan.).| 00005d70 04 0d 29 ae 1a 2e 6c 6f 6f 70 32 20 20 20 20 a4 |..)...loop2 .| 00005d80 6d 61 70 62 79 74 65 28 43 31 29 0d 29 b8 19 20 |mapbyte(C1).).. | 00005d90 20 20 20 20 20 20 20 20 20 a4 6d 61 70 62 79 74 | .mapbyt| 00005da0 65 28 54 29 0d 29 c2 26 20 20 20 20 20 20 20 20 |e(T).).& | 00005db0 20 20 41 44 44 20 20 20 20 20 20 20 43 31 2c 43 | ADD C1,C| 00005dc0 31 2c 54 2c 4c 53 4c 20 23 38 0d 29 cc 19 20 20 |1,T,LSL #8.).. | 00005dd0 20 20 20 20 20 20 20 20 a4 6d 61 70 62 79 74 65 | .mapbyte| 00005de0 28 54 29 0d 29 d6 27 20 20 20 20 20 20 20 20 20 |(T).).' | 00005df0 20 41 44 44 20 20 20 20 20 20 20 43 31 2c 43 31 | ADD C1,C1| 00005e00 2c 54 2c 4c 53 4c 20 23 31 36 0d 29 e0 19 20 20 |,T,LSL #16.).. | 00005e10 20 20 20 20 20 20 20 20 a4 6d 61 70 62 79 74 65 | .mapbyte| 00005e20 28 54 29 0d 29 ea 27 20 20 20 20 20 20 20 20 20 |(T).).' | 00005e30 20 41 44 44 20 20 20 20 20 20 20 43 31 2c 43 31 | ADD C1,C1| 00005e40 2c 54 2c 4c 53 4c 20 23 32 34 0d 29 f4 1a 20 20 |,T,LSL #24.).. | 00005e50 20 20 20 20 20 20 20 20 a4 6d 61 70 62 79 74 65 | .mapbyte| 00005e60 28 43 32 29 0d 29 fe 19 20 20 20 20 20 20 20 20 |(C2).).. | 00005e70 20 20 a4 6d 61 70 62 79 74 65 28 54 29 0d 2a 08 | .mapbyte(T).*.| 00005e80 26 20 20 20 20 20 20 20 20 20 20 41 44 44 20 20 |& ADD | 00005e90 20 20 20 20 20 43 32 2c 43 32 2c 54 2c 4c 53 4c | C2,C2,T,LSL| 00005ea0 20 23 38 0d 2a 12 19 20 20 20 20 20 20 20 20 20 | #8.*.. | 00005eb0 20 a4 6d 61 70 62 79 74 65 28 54 29 0d 2a 1c 27 | .mapbyte(T).*.'| 00005ec0 20 20 20 20 20 20 20 20 20 20 41 44 44 20 20 20 | ADD | 00005ed0 20 20 20 20 43 32 2c 43 32 2c 54 2c 4c 53 4c 20 | C2,C2,T,LSL | 00005ee0 23 31 36 0d 2a 26 19 20 20 20 20 20 20 20 20 20 |#16.*&. | 00005ef0 20 a4 6d 61 70 62 79 74 65 28 54 29 0d 2a 30 27 | .mapbyte(T).*0'| 00005f00 20 20 20 20 20 20 20 20 20 20 41 44 44 20 20 20 | ADD | 00005f10 20 20 20 20 43 32 2c 43 32 2c 54 2c 4c 53 4c 20 | C2,C2,T,LSL | 00005f20 23 32 34 0d 2a 3a 25 20 20 20 20 20 20 20 20 20 |#24.*:% | 00005f30 20 53 54 4d 49 41 20 20 20 20 20 28 58 4c 29 21 | STMIA (XL)!| 00005f40 2c 7b 43 31 2c 43 32 7d 0d 2a 44 1e 20 20 20 20 |,{C1,C2}.*D. | 00005f50 20 20 20 20 20 20 53 55 42 53 20 20 20 20 20 20 | SUBS | 00005f60 48 2c 48 2c 23 31 0d 2a 4e 1d 20 20 20 20 20 20 |H,H,#1.*N. | 00005f70 20 20 20 20 42 4e 45 20 20 20 20 20 20 20 6c 6f | BNE lo| 00005f80 6f 70 32 0d 2a 58 0e 2e 73 6d 61 6c 6c 73 70 61 |op2.*X..smallspa| 00005f90 6e 0d 2a 62 1d 20 20 20 20 20 20 20 20 20 20 43 |n.*b. C| 00005fa0 4d 50 20 20 20 20 20 20 20 58 4c 2c 58 52 0d 2a |MP XL,XR.*| 00005fb0 6c 1f 20 20 20 20 20 20 20 20 20 20 42 47 45 20 |l. BGE | 00005fc0 20 20 20 20 20 20 65 6e 64 73 70 61 6e 0d 2a 76 | endspan.*v| 00005fd0 1a 20 20 20 20 20 20 20 20 20 20 a4 6d 61 70 62 |. .mapb| 00005fe0 79 74 65 28 43 31 29 0d 2a 80 22 20 20 20 20 20 |yte(C1).*." | 00005ff0 20 20 20 20 20 53 54 52 42 20 20 20 20 20 20 43 | STRB C| 00006000 31 2c 5b 58 4c 5d 2c 23 31 0d 2a 8a 1d 20 20 20 |1,[XL],#1.*.. | 00006010 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 20 | CMP | 00006020 20 58 4c 2c 58 52 0d 2a 94 1f 20 20 20 20 20 20 | XL,XR.*.. | 00006030 20 20 20 20 42 45 51 20 20 20 20 20 20 20 65 6e | BEQ en| 00006040 64 73 70 61 6e 0d 2a 9e 1a 20 20 20 20 20 20 20 |dspan.*.. | 00006050 20 20 20 a4 6d 61 70 62 79 74 65 28 43 31 29 0d | .mapbyte(C1).| 00006060 2a a8 22 20 20 20 20 20 20 20 20 20 20 53 54 52 |*." STR| 00006070 42 20 20 20 20 20 20 43 31 2c 5b 58 4c 5d 2c 23 |B C1,[XL],#| 00006080 31 0d 2a b2 1d 20 20 20 20 20 20 20 20 20 20 43 |1.*.. C| 00006090 4d 50 20 20 20 20 20 20 20 58 4c 2c 58 52 0d 2a |MP XL,XR.*| 000060a0 bc 1f 20 20 20 20 20 20 20 20 20 20 42 45 51 20 |.. BEQ | 000060b0 20 20 20 20 20 20 65 6e 64 73 70 61 6e 0d 2a c6 | endspan.*.| 000060c0 1a 20 20 20 20 20 20 20 20 20 20 a4 6d 61 70 62 |. .mapb| 000060d0 79 74 65 28 43 31 29 0d 2a d0 22 20 20 20 20 20 |yte(C1).*." | 000060e0 20 20 20 20 20 53 54 52 42 20 20 20 20 20 20 43 | STRB C| 000060f0 31 2c 5b 58 4c 5d 2c 23 31 0d 2a da 1f 20 20 20 |1,[XL],#1.*.. | 00006100 20 20 20 20 20 20 20 42 41 4c 20 20 20 20 20 20 | BAL | 00006110 20 65 6e 64 73 70 61 6e 0d 2a e4 0e 2e 65 6e 64 | endspan.*...end| 00006120 73 70 61 6e 5f 32 0d 2a ee 22 20 20 20 20 20 20 |span_2.*." | 00006130 20 20 20 20 41 44 44 20 20 20 20 20 20 20 4f 2c | ADD O,| 00006140 4f 2c 23 33 32 30 2a 32 0d 2a f8 1e 20 20 20 20 |O,#320*2.*.. | 00006150 20 20 20 20 20 20 41 44 44 20 20 20 20 20 20 20 | ADD | 00006160 4c 2c 4c 2c 4c 41 0d 2b 02 1e 20 20 20 20 20 20 |L,L,LA.+.. | 00006170 20 20 20 20 41 44 44 20 20 20 20 20 20 20 52 2c | ADD R,| 00006180 52 2c 52 41 0d 2b 0c 20 20 20 20 20 20 20 20 20 |R,RA.+. | 00006190 20 20 53 55 42 53 20 20 20 20 20 20 43 54 2c 43 | SUBS CT,C| 000061a0 54 2c 23 35 0d 2b 16 19 3b 20 69 6e 63 72 65 6d |T,#5.+..; increm| 000061b0 65 6e 74 20 79 20 73 68 61 64 69 6e 67 0d 2b 20 |ent y shading.+ | 000061c0 1d 20 20 20 20 20 20 20 20 20 20 4c 44 52 20 20 |. LDR | 000061d0 20 20 20 20 20 54 2c 49 31 44 0d 2b 2a 1d 20 20 | T,I1D.+*. | 000061e0 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 | LDR | 000061f0 20 20 49 2c 49 33 44 0d 2b 34 1d 20 20 20 20 20 | I,I3D.+4. | 00006200 20 20 20 20 20 41 44 44 20 20 20 20 20 20 20 49 | ADD I| 00006210 2c 49 2c 54 0d 2b 3e 1d 20 20 20 20 20 20 20 20 |,I,T.+>. | 00006220 20 20 53 54 52 20 20 20 20 20 20 20 49 2c 49 31 | STR I,I1| 00006230 44 0d 2b 48 23 20 20 20 20 20 20 20 20 20 20 4c |D.+H# L| 00006240 44 4d 45 51 46 44 20 20 20 31 33 21 2c 7b 43 54 |DMEQFD 13!,{CT| 00006250 2c 31 35 7d 0d 2b 52 0b 2e 73 70 61 6e 5f 32 0d |,15}.+R..span_2.| 00006260 2b 5c 12 3b 20 43 6c 69 70 20 74 6f 20 6c 65 66 |+\.; Clip to lef| 00006270 74 0d 2b 66 23 20 20 20 20 20 20 20 20 20 20 4d |t.+f# M| 00006280 4f 56 53 20 20 20 20 20 20 54 2c 52 2c 41 53 52 |OVS T,R,ASR| 00006290 20 23 31 32 0d 2b 70 26 20 20 20 20 20 20 20 20 | #12.+p& | 000062a0 20 20 41 44 44 50 4c 20 20 20 20 20 58 52 2c 4f | ADDPL XR,O| 000062b0 2c 52 2c 41 53 52 20 23 31 32 0d 2b 7a 1c 20 20 |,R,ASR #12.+z. | 000062c0 20 20 20 20 20 20 20 20 4d 4f 56 4d 49 20 20 20 | MOVMI | 000062d0 20 20 58 52 2c 4f 0d 2b 84 13 3b 20 63 6c 69 70 | XR,O.+..; clip| 000062e0 20 74 6f 20 72 69 67 68 74 0d 2b 8e 20 20 20 20 | to right.+. | 000062f0 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 20 | MOV | 00006300 20 54 2c 23 33 32 30 2a 32 0d 2b 98 25 20 20 20 | T,#320*2.+.% | 00006310 20 20 20 20 20 20 20 52 53 42 53 20 20 20 20 20 | RSBS | 00006320 20 54 2c 54 2c 4c 2c 41 53 52 20 23 31 32 0d 2b | T,T,L,ASR #12.+| 00006330 a2 26 20 20 20 20 20 20 20 20 20 20 41 44 44 20 |.& ADD | 00006340 20 20 20 20 20 20 58 4c 2c 4f 2c 4c 2c 41 53 52 | XL,O,L,ASR| 00006350 20 23 31 32 0d 2b ac 23 20 20 20 20 20 20 20 20 | #12.+.# | 00006360 20 20 41 44 44 50 4c 20 20 20 20 20 58 4c 2c 4f | ADDPL XL,O| 00006370 2c 23 33 32 30 2a 32 0d 2b b6 29 3b 20 4c 6f 61 |,#320*2.+.); Loa| 00006380 64 20 6c 69 6e 65 20 73 68 61 64 65 20 61 6e 64 |d line shade and| 00006390 20 73 68 61 64 65 20 69 6e 63 72 65 6d 65 6e 74 | shade increment| 000063a0 0d 2b c0 1d 20 20 20 20 20 20 20 20 20 20 4c 44 |.+.. LD| 000063b0 52 20 20 20 20 20 20 20 49 2c 49 31 44 0d 2b ca |R I,I1D.+.| 000063c0 22 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 20 |" MOV | 000063d0 20 20 20 20 20 49 2c 49 2c 41 53 52 20 23 38 0d | I,I,ASR #8.| 000063e0 2b d4 1d 20 20 20 20 20 20 20 20 20 20 4c 44 52 |+.. LDR| 000063f0 20 20 20 20 20 20 20 48 2c 49 32 44 0d 2b de 1f | H,I2D.+..| 00006400 20 20 20 20 20 20 20 20 20 20 4d 4c 41 50 4c 20 | MLAPL | 00006410 20 20 20 20 49 2c 54 2c 48 2c 49 0d 2b e8 04 0d | I,T,H,I.+...| 00006420 2b f2 22 20 20 20 20 20 20 20 20 20 20 4d 4f 56 |+." MOV| 00006430 20 20 20 20 20 20 20 54 2c 4c 2c 41 53 52 20 23 | T,L,ASR #| 00006440 34 0d 2b fc 1e 20 20 20 20 20 20 20 20 20 20 80 |4.+.. .| 00006450 20 20 20 20 20 20 20 54 2c 54 2c 23 32 35 35 0d | T,T,#255.| 00006460 2c 06 1d 20 20 20 20 20 20 20 20 20 20 4d 55 4c |,.. MUL| 00006470 20 20 20 20 20 20 20 54 2c 48 2c 54 0d 2c 10 2e | T,H,T.,..| 00006480 20 20 20 20 20 20 20 20 20 20 41 44 44 20 20 20 | ADD | 00006490 20 20 20 20 49 2c 49 2c 54 2c 41 53 52 20 23 38 | I,I,T,ASR #8| 000064a0 20 20 20 20 20 20 20 20 20 20 0d 2c 1a 0e 20 20 | .,.. | 000064b0 20 20 20 20 20 20 20 20 0d 2c 24 23 20 20 20 20 | .,$# | 000064c0 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 20 20 | MOV | 000064d0 49 2c 49 2c 4c 53 4c 20 23 31 36 0d 2c 2e 23 20 |I,I,LSL #16.,.# | 000064e0 20 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 | MOV | 000064f0 20 20 20 48 2c 48 2c 4c 53 4c 20 23 31 36 0d 2c | H,H,LSL #16.,| 00006500 38 24 20 20 20 20 20 20 20 20 20 20 41 44 44 20 |8$ ADD | 00006510 20 20 20 20 20 20 49 2c 49 2c 48 2c 4c 53 52 23 | I,I,H,LSR#| 00006520 31 36 0d 2c 42 1f 20 20 20 20 20 20 20 20 20 20 |16.,B. | 00006530 53 55 42 20 20 20 20 20 20 20 54 2c 58 4c 2c 58 |SUB T,XL,X| 00006540 52 0d 2c 4c 1c 20 20 20 20 20 20 20 20 20 20 43 |R.,L. C| 00006550 4d 50 20 20 20 20 20 20 20 54 2c 23 33 0d 2c 56 |MP T,#3.,V| 00006560 23 20 20 20 20 20 20 20 20 20 20 42 4c 45 20 20 |# BLE | 00006570 20 20 20 20 20 73 6d 61 6c 6c 73 70 61 6e 5f 32 | smallspan_2| 00006580 0d 2c 60 1d 20 20 20 20 20 20 20 20 20 20 54 53 |.,`. TS| 00006590 54 20 20 20 20 20 20 20 58 4c 2c 23 33 0d 2c 6a |T XL,#3.,j| 000065a0 22 20 20 20 20 20 20 20 20 20 20 42 45 51 20 20 |" BEQ | 000065b0 20 20 20 20 20 65 6e 64 6c 6f 6f 70 31 5f 32 0d | endloop1_2.| 000065c0 2c 74 1a 2e 6c 6f 6f 70 31 5f 32 20 20 a4 6d 61 |,t..loop1_2 .ma| 000065d0 70 62 79 74 65 28 43 31 29 0d 2c 7e 24 20 20 20 |pbyte(C1).,~$ | 000065e0 20 20 20 20 20 20 20 53 54 52 42 20 20 20 20 20 | STRB | 000065f0 20 43 31 2c 5b 58 4c 2c 23 2d 31 5d 21 0d 2c 88 | C1,[XL,#-1]!.,.| 00006600 1d 20 20 20 20 20 20 20 20 20 20 54 53 54 20 20 |. TST | 00006610 20 20 20 20 20 58 4c 2c 23 33 0d 2c 92 1f 20 20 | XL,#3.,.. | 00006620 20 20 20 20 20 20 20 20 42 4e 45 20 20 20 20 20 | BNE | 00006630 20 20 6c 6f 6f 70 31 5f 32 0d 2c 9c 0f 2e 65 6e | loop1_2.,...en| 00006640 64 6c 6f 6f 70 31 5f 32 0d 2c a6 1f 20 20 20 20 |dloop1_2.,.. | 00006650 20 20 20 20 20 20 53 55 42 20 20 20 20 20 20 20 | SUB | 00006660 48 2c 58 4c 2c 58 52 0d 2c b0 22 20 20 20 20 20 |H,XL,XR.,." | 00006670 20 20 20 20 20 4d 4f 56 53 20 20 20 20 20 20 48 | MOVS H| 00006680 2c 48 2c 4c 53 52 20 23 33 0d 2c ba 1e 20 20 20 |,H,LSR #3.,.. | 00006690 20 20 20 20 20 20 20 42 43 43 20 20 20 20 20 20 | BCC | 000066a0 20 64 6f 69 74 5f 32 0d 2c c4 1a 20 20 20 20 20 | doit_2.,.. | 000066b0 20 20 20 20 20 a4 6d 61 70 62 79 74 65 28 43 31 | .mapbyte(C1| 000066c0 29 0d 2c ce 19 20 20 20 20 20 20 20 20 20 20 a4 |).,.. .| 000066d0 6d 61 70 62 79 74 65 28 54 29 0d 2c d8 27 20 20 |mapbyte(T).,.' | 000066e0 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 | ADD | 000066f0 20 20 43 31 2c 43 31 2c 54 2c 4c 53 4c 20 23 32 | C1,C1,T,LSL #2| 00006700 34 0d 2c e2 19 20 20 20 20 20 20 20 20 20 20 a4 |4.,.. .| 00006710 6d 61 70 62 79 74 65 28 54 29 0d 2c ec 27 20 20 |mapbyte(T).,.' | 00006720 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 | ADD | 00006730 20 20 43 31 2c 43 31 2c 54 2c 4c 53 4c 20 23 31 | C1,C1,T,LSL #1| 00006740 36 0d 2c f6 19 20 20 20 20 20 20 20 20 20 20 a4 |6.,.. .| 00006750 6d 61 70 62 79 74 65 28 54 29 0d 2d 00 26 20 20 |mapbyte(T).-.& | 00006760 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 | ADD | 00006770 20 20 43 31 2c 54 2c 43 31 2c 52 4f 52 20 23 38 | C1,T,C1,ROR #8| 00006780 0d 2d 0a 24 20 20 20 20 20 20 20 20 20 20 53 54 |.-.$ ST| 00006790 52 20 20 20 20 20 20 20 43 31 2c 5b 58 4c 2c 23 |R C1,[XL,#| 000067a0 2d 34 5d 21 0d 2d 14 1c 20 20 20 20 20 20 20 20 |-4]!.-.. | 000067b0 20 20 43 4d 50 20 20 20 20 20 20 20 48 2c 23 30 | CMP H,#0| 000067c0 0d 2d 1e 23 2e 64 6f 69 74 5f 32 20 20 20 42 45 |.-.#.doit_2 BE| 000067d0 51 20 20 20 20 20 20 20 73 6d 61 6c 6c 73 70 61 |Q smallspa| 000067e0 6e 5f 32 0d 2d 28 0c 2e 6c 6f 6f 70 32 5f 32 0d |n_2.-(..loop2_2.| 000067f0 2d 32 1a 20 20 20 20 20 20 20 20 20 20 a4 6d 61 |-2. .ma| 00006800 70 62 79 74 65 28 43 32 29 0d 2d 3c 19 20 20 20 |pbyte(C2).-<. | 00006810 20 20 20 20 20 20 20 a4 6d 61 70 62 79 74 65 28 | .mapbyte(| 00006820 54 29 0d 2d 46 27 20 20 20 20 20 20 20 20 20 20 |T).-F' | 00006830 41 44 44 20 20 20 20 20 20 20 43 32 2c 43 32 2c |ADD C2,C2,| 00006840 54 2c 4c 53 4c 20 23 32 34 0d 2d 50 19 20 20 20 |T,LSL #24.-P. | 00006850 20 20 20 20 20 20 20 a4 6d 61 70 62 79 74 65 28 | .mapbyte(| 00006860 54 29 0d 2d 5a 27 20 20 20 20 20 20 20 20 20 20 |T).-Z' | 00006870 41 44 44 20 20 20 20 20 20 20 43 32 2c 43 32 2c |ADD C2,C2,| 00006880 54 2c 4c 53 4c 20 23 31 36 0d 2d 64 19 20 20 20 |T,LSL #16.-d. | 00006890 20 20 20 20 20 20 20 a4 6d 61 70 62 79 74 65 28 | .mapbyte(| 000068a0 54 29 0d 2d 6e 26 20 20 20 20 20 20 20 20 20 20 |T).-n& | 000068b0 41 44 44 20 20 20 20 20 20 20 43 32 2c 54 2c 43 |ADD C2,T,C| 000068c0 32 2c 52 4f 52 20 23 38 0d 2d 78 1a 20 20 20 20 |2,ROR #8.-x. | 000068d0 20 20 20 20 20 20 a4 6d 61 70 62 79 74 65 28 43 | .mapbyte(C| 000068e0 31 29 0d 2d 82 19 20 20 20 20 20 20 20 20 20 20 |1).-.. | 000068f0 a4 6d 61 70 62 79 74 65 28 54 29 0d 2d 8c 27 20 |.mapbyte(T).-.' | 00006900 20 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 | ADD | 00006910 20 20 20 43 31 2c 43 31 2c 54 2c 4c 53 4c 20 23 | C1,C1,T,LSL #| 00006920 32 34 0d 2d 96 19 20 20 20 20 20 20 20 20 20 20 |24.-.. | 00006930 a4 6d 61 70 62 79 74 65 28 54 29 0d 2d a0 27 20 |.mapbyte(T).-.' | 00006940 20 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 | ADD | 00006950 20 20 20 43 31 2c 43 31 2c 54 2c 4c 53 4c 20 23 | C1,C1,T,LSL #| 00006960 31 36 0d 2d aa 19 20 20 20 20 20 20 20 20 20 20 |16.-.. | 00006970 a4 6d 61 70 62 79 74 65 28 54 29 0d 2d b4 26 20 |.mapbyte(T).-.& | 00006980 20 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 | ADD | 00006990 20 20 20 43 31 2c 54 2c 43 31 2c 52 4f 52 20 23 | C1,T,C1,ROR #| 000069a0 38 0d 2d be 25 20 20 20 20 20 20 20 20 20 20 53 |8.-.% S| 000069b0 54 4d 44 42 20 20 20 20 20 28 58 4c 29 21 2c 7b |TMDB (XL)!,{| 000069c0 43 31 2c 43 32 7d 0d 2d c8 1e 20 20 20 20 20 20 |C1,C2}.-.. | 000069d0 20 20 20 20 53 55 42 53 20 20 20 20 20 20 48 2c | SUBS H,| 000069e0 48 2c 23 31 0d 2d d2 1f 20 20 20 20 20 20 20 20 |H,#1.-.. | 000069f0 20 20 42 4e 45 20 20 20 20 20 20 20 6c 6f 6f 70 | BNE loop| 00006a00 32 5f 32 0d 2d dc 10 2e 73 6d 61 6c 6c 73 70 61 |2_2.-...smallspa| 00006a10 6e 5f 32 0d 2d e6 1d 20 20 20 20 20 20 20 20 20 |n_2.-.. | 00006a20 20 43 4d 50 20 20 20 20 20 20 20 58 52 2c 58 4c | CMP XR,XL| 00006a30 0d 2d f0 21 20 20 20 20 20 20 20 20 20 20 42 47 |.-.! BG| 00006a40 45 20 20 20 20 20 20 20 65 6e 64 73 70 61 6e 5f |E endspan_| 00006a50 32 0d 2d fa 1a 20 20 20 20 20 20 20 20 20 20 a4 |2.-.. .| 00006a60 6d 61 70 62 79 74 65 28 43 31 29 0d 2e 04 24 20 |mapbyte(C1)...$ | 00006a70 20 20 20 20 20 20 20 20 20 53 54 52 42 20 20 20 | STRB | 00006a80 20 20 20 43 31 2c 5b 58 4c 2c 23 2d 31 5d 21 0d | C1,[XL,#-1]!.| 00006a90 2e 0e 1d 20 20 20 20 20 20 20 20 20 20 43 4d 50 |... CMP| 00006aa0 20 20 20 20 20 20 20 58 52 2c 58 4c 0d 2e 18 21 | XR,XL...!| 00006ab0 20 20 20 20 20 20 20 20 20 20 42 45 51 20 20 20 | BEQ | 00006ac0 20 20 20 20 65 6e 64 73 70 61 6e 5f 32 0d 2e 22 | endspan_2.."| 00006ad0 1a 20 20 20 20 20 20 20 20 20 20 a4 6d 61 70 62 |. .mapb| 00006ae0 79 74 65 28 43 31 29 0d 2e 2c 24 20 20 20 20 20 |yte(C1)..,$ | 00006af0 20 20 20 20 20 53 54 52 42 20 20 20 20 20 20 43 | STRB C| 00006b00 31 2c 5b 58 4c 2c 23 2d 31 5d 21 0d 2e 36 1d 20 |1,[XL,#-1]!..6. | 00006b10 20 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 | CMP | 00006b20 20 20 20 58 52 2c 58 4c 0d 2e 40 21 20 20 20 20 | XR,XL..@! | 00006b30 20 20 20 20 20 20 42 45 51 20 20 20 20 20 20 20 | BEQ | 00006b40 65 6e 64 73 70 61 6e 5f 32 0d 2e 4a 1a 20 20 20 |endspan_2..J. | 00006b50 20 20 20 20 20 20 20 a4 6d 61 70 62 79 74 65 28 | .mapbyte(| 00006b60 43 31 29 0d 2e 54 24 20 20 20 20 20 20 20 20 20 |C1)..T$ | 00006b70 20 53 54 52 42 20 20 20 20 20 20 43 31 2c 5b 58 | STRB C1,[X| 00006b80 4c 2c 23 2d 31 5d 21 0d 2e 5e 21 20 20 20 20 20 |L,#-1]!..^! | 00006b90 20 20 20 20 20 42 41 4c 20 20 20 20 20 20 20 65 | BAL e| 00006ba0 6e 64 73 70 61 6e 5f 32 0d 2e 68 05 5d 0d 2e 72 |ndspan_2..h.]..r| 00006bb0 07 3d 22 22 0d 2e 7c 04 0d 2e 86 13 dd 20 a4 6d |.=""..|...... .m| 00006bc0 61 70 62 79 74 65 28 72 65 67 29 0d 2e 90 0d 5b |apbyte(reg)....[| 00006bd0 4f 50 54 20 50 41 53 53 0d 2e 9a 21 20 20 20 20 |OPT PASS...! | 00006be0 20 20 4d 4f 56 20 20 20 20 20 20 20 72 65 67 2c | MOV reg,| 00006bf0 49 2c 4c 53 52 20 23 32 34 0d 2e a4 21 20 20 20 |I,LSR #24...! | 00006c00 20 20 20 41 44 44 20 20 20 20 20 20 20 49 2c 49 | ADD I,I| 00006c10 2c 49 2c 4c 53 4c 20 23 31 36 0d 2e ae 05 5d 0d |,I,LSL #16....].| 00006c20 2e b8 08 20 3d 22 22 0d ff |... =""..| 00006c29