Home » Archimedes archive » Acorn User » AU 1997-08 B.adf » Regulars » starinfo/Vlietinck/Gouraudhi
starinfo/Vlietinck/Gouraudhi
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/Gouraudhi |
Read OK: | ✔ |
File size: | 38C9 bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10REM >Gouraud 20REM (c) Jan Vlietinck 30 40 50ON ERROR:REPORT:PRINT ERL:END 60 70DEF PROCmain 80DIM Q% 200000 90DIM INVERS 4094*4 100 110PROCcalc_invers 120PROCgouraud_triangle 130PROCmode 140CALL set_mode 150P1=2*PI/3 160FOR I=1 TO 255 170 P=I/256*2*PI 180 R=128*(1+COS(P)) 190 G=128*(1+COS(2*P+P1)) 200 B=128*(1+COS(P-P1)) 210 COLOUR I,R,G,B 220NEXT I 230CALL set 260 270 280REPEAT 290PRINT "1000 RANDOM GOURAUD TRIANGLES" 300PRINT "PRESS A KEY TO START" 310W=GET:CLS 320TIME=0 330!ran=RND 340CALL main 350PRINT "IN ";TIME/100;" SECONDS" 360UNTIL 0 370END 380 390 400 410 420DEF PROCcalc_invers 430K=1<<21 440FOR I=1 TO 4093:INVERS!(4*I)=K/(I+0.5):NEXT 450ENDPROC 460 470 480 490 500 510DEF PROCmode 520X1=0:Y1=1:X2=2:Y2=3:X3=4:Y3=5 530I1=6:I2=7:I3=8 540TEL=9:F=10 550FOR P=0 TO 2 STEP 2 560P%=Q% 570[OPT P 580 590 600.ran EQUD RND 610.nr EQUD 1000 620.main 630STMFD R13!,{R14} 640LDR F,ran 650LDR TEL,nr 660.loopr 670.L1 ADD F,F,F,LSL #8:MOV X1,F,LSR #22:CMP X1,#640:BHS L1 680.K1 ADD F,F,F,LSL #8:MOV Y1,F,LSR #23:CMP Y1,#480:BHS K1 690.L2 ADD F,F,F,LSL #8:MOV X2,F,LSR #22:CMP X2,#640:BHS L2 700.K2 ADD F,F,F,LSL #8:MOV Y2,F,LSR #23:CMP Y2,#480:BHS K2 710.L3 ADD F,F,F,LSL #8:MOV X3,F,LSR #22:CMP X3,#640:BHS L3 720.K3 ADD F,F,F,LSL #8:MOV Y3,F,LSR #23:CMP Y3,#480:BHS K3 730ADD F,F,F,LSL #8:MOV I1,F,LSR #18 740ADD F,F,F,LSL #8:MOV I2,F,LSR #18 750ADD F,F,F,LSL #8:MOV I3,F,LSR #18 760BL gouraud_triangle 770SUBS TEL,TEL,#1 780BNE loopr 790LDMFD R13!,{PC} 800] 810NEXT 820Q%=P% 830ENDPROC 840 850 860 870DEF PROCgouraud_triangle 880LOCAL SF,FIX,SM,FP,I,G 890LOCAL DXD,DYD,TXD,TYD,XD,YD 900 910SF=12:FIX=2^SF 920SM=10 930FP=SF+SM 940 950H=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 960 970X1=0:Y1=1:X2=2:Y2=3:X3=4:Y3=5 980I1=6:I2=7:I3=8 990SCREEN=12:BITMAP=13:Tmp=14 1000 1010A=0:B=1:C=9:D=10:Tmp2=12:Help=13 1020 1030FOR PASS=0 TO 2 STEP 2 1040P%=Q% 1050[OPT PASS 1060.SCREEN1 EQUD 148:EQUD -1 1070.SCREEN2 EQUD 0 1080.set 1090ADR R0,SCREEN1 1100ADR R1,SCREEN2 1110SWI "OS_ReadVduVariables" 1120MOV 15,14 1130 1140.mode DCD 1 1150 DCD 640 1160 DCD 480 1170 DCD 3 1180 DCD -1 1190 DCD 0:DCD 128 1200 DCD 3:DCD 255 1210 DCD -1 1220.set_mode 1230MOV R0,#0 1240ADR R1,mode 1250SWI "OS_ScreenMode" 1260SWI "OS_RemoveCursors" 1270MOV pc,r14 1280 1290FNpredef 1300.gouraud_triangle 1310FNprecalc 1320FNpiece 1330] 1340NEXT 1350Q%=P% 1360ENDPROC 1370 1380 1390 1400 1410 1420DEF FNadr(reg,address) 1430offset=address-P%-8 1440IF offset>0 THEN 1450offset1=offset AND 255*4 1460offset2=offset AND 255*256*4 1470offset3=offset AND 255*256*256*4 1480 [OPT PASS:ADD reg, 15,#offset1:] 1490IF offset2<>0 [OPT PASS:ADD reg,reg,#offset2:] 1500IF offset3<>0 [OPT PASS:ADD reg,reg,#offset3:] 1510ELSE 1520offset1=-offset AND 255*4 1530offset2=-offset AND 255*256*4 1540offset3=-offset AND 255*256*256*4 1550 [OPT PASS:SUB reg, 15,#offset1:] 1560IF offset2<>0 [OPT PASS:SUB reg,reg,#offset2:] 1570IF offset3<>0 [OPT PASS:SUB reg,reg,#offset3:] 1580ENDIF 1590ENDIF 1600="" 1610 1620DEF FNpredef 1630[OPT PASS 1640.save_regs DCD 0:DCD 0:DCD 0:DCD 0:DCD 0:DCD 0:DCD 0 1650 1660.X1D EQUD 0 1670.X2D EQUD 0 1680 1690.DX21 EQUD 0 1700.DX32 EQUD 0 1710.DX31 EQUD 0 1720 1730.DY21 EQUD 0 1740.DY32 EQUD 0 1750 1760 1770.SCREEND EQUD 0 1780.spd DCD 0 1790 1800] 1810="" 1820 1830DEF FNprecalc 1840[OPT PASS 1850;REM paramters R0-R8=x0,y0,x1,y1,x2,y2,i0,i1,i2 1860 1870 STMFD 13!,{0-12,14} 1880 STR 13,spd 1890 1990;sort vertices so that y1,y2,y3 are in ascending order 2000 CMP Y1,Y2 2010 BLE inorder1 2020; if y1 > y2 then swap(x1,x2) swap(y1,y2) swap(u1,u2) swap(v1,v2) 2030 EOR Y1,Y1,Y2 2040 EOR X1,X1,X2 2050 EOR I1,I1,I2 2060 EOR Y2,Y2,Y1 2070 EOR X2,X2,X1 2080 EOR I2,I2,I1 2090 EOR Y1,Y1,Y2 2100 EOR X1,X1,X2 2110 EOR I1,I1,I2 2120.inorder1 2130 CMP Y2,Y3 2140 BLE inorder2 2150; if y2 > y3 then swap(x2,x3) swap(y2,y3) swap(u2,u3) swap(v2,v3) 2160 EOR Y2,Y2,Y3 2170 EOR X2,X2,X3 2180 EOR I2,I2,I3 2190 EOR Y3,Y3,Y2 2200 EOR X3,X3,X2 2210 EOR I3,I3,I2 2220 EOR Y2,Y2,Y3 2230 EOR X2,X2,X3 2240 EOR I2,I2,I3 2250.inorder2 2260 CMP Y1,Y2 2270 BLE inorder3 2280; if (y1 > y2) or (y1=y2 and x1>x2) then 2290; swap(x1,x2) swap(y1,y2) swap(u1,u2) swap(v1,v2) 2300 EOR Y1,Y1,Y2 2310 EOR X1,X1,X2 2320 EOR I1,I1,I2 2330 EOR Y2,Y2,Y1 2340 EOR X2,X2,X1 2350 EOR I2,I2,I1 2360 EOR Y1,Y1,Y2 2370 EOR X1,X1,X2 2380 EOR I1,I1,I2 2390.inorder3 2400 STR X1,X1D 2410 STR X2,X2D 2420 STR I1,I1D 2430 SUB X2,X2,X1 2440 SUB Y2,Y2,Y1 2450 SUB X3,X3,X1 2460 SUB Y3,Y3,Y1 2470 SUB I2,I2,I1 2480 SUB I3,I3,I1 2490 2500; screen'=screen + 640*y1 2510 FNadr (SCREEN,SCREEN2) 2520 LDR SCREEN,[SCREEN] 2530 ADD Tmp,Y1,Y1,LSL #2 2540 ADD SCREEN,SCREEN,Tmp,LSL #7 2550 STR SCREEN,SCREEND 2560 2570 FNadr (Help,INVERS) 2580 STR Y2,DY21 2590; calc x2/y2 2600 LDR Tmp,[Help,Y2,LSL #2] 2610 MUL Tmp,X2,Tmp 2620 MOV Tmp,Tmp,ASR #9 2630 STR Tmp,DX21 2640 SUB Y1,Y3,Y2 2650 STR Y1,DY32 2660; calc (x3-x2)/(y3-y2) 2670 LDR Tmp,[Help,Y1,LSL #2] 2680 SUB X1,X3,X2 2690 MUL Tmp,X1,Tmp 2700 MOV Tmp,Tmp,ASR #9 2710 STR Tmp,DX32 2720; calc dx1 = x3/y3 2730 LDR Tmp,[Help,Y3,LSL #2] 2740 MUL Tmp2,X3,Tmp 2750 MOV Tmp2,Tmp2,ASR #9 2760 STR Tmp2,DX31 2770 2780; shading increment in y direction 2790; calc di1 = i3/y3 ; i 8.6 di 8.16 2800 MOV Tmp,Tmp,LSR #4 ; .17 2810 MUL I3,Tmp,I3 ; 8.23 2820 MOV I3,I3,ASR #17-10 ; 8.16 2830 MOV I1,I1,LSL #10 2840 ADD I1,I1,I3,ASR #1 2850 STR I3,I3D 2860 STR I1,I1D 2870 2880; calc 2^21/floor(abs(x2 - dx1*y2)) 2890 MUL Tmp,Y2,Tmp2 ; (x3/y3)*y2 2900 RSB Tmp,Tmp,X2,LSL #12 ; x2-(x3/y3)*y2 2910 MOVS Tmp,Tmp,ASR #10 ; int( ... ) 2920 RSBMI Tmp,Tmp,#0 2930 LDR Tmp,[Help,Tmp,LSL #2] ; .19 2940 2950; shading increment in x direction 2960; calc di2 = (i2-di1*y2) / abs( x2 - dx1*y2) 2970 MOV I2,I2,LSL #10 ; 8.16 2980 MUL I3,Y2,I3 2990 RSB I2,I3,I2 ; 8.16 3000 MOV I2,I2,ASR #8 ; 8.8 3010 MOV Tmp,Tmp,LSR #3 ; .16 3020 MUL I2,Tmp,I2 ; 8.24 3030 MOV I2,I2,ASR #16 3040 STR I2,I2D ; 8.8 3050 LDR I1,I1D 3060 ADD I1,I1,I2,LSL #7 3070 STR I1,I1D 3080 3090 LDR O,SCREEND 3100 3110 LDR T,X1D 3120 MOV L,T,LSL #12 ; xl = (X1+0.5)*FIX 3130 ADD L,L,#1<<11 3140 LDR LA,DX31 ; dxl = dx31 3150 MOV R,L ; xr = (X1+0.5)*FIX 3160 LDR RA,DX21 ; dxr = dx21 3170 ADD L,L,LA,ASR #1 ; xl += 0.5*dxl 3180 ADD R,R,RA,ASR #1 ; xr += 0.5*dxr 3190 LDR CT,DY21 3200 CMP CT,#0 ; count = dy21 3210 BLNE PIECE 3220 3230 LDR T,X2D 3240 MOV R,T,LSL #12 ; dxr = dx32 3250 ADD R,R,#1<<11 ; xr = (X2+0.5)*FIX 3260 LDR LA,DX31 3270 LDR RA,DX32 3280 ADD R,R,RA,ASR #1 ; xr+= 0.5*dxr 3290 LDR CT,DY32 3300 CMP CT,#0 ; count= dy32 3310 BLNE PIECE 3320.end 3330 LDR 13,spd 3340 LDMFD 13!,{0-12,PC}^ 3350] 3360="" 3370 3380 3390DEF FNpiece 3400[OPT PASS 3410.I1D DCD 0 3420.I2D DCD 0 3430.I3D DCD 0 3440 3450.PIECE STMFD 13!,{CT,14} 3460 3470; clip to top 3480 FNadr (T,SCREEN2) 3490 LDR T,[T] 3500 CMP O,T 3510 BHS eclip 3520.clip 3530 ADD L,L,LA 3540 ADD R,R,RA 3550 ADD O,O,#640 3560; increment y shading 3570 3580 LDR I,I1D 3590 LDR H,I3D 3600 ADD I,I,H 3610 STR I,I1D 3620 3630 SUBS CT,CT,#1 3640 LDMEQFD 13!,{CT,15} 3650 CMP O,T 3660 BLO clip 3670.eclip 3680; clip to bottom 3690 ADD T,T,#640*480 3700 SUBS T,T,O 3710 LDMLSFD 13!,{CT,15} 3720 ADD CT,CT,CT,LSL #2 3730 CMP CT,T,LSR #7 3740 MOVHI CT,T,LSR #7 3750 CMP L,R ; left or right oriented ? 3760 BGT span_2 3770 BAL span 3780.endspan 3790 ADD O,O,#640 3800 ADD L,L,LA 3810 ADD R,R,RA 3820 SUBS CT,CT,#5 3830; increment y shading 3840 3850 LDR T,I1D 3860 LDR I,I3D 3870 ADD I,I,T 3880 STR I,I1D 3890 3900 LDMEQFD 13!,{CT,15} 3910.span 3920 3930 3940; clip to right 3950 CMP R,#640<<12 3960 ADD XR,O,R,ASR #12 3970 ADDGT XR,O,#640 3980; Clip to left 3990 MOVS T,L,ASR #12 4000 ADD XL,O,T 4010 MOVLT XL,O 4020 RSBMI T,T,#0 4030 4040 4050; Load line shade and shade increment 4060 LDR I,I1D ; 10.4 4070 MOV I,I,ASR #8 4080 LDR H,I2D ; 10.4 4090 MLAMI I,T,H,I 4100 4110 MOV T,L,ASR #4 4120 AND T,T,#255 4130 MUL T,H,T 4140 SUB I,I,T,ASR #8 4150 4160 MOV I,I,LSL #16 ; 10.22 4170 MOV H,H,LSL #16 ; 10.22 4180 ADD I,I,H,LSR #16 4190 4200 SUB T,XR,XL 4210 CMP T,#3 4220 BLE smallspan 4230 TST XL,#3 4240 BEQ endloop1 4250.loop1 FNmapbyte(C1) 4260 STRB C1,[XL],#1 4270 TST XL,#3 4280 BNE loop1 4290 4300.endloop1 SUB H,XR,XL 4310 MOVS H,H,LSR #3 4320 BCC doit 4330 FNmapbyte(C1) 4340 FNmapbyte(T) 4350 ADD C1,C1,T,LSL #8 4360 FNmapbyte(T) 4370 ADD C1,C1,T,LSL #16 4380 FNmapbyte(T) 4390 ADD C1,C1,T,LSL #24 4400 STR C1,[XL],#4 4410 CMP H,#0 4420.doit BEQ smallspan 4430 4440.loop2 FNmapbyte(C1) 4450 FNmapbyte(T) 4460 ADD C1,C1,T,LSL #8 4470 FNmapbyte(T) 4480 ADD C1,C1,T,LSL #16 4490 FNmapbyte(T) 4500 ADD C1,C1,T,LSL #24 4510 FNmapbyte(C2) 4520 FNmapbyte(T) 4530 ADD C2,C2,T,LSL #8 4540 FNmapbyte(T) 4550 ADD C2,C2,T,LSL #16 4560 FNmapbyte(T) 4570 ADD C2,C2,T,LSL #24 4580 STMIA (XL)!,{C1,C2} 4590 SUBS H,H,#1 4600 BNE loop2 4610.smallspan 4620 CMP XL,XR 4630 BGE endspan 4640 FNmapbyte(C1) 4650 STRB C1,[XL],#1 4660 CMP XL,XR 4670 BEQ endspan 4680 FNmapbyte(C1) 4690 STRB C1,[XL],#1 4700 CMP XL,XR 4710 BEQ endspan 4720 FNmapbyte(C1) 4730 STRB C1,[XL],#1 4740 BAL endspan 4750.endspan_2 4760 ADD O,O,#640 4770 ADD L,L,LA 4780 ADD R,R,RA 4790 SUBS CT,CT,#5 4800; increment y shading 4810 LDR T,I1D 4820 LDR I,I3D 4830 ADD I,I,T 4840 STR I,I1D 4850 LDMEQFD 13!,{CT,15} 4860.span_2 4870; Clip to left 4880 MOVS T,R,ASR #12 4890 ADDPL XR,O,R,ASR #12 4900 MOVMI XR,O 4910; clip to right 4920 MOV T,#640 4930 RSBS T,T,L,ASR #12 4940 ADD XL,O,L,ASR #12 4950 ADDPL XL,O,#640 4960; Load line shade and shade increment 4970 LDR I,I1D 4980 MOV I,I,ASR #8 4990 LDR H,I2D 5000 MLAPL I,T,H,I 5010 5020 MOV T,L,ASR #4 5030 AND T,T,#255 5040 MUL T,H,T 5050 ADD I,I,T,ASR #8 5060 5070 MOV I,I,LSL #16 5080 MOV H,H,LSL #16 5090 ADD I,I,H,LSR#16 5100 SUB T,XL,XR 5110 CMP T,#3 5120 BLE smallspan_2 5130 TST XL,#3 5140 BEQ endloop1_2 5150.loop1_2 FNmapbyte(C1) 5160 STRB C1,[XL,#-1]! 5170 TST XL,#3 5180 BNE loop1_2 5190.endloop1_2 5200 SUB H,XL,XR 5210 MOVS H,H,LSR #3 5220 BCC doit_2 5230 FNmapbyte(C1) 5240 FNmapbyte(T) 5250 ADD C1,C1,T,LSL #24 5260 FNmapbyte(T) 5270 ADD C1,C1,T,LSL #16 5280 FNmapbyte(T) 5290 ADD C1,T,C1,ROR #8 5300 STR C1,[XL,#-4]! 5310 CMP H,#0 5320.doit_2 BEQ smallspan_2 5330.loop2_2 5340 FNmapbyte(C2) 5350 FNmapbyte(T) 5360 ADD C2,C2,T,LSL #24 5370 FNmapbyte(T) 5380 ADD C2,C2,T,LSL #16 5390 FNmapbyte(T) 5400 ADD C2,T,C2,ROR #8 5410 FNmapbyte(C1) 5420 FNmapbyte(T) 5430 ADD C1,C1,T,LSL #24 5440 FNmapbyte(T) 5450 ADD C1,C1,T,LSL #16 5460 FNmapbyte(T) 5470 ADD C1,T,C1,ROR #8 5480 STMDB (XL)!,{C1,C2} 5490 SUBS H,H,#1 5500 BNE loop2_2 5510.smallspan_2 5520 CMP XR,XL 5530 BGE endspan_2 5540 FNmapbyte(C1) 5550 STRB C1,[XL,#-1]! 5560 CMP XR,XL 5570 BEQ endspan_2 5580 FNmapbyte(C1) 5590 STRB C1,[XL,#-1]! 5600 CMP XR,XL 5610 BEQ endspan_2 5620 FNmapbyte(C1) 5630 STRB C1,[XL,#-1]! 5640 BAL endspan_2 5650] 5660="" 5670 5680DEF FNmapbyte(reg) 5690[OPT PASS 5700 MOV reg,I,LSR #24 5710 ADD I,I,I,LSL #16 5720] 5730 =""
� >Gouraud � (c) Jan Vlietinck ( 2� �:�:� �:� < F� �main P� Q% 200000 Z� INVERS 4094*4 d n�calc_invers x�gouraud_triangle � �mode �� set_mode �P1=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 � "%� "1000 RANDOM GOURAUD TRIANGLES" ,� "PRESS A KEY TO START" 6 W=�:� @�=0 J !ran=� T � main ^� "IN ";�/100;" SECONDS" h� 0 r� | � � � �� �calc_invers �K=1<<21 �)� I=1 � 4093:INVERS!(4*I)=K/(I+0.5):� �� � � � � � �� �mode !X1=0:Y1=1:X2=2:Y2=3:X3=4:Y3=5 I1=6:I2=7:I3=8 TEL=9:F=10 &� P=0 � 2 � 2 0 P%=Q% : [OPT P D N X.ran EQUD � b.nr EQUD 1000 l .main vSTMFD R13!,{R14} � LDR F,ran �LDR TEL,nr � .loopr �<.L1 ADD F,F,F,LSL #8:MOV X1,F,LSR #22:CMP X1,#640:BHS L1 �<.K1 ADD F,F,F,LSL #8:MOV Y1,F,LSR #23:CMP Y1,#480:BHS K1 �<.L2 ADD F,F,F,LSL #8:MOV X2,F,LSR #22:CMP X2,#640:BHS L2 �<.K2 ADD F,F,F,LSL #8:MOV Y2,F,LSR #23:CMP Y2,#480:BHS K2 �<.L3 ADD F,F,F,LSL #8:MOV X3,F,LSR #22:CMP X3,#640:BHS L3 �<.K3 ADD F,F,F,LSL #8:MOV Y3,F,LSR #23:CMP Y3,#480:BHS K3 �%ADD F,F,F,LSL #8:MOV I1,F,LSR #18 �%ADD F,F,F,LSL #8:MOV I2,F,LSR #18 �%ADD F,F,F,LSL #8:MOV I3,F,LSR #18 �BL gouraud_triangle SUBS TEL,TEL,#1 BNE loopr LDMFD R13!,{PC} ] *� 4 Q%=P% >� H R \ f� �gouraud_triangle p� SF,FIX,SM,FP,I,G z� DXD,DYD,TXD,TYD,XD,YD � �SF=12:FIX=2^SF � SM=10 �FP=SF+SM � �AH=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 � �!X1=0:Y1=1:X2=2:Y2=3:X3=4:Y3=5 �I1=6:I2=7:I3=8 �SCREEN=12:BITMAP=13:Tmp=14 � �$A=0:B=1:C=9:D=10:Tmp2=12:Help=13 � � PASS=0 � 2 � 2 P%=Q% [OPT PASS $.SCREEN1 EQUD 148:EQUD -1 ..SCREEN2 EQUD 0 8.set BADR R0,SCREEN1 LADR R1,SCREEN2 VSWI "OS_ReadVduVariables" ` MOV 15,14 j t.mode DCD 1 ~ DCD 640 � DCD 480 � DCD 3 � DCD -1 � DCD 0:DCD 128 � DCD 3:DCD 255 � DCD -1 � .set_mode � MOV R0,#0 �ADR R1,mode �SWI "OS_ScreenMode" �SWI "OS_RemoveCursors" �MOV pc,r14 �predef .gouraud_triangle �precalc ( �piece 2] <� F Q%=P% P� Z d n x � �� �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 #offset3=-offset � 255*256*256*4 9 [OPT PASS:SUB reg, 15,#offset1:] 8� offset2<>0 [OPT PASS:SUB reg,reg,#offset2:] "8� offset3<>0 [OPT PASS:SUB reg,reg,#offset3:] ,� 6� @="" J T � �predef ^ [OPT PASS h8.save_regs DCD 0:DCD 0:DCD 0:DCD 0:DCD 0:DCD 0:DCD 0 r |.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 � ] ="" &� �precalc 0 [OPT PASS :1;� paramters R0-R8=x0,y0,x1,y1,x2,y2,i0,i1,i2 D N% STMFD 13!,{0-12,14} X STR 13,spd b �:;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 � � X1,X1,X2 � I1,I1,I2 � Y2,Y2,Y1 � X2,X2,X1 � I2,I2,I1 * � Y1,Y1,Y2 4 � X1,X1,X2 > � I1,I1,I2 H .inorder1 R CMP Y2,Y3 \ BLE inorder2 fE; if y2 > y3 then swap(x2,x3) swap(y2,y3) swap(u2,u3) swap(v2,v3) p � Y2,Y2,Y3 z � 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) � � Y1,Y1,Y2 � X1,X1,X2 � I1,I1,I2 � Y2,Y2,Y1 $ � X2,X2,X1 . � I2,I2,I1 8 � Y1,Y1,Y2 B � X1,X1,X2 L � I1,I1,I2 V .inorder3 ` STR X1,X1D j STR X2,X2D t 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 + 640*y1 �' �adr (SCREEN,SCREEN2) �' LDR SCREEN,[SCREEN] �( ADD Tmp,Y1,Y1,LSL #2 �0 ADD SCREEN,SCREEN,Tmp,LSL #7 �& STR SCREEN,SCREEND $ �adr (Help,INVERS) STR Y2,DY21 ; calc x2/y2 (, LDR Tmp,[Help,Y2,LSL #2] 2" MUL Tmp,X2,Tmp <& MOV Tmp,Tmp,ASR #9 F STR Tmp,DX21 P SUB Y1,Y3,Y2 Z STR Y1,DY32 d; calc (x3-x2)/(y3-y2) n, LDR Tmp,[Help,Y1,LSL #2] x 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 �5 MUL I3,Tmp,I3 ; 8.23 3 MOV I3,I3,ASR #17-10 ; 8.16 % MOV I1,I1,LSL #10 ' ADD I1,I1,I3,ASR #1 " STR I3,I3D , STR I1,I1D 6 @'; calc 2^21/floor(abs(x2 - dx1*y2)) J8 MUL Tmp,Y2,Tmp2 ; (x3/y3)*y2 T; RSB Tmp,Tmp,X2,LSL #12 ; x2-(x3/y3)*y2 ^8 MOVS Tmp,Tmp,ASR #10 ; int( ... ) h" RSBMI Tmp,Tmp,#0 r4 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 � STR I1,I1D ! LDR O,SCREEND & LDR T,X1D 08 MOV L,T,LSL #12 ; xl = (X1+0.5)*FIX :" ADD L,L,#1<<11 D1 LDR LA,DX31 ; dxl = dx31 N8 MOV R,L ; xr = (X1+0.5)*FIX X1 LDR RA,DX21 ; dxr = dx21 b6 ADD L,L,LA,ASR #1 ; xl += 0.5*dxl l6 ADD R,R,RA,ASR #1 ; xr += 0.5*dxr v 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 �.end LDR 13,spd & LDMFD 13!,{0-12,PC}^ ] ="" * 4 >� �piece H [OPT PASS R.I1D DCD 0 \.I2D DCD 0 f.I3D DCD 0 p z .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,#640 �; increment y shading � � LDR I,I1D LDR H,I3D ADD I,I,H STR I,I1D $ . SUBS CT,CT,#1 8# LDMEQFD 13!,{CT,15} B CMP O,T L BLO clip V .eclip `; clip to bottom j$ ADD T,T,#640*480 t SUBS T,T,O ~# LDMLSFD 13!,{CT,15} �' ADD CT,CT,CT,LSL #2 �# CMP CT,T,LSR #7 �# MOVHI CT,T,LSR #7 �? CMP L,R ; left or right oriented ? � BGT span_2 � BAL span �.endspan � ADD O,O,#640 � 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 2 <# LDMEQFD 13!,{CT,15} F .span P Z d; clip to right n" CMP R,#640<<12 x& ADD XR,O,R,ASR #12 �! ADDGT XR,O,#640 �; 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 � MLAMI I,T,H,I " MOV T,L,ASR #4 � T,T,#255 " MUL T,H,T ,$ SUB I,I,T,ASR #8 6 @0 MOV I,I,LSL #16 ; 10.22 J0 MOV H,H,LSL #16 ; 10.22 T% ADD I,I,H,LSR #16 ^ h SUB T,XR,XL r 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) �& ADD C1,C1,T,LSL #8 �mapbyte(T) ' ADD C1,C1,T,LSL #16 �mapbyte(T) &' ADD C1,C1,T,LSL #24 0" STR C1,[XL],#4 : CMP H,#0 D!.doit BEQ smallspan N X.loop2 �mapbyte(C1) b �mapbyte(T) l& ADD C1,C1,T,LSL #8 v �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 � BNE loop2 .smallspan CMP XL,XR BGE endspan �mapbyte(C1) *" STRB C1,[XL],#1 4 CMP XL,XR > BEQ endspan H �mapbyte(C1) R" STRB C1,[XL],#1 \ CMP XL,XR f BEQ endspan p �mapbyte(C1) z" STRB C1,[XL],#1 � BAL endspan �.endspan_2 � ADD O,O,#640 � 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} �.span_2 ; Clip to left # MOVS T,R,ASR #12 & ADDPL XR,O,R,ASR #12 $ MOVMI XR,O .; clip to right 8 MOV T,#640 B% RSBS T,T,L,ASR #12 L& ADD XL,O,L,ASR #12 V! ADDPL XL,O,#640 `); Load line shade and shade increment j LDR I,I1D t" 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 # BLE smallspan_2 TST XL,#3 " BEQ endloop1_2 .loop1_2 �mapbyte(C1) ($ STRB C1,[XL,#-1]! 2 TST XL,#3 < BNE loop1_2 F.endloop1_2 P SUB H,XL,XR Z" MOVS H,H,LSR #3 d BCC doit_2 n �mapbyte(C1) x �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 � �mapbyte(T) ' ADD C2,C2,T,LSL #16 �mapbyte(T) & ADD C2,T,C2,ROR #8 " �mapbyte(C1) , �mapbyte(T) 6' ADD C1,C1,T,LSL #24 @ �mapbyte(T) J' ADD C1,C1,T,LSL #16 T �mapbyte(T) ^& ADD C1,T,C1,ROR #8 h% STMDB (XL)!,{C1,C2} r 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) �$ STRB C1,[XL,#-1]! ! BAL endspan_2 ] ="" & 0� �mapbyte(reg) : [OPT PASS D! MOV reg,I,LSR #24 N! ADD I,I,I,LSL #16 X] b ="" �
00000000 0d 00 0a 0e f4 20 3e 47 6f 75 72 61 75 64 0d 00 |..... >Gouraud..| 00000010 14 17 f4 20 28 63 29 20 4a 61 6e 20 56 6c 69 65 |... (c) Jan Vlie| 00000020 74 69 6e 63 6b 0d 00 1e 04 0d 00 28 04 0d 00 32 |tinck......(...2| 00000030 0f ee 20 85 3a f6 3a f1 20 9e 3a e0 0d 00 3c 04 |.. .:.:. .:...<.| 00000040 0d 00 46 0b dd 20 f2 6d 61 69 6e 0d 00 50 0f de |..F.. .main..P..| 00000050 20 51 25 20 32 30 30 30 30 30 0d 00 5a 13 de 20 | Q% 200000..Z.. | 00000060 49 4e 56 45 52 53 20 34 30 39 34 2a 34 0d 00 64 |INVERS 4094*4..d| 00000070 04 0d 00 6e 10 f2 63 61 6c 63 5f 69 6e 76 65 72 |...n..calc_inver| 00000080 73 0d 00 78 15 f2 67 6f 75 72 61 75 64 5f 74 72 |s..x..gouraud_tr| 00000090 69 61 6e 67 6c 65 0d 00 82 09 f2 6d 6f 64 65 0d |iangle.....mode.| 000000a0 00 8c 0e d6 20 73 65 74 5f 6d 6f 64 65 0d 00 96 |.... set_mode...| 000000b0 0c 50 31 3d 32 2a af 2f 33 0d 00 a0 0f e3 20 49 |.P1=2*./3..... I| 000000c0 3d 31 20 b8 20 32 35 35 0d 00 aa 10 20 50 3d 49 |=1 . 255.... P=I| 000000d0 2f 32 35 36 2a 32 2a af 0d 00 b4 13 20 52 3d 31 |/256*2*..... R=1| 000000e0 32 38 2a 28 31 2b 9b 28 50 29 29 0d 00 be 18 20 |28*(1+.(P)).... | 000000f0 47 3d 31 32 38 2a 28 31 2b 9b 28 32 2a 50 2b 50 |G=128*(1+.(2*P+P| 00000100 31 29 29 0d 00 c8 16 20 42 3d 31 32 38 2a 28 31 |1)).... B=128*(1| 00000110 2b 9b 28 50 2d 50 31 29 29 0d 00 d2 0e 20 fb 20 |+.(P-P1)).... . | 00000120 49 2c 52 2c 47 2c 42 0d 00 dc 07 ed 20 49 0d 00 |I,R,G,B..... I..| 00000130 e6 09 d6 20 73 65 74 0d 01 04 04 0d 01 0e 04 0d |... set.........| 00000140 01 18 05 f5 0d 01 22 25 f1 20 22 31 30 30 30 20 |......"%. "1000 | 00000150 52 41 4e 44 4f 4d 20 47 4f 55 52 41 55 44 20 54 |RANDOM GOURAUD T| 00000160 52 49 41 4e 47 4c 45 53 22 0d 01 2c 1c f1 20 22 |RIANGLES"..,.. "| 00000170 50 52 45 53 53 20 41 20 4b 45 59 20 54 4f 20 53 |PRESS A KEY TO S| 00000180 54 41 52 54 22 0d 01 36 09 57 3d a5 3a db 0d 01 |TART"..6.W=.:...| 00000190 40 07 d1 3d 30 0d 01 4a 0a 21 72 61 6e 3d b3 0d |@..=0..J.!ran=..| 000001a0 01 54 0a d6 20 6d 61 69 6e 0d 01 5e 1c f1 20 22 |.T.. main..^.. "| 000001b0 49 4e 20 22 3b 91 2f 31 30 30 3b 22 20 53 45 43 |IN ";./100;" SEC| 000001c0 4f 4e 44 53 22 0d 01 68 07 fd 20 30 0d 01 72 05 |ONDS"..h.. 0..r.| 000001d0 e0 0d 01 7c 04 0d 01 86 04 0d 01 90 04 0d 01 9a |...|............| 000001e0 04 0d 01 a4 12 dd 20 f2 63 61 6c 63 5f 69 6e 76 |...... .calc_inv| 000001f0 65 72 73 0d 01 ae 0b 4b 3d 31 3c 3c 32 31 0d 01 |ers....K=1<<21..| 00000200 b8 29 e3 20 49 3d 31 20 b8 20 34 30 39 33 3a 49 |.). I=1 . 4093:I| 00000210 4e 56 45 52 53 21 28 34 2a 49 29 3d 4b 2f 28 49 |NVERS!(4*I)=K/(I| 00000220 2b 30 2e 35 29 3a ed 0d 01 c2 05 e1 0d 01 cc 04 |+0.5):..........| 00000230 0d 01 d6 04 0d 01 e0 04 0d 01 ea 04 0d 01 f4 04 |................| 00000240 0d 01 fe 0b dd 20 f2 6d 6f 64 65 0d 02 08 21 58 |..... .mode...!X| 00000250 31 3d 30 3a 59 31 3d 31 3a 58 32 3d 32 3a 59 32 |1=0:Y1=1:X2=2:Y2| 00000260 3d 33 3a 58 33 3d 34 3a 59 33 3d 35 0d 02 12 12 |=3:X3=4:Y3=5....| 00000270 49 31 3d 36 3a 49 32 3d 37 3a 49 33 3d 38 0d 02 |I1=6:I2=7:I3=8..| 00000280 1c 0e 54 45 4c 3d 39 3a 46 3d 31 30 0d 02 26 11 |..TEL=9:F=10..&.| 00000290 e3 20 50 3d 30 20 b8 20 32 20 88 20 32 0d 02 30 |. P=0 . 2 . 2..0| 000002a0 09 50 25 3d 51 25 0d 02 3a 0a 5b 4f 50 54 20 50 |.P%=Q%..:.[OPT P| 000002b0 0d 02 44 04 0d 02 4e 04 0d 02 58 0f 2e 72 61 6e |..D...N...X..ran| 000002c0 20 45 51 55 44 20 b3 0d 02 62 11 2e 6e 72 20 45 | EQUD ...b..nr E| 000002d0 51 55 44 20 31 30 30 30 0d 02 6c 09 2e 6d 61 69 |QUD 1000..l..mai| 000002e0 6e 0d 02 76 14 53 54 4d 46 44 20 52 31 33 21 2c |n..v.STMFD R13!,| 000002f0 7b 52 31 34 7d 0d 02 80 0d 4c 44 52 20 46 2c 72 |{R14}....LDR F,r| 00000300 61 6e 0d 02 8a 0e 4c 44 52 20 54 45 4c 2c 6e 72 |an....LDR TEL,nr| 00000310 0d 02 94 0a 2e 6c 6f 6f 70 72 0d 02 9e 3c 2e 4c |.....loopr...<.L| 00000320 31 20 41 44 44 20 46 2c 46 2c 46 2c 4c 53 4c 20 |1 ADD F,F,F,LSL | 00000330 23 38 3a 4d 4f 56 20 58 31 2c 46 2c 4c 53 52 20 |#8:MOV X1,F,LSR | 00000340 23 32 32 3a 43 4d 50 20 58 31 2c 23 36 34 30 3a |#22:CMP X1,#640:| 00000350 42 48 53 20 4c 31 0d 02 a8 3c 2e 4b 31 20 41 44 |BHS L1...<.K1 AD| 00000360 44 20 46 2c 46 2c 46 2c 4c 53 4c 20 23 38 3a 4d |D F,F,F,LSL #8:M| 00000370 4f 56 20 59 31 2c 46 2c 4c 53 52 20 23 32 33 3a |OV Y1,F,LSR #23:| 00000380 43 4d 50 20 59 31 2c 23 34 38 30 3a 42 48 53 20 |CMP Y1,#480:BHS | 00000390 4b 31 0d 02 b2 3c 2e 4c 32 20 41 44 44 20 46 2c |K1...<.L2 ADD F,| 000003a0 46 2c 46 2c 4c 53 4c 20 23 38 3a 4d 4f 56 20 58 |F,F,LSL #8:MOV X| 000003b0 32 2c 46 2c 4c 53 52 20 23 32 32 3a 43 4d 50 20 |2,F,LSR #22:CMP | 000003c0 58 32 2c 23 36 34 30 3a 42 48 53 20 4c 32 0d 02 |X2,#640:BHS L2..| 000003d0 bc 3c 2e 4b 32 20 41 44 44 20 46 2c 46 2c 46 2c |.<.K2 ADD F,F,F,| 000003e0 4c 53 4c 20 23 38 3a 4d 4f 56 20 59 32 2c 46 2c |LSL #8:MOV Y2,F,| 000003f0 4c 53 52 20 23 32 33 3a 43 4d 50 20 59 32 2c 23 |LSR #23:CMP Y2,#| 00000400 34 38 30 3a 42 48 53 20 4b 32 0d 02 c6 3c 2e 4c |480:BHS K2...<.L| 00000410 33 20 41 44 44 20 46 2c 46 2c 46 2c 4c 53 4c 20 |3 ADD F,F,F,LSL | 00000420 23 38 3a 4d 4f 56 20 58 33 2c 46 2c 4c 53 52 20 |#8:MOV X3,F,LSR | 00000430 23 32 32 3a 43 4d 50 20 58 33 2c 23 36 34 30 3a |#22:CMP X3,#640:| 00000440 42 48 53 20 4c 33 0d 02 d0 3c 2e 4b 33 20 41 44 |BHS L3...<.K3 AD| 00000450 44 20 46 2c 46 2c 46 2c 4c 53 4c 20 23 38 3a 4d |D F,F,F,LSL #8:M| 00000460 4f 56 20 59 33 2c 46 2c 4c 53 52 20 23 32 33 3a |OV Y3,F,LSR #23:| 00000470 43 4d 50 20 59 33 2c 23 34 38 30 3a 42 48 53 20 |CMP Y3,#480:BHS | 00000480 4b 33 0d 02 da 25 41 44 44 20 46 2c 46 2c 46 2c |K3...%ADD F,F,F,| 00000490 4c 53 4c 20 23 38 3a 4d 4f 56 20 49 31 2c 46 2c |LSL #8:MOV I1,F,| 000004a0 4c 53 52 20 23 31 38 0d 02 e4 25 41 44 44 20 46 |LSR #18...%ADD F| 000004b0 2c 46 2c 46 2c 4c 53 4c 20 23 38 3a 4d 4f 56 20 |,F,F,LSL #8:MOV | 000004c0 49 32 2c 46 2c 4c 53 52 20 23 31 38 0d 02 ee 25 |I2,F,LSR #18...%| 000004d0 41 44 44 20 46 2c 46 2c 46 2c 4c 53 4c 20 23 38 |ADD F,F,F,LSL #8| 000004e0 3a 4d 4f 56 20 49 33 2c 46 2c 4c 53 52 20 23 31 |:MOV I3,F,LSR #1| 000004f0 38 0d 02 f8 17 42 4c 20 67 6f 75 72 61 75 64 5f |8....BL gouraud_| 00000500 74 72 69 61 6e 67 6c 65 0d 03 02 13 53 55 42 53 |triangle....SUBS| 00000510 20 54 45 4c 2c 54 45 4c 2c 23 31 0d 03 0c 0d 42 | TEL,TEL,#1....B| 00000520 4e 45 20 6c 6f 6f 70 72 0d 03 16 13 4c 44 4d 46 |NE loopr....LDMF| 00000530 44 20 52 31 33 21 2c 7b 50 43 7d 0d 03 20 05 5d |D R13!,{PC}.. .]| 00000540 0d 03 2a 05 ed 0d 03 34 09 51 25 3d 50 25 0d 03 |..*....4.Q%=P%..| 00000550 3e 05 e1 0d 03 48 04 0d 03 52 04 0d 03 5c 04 0d |>....H...R...\..| 00000560 03 66 17 dd 20 f2 67 6f 75 72 61 75 64 5f 74 72 |.f.. .gouraud_tr| 00000570 69 61 6e 67 6c 65 0d 03 70 16 ea 20 53 46 2c 46 |iangle..p.. SF,F| 00000580 49 58 2c 53 4d 2c 46 50 2c 49 2c 47 0d 03 7a 1b |IX,SM,FP,I,G..z.| 00000590 ea 20 44 58 44 2c 44 59 44 2c 54 58 44 2c 54 59 |. DXD,DYD,TXD,TY| 000005a0 44 2c 58 44 2c 59 44 0d 03 84 04 0d 03 8e 12 53 |D,XD,YD........S| 000005b0 46 3d 31 32 3a 46 49 58 3d 32 5e 53 46 0d 03 98 |F=12:FIX=2^SF...| 000005c0 09 53 4d 3d 31 30 0d 03 a2 0c 46 50 3d 53 46 2b |.SM=10....FP=SF+| 000005d0 53 4d 0d 03 ac 04 0d 03 b6 41 48 3d 30 3a 43 31 |SM.......AH=0:C1| 000005e0 3d 31 3a 4c 3d 32 3a 52 3d 33 3a 43 54 3d 34 3a |=1:L=2:R=3:CT=4:| 000005f0 49 3d 35 3a 58 4c 3d 36 3a 58 52 3d 37 3a 43 32 |I=5:XL=6:XR=7:C2| 00000600 3d 38 3a 54 3d 39 3a 4f 3d 31 30 3a 4c 41 3d 31 |=8:T=9:O=10:LA=1| 00000610 31 3a 52 41 3d 31 32 0d 03 c0 04 0d 03 ca 21 58 |1:RA=12.......!X| 00000620 31 3d 30 3a 59 31 3d 31 3a 58 32 3d 32 3a 59 32 |1=0:Y1=1:X2=2:Y2| 00000630 3d 33 3a 58 33 3d 34 3a 59 33 3d 35 0d 03 d4 12 |=3:X3=4:Y3=5....| 00000640 49 31 3d 36 3a 49 32 3d 37 3a 49 33 3d 38 0d 03 |I1=6:I2=7:I3=8..| 00000650 de 1e 53 43 52 45 45 4e 3d 31 32 3a 42 49 54 4d |..SCREEN=12:BITM| 00000660 41 50 3d 31 33 3a 54 6d 70 3d 31 34 0d 03 e8 04 |AP=13:Tmp=14....| 00000670 0d 03 f2 24 41 3d 30 3a 42 3d 31 3a 43 3d 39 3a |...$A=0:B=1:C=9:| 00000680 44 3d 31 30 3a 54 6d 70 32 3d 31 32 3a 48 65 6c |D=10:Tmp2=12:Hel| 00000690 70 3d 31 33 0d 03 fc 04 0d 04 06 14 e3 20 50 41 |p=13......... PA| 000006a0 53 53 3d 30 20 b8 20 32 20 88 20 32 0d 04 10 09 |SS=0 . 2 . 2....| 000006b0 50 25 3d 51 25 0d 04 1a 0d 5b 4f 50 54 20 50 41 |P%=Q%....[OPT PA| 000006c0 53 53 0d 04 24 1d 2e 53 43 52 45 45 4e 31 20 45 |SS..$..SCREEN1 E| 000006d0 51 55 44 20 31 34 38 3a 45 51 55 44 20 2d 31 0d |QUD 148:EQUD -1.| 000006e0 04 2e 13 2e 53 43 52 45 45 4e 32 20 45 51 55 44 |....SCREEN2 EQUD| 000006f0 20 30 0d 04 38 08 2e 73 65 74 0d 04 42 12 41 44 | 0..8..set..B.AD| 00000700 52 20 52 30 2c 53 43 52 45 45 4e 31 0d 04 4c 12 |R R0,SCREEN1..L.| 00000710 41 44 52 20 52 31 2c 53 43 52 45 45 4e 32 0d 04 |ADR R1,SCREEN2..| 00000720 56 1d 53 57 49 20 22 4f 53 5f 52 65 61 64 56 64 |V.SWI "OS_ReadVd| 00000730 75 56 61 72 69 61 62 6c 65 73 22 0d 04 60 0d 4d |uVariables"..`.M| 00000740 4f 56 20 31 35 2c 31 34 0d 04 6a 04 0d 04 74 13 |OV 15,14..j...t.| 00000750 2e 6d 6f 64 65 20 20 20 20 20 44 43 44 20 31 0d |.mode DCD 1.| 00000760 04 7e 15 20 20 20 20 20 20 20 20 20 20 44 43 44 |.~. DCD| 00000770 20 36 34 30 0d 04 88 15 20 20 20 20 20 20 20 20 | 640.... | 00000780 20 20 44 43 44 20 34 38 30 0d 04 92 13 20 20 20 | DCD 480.... | 00000790 20 20 20 20 20 20 20 44 43 44 20 33 0d 04 9c 14 | DCD 3....| 000007a0 20 20 20 20 20 20 20 20 20 20 44 43 44 20 2d 31 | DCD -1| 000007b0 0d 04 a6 1b 20 20 20 20 20 20 20 20 20 20 44 43 |.... DC| 000007c0 44 20 30 3a 44 43 44 20 31 32 38 0d 04 b0 1b 20 |D 0:DCD 128.... | 000007d0 20 20 20 20 20 20 20 20 20 44 43 44 20 33 3a 44 | DCD 3:D| 000007e0 43 44 20 32 35 35 0d 04 ba 14 20 20 20 20 20 20 |CD 255.... | 000007f0 20 20 20 20 44 43 44 20 2d 31 0d 04 c4 0d 2e 73 | DCD -1.....s| 00000800 65 74 5f 6d 6f 64 65 0d 04 ce 0d 4d 4f 56 20 52 |et_mode....MOV R| 00000810 30 2c 23 30 0d 04 d8 0f 41 44 52 20 52 31 2c 6d |0,#0....ADR R1,m| 00000820 6f 64 65 0d 04 e2 17 53 57 49 20 22 4f 53 5f 53 |ode....SWI "OS_S| 00000830 63 72 65 65 6e 4d 6f 64 65 22 0d 04 ec 1a 53 57 |creenMode"....SW| 00000840 49 20 22 4f 53 5f 52 65 6d 6f 76 65 43 75 72 73 |I "OS_RemoveCurs| 00000850 6f 72 73 22 0d 04 f6 0e 4d 4f 56 20 70 63 2c 72 |ors"....MOV pc,r| 00000860 31 34 0d 05 00 04 0d 05 0a 0b a4 70 72 65 64 65 |14.........prede| 00000870 66 0d 05 14 15 2e 67 6f 75 72 61 75 64 5f 74 72 |f.....gouraud_tr| 00000880 69 61 6e 67 6c 65 0d 05 1e 0c a4 70 72 65 63 61 |iangle.....preca| 00000890 6c 63 0d 05 28 0a a4 70 69 65 63 65 0d 05 32 05 |lc..(..piece..2.| 000008a0 5d 0d 05 3c 05 ed 0d 05 46 09 51 25 3d 50 25 0d |]..<....F.Q%=P%.| 000008b0 05 50 05 e1 0d 05 5a 04 0d 05 64 04 0d 05 6e 04 |.P....Z...d...n.| 000008c0 0d 05 78 04 0d 05 82 04 0d 05 8c 17 dd 20 a4 61 |..x.......... .a| 000008d0 64 72 28 72 65 67 2c 61 64 64 72 65 73 73 29 0d |dr(reg,address).| 000008e0 05 96 17 6f 66 66 73 65 74 3d 61 64 64 72 65 73 |...offset=addres| 000008f0 73 2d 50 25 2d 38 0d 05 a0 10 e7 20 6f 66 66 73 |s-P%-8..... offs| 00000900 65 74 3e 30 20 8c 0d 05 aa 1a 6f 66 66 73 65 74 |et>0 .....offset| 00000910 31 3d 6f 66 66 73 65 74 20 80 20 32 35 35 2a 34 |1=offset . 255*4| 00000920 0d 05 b4 1e 6f 66 66 73 65 74 32 3d 6f 66 66 73 |....offset2=offs| 00000930 65 74 20 80 20 32 35 35 2a 32 35 36 2a 34 0d 05 |et . 255*256*4..| 00000940 be 22 6f 66 66 73 65 74 33 3d 6f 66 66 73 65 74 |."offset3=offset| 00000950 20 80 20 32 35 35 2a 32 35 36 2a 32 35 36 2a 34 | . 255*256*256*4| 00000960 0d 05 c8 39 20 20 20 20 20 20 20 20 20 20 20 20 |...9 | 00000970 20 20 20 5b 4f 50 54 20 50 41 53 53 3a 41 44 44 | [OPT PASS:ADD| 00000980 20 20 20 20 20 20 20 72 65 67 2c 20 31 35 2c 23 | reg, 15,#| 00000990 6f 66 66 73 65 74 31 3a 5d 0d 05 d2 38 e7 20 6f |offset1:]...8. o| 000009a0 66 66 73 65 74 32 3c 3e 30 20 20 5b 4f 50 54 20 |ffset2<>0 [OPT | 000009b0 50 41 53 53 3a 41 44 44 20 20 20 20 20 20 20 72 |PASS:ADD r| 000009c0 65 67 2c 72 65 67 2c 23 6f 66 66 73 65 74 32 3a |eg,reg,#offset2:| 000009d0 5d 0d 05 dc 38 e7 20 6f 66 66 73 65 74 33 3c 3e |]...8. offset3<>| 000009e0 30 20 20 5b 4f 50 54 20 50 41 53 53 3a 41 44 44 |0 [OPT PASS:ADD| 000009f0 20 20 20 20 20 20 20 72 65 67 2c 72 65 67 2c 23 | reg,reg,#| 00000a00 6f 66 66 73 65 74 33 3a 5d 0d 05 e6 05 cc 0d 05 |offset3:].......| 00000a10 f0 1b 6f 66 66 73 65 74 31 3d 2d 6f 66 66 73 65 |..offset1=-offse| 00000a20 74 20 80 20 32 35 35 2a 34 0d 05 fa 1f 6f 66 66 |t . 255*4....off| 00000a30 73 65 74 32 3d 2d 6f 66 66 73 65 74 20 80 20 32 |set2=-offset . 2| 00000a40 35 35 2a 32 35 36 2a 34 0d 06 04 23 6f 66 66 73 |55*256*4...#offs| 00000a50 65 74 33 3d 2d 6f 66 66 73 65 74 20 80 20 32 35 |et3=-offset . 25| 00000a60 35 2a 32 35 36 2a 32 35 36 2a 34 0d 06 0e 39 20 |5*256*256*4...9 | 00000a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 4f | [O| 00000a80 50 54 20 50 41 53 53 3a 53 55 42 20 20 20 20 20 |PT PASS:SUB | 00000a90 20 20 72 65 67 2c 20 31 35 2c 23 6f 66 66 73 65 | reg, 15,#offse| 00000aa0 74 31 3a 5d 0d 06 18 38 e7 20 6f 66 66 73 65 74 |t1:]...8. offset| 00000ab0 32 3c 3e 30 20 20 5b 4f 50 54 20 50 41 53 53 3a |2<>0 [OPT PASS:| 00000ac0 53 55 42 20 20 20 20 20 20 20 72 65 67 2c 72 65 |SUB reg,re| 00000ad0 67 2c 23 6f 66 66 73 65 74 32 3a 5d 0d 06 22 38 |g,#offset2:].."8| 00000ae0 e7 20 6f 66 66 73 65 74 33 3c 3e 30 20 20 5b 4f |. offset3<>0 [O| 00000af0 50 54 20 50 41 53 53 3a 53 55 42 20 20 20 20 20 |PT PASS:SUB | 00000b00 20 20 72 65 67 2c 72 65 67 2c 23 6f 66 66 73 65 | reg,reg,#offse| 00000b10 74 33 3a 5d 0d 06 2c 05 cd 0d 06 36 05 cd 0d 06 |t3:]..,....6....| 00000b20 40 07 3d 22 22 0d 06 4a 04 0d 06 54 0d dd 20 a4 |@.=""..J...T.. .| 00000b30 70 72 65 64 65 66 0d 06 5e 0d 5b 4f 50 54 20 50 |predef..^.[OPT P| 00000b40 41 53 53 0d 06 68 38 2e 73 61 76 65 5f 72 65 67 |ASS..h8.save_reg| 00000b50 73 20 44 43 44 20 30 3a 44 43 44 20 30 3a 44 43 |s DCD 0:DCD 0:DC| 00000b60 44 20 30 3a 44 43 44 20 30 3a 44 43 44 20 30 3a |D 0:DCD 0:DCD 0:| 00000b70 44 43 44 20 30 3a 44 43 44 20 30 0d 06 72 04 0d |DCD 0:DCD 0..r..| 00000b80 06 7c 0f 2e 58 31 44 20 45 51 55 44 20 30 0d 06 |.|..X1D EQUD 0..| 00000b90 86 0f 2e 58 32 44 20 45 51 55 44 20 30 0d 06 90 |...X2D EQUD 0...| 00000ba0 04 0d 06 9a 10 2e 44 58 32 31 20 45 51 55 44 20 |......DX21 EQUD | 00000bb0 30 0d 06 a4 10 2e 44 58 33 32 20 45 51 55 44 20 |0.....DX32 EQUD | 00000bc0 30 0d 06 ae 10 2e 44 58 33 31 20 45 51 55 44 20 |0.....DX31 EQUD | 00000bd0 30 0d 06 b8 04 0d 06 c2 10 2e 44 59 32 31 20 45 |0.........DY21 E| 00000be0 51 55 44 20 30 0d 06 cc 10 2e 44 59 33 32 20 45 |QUD 0.....DY32 E| 00000bf0 51 55 44 20 30 0d 06 d6 04 0d 06 e0 04 0d 06 ea |QUD 0...........| 00000c00 13 2e 53 43 52 45 45 4e 44 20 45 51 55 44 20 30 |..SCREEND EQUD 0| 00000c10 0d 06 f4 13 2e 73 70 64 20 20 20 20 20 20 44 43 |.....spd DC| 00000c20 44 20 30 0d 06 fe 04 0d 07 08 05 5d 0d 07 12 07 |D 0........]....| 00000c30 3d 22 22 0d 07 1c 04 0d 07 26 0e dd 20 a4 70 72 |=""......&.. .pr| 00000c40 65 63 61 6c 63 0d 07 30 0d 5b 4f 50 54 20 50 41 |ecalc..0.[OPT PA| 00000c50 53 53 0d 07 3a 31 3b f4 20 70 61 72 61 6d 74 65 |SS..:1;. paramte| 00000c60 72 73 20 52 30 2d 52 38 3d 78 30 2c 79 30 2c 78 |rs R0-R8=x0,y0,x| 00000c70 31 2c 79 31 2c 78 32 2c 79 32 2c 69 30 2c 69 31 |1,y1,x2,y2,i0,i1| 00000c80 2c 69 32 0d 07 44 04 0d 07 4e 25 20 20 20 20 20 |,i2..D...N% | 00000c90 20 20 20 20 20 53 54 4d 46 44 20 20 20 20 20 31 | STMFD 1| 00000ca0 33 21 2c 7b 30 2d 31 32 2c 31 34 7d 0d 07 58 1e |3!,{0-12,14}..X.| 00000cb0 20 20 20 20 20 20 20 20 20 20 53 54 52 20 20 20 | STR | 00000cc0 20 20 20 20 31 33 2c 73 70 64 0d 07 62 04 0d 07 | 13,spd..b...| 00000cd0 c6 3a 3b 73 6f 72 74 20 76 65 72 74 69 63 65 73 |.:;sort vertices| 00000ce0 20 73 6f 20 74 68 61 74 20 79 31 2c 79 32 2c 79 | so that y1,y2,y| 00000cf0 33 20 61 72 65 20 69 6e 20 61 73 63 65 6e 64 69 |3 are in ascendi| 00000d00 6e 67 20 6f 72 64 65 72 0d 07 d0 1d 20 20 20 20 |ng order.... | 00000d10 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 20 20 | CMP | 00000d20 59 31 2c 59 32 0d 07 da 20 20 20 20 20 20 20 20 |Y1,Y2... | 00000d30 20 20 20 42 4c 45 20 20 20 20 20 20 20 69 6e 6f | BLE ino| 00000d40 72 64 65 72 31 0d 07 e4 45 3b 20 69 66 20 79 31 |rder1...E; if y1| 00000d50 20 3e 20 79 32 20 74 68 65 6e 20 73 77 61 70 28 | > y2 then swap(| 00000d60 78 31 2c 78 32 29 20 73 77 61 70 28 79 31 2c 79 |x1,x2) swap(y1,y| 00000d70 32 29 20 73 77 61 70 28 75 31 2c 75 32 29 20 73 |2) swap(u1,u2) s| 00000d80 77 61 70 28 76 31 2c 76 32 29 0d 07 ee 1e 20 20 |wap(v1,v2).... | 00000d90 20 20 20 20 20 20 20 20 82 20 20 20 20 20 20 20 | . | 00000da0 59 31 2c 59 31 2c 59 32 0d 07 f8 1e 20 20 20 20 |Y1,Y1,Y2.... | 00000db0 20 20 20 20 20 20 82 20 20 20 20 20 20 20 58 31 | . X1| 00000dc0 2c 58 31 2c 58 32 0d 08 02 1e 20 20 20 20 20 20 |,X1,X2.... | 00000dd0 20 20 20 20 82 20 20 20 20 20 20 20 49 31 2c 49 | . I1,I| 00000de0 31 2c 49 32 0d 08 0c 1e 20 20 20 20 20 20 20 20 |1,I2.... | 00000df0 20 20 82 20 20 20 20 20 20 20 59 32 2c 59 32 2c | . Y2,Y2,| 00000e00 59 31 0d 08 16 1e 20 20 20 20 20 20 20 20 20 20 |Y1.... | 00000e10 82 20 20 20 20 20 20 20 58 32 2c 58 32 2c 58 31 |. X2,X2,X1| 00000e20 0d 08 20 1e 20 20 20 20 20 20 20 20 20 20 82 20 |.. . . | 00000e30 20 20 20 20 20 20 49 32 2c 49 32 2c 49 31 0d 08 | I2,I2,I1..| 00000e40 2a 1e 20 20 20 20 20 20 20 20 20 20 82 20 20 20 |*. . | 00000e50 20 20 20 20 59 31 2c 59 31 2c 59 32 0d 08 34 1e | Y1,Y1,Y2..4.| 00000e60 20 20 20 20 20 20 20 20 20 20 82 20 20 20 20 20 | . | 00000e70 20 20 58 31 2c 58 31 2c 58 32 0d 08 3e 1e 20 20 | X1,X1,X2..>. | 00000e80 20 20 20 20 20 20 20 20 82 20 20 20 20 20 20 20 | . | 00000e90 49 31 2c 49 31 2c 49 32 0d 08 48 0d 2e 69 6e 6f |I1,I1,I2..H..ino| 00000ea0 72 64 65 72 31 0d 08 52 1d 20 20 20 20 20 20 20 |rder1..R. | 00000eb0 20 20 20 43 4d 50 20 20 20 20 20 20 20 59 32 2c | CMP Y2,| 00000ec0 59 33 0d 08 5c 20 20 20 20 20 20 20 20 20 20 20 |Y3..\ | 00000ed0 42 4c 45 20 20 20 20 20 20 20 69 6e 6f 72 64 65 |BLE inorde| 00000ee0 72 32 0d 08 66 45 3b 20 69 66 20 79 32 20 3e 20 |r2..fE; if y2 > | 00000ef0 79 33 20 74 68 65 6e 20 73 77 61 70 28 78 32 2c |y3 then swap(x2,| 00000f00 78 33 29 20 73 77 61 70 28 79 32 2c 79 33 29 20 |x3) swap(y2,y3) | 00000f10 73 77 61 70 28 75 32 2c 75 33 29 20 73 77 61 70 |swap(u2,u3) swap| 00000f20 28 76 32 2c 76 33 29 0d 08 70 1e 20 20 20 20 20 |(v2,v3)..p. | 00000f30 20 20 20 20 20 82 20 20 20 20 20 20 20 59 32 2c | . Y2,| 00000f40 59 32 2c 59 33 0d 08 7a 1e 20 20 20 20 20 20 20 |Y2,Y3..z. | 00000f50 20 20 20 82 20 20 20 20 20 20 20 58 32 2c 58 32 | . X2,X2| 00000f60 2c 58 33 0d 08 84 1e 20 20 20 20 20 20 20 20 20 |,X3.... | 00000f70 20 82 20 20 20 20 20 20 20 49 32 2c 49 32 2c 49 | . I2,I2,I| 00000f80 33 0d 08 8e 1e 20 20 20 20 20 20 20 20 20 20 82 |3.... .| 00000f90 20 20 20 20 20 20 20 59 33 2c 59 33 2c 59 32 0d | Y3,Y3,Y2.| 00000fa0 08 98 1e 20 20 20 20 20 20 20 20 20 20 82 20 20 |... . | 00000fb0 20 20 20 20 20 58 33 2c 58 33 2c 58 32 0d 08 a2 | X3,X3,X2...| 00000fc0 1e 20 20 20 20 20 20 20 20 20 20 82 20 20 20 20 |. . | 00000fd0 20 20 20 49 33 2c 49 33 2c 49 32 0d 08 ac 1e 20 | I3,I3,I2.... | 00000fe0 20 20 20 20 20 20 20 20 20 82 20 20 20 20 20 20 | . | 00000ff0 20 59 32 2c 59 32 2c 59 33 0d 08 b6 1e 20 20 20 | Y2,Y2,Y3.... | 00001000 20 20 20 20 20 20 20 82 20 20 20 20 20 20 20 58 | . X| 00001010 32 2c 58 32 2c 58 33 0d 08 c0 1e 20 20 20 20 20 |2,X2,X3.... | 00001020 20 20 20 20 20 82 20 20 20 20 20 20 20 49 32 2c | . I2,| 00001030 49 32 2c 49 33 0d 08 ca 0d 2e 69 6e 6f 72 64 65 |I2,I3.....inorde| 00001040 72 32 0d 08 d4 1d 20 20 20 20 20 20 20 20 20 20 |r2.... | 00001050 43 4d 50 20 20 20 20 20 20 20 59 31 2c 59 32 0d |CMP Y1,Y2.| 00001060 08 de 20 20 20 20 20 20 20 20 20 20 20 42 4c 45 |.. BLE| 00001070 20 20 20 20 20 20 20 69 6e 6f 72 64 65 72 33 0d | inorder3.| 00001080 08 e8 2c 3b 20 69 66 20 28 79 31 20 3e 20 79 32 |..,; if (y1 > y2| 00001090 29 20 6f 72 20 28 79 31 3d 79 32 20 61 6e 64 20 |) or (y1=y2 and | 000010a0 78 31 3e 78 32 29 20 74 68 65 6e 0d 08 f2 35 3b |x1>x2) then...5;| 000010b0 20 73 77 61 70 28 78 31 2c 78 32 29 20 73 77 61 | swap(x1,x2) swa| 000010c0 70 28 79 31 2c 79 32 29 20 73 77 61 70 28 75 31 |p(y1,y2) swap(u1| 000010d0 2c 75 32 29 20 73 77 61 70 28 76 31 2c 76 32 29 |,u2) swap(v1,v2)| 000010e0 0d 08 fc 1e 20 20 20 20 20 20 20 20 20 20 82 20 |.... . | 000010f0 20 20 20 20 20 20 59 31 2c 59 31 2c 59 32 0d 09 | Y1,Y1,Y2..| 00001100 06 1e 20 20 20 20 20 20 20 20 20 20 82 20 20 20 |.. . | 00001110 20 20 20 20 58 31 2c 58 31 2c 58 32 0d 09 10 1e | X1,X1,X2....| 00001120 20 20 20 20 20 20 20 20 20 20 82 20 20 20 20 20 | . | 00001130 20 20 49 31 2c 49 31 2c 49 32 0d 09 1a 1e 20 20 | I1,I1,I2.... | 00001140 20 20 20 20 20 20 20 20 82 20 20 20 20 20 20 20 | . | 00001150 59 32 2c 59 32 2c 59 31 0d 09 24 1e 20 20 20 20 |Y2,Y2,Y1..$. | 00001160 20 20 20 20 20 20 82 20 20 20 20 20 20 20 58 32 | . X2| 00001170 2c 58 32 2c 58 31 0d 09 2e 1e 20 20 20 20 20 20 |,X2,X1.... | 00001180 20 20 20 20 82 20 20 20 20 20 20 20 49 32 2c 49 | . I2,I| 00001190 32 2c 49 31 0d 09 38 1e 20 20 20 20 20 20 20 20 |2,I1..8. | 000011a0 20 20 82 20 20 20 20 20 20 20 59 31 2c 59 31 2c | . Y1,Y1,| 000011b0 59 32 0d 09 42 1e 20 20 20 20 20 20 20 20 20 20 |Y2..B. | 000011c0 82 20 20 20 20 20 20 20 58 31 2c 58 31 2c 58 32 |. X1,X1,X2| 000011d0 0d 09 4c 1e 20 20 20 20 20 20 20 20 20 20 82 20 |..L. . | 000011e0 20 20 20 20 20 20 49 31 2c 49 31 2c 49 32 0d 09 | I1,I1,I2..| 000011f0 56 0d 2e 69 6e 6f 72 64 65 72 33 0d 09 60 1e 20 |V..inorder3..`. | 00001200 20 20 20 20 20 20 20 20 20 53 54 52 20 20 20 20 | STR | 00001210 20 20 20 58 31 2c 58 31 44 0d 09 6a 1e 20 20 20 | X1,X1D..j. | 00001220 20 20 20 20 20 20 20 53 54 52 20 20 20 20 20 20 | STR | 00001230 20 58 32 2c 58 32 44 0d 09 74 1e 20 20 20 20 20 | X2,X2D..t. | 00001240 20 20 20 20 20 53 54 52 20 20 20 20 20 20 20 49 | STR I| 00001250 31 2c 49 31 44 0d 09 7e 20 20 20 20 20 20 20 20 |1,I1D..~ | 00001260 20 20 20 53 55 42 20 20 20 20 20 20 20 58 32 2c | SUB X2,| 00001270 58 32 2c 58 31 0d 09 88 20 20 20 20 20 20 20 20 |X2,X1... | 00001280 20 20 20 53 55 42 20 20 20 20 20 20 20 59 32 2c | SUB Y2,| 00001290 59 32 2c 59 31 0d 09 92 20 20 20 20 20 20 20 20 |Y2,Y1... | 000012a0 20 20 20 53 55 42 20 20 20 20 20 20 20 58 33 2c | SUB X3,| 000012b0 58 33 2c 58 31 0d 09 9c 20 20 20 20 20 20 20 20 |X3,X1... | 000012c0 20 20 20 53 55 42 20 20 20 20 20 20 20 59 33 2c | SUB Y3,| 000012d0 59 33 2c 59 31 0d 09 a6 20 20 20 20 20 20 20 20 |Y3,Y1... | 000012e0 20 20 20 53 55 42 20 20 20 20 20 20 20 49 32 2c | SUB I2,| 000012f0 49 32 2c 49 31 0d 09 b0 20 20 20 20 20 20 20 20 |I2,I1... | 00001300 20 20 20 53 55 42 20 20 20 20 20 20 20 49 33 2c | SUB I3,| 00001310 49 33 2c 49 31 0d 09 ba 04 0d 09 c4 1e 3b 20 73 |I3,I1........; s| 00001320 63 72 65 65 6e 27 3d 73 63 72 65 65 6e 20 2b 20 |creen'=screen + | 00001330 36 34 30 2a 79 31 20 0d 09 ce 27 20 20 20 20 20 |640*y1 ...' | 00001340 20 20 20 20 20 a4 61 64 72 20 20 20 20 20 28 53 | .adr (S| 00001350 43 52 45 45 4e 2c 53 43 52 45 45 4e 32 29 0d 09 |CREEN,SCREEN2)..| 00001360 d8 27 20 20 20 20 20 20 20 20 20 20 4c 44 52 20 |.' LDR | 00001370 20 20 20 20 20 20 53 43 52 45 45 4e 2c 5b 53 43 | SCREEN,[SC| 00001380 52 45 45 4e 5d 0d 09 e2 28 20 20 20 20 20 20 20 |REEN]...( | 00001390 20 20 20 41 44 44 20 20 20 20 20 20 20 54 6d 70 | ADD Tmp| 000013a0 2c 59 31 2c 59 31 2c 4c 53 4c 20 23 32 0d 09 ec |,Y1,Y1,LSL #2...| 000013b0 30 20 20 20 20 20 20 20 20 20 20 41 44 44 20 20 |0 ADD | 000013c0 20 20 20 20 20 53 43 52 45 45 4e 2c 53 43 52 45 | SCREEN,SCRE| 000013d0 45 4e 2c 54 6d 70 2c 4c 53 4c 20 23 37 0d 09 f6 |EN,Tmp,LSL #7...| 000013e0 26 20 20 20 20 20 20 20 20 20 20 53 54 52 20 20 |& STR | 000013f0 20 20 20 20 20 53 43 52 45 45 4e 2c 53 43 52 45 | SCREEN,SCRE| 00001400 45 4e 44 0d 0a 00 04 0d 0a 0a 24 20 20 20 20 20 |END.......$ | 00001410 20 20 20 20 20 a4 61 64 72 20 20 20 20 20 28 48 | .adr (H| 00001420 65 6c 70 2c 49 4e 56 45 52 53 29 0d 0a 14 1f 20 |elp,INVERS).... | 00001430 20 20 20 20 20 20 20 20 20 53 54 52 20 20 20 20 | STR | 00001440 20 20 20 59 32 2c 44 59 32 31 0d 0a 1e 11 3b 20 | Y2,DY21....; | 00001450 63 61 6c 63 20 20 78 32 2f 79 32 0d 0a 28 2c 20 |calc x2/y2..(, | 00001460 20 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 | LDR | 00001470 20 20 20 54 6d 70 2c 5b 48 65 6c 70 2c 59 32 2c | Tmp,[Help,Y2,| 00001480 4c 53 4c 20 23 32 5d 0d 0a 32 22 20 20 20 20 20 |LSL #2]..2" | 00001490 20 20 20 20 20 4d 55 4c 20 20 20 20 20 20 20 54 | MUL T| 000014a0 6d 70 2c 58 32 2c 54 6d 70 0d 0a 3c 26 20 20 20 |mp,X2,Tmp..<& | 000014b0 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 20 | MOV | 000014c0 20 54 6d 70 2c 54 6d 70 2c 41 53 52 20 23 39 0d | Tmp,Tmp,ASR #9.| 000014d0 0a 46 20 20 20 20 20 20 20 20 20 20 20 53 54 52 |.F STR| 000014e0 20 20 20 20 20 20 20 54 6d 70 2c 44 58 32 31 0d | Tmp,DX21.| 000014f0 0a 50 20 20 20 20 20 20 20 20 20 20 20 53 55 42 |.P SUB| 00001500 20 20 20 20 20 20 20 59 31 2c 59 33 2c 59 32 0d | Y1,Y3,Y2.| 00001510 0a 5a 1f 20 20 20 20 20 20 20 20 20 20 53 54 52 |.Z. STR| 00001520 20 20 20 20 20 20 20 59 31 2c 44 59 33 32 0d 0a | Y1,DY32..| 00001530 64 1a 3b 20 63 61 6c 63 20 28 78 33 2d 78 32 29 |d.; calc (x3-x2)| 00001540 2f 28 79 33 2d 79 32 29 0d 0a 6e 2c 20 20 20 20 |/(y3-y2)..n, | 00001550 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 20 20 | LDR | 00001560 54 6d 70 2c 5b 48 65 6c 70 2c 59 31 2c 4c 53 4c |Tmp,[Help,Y1,LSL| 00001570 20 23 32 5d 0d 0a 78 20 20 20 20 20 20 20 20 20 | #2]..x | 00001580 20 20 53 55 42 20 20 20 20 20 20 20 58 31 2c 58 | SUB X1,X| 00001590 33 2c 58 32 0d 0a 82 22 20 20 20 20 20 20 20 20 |3,X2..." | 000015a0 20 20 4d 55 4c 20 20 20 20 20 20 20 54 6d 70 2c | MUL Tmp,| 000015b0 58 31 2c 54 6d 70 0d 0a 8c 26 20 20 20 20 20 20 |X1,Tmp...& | 000015c0 20 20 20 20 4d 4f 56 20 20 20 20 20 20 20 54 6d | MOV Tm| 000015d0 70 2c 54 6d 70 2c 41 53 52 20 23 39 0d 0a 96 20 |p,Tmp,ASR #9... | 000015e0 20 20 20 20 20 20 20 20 20 20 53 54 52 20 20 20 | STR | 000015f0 20 20 20 20 54 6d 70 2c 44 58 33 32 0d 0a a0 16 | Tmp,DX32....| 00001600 3b 20 63 61 6c 63 20 64 78 31 20 3d 20 78 33 2f |; calc dx1 = x3/| 00001610 79 33 0d 0a aa 2c 20 20 20 20 20 20 20 20 20 20 |y3..., | 00001620 4c 44 52 20 20 20 20 20 20 20 54 6d 70 2c 5b 48 |LDR Tmp,[H| 00001630 65 6c 70 2c 59 33 2c 4c 53 4c 20 23 32 5d 0d 0a |elp,Y3,LSL #2]..| 00001640 b4 23 20 20 20 20 20 20 20 20 20 20 4d 55 4c 20 |.# MUL | 00001650 20 20 20 20 20 20 54 6d 70 32 2c 58 33 2c 54 6d | Tmp2,X3,Tm| 00001660 70 0d 0a be 28 20 20 20 20 20 20 20 20 20 20 4d |p...( M| 00001670 4f 56 20 20 20 20 20 20 20 54 6d 70 32 2c 54 6d |OV Tmp2,Tm| 00001680 70 32 2c 41 53 52 20 23 39 0d 0a c8 21 20 20 20 |p2,ASR #9...! | 00001690 20 20 20 20 20 20 20 53 54 52 20 20 20 20 20 20 | STR | 000016a0 20 54 6d 70 32 2c 44 58 33 31 0d 0a d2 0e 20 20 | Tmp2,DX31.... | 000016b0 20 20 20 20 20 20 20 20 0d 0a dc 26 3b 20 73 68 | ...&; sh| 000016c0 61 64 69 6e 67 20 69 6e 63 72 65 6d 65 6e 74 20 |ading increment | 000016d0 69 6e 20 79 20 64 69 72 65 63 74 69 6f 6e 0d 0a |in y direction..| 000016e0 e6 2c 3b 20 63 61 6c 63 20 64 69 31 20 3d 20 69 |.,; calc di1 = i| 000016f0 33 2f 79 33 20 20 20 20 20 20 20 3b 20 69 20 38 |3/y3 ; i 8| 00001700 2e 36 20 64 69 20 38 2e 31 36 0d 0a f0 32 20 20 |.6 di 8.16...2 | 00001710 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 | MOV | 00001720 20 20 54 6d 70 2c 54 6d 70 2c 4c 53 52 20 23 34 | Tmp,Tmp,LSR #4| 00001730 20 20 20 20 20 20 20 3b 20 2e 31 37 0d 0a fa 35 | ; .17...5| 00001740 20 20 20 20 20 20 20 20 20 20 4d 55 4c 20 20 20 | MUL | 00001750 20 20 20 20 49 33 2c 54 6d 70 2c 49 33 20 20 20 | I3,Tmp,I3 | 00001760 20 20 20 20 20 20 20 20 20 20 20 3b 20 38 2e 32 | ; 8.2| 00001770 33 0d 0b 04 33 20 20 20 20 20 20 20 20 20 20 4d |3...3 M| 00001780 4f 56 20 20 20 20 20 20 20 49 33 2c 49 33 2c 41 |OV I3,I3,A| 00001790 53 52 20 23 31 37 2d 31 30 20 20 20 20 20 3b 20 |SR #17-10 ; | 000017a0 38 2e 31 36 0d 0b 0e 25 20 20 20 20 20 20 20 20 |8.16...% | 000017b0 20 20 4d 4f 56 20 20 20 20 20 20 20 49 31 2c 49 | MOV I1,I| 000017c0 31 2c 4c 53 4c 20 23 31 30 0d 0b 18 27 20 20 20 |1,LSL #10...' | 000017d0 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 20 | ADD | 000017e0 20 49 31 2c 49 31 2c 49 33 2c 41 53 52 20 23 31 | I1,I1,I3,ASR #1| 000017f0 0d 0b 22 1e 20 20 20 20 20 20 20 20 20 20 53 54 |..". ST| 00001800 52 20 20 20 20 20 20 20 49 33 2c 49 33 44 0d 0b |R I3,I3D..| 00001810 2c 1e 20 20 20 20 20 20 20 20 20 20 53 54 52 20 |,. STR | 00001820 20 20 20 20 20 20 49 31 2c 49 31 44 0d 0b 36 04 | I1,I1D..6.| 00001830 0d 0b 40 27 3b 20 63 61 6c 63 20 32 5e 32 31 2f |..@'; calc 2^21/| 00001840 66 6c 6f 6f 72 28 61 62 73 28 78 32 20 2d 20 64 |floor(abs(x2 - d| 00001850 78 31 2a 79 32 29 29 0d 0b 4a 38 20 20 20 20 20 |x1*y2))..J8 | 00001860 20 20 20 20 20 4d 55 4c 20 20 20 20 20 20 20 54 | MUL T| 00001870 6d 70 2c 59 32 2c 54 6d 70 32 20 20 20 20 20 20 |mp,Y2,Tmp2 | 00001880 20 20 20 3b 20 28 78 33 2f 79 33 29 2a 79 32 0d | ; (x3/y3)*y2.| 00001890 0b 54 3b 20 20 20 20 20 20 20 20 20 20 52 53 42 |.T; RSB| 000018a0 20 20 20 20 20 20 20 54 6d 70 2c 54 6d 70 2c 58 | Tmp,Tmp,X| 000018b0 32 2c 4c 53 4c 20 23 31 32 20 20 3b 20 78 32 2d |2,LSL #12 ; x2-| 000018c0 28 78 33 2f 79 33 29 2a 79 32 0d 0b 5e 38 20 20 |(x3/y3)*y2..^8 | 000018d0 20 20 20 20 20 20 20 20 4d 4f 56 53 20 20 20 20 | MOVS | 000018e0 20 20 54 6d 70 2c 54 6d 70 2c 41 53 52 20 23 31 | Tmp,Tmp,ASR #1| 000018f0 30 20 20 20 20 20 3b 20 69 6e 74 28 20 2e 2e 2e |0 ; int( ...| 00001900 20 29 0d 0b 68 22 20 20 20 20 20 20 20 20 20 20 | )..h" | 00001910 52 53 42 4d 49 20 20 20 20 20 54 6d 70 2c 54 6d |RSBMI Tmp,Tm| 00001920 70 2c 23 30 0d 0b 72 34 20 20 20 20 20 20 20 20 |p,#0..r4 | 00001930 20 20 4c 44 52 20 20 20 20 20 20 20 54 6d 70 2c | LDR Tmp,| 00001940 5b 48 65 6c 70 2c 54 6d 70 2c 4c 53 4c 20 23 32 |[Help,Tmp,LSL #2| 00001950 5d 20 20 3b 20 2e 31 39 0d 0b 7c 0e 20 20 20 20 |] ; .19..|. | 00001960 20 20 20 20 20 20 0d 0b 86 26 3b 20 73 68 61 64 | ...&; shad| 00001970 69 6e 67 20 69 6e 63 72 65 6d 65 6e 74 20 69 6e |ing increment in| 00001980 20 78 20 64 69 72 65 63 74 69 6f 6e 0d 0b 90 30 | x direction...0| 00001990 3b 20 63 61 6c 63 20 64 69 32 20 3d 20 28 69 32 |; calc di2 = (i2| 000019a0 2d 64 69 31 2a 79 32 29 20 2f 20 61 62 73 28 20 |-di1*y2) / abs( | 000019b0 78 32 20 2d 20 64 78 31 2a 79 32 29 0d 0b 9a 2f |x2 - dx1*y2).../| 000019c0 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 | MOV | 000019d0 20 20 20 20 49 32 2c 49 32 2c 4c 53 4c 20 23 31 | I2,I2,LSL #1| 000019e0 30 20 20 20 20 3b 20 38 2e 31 36 0d 0b a4 20 20 |0 ; 8.16... | 000019f0 20 20 20 20 20 20 20 20 20 4d 55 4c 20 20 20 20 | MUL | 00001a00 20 20 20 49 33 2c 59 32 2c 49 33 0d 0b ae 2d 20 | I3,Y2,I3...- | 00001a10 20 20 20 20 20 20 20 20 20 52 53 42 20 20 20 20 | RSB | 00001a20 20 20 20 49 32 2c 49 33 2c 49 32 20 20 20 20 20 | I2,I3,I2 | 00001a30 20 20 3b 20 38 2e 31 36 0d 0b b8 2c 20 20 20 20 | ; 8.16..., | 00001a40 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 20 20 | MOV | 00001a50 49 32 2c 49 32 2c 41 53 52 20 23 38 20 20 20 3b |I2,I2,ASR #8 ;| 00001a60 20 38 2e 38 0d 0b c2 2d 20 20 20 20 20 20 20 20 | 8.8...- | 00001a70 20 20 4d 4f 56 20 20 20 20 20 20 20 54 6d 70 2c | MOV Tmp,| 00001a80 54 6d 70 2c 4c 53 52 20 23 33 20 20 3b 20 2e 31 |Tmp,LSR #3 ; .1| 00001a90 36 0d 0b cc 2d 20 20 20 20 20 20 20 20 20 20 4d |6...- M| 00001aa0 55 4c 20 20 20 20 20 20 20 49 32 2c 54 6d 70 2c |UL I2,Tmp,| 00001ab0 49 32 20 20 20 20 20 3b 20 20 38 2e 32 34 0d 0b |I2 ; 8.24..| 00001ac0 d6 25 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 |.% MOV | 00001ad0 20 20 20 20 20 20 49 32 2c 49 32 2c 41 53 52 20 | I2,I2,ASR | 00001ae0 23 31 36 0d 0b e0 2c 20 20 20 20 20 20 20 20 20 |#16..., | 00001af0 20 53 54 52 20 20 20 20 20 20 20 49 32 2c 49 32 | STR I2,I2| 00001b00 44 20 20 20 20 20 20 20 20 20 3b 20 38 2e 38 0d |D ; 8.8.| 00001b10 0b ea 1e 20 20 20 20 20 20 20 20 20 20 4c 44 52 |... LDR| 00001b20 20 20 20 20 20 20 20 49 31 2c 49 31 44 0d 0b f4 | I1,I1D...| 00001b30 27 20 20 20 20 20 20 20 20 20 20 41 44 44 20 20 |' ADD | 00001b40 20 20 20 20 20 49 31 2c 49 31 2c 49 32 2c 4c 53 | I1,I1,I2,LS| 00001b50 4c 20 23 37 0d 0b fe 1e 20 20 20 20 20 20 20 20 |L #7.... | 00001b60 20 20 53 54 52 20 20 20 20 20 20 20 49 31 2c 49 | STR I1,I| 00001b70 31 44 0d 0c 08 0e 20 20 20 20 20 20 20 20 20 20 |1D.... | 00001b80 0d 0c 12 21 20 20 20 20 20 20 20 20 20 20 4c 44 |...! LD| 00001b90 52 20 20 20 20 20 20 20 4f 2c 53 43 52 45 45 4e |R O,SCREEN| 00001ba0 44 0d 0c 1c 04 0d 0c 26 1d 20 20 20 20 20 20 20 |D......&. | 00001bb0 20 20 20 4c 44 52 20 20 20 20 20 20 20 54 2c 58 | LDR T,X| 00001bc0 31 44 0d 0c 30 38 20 20 20 20 20 20 20 20 20 20 |1D..08 | 00001bd0 4d 4f 56 20 20 20 20 20 20 20 4c 2c 54 2c 4c 53 |MOV L,T,LS| 00001be0 4c 20 23 31 32 20 20 3b 20 78 6c 20 3d 20 28 58 |L #12 ; xl = (X| 00001bf0 31 2b 30 2e 35 29 2a 46 49 58 0d 0c 3a 22 20 20 |1+0.5)*FIX..:" | 00001c00 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 | ADD | 00001c10 20 20 4c 2c 4c 2c 23 31 3c 3c 31 31 0d 0c 44 31 | L,L,#1<<11..D1| 00001c20 20 20 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 | LDR | 00001c30 20 20 20 20 4c 41 2c 44 58 33 31 20 20 20 20 20 | LA,DX31 | 00001c40 20 3b 20 64 78 6c 20 3d 20 64 78 33 31 0d 0c 4e | ; dxl = dx31..N| 00001c50 38 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 20 |8 MOV | 00001c60 20 20 20 20 20 52 2c 4c 20 20 20 20 20 20 20 20 | R,L | 00001c70 20 20 3b 20 78 72 20 3d 20 28 58 31 2b 30 2e 35 | ; xr = (X1+0.5| 00001c80 29 2a 46 49 58 0d 0c 58 31 20 20 20 20 20 20 20 |)*FIX..X1 | 00001c90 20 20 20 4c 44 52 20 20 20 20 20 20 20 52 41 2c | LDR RA,| 00001ca0 44 58 32 31 20 20 20 20 20 20 3b 20 64 78 72 20 |DX21 ; dxr | 00001cb0 3d 20 64 78 32 31 0d 0c 62 36 20 20 20 20 20 20 |= dx21..b6 | 00001cc0 20 20 20 20 41 44 44 20 20 20 20 20 20 20 4c 2c | ADD L,| 00001cd0 4c 2c 4c 41 2c 41 53 52 20 23 31 20 20 3b 20 78 |L,LA,ASR #1 ; x| 00001ce0 6c 20 2b 3d 20 30 2e 35 2a 64 78 6c 0d 0c 6c 36 |l += 0.5*dxl..l6| 00001cf0 20 20 20 20 20 20 20 20 20 20 41 44 44 20 20 20 | ADD | 00001d00 20 20 20 20 52 2c 52 2c 52 41 2c 41 53 52 20 23 | R,R,RA,ASR #| 00001d10 31 20 20 3b 20 78 72 20 2b 3d 20 30 2e 35 2a 64 |1 ; xr += 0.5*d| 00001d20 78 72 0d 0c 76 1f 20 20 20 20 20 20 20 20 20 20 |xr..v. | 00001d30 4c 44 52 20 20 20 20 20 20 20 43 54 2c 44 59 32 |LDR CT,DY2| 00001d40 31 0d 0c 80 35 20 20 20 20 20 20 20 20 20 20 43 |1...5 C| 00001d50 4d 50 20 20 20 20 20 20 20 43 54 2c 23 30 20 20 |MP CT,#0 | 00001d60 20 20 20 20 20 20 20 20 3b 20 63 6f 75 6e 74 20 | ; count | 00001d70 3d 20 64 79 32 31 0d 0c 8a 1d 20 20 20 20 20 20 |= dy21.... | 00001d80 20 20 20 20 42 4c 4e 45 20 20 20 20 20 20 50 49 | BLNE PI| 00001d90 45 43 45 0d 0c 94 04 0d 0c 9e 1d 20 20 20 20 20 |ECE........ | 00001da0 20 20 20 20 20 4c 44 52 20 20 20 20 20 20 20 54 | LDR T| 00001db0 2c 58 32 44 0d 0c a8 32 20 20 20 20 20 20 20 20 |,X2D...2 | 00001dc0 20 20 4d 4f 56 20 20 20 20 20 20 20 52 2c 54 2c | MOV R,T,| 00001dd0 4c 53 4c 20 23 31 32 20 20 20 3b 20 64 78 72 20 |LSL #12 ; dxr | 00001de0 3d 20 64 78 33 32 0d 0c b2 39 20 20 20 20 20 20 |= dx32...9 | 00001df0 20 20 20 20 41 44 44 20 20 20 20 20 20 20 52 2c | ADD R,| 00001e00 52 2c 23 31 3c 3c 31 31 20 20 20 20 3b 20 78 72 |R,#1<<11 ; xr| 00001e10 20 3d 20 28 58 32 2b 30 2e 35 29 2a 46 49 58 0d | = (X2+0.5)*FIX.| 00001e20 0c bc 1f 20 20 20 20 20 20 20 20 20 20 4c 44 52 |... LDR| 00001e30 20 20 20 20 20 20 20 4c 41 2c 44 58 33 31 0d 0c | LA,DX31..| 00001e40 c6 1f 20 20 20 20 20 20 20 20 20 20 4c 44 52 20 |.. LDR | 00001e50 20 20 20 20 20 20 52 41 2c 44 58 33 32 0d 0c d0 | RA,DX32...| 00001e60 35 20 20 20 20 20 20 20 20 20 20 41 44 44 20 20 |5 ADD | 00001e70 20 20 20 20 20 52 2c 52 2c 52 41 2c 41 53 52 20 | R,R,RA,ASR | 00001e80 23 31 20 20 3b 20 78 72 2b 3d 20 30 2e 35 2a 64 |#1 ; xr+= 0.5*d| 00001e90 78 72 0d 0c da 1f 20 20 20 20 20 20 20 20 20 20 |xr.... | 00001ea0 4c 44 52 20 20 20 20 20 20 20 43 54 2c 44 59 33 |LDR CT,DY3| 00001eb0 32 0d 0c e4 34 20 20 20 20 20 20 20 20 20 20 43 |2...4 C| 00001ec0 4d 50 20 20 20 20 20 20 20 43 54 2c 23 30 20 20 |MP CT,#0 | 00001ed0 20 20 20 20 20 20 20 20 3b 20 63 6f 75 6e 74 3d | ; count=| 00001ee0 20 64 79 33 32 0d 0c ee 1d 20 20 20 20 20 20 20 | dy32.... | 00001ef0 20 20 20 42 4c 4e 45 20 20 20 20 20 20 50 49 45 | BLNE PIE| 00001f00 43 45 0d 0c f8 08 2e 65 6e 64 0d 0d 02 1e 20 20 |CE.....end.... | 00001f10 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 | LDR | 00001f20 20 20 31 33 2c 73 70 64 0d 0d 0c 26 20 20 20 20 | 13,spd...& | 00001f30 20 20 20 20 20 20 4c 44 4d 46 44 20 20 20 20 20 | LDMFD | 00001f40 31 33 21 2c 7b 30 2d 31 32 2c 50 43 7d 5e 0d 0d |13!,{0-12,PC}^..| 00001f50 16 05 5d 0d 0d 20 07 3d 22 22 0d 0d 2a 04 0d 0d |..].. .=""..*...| 00001f60 34 04 0d 0d 3e 0c dd 20 a4 70 69 65 63 65 0d 0d |4...>.. .piece..| 00001f70 48 0d 5b 4f 50 54 20 50 41 53 53 0d 0d 52 0e 2e |H.[OPT PASS..R..| 00001f80 49 31 44 20 44 43 44 20 30 0d 0d 5c 0e 2e 49 32 |I1D DCD 0..\..I2| 00001f90 44 20 44 43 44 20 30 0d 0d 66 0e 2e 49 33 44 20 |D DCD 0..f..I3D | 00001fa0 44 43 44 20 30 0d 0d 70 04 0d 0d 7a 20 2e 50 49 |DCD 0..p...z .PI| 00001fb0 45 43 45 20 53 54 4d 46 44 20 20 20 20 20 31 33 |ECE STMFD 13| 00001fc0 21 2c 7b 43 54 2c 31 34 7d 0d 0d 84 04 0d 0d 8e |!,{CT,14}.......| 00001fd0 11 3b 20 63 6c 69 70 20 74 6f 20 74 6f 70 0d 0d |.; clip to top..| 00001fe0 98 22 20 20 20 20 20 20 20 20 20 20 a4 61 64 72 |." .adr| 00001ff0 20 20 20 20 20 28 54 2c 53 43 52 45 45 4e 32 29 | (T,SCREEN2)| 00002000 0d 0d a2 1d 20 20 20 20 20 20 20 20 20 20 4c 44 |.... LD| 00002010 52 20 20 20 20 20 20 20 54 2c 5b 54 5d 0d 0d ac |R T,[T]...| 00002020 1b 20 20 20 20 20 20 20 20 20 20 43 4d 50 20 20 |. CMP | 00002030 20 20 20 20 20 4f 2c 54 0d 0d b6 1d 20 20 20 20 | O,T.... | 00002040 20 20 20 20 20 20 42 48 53 20 20 20 20 20 20 20 | BHS | 00002050 65 63 6c 69 70 0d 0d c0 09 2e 63 6c 69 70 0d 0d |eclip.....clip..| 00002060 ca 1e 20 20 20 20 20 20 20 20 20 20 41 44 44 20 |.. ADD | 00002070 20 20 20 20 20 20 4c 2c 4c 2c 4c 41 0d 0d d4 1e | L,L,LA....| 00002080 20 20 20 20 20 20 20 20 20 20 41 44 44 20 20 20 | ADD | 00002090 20 20 20 20 52 2c 52 2c 52 41 0d 0d de 20 20 20 | R,R,RA... | 000020a0 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 | ADD | 000020b0 20 20 4f 2c 4f 2c 23 36 34 30 0d 0d e8 19 3b 20 | O,O,#640....; | 000020c0 69 6e 63 72 65 6d 65 6e 74 20 79 20 73 68 61 64 |increment y shad| 000020d0 69 6e 67 0d 0d f2 04 0d 0d fc 1d 20 20 20 20 20 |ing........ | 000020e0 20 20 20 20 20 4c 44 52 20 20 20 20 20 20 20 49 | LDR I| 000020f0 2c 49 31 44 0d 0e 06 1d 20 20 20 20 20 20 20 20 |,I1D.... | 00002100 20 20 4c 44 52 20 20 20 20 20 20 20 48 2c 49 33 | LDR H,I3| 00002110 44 0d 0e 10 1d 20 20 20 20 20 20 20 20 20 20 41 |D.... A| 00002120 44 44 20 20 20 20 20 20 20 49 2c 49 2c 48 0d 0e |DD I,I,H..| 00002130 1a 1d 20 20 20 20 20 20 20 20 20 20 53 54 52 20 |.. STR | 00002140 20 20 20 20 20 20 49 2c 49 31 44 0d 0e 24 04 0d | I,I1D..$..| 00002150 0e 2e 20 20 20 20 20 20 20 20 20 20 20 53 55 42 |.. SUB| 00002160 53 20 20 20 20 20 20 43 54 2c 43 54 2c 23 31 0d |S CT,CT,#1.| 00002170 0e 38 23 20 20 20 20 20 20 20 20 20 20 4c 44 4d |.8# LDM| 00002180 45 51 46 44 20 20 20 31 33 21 2c 7b 43 54 2c 31 |EQFD 13!,{CT,1| 00002190 35 7d 0d 0e 42 1b 20 20 20 20 20 20 20 20 20 20 |5}..B. | 000021a0 43 4d 50 20 20 20 20 20 20 20 4f 2c 54 0d 0e 4c |CMP O,T..L| 000021b0 1c 20 20 20 20 20 20 20 20 20 20 42 4c 4f 20 20 |. BLO | 000021c0 20 20 20 20 20 63 6c 69 70 0d 0e 56 0a 2e 65 63 | clip..V..ec| 000021d0 6c 69 70 0d 0e 60 14 3b 20 63 6c 69 70 20 74 6f |lip..`.; clip to| 000021e0 20 62 6f 74 74 6f 6d 0d 0e 6a 24 20 20 20 20 20 | bottom..j$ | 000021f0 20 20 20 20 20 41 44 44 20 20 20 20 20 20 20 54 | ADD T| 00002200 2c 54 2c 23 36 34 30 2a 34 38 30 0d 0e 74 1d 20 |,T,#640*480..t. | 00002210 20 20 20 20 20 20 20 20 20 53 55 42 53 20 20 20 | SUBS | 00002220 20 20 20 54 2c 54 2c 4f 0d 0e 7e 23 20 20 20 20 | T,T,O..~# | 00002230 20 20 20 20 20 20 4c 44 4d 4c 53 46 44 20 20 20 | LDMLSFD | 00002240 31 33 21 2c 7b 43 54 2c 31 35 7d 0d 0e 88 27 20 |13!,{CT,15}...' | 00002250 20 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 | ADD | 00002260 20 20 20 43 54 2c 43 54 2c 43 54 2c 4c 53 4c 20 | CT,CT,CT,LSL | 00002270 23 32 0d 0e 92 23 20 20 20 20 20 20 20 20 20 20 |#2...# | 00002280 43 4d 50 20 20 20 20 20 20 20 43 54 2c 54 2c 4c |CMP CT,T,L| 00002290 53 52 20 23 37 0d 0e 9c 23 20 20 20 20 20 20 20 |SR #7...# | 000022a0 20 20 20 4d 4f 56 48 49 20 20 20 20 20 43 54 2c | MOVHI CT,| 000022b0 54 2c 4c 53 52 20 23 37 0d 0e a6 3f 20 20 20 20 |T,LSR #7...? | 000022c0 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 20 20 | CMP | 000022d0 4c 2c 52 20 20 20 20 20 20 20 20 20 20 3b 20 6c |L,R ; l| 000022e0 65 66 74 20 6f 72 20 72 69 67 68 74 20 6f 72 69 |eft or right ori| 000022f0 65 6e 74 65 64 20 3f 0d 0e b0 1e 20 20 20 20 20 |ented ?.... | 00002300 20 20 20 20 20 42 47 54 20 20 20 20 20 20 20 73 | BGT s| 00002310 70 61 6e 5f 32 0d 0e ba 1c 20 20 20 20 20 20 20 |pan_2.... | 00002320 20 20 20 42 41 4c 20 20 20 20 20 20 20 73 70 61 | BAL spa| 00002330 6e 0d 0e c4 0c 2e 65 6e 64 73 70 61 6e 0d 0e ce |n.....endspan...| 00002340 20 20 20 20 20 20 20 20 20 20 20 41 44 44 20 20 | ADD | 00002350 20 20 20 20 20 4f 2c 4f 2c 23 36 34 30 0d 0e d8 | O,O,#640...| 00002360 1e 20 20 20 20 20 20 20 20 20 20 41 44 44 20 20 |. ADD | 00002370 20 20 20 20 20 4c 2c 4c 2c 4c 41 0d 0e e2 1e 20 | L,L,LA.... | 00002380 20 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 | ADD | 00002390 20 20 20 52 2c 52 2c 52 41 0d 0e ec 20 20 20 20 | R,R,RA... | 000023a0 20 20 20 20 20 20 20 53 55 42 53 20 20 20 20 20 | SUBS | 000023b0 20 43 54 2c 43 54 2c 23 35 0d 0e f6 19 3b 20 69 | CT,CT,#5....; i| 000023c0 6e 63 72 65 6d 65 6e 74 20 79 20 73 68 61 64 69 |ncrement y shadi| 000023d0 6e 67 0d 0f 00 04 0d 0f 0a 1d 20 20 20 20 20 20 |ng........ | 000023e0 20 20 20 20 4c 44 52 20 20 20 20 20 20 20 54 2c | LDR T,| 000023f0 49 31 44 0d 0f 14 1d 20 20 20 20 20 20 20 20 20 |I1D.... | 00002400 20 4c 44 52 20 20 20 20 20 20 20 49 2c 49 33 44 | LDR I,I3D| 00002410 0d 0f 1e 1d 20 20 20 20 20 20 20 20 20 20 41 44 |.... AD| 00002420 44 20 20 20 20 20 20 20 49 2c 49 2c 54 0d 0f 28 |D I,I,T..(| 00002430 1d 20 20 20 20 20 20 20 20 20 20 53 54 52 20 20 |. STR | 00002440 20 20 20 20 20 49 2c 49 31 44 0d 0f 32 04 0d 0f | I,I1D..2...| 00002450 3c 23 20 20 20 20 20 20 20 20 20 20 4c 44 4d 45 |<# LDME| 00002460 51 46 44 20 20 20 31 33 21 2c 7b 43 54 2c 31 35 |QFD 13!,{CT,15| 00002470 7d 0d 0f 46 09 2e 73 70 61 6e 0d 0f 50 04 0d 0f |}..F..span..P...| 00002480 5a 04 0d 0f 64 13 3b 20 63 6c 69 70 20 74 6f 20 |Z...d.; clip to | 00002490 72 69 67 68 74 0d 0f 6e 22 20 20 20 20 20 20 20 |right..n" | 000024a0 20 20 20 43 4d 50 20 20 20 20 20 20 20 52 2c 23 | CMP R,#| 000024b0 36 34 30 3c 3c 31 32 0d 0f 78 26 20 20 20 20 20 |640<<12..x& | 000024c0 20 20 20 20 20 41 44 44 20 20 20 20 20 20 20 58 | ADD X| 000024d0 52 2c 4f 2c 52 2c 41 53 52 20 23 31 32 0d 0f 82 |R,O,R,ASR #12...| 000024e0 21 20 20 20 20 20 20 20 20 20 20 41 44 44 47 54 |! ADDGT| 000024f0 20 20 20 20 20 58 52 2c 4f 2c 23 36 34 30 0d 0f | XR,O,#640..| 00002500 8c 12 3b 20 43 6c 69 70 20 74 6f 20 6c 65 66 74 |..; Clip to left| 00002510 0d 0f 96 23 20 20 20 20 20 20 20 20 20 20 4d 4f |...# MO| 00002520 56 53 20 20 20 20 20 20 54 2c 4c 2c 41 53 52 20 |VS T,L,ASR | 00002530 23 31 32 0d 0f a0 1e 20 20 20 20 20 20 20 20 20 |#12.... | 00002540 20 41 44 44 20 20 20 20 20 20 20 58 4c 2c 4f 2c | ADD XL,O,| 00002550 54 0d 0f aa 1c 20 20 20 20 20 20 20 20 20 20 4d |T.... M| 00002560 4f 56 4c 54 20 20 20 20 20 58 4c 2c 4f 0d 0f b4 |OVLT XL,O...| 00002570 1e 20 20 20 20 20 20 20 20 20 20 52 53 42 4d 49 |. RSBMI| 00002580 20 20 20 20 20 54 2c 54 2c 23 30 0d 0f be 04 0d | T,T,#0.....| 00002590 0f c8 04 0d 0f d2 29 3b 20 4c 6f 61 64 20 6c 69 |......); Load li| 000025a0 6e 65 20 73 68 61 64 65 20 61 6e 64 20 73 68 61 |ne shade and sha| 000025b0 64 65 20 69 6e 63 72 65 6d 65 6e 74 0d 0f dc 2e |de increment....| 000025c0 20 20 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 | LDR | 000025d0 20 20 20 20 49 2c 49 31 44 20 20 20 20 20 20 20 | I,I1D | 000025e0 20 20 20 20 3b 20 31 30 2e 34 0d 0f e6 22 20 20 | ; 10.4..." | 000025f0 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 | MOV | 00002600 20 20 49 2c 49 2c 41 53 52 20 23 38 0d 0f f0 2e | I,I,ASR #8....| 00002610 20 20 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 | LDR | 00002620 20 20 20 20 48 2c 49 32 44 20 20 20 20 20 20 20 | H,I2D | 00002630 20 20 20 20 3b 20 31 30 2e 34 0d 0f fa 1f 20 20 | ; 10.4.... | 00002640 20 20 20 20 20 20 20 20 4d 4c 41 4d 49 20 20 20 | MLAMI | 00002650 20 20 49 2c 54 2c 48 2c 49 0d 10 04 04 0d 10 0e | I,T,H,I.......| 00002660 22 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 20 |" MOV | 00002670 20 20 20 20 20 54 2c 4c 2c 41 53 52 20 23 34 0d | T,L,ASR #4.| 00002680 10 18 1e 20 20 20 20 20 20 20 20 20 20 80 20 20 |... . | 00002690 20 20 20 20 20 54 2c 54 2c 23 32 35 35 0d 10 22 | T,T,#255.."| 000026a0 1d 20 20 20 20 20 20 20 20 20 20 4d 55 4c 20 20 |. MUL | 000026b0 20 20 20 20 20 54 2c 48 2c 54 0d 10 2c 24 20 20 | T,H,T..,$ | 000026c0 20 20 20 20 20 20 20 20 53 55 42 20 20 20 20 20 | SUB | 000026d0 20 20 49 2c 49 2c 54 2c 41 53 52 20 23 38 0d 10 | I,I,T,ASR #8..| 000026e0 36 04 0d 10 40 30 20 20 20 20 20 20 20 20 20 20 |6...@0 | 000026f0 4d 4f 56 20 20 20 20 20 20 20 49 2c 49 2c 4c 53 |MOV I,I,LS| 00002700 4c 20 23 31 36 20 20 20 20 20 20 3b 20 31 30 2e |L #16 ; 10.| 00002710 32 32 0d 10 4a 30 20 20 20 20 20 20 20 20 20 20 |22..J0 | 00002720 4d 4f 56 20 20 20 20 20 20 20 48 2c 48 2c 4c 53 |MOV H,H,LS| 00002730 4c 20 23 31 36 20 20 20 20 20 20 3b 20 31 30 2e |L #16 ; 10.| 00002740 32 32 0d 10 54 25 20 20 20 20 20 20 20 20 20 20 |22..T% | 00002750 41 44 44 20 20 20 20 20 20 20 49 2c 49 2c 48 2c |ADD I,I,H,| 00002760 4c 53 52 20 23 31 36 0d 10 5e 04 0d 10 68 1f 20 |LSR #16..^...h. | 00002770 20 20 20 20 20 20 20 20 20 53 55 42 20 20 20 20 | SUB | 00002780 20 20 20 54 2c 58 52 2c 58 4c 0d 10 72 1c 20 20 | T,XR,XL..r. | 00002790 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 | CMP | 000027a0 20 20 54 2c 23 33 0d 10 7c 21 20 20 20 20 20 20 | T,#3..|! | 000027b0 20 20 20 20 42 4c 45 20 20 20 20 20 20 20 73 6d | BLE sm| 000027c0 61 6c 6c 73 70 61 6e 0d 10 86 1d 20 20 20 20 20 |allspan.... | 000027d0 20 20 20 20 20 54 53 54 20 20 20 20 20 20 20 58 | TST X| 000027e0 4c 2c 23 33 0d 10 90 20 20 20 20 20 20 20 20 20 |L,#3... | 000027f0 20 20 42 45 51 20 20 20 20 20 20 20 65 6e 64 6c | BEQ endl| 00002800 6f 6f 70 31 0d 10 9a 1a 2e 6c 6f 6f 70 31 20 20 |oop1.....loop1 | 00002810 20 20 a4 6d 61 70 62 79 74 65 28 43 31 29 0d 10 | .mapbyte(C1)..| 00002820 a4 22 20 20 20 20 20 20 20 20 20 20 53 54 52 42 |." STRB| 00002830 20 20 20 20 20 20 43 31 2c 5b 58 4c 5d 2c 23 31 | C1,[XL],#1| 00002840 0d 10 ae 1d 20 20 20 20 20 20 20 20 20 20 54 53 |.... TS| 00002850 54 20 20 20 20 20 20 20 58 4c 2c 23 33 0d 10 b8 |T XL,#3...| 00002860 1d 20 20 20 20 20 20 20 20 20 20 42 4e 45 20 20 |. BNE | 00002870 20 20 20 20 20 6c 6f 6f 70 31 0d 10 c2 04 0d 10 | loop1......| 00002880 cc 1f 2e 65 6e 64 6c 6f 6f 70 31 20 53 55 42 20 |...endloop1 SUB | 00002890 20 20 20 20 20 20 48 2c 58 52 2c 58 4c 0d 10 d6 | H,XR,XL...| 000028a0 22 20 20 20 20 20 20 20 20 20 20 4d 4f 56 53 20 |" MOVS | 000028b0 20 20 20 20 20 48 2c 48 2c 4c 53 52 20 23 33 0d | H,H,LSR #3.| 000028c0 10 e0 1c 20 20 20 20 20 20 20 20 20 20 42 43 43 |... BCC| 000028d0 20 20 20 20 20 20 20 64 6f 69 74 0d 10 ea 1a 20 | doit.... | 000028e0 20 20 20 20 20 20 20 20 20 a4 6d 61 70 62 79 74 | .mapbyt| 000028f0 65 28 43 31 29 0d 10 f4 19 20 20 20 20 20 20 20 |e(C1).... | 00002900 20 20 20 a4 6d 61 70 62 79 74 65 28 54 29 0d 10 | .mapbyte(T)..| 00002910 fe 26 20 20 20 20 20 20 20 20 20 20 41 44 44 20 |.& ADD | 00002920 20 20 20 20 20 20 43 31 2c 43 31 2c 54 2c 4c 53 | C1,C1,T,LS| 00002930 4c 20 23 38 0d 11 08 19 20 20 20 20 20 20 20 20 |L #8.... | 00002940 20 20 a4 6d 61 70 62 79 74 65 28 54 29 0d 11 12 | .mapbyte(T)...| 00002950 27 20 20 20 20 20 20 20 20 20 20 41 44 44 20 20 |' ADD | 00002960 20 20 20 20 20 43 31 2c 43 31 2c 54 2c 4c 53 4c | C1,C1,T,LSL| 00002970 20 23 31 36 0d 11 1c 19 20 20 20 20 20 20 20 20 | #16.... | 00002980 20 20 a4 6d 61 70 62 79 74 65 28 54 29 0d 11 26 | .mapbyte(T)..&| 00002990 27 20 20 20 20 20 20 20 20 20 20 41 44 44 20 20 |' ADD | 000029a0 20 20 20 20 20 43 31 2c 43 31 2c 54 2c 4c 53 4c | C1,C1,T,LSL| 000029b0 20 23 32 34 0d 11 30 22 20 20 20 20 20 20 20 20 | #24..0" | 000029c0 20 20 53 54 52 20 20 20 20 20 20 20 43 31 2c 5b | STR C1,[| 000029d0 58 4c 5d 2c 23 34 0d 11 3a 1c 20 20 20 20 20 20 |XL],#4..:. | 000029e0 20 20 20 20 43 4d 50 20 20 20 20 20 20 20 48 2c | CMP H,| 000029f0 23 30 0d 11 44 21 2e 64 6f 69 74 20 20 20 20 20 |#0..D!.doit | 00002a00 42 45 51 20 20 20 20 20 20 20 73 6d 61 6c 6c 73 |BEQ smalls| 00002a10 70 61 6e 0d 11 4e 04 0d 11 58 1a 2e 6c 6f 6f 70 |pan..N...X..loop| 00002a20 32 20 20 20 20 a4 6d 61 70 62 79 74 65 28 43 31 |2 .mapbyte(C1| 00002a30 29 0d 11 62 19 20 20 20 20 20 20 20 20 20 20 a4 |)..b. .| 00002a40 6d 61 70 62 79 74 65 28 54 29 0d 11 6c 26 20 20 |mapbyte(T)..l& | 00002a50 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 | ADD | 00002a60 20 20 43 31 2c 43 31 2c 54 2c 4c 53 4c 20 23 38 | C1,C1,T,LSL #8| 00002a70 0d 11 76 19 20 20 20 20 20 20 20 20 20 20 a4 6d |..v. .m| 00002a80 61 70 62 79 74 65 28 54 29 0d 11 80 27 20 20 20 |apbyte(T)...' | 00002a90 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 20 | ADD | 00002aa0 20 43 31 2c 43 31 2c 54 2c 4c 53 4c 20 23 31 36 | C1,C1,T,LSL #16| 00002ab0 0d 11 8a 19 20 20 20 20 20 20 20 20 20 20 a4 6d |.... .m| 00002ac0 61 70 62 79 74 65 28 54 29 0d 11 94 27 20 20 20 |apbyte(T)...' | 00002ad0 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 20 | ADD | 00002ae0 20 43 31 2c 43 31 2c 54 2c 4c 53 4c 20 23 32 34 | C1,C1,T,LSL #24| 00002af0 0d 11 9e 1a 20 20 20 20 20 20 20 20 20 20 a4 6d |.... .m| 00002b00 61 70 62 79 74 65 28 43 32 29 0d 11 a8 19 20 20 |apbyte(C2).... | 00002b10 20 20 20 20 20 20 20 20 a4 6d 61 70 62 79 74 65 | .mapbyte| 00002b20 28 54 29 0d 11 b2 26 20 20 20 20 20 20 20 20 20 |(T)...& | 00002b30 20 41 44 44 20 20 20 20 20 20 20 43 32 2c 43 32 | ADD C2,C2| 00002b40 2c 54 2c 4c 53 4c 20 23 38 0d 11 bc 19 20 20 20 |,T,LSL #8.... | 00002b50 20 20 20 20 20 20 20 a4 6d 61 70 62 79 74 65 28 | .mapbyte(| 00002b60 54 29 0d 11 c6 27 20 20 20 20 20 20 20 20 20 20 |T)...' | 00002b70 41 44 44 20 20 20 20 20 20 20 43 32 2c 43 32 2c |ADD C2,C2,| 00002b80 54 2c 4c 53 4c 20 23 31 36 0d 11 d0 19 20 20 20 |T,LSL #16.... | 00002b90 20 20 20 20 20 20 20 a4 6d 61 70 62 79 74 65 28 | .mapbyte(| 00002ba0 54 29 0d 11 da 27 20 20 20 20 20 20 20 20 20 20 |T)...' | 00002bb0 41 44 44 20 20 20 20 20 20 20 43 32 2c 43 32 2c |ADD C2,C2,| 00002bc0 54 2c 4c 53 4c 20 23 32 34 0d 11 e4 25 20 20 20 |T,LSL #24...% | 00002bd0 20 20 20 20 20 20 20 53 54 4d 49 41 20 20 20 20 | STMIA | 00002be0 20 28 58 4c 29 21 2c 7b 43 31 2c 43 32 7d 0d 11 | (XL)!,{C1,C2}..| 00002bf0 ee 1e 20 20 20 20 20 20 20 20 20 20 53 55 42 53 |.. SUBS| 00002c00 20 20 20 20 20 20 48 2c 48 2c 23 31 0d 11 f8 1d | H,H,#1....| 00002c10 20 20 20 20 20 20 20 20 20 20 42 4e 45 20 20 20 | BNE | 00002c20 20 20 20 20 6c 6f 6f 70 32 0d 12 02 0e 2e 73 6d | loop2.....sm| 00002c30 61 6c 6c 73 70 61 6e 0d 12 0c 1d 20 20 20 20 20 |allspan.... | 00002c40 20 20 20 20 20 43 4d 50 20 20 20 20 20 20 20 58 | CMP X| 00002c50 4c 2c 58 52 0d 12 16 1f 20 20 20 20 20 20 20 20 |L,XR.... | 00002c60 20 20 42 47 45 20 20 20 20 20 20 20 65 6e 64 73 | BGE ends| 00002c70 70 61 6e 0d 12 20 1a 20 20 20 20 20 20 20 20 20 |pan.. . | 00002c80 20 a4 6d 61 70 62 79 74 65 28 43 31 29 0d 12 2a | .mapbyte(C1)..*| 00002c90 22 20 20 20 20 20 20 20 20 20 20 53 54 52 42 20 |" STRB | 00002ca0 20 20 20 20 20 43 31 2c 5b 58 4c 5d 2c 23 31 0d | C1,[XL],#1.| 00002cb0 12 34 1d 20 20 20 20 20 20 20 20 20 20 43 4d 50 |.4. CMP| 00002cc0 20 20 20 20 20 20 20 58 4c 2c 58 52 0d 12 3e 1f | XL,XR..>.| 00002cd0 20 20 20 20 20 20 20 20 20 20 42 45 51 20 20 20 | BEQ | 00002ce0 20 20 20 20 65 6e 64 73 70 61 6e 0d 12 48 1a 20 | endspan..H. | 00002cf0 20 20 20 20 20 20 20 20 20 a4 6d 61 70 62 79 74 | .mapbyt| 00002d00 65 28 43 31 29 0d 12 52 22 20 20 20 20 20 20 20 |e(C1)..R" | 00002d10 20 20 20 53 54 52 42 20 20 20 20 20 20 43 31 2c | STRB C1,| 00002d20 5b 58 4c 5d 2c 23 31 0d 12 5c 1d 20 20 20 20 20 |[XL],#1..\. | 00002d30 20 20 20 20 20 43 4d 50 20 20 20 20 20 20 20 58 | CMP X| 00002d40 4c 2c 58 52 0d 12 66 1f 20 20 20 20 20 20 20 20 |L,XR..f. | 00002d50 20 20 42 45 51 20 20 20 20 20 20 20 65 6e 64 73 | BEQ ends| 00002d60 70 61 6e 0d 12 70 1a 20 20 20 20 20 20 20 20 20 |pan..p. | 00002d70 20 a4 6d 61 70 62 79 74 65 28 43 31 29 0d 12 7a | .mapbyte(C1)..z| 00002d80 22 20 20 20 20 20 20 20 20 20 20 53 54 52 42 20 |" STRB | 00002d90 20 20 20 20 20 43 31 2c 5b 58 4c 5d 2c 23 31 0d | C1,[XL],#1.| 00002da0 12 84 1f 20 20 20 20 20 20 20 20 20 20 42 41 4c |... BAL| 00002db0 20 20 20 20 20 20 20 65 6e 64 73 70 61 6e 0d 12 | endspan..| 00002dc0 8e 0e 2e 65 6e 64 73 70 61 6e 5f 32 0d 12 98 20 |...endspan_2... | 00002dd0 20 20 20 20 20 20 20 20 20 20 41 44 44 20 20 20 | ADD | 00002de0 20 20 20 20 4f 2c 4f 2c 23 36 34 30 0d 12 a2 1e | O,O,#640....| 00002df0 20 20 20 20 20 20 20 20 20 20 41 44 44 20 20 20 | ADD | 00002e00 20 20 20 20 4c 2c 4c 2c 4c 41 0d 12 ac 1e 20 20 | L,L,LA.... | 00002e10 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 | ADD | 00002e20 20 20 52 2c 52 2c 52 41 0d 12 b6 20 20 20 20 20 | R,R,RA... | 00002e30 20 20 20 20 20 20 53 55 42 53 20 20 20 20 20 20 | SUBS | 00002e40 43 54 2c 43 54 2c 23 35 0d 12 c0 19 3b 20 69 6e |CT,CT,#5....; in| 00002e50 63 72 65 6d 65 6e 74 20 79 20 73 68 61 64 69 6e |crement y shadin| 00002e60 67 0d 12 ca 1d 20 20 20 20 20 20 20 20 20 20 4c |g.... L| 00002e70 44 52 20 20 20 20 20 20 20 54 2c 49 31 44 0d 12 |DR T,I1D..| 00002e80 d4 1d 20 20 20 20 20 20 20 20 20 20 4c 44 52 20 |.. LDR | 00002e90 20 20 20 20 20 20 49 2c 49 33 44 0d 12 de 1d 20 | I,I3D.... | 00002ea0 20 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 | ADD | 00002eb0 20 20 20 49 2c 49 2c 54 0d 12 e8 1d 20 20 20 20 | I,I,T.... | 00002ec0 20 20 20 20 20 20 53 54 52 20 20 20 20 20 20 20 | STR | 00002ed0 49 2c 49 31 44 0d 12 f2 23 20 20 20 20 20 20 20 |I,I1D...# | 00002ee0 20 20 20 4c 44 4d 45 51 46 44 20 20 20 31 33 21 | LDMEQFD 13!| 00002ef0 2c 7b 43 54 2c 31 35 7d 0d 12 fc 0b 2e 73 70 61 |,{CT,15}.....spa| 00002f00 6e 5f 32 0d 13 06 12 3b 20 43 6c 69 70 20 74 6f |n_2....; Clip to| 00002f10 20 6c 65 66 74 0d 13 10 23 20 20 20 20 20 20 20 | left...# | 00002f20 20 20 20 4d 4f 56 53 20 20 20 20 20 20 54 2c 52 | MOVS T,R| 00002f30 2c 41 53 52 20 23 31 32 0d 13 1a 26 20 20 20 20 |,ASR #12...& | 00002f40 20 20 20 20 20 20 41 44 44 50 4c 20 20 20 20 20 | ADDPL | 00002f50 58 52 2c 4f 2c 52 2c 41 53 52 20 23 31 32 0d 13 |XR,O,R,ASR #12..| 00002f60 24 1c 20 20 20 20 20 20 20 20 20 20 4d 4f 56 4d |$. MOVM| 00002f70 49 20 20 20 20 20 58 52 2c 4f 0d 13 2e 13 3b 20 |I XR,O....; | 00002f80 63 6c 69 70 20 74 6f 20 72 69 67 68 74 0d 13 38 |clip to right..8| 00002f90 1e 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 20 |. MOV | 00002fa0 20 20 20 20 20 54 2c 23 36 34 30 0d 13 42 25 20 | T,#640..B% | 00002fb0 20 20 20 20 20 20 20 20 20 52 53 42 53 20 20 20 | RSBS | 00002fc0 20 20 20 54 2c 54 2c 4c 2c 41 53 52 20 23 31 32 | T,T,L,ASR #12| 00002fd0 0d 13 4c 26 20 20 20 20 20 20 20 20 20 20 41 44 |..L& AD| 00002fe0 44 20 20 20 20 20 20 20 58 4c 2c 4f 2c 4c 2c 41 |D XL,O,L,A| 00002ff0 53 52 20 23 31 32 0d 13 56 21 20 20 20 20 20 20 |SR #12..V! | 00003000 20 20 20 20 41 44 44 50 4c 20 20 20 20 20 58 4c | ADDPL XL| 00003010 2c 4f 2c 23 36 34 30 0d 13 60 29 3b 20 4c 6f 61 |,O,#640..`); Loa| 00003020 64 20 6c 69 6e 65 20 73 68 61 64 65 20 61 6e 64 |d line shade and| 00003030 20 73 68 61 64 65 20 69 6e 63 72 65 6d 65 6e 74 | shade increment| 00003040 0d 13 6a 1d 20 20 20 20 20 20 20 20 20 20 4c 44 |..j. LD| 00003050 52 20 20 20 20 20 20 20 49 2c 49 31 44 0d 13 74 |R I,I1D..t| 00003060 22 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 20 |" MOV | 00003070 20 20 20 20 20 49 2c 49 2c 41 53 52 20 23 38 0d | I,I,ASR #8.| 00003080 13 7e 1d 20 20 20 20 20 20 20 20 20 20 4c 44 52 |.~. LDR| 00003090 20 20 20 20 20 20 20 48 2c 49 32 44 0d 13 88 1f | H,I2D....| 000030a0 20 20 20 20 20 20 20 20 20 20 4d 4c 41 50 4c 20 | MLAPL | 000030b0 20 20 20 20 49 2c 54 2c 48 2c 49 0d 13 92 04 0d | I,T,H,I.....| 000030c0 13 9c 22 20 20 20 20 20 20 20 20 20 20 4d 4f 56 |.." MOV| 000030d0 20 20 20 20 20 20 20 54 2c 4c 2c 41 53 52 20 23 | T,L,ASR #| 000030e0 34 0d 13 a6 1e 20 20 20 20 20 20 20 20 20 20 80 |4.... .| 000030f0 20 20 20 20 20 20 20 54 2c 54 2c 23 32 35 35 0d | T,T,#255.| 00003100 13 b0 1d 20 20 20 20 20 20 20 20 20 20 4d 55 4c |... MUL| 00003110 20 20 20 20 20 20 20 54 2c 48 2c 54 0d 13 ba 2e | T,H,T....| 00003120 20 20 20 20 20 20 20 20 20 20 41 44 44 20 20 20 | ADD | 00003130 20 20 20 20 49 2c 49 2c 54 2c 41 53 52 20 23 38 | I,I,T,ASR #8| 00003140 20 20 20 20 20 20 20 20 20 20 0d 13 c4 0e 20 20 | .... | 00003150 20 20 20 20 20 20 20 20 0d 13 ce 23 20 20 20 20 | ...# | 00003160 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 20 20 | MOV | 00003170 49 2c 49 2c 4c 53 4c 20 23 31 36 0d 13 d8 23 20 |I,I,LSL #16...# | 00003180 20 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 | MOV | 00003190 20 20 20 48 2c 48 2c 4c 53 4c 20 23 31 36 0d 13 | H,H,LSL #16..| 000031a0 e2 24 20 20 20 20 20 20 20 20 20 20 41 44 44 20 |.$ ADD | 000031b0 20 20 20 20 20 20 49 2c 49 2c 48 2c 4c 53 52 23 | I,I,H,LSR#| 000031c0 31 36 0d 13 ec 1f 20 20 20 20 20 20 20 20 20 20 |16.... | 000031d0 53 55 42 20 20 20 20 20 20 20 54 2c 58 4c 2c 58 |SUB T,XL,X| 000031e0 52 0d 13 f6 1c 20 20 20 20 20 20 20 20 20 20 43 |R.... C| 000031f0 4d 50 20 20 20 20 20 20 20 54 2c 23 33 0d 14 00 |MP T,#3...| 00003200 23 20 20 20 20 20 20 20 20 20 20 42 4c 45 20 20 |# BLE | 00003210 20 20 20 20 20 73 6d 61 6c 6c 73 70 61 6e 5f 32 | smallspan_2| 00003220 0d 14 0a 1d 20 20 20 20 20 20 20 20 20 20 54 53 |.... TS| 00003230 54 20 20 20 20 20 20 20 58 4c 2c 23 33 0d 14 14 |T XL,#3...| 00003240 22 20 20 20 20 20 20 20 20 20 20 42 45 51 20 20 |" BEQ | 00003250 20 20 20 20 20 65 6e 64 6c 6f 6f 70 31 5f 32 0d | endloop1_2.| 00003260 14 1e 1a 2e 6c 6f 6f 70 31 5f 32 20 20 a4 6d 61 |....loop1_2 .ma| 00003270 70 62 79 74 65 28 43 31 29 0d 14 28 24 20 20 20 |pbyte(C1)..($ | 00003280 20 20 20 20 20 20 20 53 54 52 42 20 20 20 20 20 | STRB | 00003290 20 43 31 2c 5b 58 4c 2c 23 2d 31 5d 21 0d 14 32 | C1,[XL,#-1]!..2| 000032a0 1d 20 20 20 20 20 20 20 20 20 20 54 53 54 20 20 |. TST | 000032b0 20 20 20 20 20 58 4c 2c 23 33 0d 14 3c 1f 20 20 | XL,#3..<. | 000032c0 20 20 20 20 20 20 20 20 42 4e 45 20 20 20 20 20 | BNE | 000032d0 20 20 6c 6f 6f 70 31 5f 32 0d 14 46 0f 2e 65 6e | loop1_2..F..en| 000032e0 64 6c 6f 6f 70 31 5f 32 0d 14 50 1f 20 20 20 20 |dloop1_2..P. | 000032f0 20 20 20 20 20 20 53 55 42 20 20 20 20 20 20 20 | SUB | 00003300 48 2c 58 4c 2c 58 52 0d 14 5a 22 20 20 20 20 20 |H,XL,XR..Z" | 00003310 20 20 20 20 20 4d 4f 56 53 20 20 20 20 20 20 48 | MOVS H| 00003320 2c 48 2c 4c 53 52 20 23 33 0d 14 64 1e 20 20 20 |,H,LSR #3..d. | 00003330 20 20 20 20 20 20 20 42 43 43 20 20 20 20 20 20 | BCC | 00003340 20 64 6f 69 74 5f 32 0d 14 6e 1a 20 20 20 20 20 | doit_2..n. | 00003350 20 20 20 20 20 a4 6d 61 70 62 79 74 65 28 43 31 | .mapbyte(C1| 00003360 29 0d 14 78 19 20 20 20 20 20 20 20 20 20 20 a4 |)..x. .| 00003370 6d 61 70 62 79 74 65 28 54 29 0d 14 82 27 20 20 |mapbyte(T)...' | 00003380 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 | ADD | 00003390 20 20 43 31 2c 43 31 2c 54 2c 4c 53 4c 20 23 32 | C1,C1,T,LSL #2| 000033a0 34 0d 14 8c 19 20 20 20 20 20 20 20 20 20 20 a4 |4.... .| 000033b0 6d 61 70 62 79 74 65 28 54 29 0d 14 96 27 20 20 |mapbyte(T)...' | 000033c0 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 | ADD | 000033d0 20 20 43 31 2c 43 31 2c 54 2c 4c 53 4c 20 23 31 | C1,C1,T,LSL #1| 000033e0 36 0d 14 a0 19 20 20 20 20 20 20 20 20 20 20 a4 |6.... .| 000033f0 6d 61 70 62 79 74 65 28 54 29 0d 14 aa 26 20 20 |mapbyte(T)...& | 00003400 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 | ADD | 00003410 20 20 43 31 2c 54 2c 43 31 2c 52 4f 52 20 23 38 | C1,T,C1,ROR #8| 00003420 0d 14 b4 24 20 20 20 20 20 20 20 20 20 20 53 54 |...$ ST| 00003430 52 20 20 20 20 20 20 20 43 31 2c 5b 58 4c 2c 23 |R C1,[XL,#| 00003440 2d 34 5d 21 0d 14 be 1c 20 20 20 20 20 20 20 20 |-4]!.... | 00003450 20 20 43 4d 50 20 20 20 20 20 20 20 48 2c 23 30 | CMP H,#0| 00003460 0d 14 c8 23 2e 64 6f 69 74 5f 32 20 20 20 42 45 |...#.doit_2 BE| 00003470 51 20 20 20 20 20 20 20 73 6d 61 6c 6c 73 70 61 |Q smallspa| 00003480 6e 5f 32 0d 14 d2 0c 2e 6c 6f 6f 70 32 5f 32 0d |n_2.....loop2_2.| 00003490 14 dc 1a 20 20 20 20 20 20 20 20 20 20 a4 6d 61 |... .ma| 000034a0 70 62 79 74 65 28 43 32 29 0d 14 e6 19 20 20 20 |pbyte(C2).... | 000034b0 20 20 20 20 20 20 20 a4 6d 61 70 62 79 74 65 28 | .mapbyte(| 000034c0 54 29 0d 14 f0 27 20 20 20 20 20 20 20 20 20 20 |T)...' | 000034d0 41 44 44 20 20 20 20 20 20 20 43 32 2c 43 32 2c |ADD C2,C2,| 000034e0 54 2c 4c 53 4c 20 23 32 34 0d 14 fa 19 20 20 20 |T,LSL #24.... | 000034f0 20 20 20 20 20 20 20 a4 6d 61 70 62 79 74 65 28 | .mapbyte(| 00003500 54 29 0d 15 04 27 20 20 20 20 20 20 20 20 20 20 |T)...' | 00003510 41 44 44 20 20 20 20 20 20 20 43 32 2c 43 32 2c |ADD C2,C2,| 00003520 54 2c 4c 53 4c 20 23 31 36 0d 15 0e 19 20 20 20 |T,LSL #16.... | 00003530 20 20 20 20 20 20 20 a4 6d 61 70 62 79 74 65 28 | .mapbyte(| 00003540 54 29 0d 15 18 26 20 20 20 20 20 20 20 20 20 20 |T)...& | 00003550 41 44 44 20 20 20 20 20 20 20 43 32 2c 54 2c 43 |ADD C2,T,C| 00003560 32 2c 52 4f 52 20 23 38 0d 15 22 1a 20 20 20 20 |2,ROR #8..". | 00003570 20 20 20 20 20 20 a4 6d 61 70 62 79 74 65 28 43 | .mapbyte(C| 00003580 31 29 0d 15 2c 19 20 20 20 20 20 20 20 20 20 20 |1)..,. | 00003590 a4 6d 61 70 62 79 74 65 28 54 29 0d 15 36 27 20 |.mapbyte(T)..6' | 000035a0 20 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 | ADD | 000035b0 20 20 20 43 31 2c 43 31 2c 54 2c 4c 53 4c 20 23 | C1,C1,T,LSL #| 000035c0 32 34 0d 15 40 19 20 20 20 20 20 20 20 20 20 20 |24..@. | 000035d0 a4 6d 61 70 62 79 74 65 28 54 29 0d 15 4a 27 20 |.mapbyte(T)..J' | 000035e0 20 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 | ADD | 000035f0 20 20 20 43 31 2c 43 31 2c 54 2c 4c 53 4c 20 23 | C1,C1,T,LSL #| 00003600 31 36 0d 15 54 19 20 20 20 20 20 20 20 20 20 20 |16..T. | 00003610 a4 6d 61 70 62 79 74 65 28 54 29 0d 15 5e 26 20 |.mapbyte(T)..^& | 00003620 20 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 | ADD | 00003630 20 20 20 43 31 2c 54 2c 43 31 2c 52 4f 52 20 23 | C1,T,C1,ROR #| 00003640 38 0d 15 68 25 20 20 20 20 20 20 20 20 20 20 53 |8..h% S| 00003650 54 4d 44 42 20 20 20 20 20 28 58 4c 29 21 2c 7b |TMDB (XL)!,{| 00003660 43 31 2c 43 32 7d 0d 15 72 1e 20 20 20 20 20 20 |C1,C2}..r. | 00003670 20 20 20 20 53 55 42 53 20 20 20 20 20 20 48 2c | SUBS H,| 00003680 48 2c 23 31 0d 15 7c 1f 20 20 20 20 20 20 20 20 |H,#1..|. | 00003690 20 20 42 4e 45 20 20 20 20 20 20 20 6c 6f 6f 70 | BNE loop| 000036a0 32 5f 32 0d 15 86 10 2e 73 6d 61 6c 6c 73 70 61 |2_2.....smallspa| 000036b0 6e 5f 32 0d 15 90 1d 20 20 20 20 20 20 20 20 20 |n_2.... | 000036c0 20 43 4d 50 20 20 20 20 20 20 20 58 52 2c 58 4c | CMP XR,XL| 000036d0 0d 15 9a 21 20 20 20 20 20 20 20 20 20 20 42 47 |...! BG| 000036e0 45 20 20 20 20 20 20 20 65 6e 64 73 70 61 6e 5f |E endspan_| 000036f0 32 0d 15 a4 1a 20 20 20 20 20 20 20 20 20 20 a4 |2.... .| 00003700 6d 61 70 62 79 74 65 28 43 31 29 0d 15 ae 24 20 |mapbyte(C1)...$ | 00003710 20 20 20 20 20 20 20 20 20 53 54 52 42 20 20 20 | STRB | 00003720 20 20 20 43 31 2c 5b 58 4c 2c 23 2d 31 5d 21 0d | C1,[XL,#-1]!.| 00003730 15 b8 1d 20 20 20 20 20 20 20 20 20 20 43 4d 50 |... CMP| 00003740 20 20 20 20 20 20 20 58 52 2c 58 4c 0d 15 c2 21 | XR,XL...!| 00003750 20 20 20 20 20 20 20 20 20 20 42 45 51 20 20 20 | BEQ | 00003760 20 20 20 20 65 6e 64 73 70 61 6e 5f 32 0d 15 cc | endspan_2...| 00003770 1a 20 20 20 20 20 20 20 20 20 20 a4 6d 61 70 62 |. .mapb| 00003780 79 74 65 28 43 31 29 0d 15 d6 24 20 20 20 20 20 |yte(C1)...$ | 00003790 20 20 20 20 20 53 54 52 42 20 20 20 20 20 20 43 | STRB C| 000037a0 31 2c 5b 58 4c 2c 23 2d 31 5d 21 0d 15 e0 1d 20 |1,[XL,#-1]!.... | 000037b0 20 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 | CMP | 000037c0 20 20 20 58 52 2c 58 4c 0d 15 ea 21 20 20 20 20 | XR,XL...! | 000037d0 20 20 20 20 20 20 42 45 51 20 20 20 20 20 20 20 | BEQ | 000037e0 65 6e 64 73 70 61 6e 5f 32 0d 15 f4 1a 20 20 20 |endspan_2.... | 000037f0 20 20 20 20 20 20 20 a4 6d 61 70 62 79 74 65 28 | .mapbyte(| 00003800 43 31 29 0d 15 fe 24 20 20 20 20 20 20 20 20 20 |C1)...$ | 00003810 20 53 54 52 42 20 20 20 20 20 20 43 31 2c 5b 58 | STRB C1,[X| 00003820 4c 2c 23 2d 31 5d 21 0d 16 08 21 20 20 20 20 20 |L,#-1]!...! | 00003830 20 20 20 20 20 42 41 4c 20 20 20 20 20 20 20 65 | BAL e| 00003840 6e 64 73 70 61 6e 5f 32 0d 16 12 05 5d 0d 16 1c |ndspan_2....]...| 00003850 07 3d 22 22 0d 16 26 04 0d 16 30 13 dd 20 a4 6d |.=""..&...0.. .m| 00003860 61 70 62 79 74 65 28 72 65 67 29 0d 16 3a 0d 5b |apbyte(reg)..:.[| 00003870 4f 50 54 20 50 41 53 53 0d 16 44 21 20 20 20 20 |OPT PASS..D! | 00003880 20 20 4d 4f 56 20 20 20 20 20 20 20 72 65 67 2c | MOV reg,| 00003890 49 2c 4c 53 52 20 23 32 34 0d 16 4e 21 20 20 20 |I,LSR #24..N! | 000038a0 20 20 20 41 44 44 20 20 20 20 20 20 20 49 2c 49 | ADD I,I| 000038b0 2c 49 2c 4c 53 4c 20 23 31 36 0d 16 58 05 5d 0d |,I,LSL #16..X.].| 000038c0 16 62 08 20 3d 22 22 0d ff |.b. =""..| 000038c9