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