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