Home » Archimedes archive » Acorn User » AU 1993-04.adf » !GameDes/Files/HScapeFast
!GameDes/Files/HScapeFast
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 1993-04.adf |
Filename: | !GameDes/Files/HScapeFast |
Read OK: | ✔ |
File size: | 1D81 bytes |
Load address: | FFFFFB44 |
Exec address: | 3A3F0DEA |
File contents
10REM >HScapeFast 20REM by Antony Bruce Lytis 30REM for 32 bit machines 40REM (c) BAU January 1993 50: 60MODE 0 70OFF 80DIM land 64*1024,scenery 64*1024,scene_spr 4*256 90!scenery=64*1024 100scenery!4=0 110scenery!8=16 120scenery!12=16 130*CAT Maps 140REPEAT 150 INPUT"Which landscape? "land$ 160 SYS "XOS_File",5,"Maps."+land$ TO exists% 170UNTIL exists%=1 180PROCload_map(land$) 190PROCass 200FOR b=0 TO 3 210 bank_dat!(4*b)=banks+b*screen_size 220 FOR col%=0 TO bytes_per_row STEP 4 230 A%=banks+(screen_size*b)+col% 240 B%=col%+b 250 C%=land 260 D%=scene_spr 270 CALL show_column 280 NEXT 290NEXT 300FOR b=0 TO 1 310 MODE mode+128*b 320 PRINTTAB(0,31)"Scrolling landscape (mode ";mode;")"; 330NEXT 340IF mode=9 THEN 350 SYS "OS_SpriteOp",&118,scenery,"palette" TO ,,pal_spr 360 pal_dat=pal_spr+44 370 FOR i=0 TO 15 380 a=pal_dat+8*i 390 COLOUR i,a?1,a?2,a?3 400 NEXT 410ENDIF 420OFF 430CALL scroll 440MODE 0 450END 460: 470DEF PROCload_map(file$) 480in%=OPENIN("Maps."+file$) 490x%=0 500m%=0 510FOR i=0 TO 255 520 scene_spr!(4*i)=-1 530NEXT 540WHILE NOT EOF#in% 550 s$=FNstrip(GET$#in%) 560 IF s$<>"" THEN 570 CASE s$ OF 580 WHEN "Files:":m%=1 590 WHEN "Used:":m%=2 600 WHEN "Map:":m%=3 610 WHEN "Type:":m%=4 620 OTHERWISE 630 CASE m% OF 640 WHEN 1:SYS "OS_SpriteOp",&10B,scenery,"Scenery."+s$ 650 WHEN 2: 660 i=EVAL("&"+LEFT$(s$,2)) 670 s$=FNstrip(MID$(s$,3)) 680 SYS "OS_SpriteOp",&118,scenery,s$ TO ,,d% 690 scene_spr!(4*i)=d% 700 IF s$="blank" THEN 710 blnk=i 720 SYS "OS_SpriteOp",&128,scenery,s$ TO ,,,,,,mode 730 ENDIF 740 WHEN 3: 750 dash%=INSTR(s$,"-") 760 IF dash%>0 THEN 770 s1$=LEFT$(s$,dash%-1) 780 s3$=MID$(s$,dash%+1) 790 s2$=RIGHT$("0"+STR$~blnk,2) 800 s$=s1$+STRING$(no-LEN(s1$+s3$)/2,s2$)+s3$ 810 ENDIF 820 a%=land+no*x% 830 FOR i=0 TO no-1 840 a%?i=blnk 850 NEXT 860 y%=no-1 870 WHILE s$<>"" 880 a%?y%=EVAL("&"+LEFT$(s$,2)) 890 s$=MID$(s$,3) 900 y%-=1 910 ENDWHILE 920 x%+=1 930 WHEN 4: 940 size=VALMID$(s$,2) 950 IF LEFT$(s$,1)="H" THEN 960 IF size=32 total_size=224 ELSE total_size=240 970 ELSE 980 ERROR 17,"Only horizontal landscapes please!" 990 ENDIF 1000 no=total_size DIV size 1010 ENDCASE 1020 ENDCASE 1030 ENDIF 1040ENDWHILE 1050SYS "OS_ReadModeVariable",mode,6 TO ,,bytes_per_row 1060screen_size=total_size*bytes_per_row 1070IF mode=9 sprite_width=size DIV 2 ELSE sprite_width=size 1080land_ext=x%*sprite_width 1090FOR i=0 TO 255 1100 IF scene_spr!(4*i)=-1 THEN scene_spr!(4*i)=blnk 1110NEXT 1120CLOSE#in% 1130ENDPROC 1140: 1150DEF FNstrip(s$) 1160WHILE LEFT$(s$,1)=" " 1170 s$=MID$(s$,2) 1180ENDWHILE 1190WHILE RIGHT$(s$)=" " 1200 s$=LEFT$(s$) 1210ENDWHILE 1220=s$ 1230: 1240DEF PROCass 1250DIM code% &800+4*screen_size 1260sp=13:link=14:pc=15 1270VIDC=&3400000 1280FOR pass%=0 TO 2 STEP 2 1290P%=code% 1300[OPT pass% 1310.scroll STMFD (sp)!,{r0-r12,link} 1320 MOV r11,#1 ; bank number 1330 MOV r10,#0 ; position 1340 MOV r9,#0 ; sub-position 1350.sloop BL swap_banks 1360 MOV r0,#&F00 1370 BL set_border 1380 BL copy_bank 1390 MOV r0,#&0F0 1400 BL set_border 1410 BL scroll_on 1420 MOV r0,#&000 1430 BL set_border 1440 SWI "XOS_ReadEscapeState" 1450 BCC sloop 1460 MOV r0,#126 1470 SWI "XOS_Byte" 1480 LDMFD (sp)!,{r0-r12,pc} 1490 1500.scroll_on 1510 STMFD (sp)!,{r0-r7,link} 1520 LDR r14,lands_end 1530 CMP r10,r14 1540 LDMGEFD (sp)!,{r0-r7,pc} 1550 AND r0,r10,#3 1560 ADR r1,bank_dat 1570 LDR r0,[r1,r0,LSL #2] 1580 BIC r1,r9,#3 1590 ADD r0,r0,r1 1600 ADD r1,r10,#bytes_per_row 1610 LDR r2,land_addr 1620 LDR r3,spr_addr 1630 BL show_column 1640 ADD r9,r9,#1 1650 CMP r9,#bytes_per_row 1660 MOVEQ r9,#0 1670 ADD r10,r10,#1 1680 LDMFD (sp)!,{r0-r7,pc} 1690 1700.lands_end EQUD land_ext-bytes_per_row-16 1710.spr_addr EQUD scene_spr 1720.land_addr EQUD land 1730 1740.show_column 1750 STMFD (sp)!,{r0-r12,link} 1760 MOV r14,r1,LSR #FNlog2(sprite_width) 1770 AND r8,r1,#sprite_width-1 1780 MOV r6,#no 1790 MLA r7,r14,r6,r2 1800.show_col1 1810 LDRB r9,[r7],#1 1820 LDR r9,[r3,r9,LSL #2] 1830 LDR r14,[r9,#32] 1840 ADD r9,r9,r14 1850 BIC r14,r8,#3 1860 ADD r9,r9,r14 1870 CMP r8,#sprite_width-4 1880 ADDLT r10,r9,#4 1890 LDRGEB r10,[r7,#no-1] 1900 LDRGE r10,[r3,r10,LSL #2] 1910 LDRGE r14,[r10,#32] 1920 ADDGE r10,r10,r14 1930 AND r14,r1,#3 1940 MOV r14,r14,LSL #3 1950 RSB r4,r14,#32 1960]:FOR z%=0 TO size-1:[OPT pass% 1970 LDR r11,[r9],#sprite_width 1980 LDR r12,[r10],#sprite_width 1990 MOV r11,r11,LSR r14 2000 ORR r11,r11,r12,LSL r4 2010 STR r11,[r0],#bytes_per_row 2020]:NEXT z%:[OPT pass% 2030 SUBS r6,r6,#1 2040 BNE show_col1 2050 LDMFD (sp)!,{r0-r12,pc} 2060] 2070bank_dat=FNalloc(16,0) 2080[OPT pass% 2090.copy_bank 2100 STMFD (sp)!,{r0-r12,link} 2110 AND r0,r10,#3 2120 ADR r1,bank_dat 2130 LDR r10,[r1,r0,LSL #2] 2140 BIC r9,r9,#3 2150 ADD r10,r10,r9 2160 ADR r7,routine ; where we're going to assemble our routine 2170 MOV r8,#bytes_per_row 2180 MVN r14,#0 2190 ADR r2,loadi 2200.make_route 2210 CMP r8,#0 2220 BEQ made_route 2230 RSB r6,r9,#bytes_per_row 2240 CMP r6,r8 2250 MOVGT r6,r8 2260 CMP r6,#40 2270 MOVGT r6,#40 2280 LDMIA r2,{r3,r4} 2290 MOV r0,r6,LSR #2 2300 RSB r0,r0,#10 2310 AND r3,r3,r14,LSL r0 2320 AND r4,r4,r14,LSL r0 2330 STMIA r7!,{r3,r4} 2340 SUB r8,r8,r6 2350 ADD r9,r9,r6 2360 CMP r9,#bytes_per_row 2370 LDREQ r0,subi 2380 STREQ r0,[r7],#4 2390 MOVEQ r9,#0 2400 B make_route 2410.made_route 2420 ADR r2,add10 2430 LDMIA r2,{r3-r6} 2440 ADR r5,routine-16 2450 SUB r5,r7,r5 2460 MOV r5,r5,ASR #2 2470 RSB r5,r5,#0 2480 BIC r5,r5,#&FF000000 2490 ORR r5,r5,#&1A000000 2500 STMIA r7,{r3-r6} 2510 LDR r11,vdu_o 2520 MOV r12,#total_size 2530 BL routine 2540 LDMFD (sp)!,{r0-r12,pc} 2550 2560.loadi LDMIA r10!,{r0-r9} 2570 STMIA r11!,{r0-r9} 2580.subi SUB r10,r10,#bytes_per_row 2590 2600.add10 ADD r10,r10,#bytes_per_row 2610 SUBS r12,r12,#1 2620 DCD 0 2630.reti MOV pc,link 2640 2650.swap_banks 2660 STMFD (sp)!,{r0-r2,link} 2670 MOV r0,#19 2680 SWI "XOS_Byte" 2690 MOV r0,#112 2700 MOV r1,r11 2710 SWI "XOS_Byte" 2720 RSB r11,r11,#3 2730 MOV r0,#113 2740 MOV r1,r11 2750 SWI "XOS_Byte" 2760 ADR r0,vdu_i 2770 ADR r1,vdu_o 2780 SWI "XOS_ReadVduVariables" 2790 LDMFD (sp)!,{r0-r2,pc} 2800 2810.vdu_i EQUD 148 2820 EQUD -1 2830.vdu_o EQUD 0 2840 EQUD 0 2850 2860.set_border 2870 STMFD (sp)!,{r0-r2,link} 2880 SWI "XOS_EnterOS" 2890 MOV r2,pc 2900 MOV r1,#VIDC 2910 ORR r0,r0,#1<<30 2920 STR r0,[r1] 2930 TEQP r2,#3 2940 MOVNV r0,r0 2950 LDMFD (sp)!,{r0-r2,pc} 2960] 2970routine=FNalloc(128,0) 2980banks=FNalloc(4*screen_size,0) 2990NEXT pass% 3000ENDPROC 3010: 3020DEF FNalloc(size,align%) 3030WHILE P% MOD 16<>align% 3040 P%+=4 3050ENDWHILE 3060P%+=size 3070=P%-size 3080: 3090DEF FNlog2(a%)=LOG(a%)/LOG(2)
� >HScapeFast � by Antony Bruce Lytis � for 32 bit machines (� (c) BAU January 1993 2: <� 0 F� P2� land 64*1024,scenery 64*1024,scene_spr 4*256 Z!scenery=64*1024 dscenery!4=0 nscenery!8=16 xscenery!12=16 � *CAT Maps �� � �"Which landscape? "land$ �, ș "XOS_File",5,"Maps."+land$ � exists% �� exists%=1 ��load_map(land$) ��ass � � b=0 � 3 �' bank_dat!(4*b)=banks+b*screen_size �! � col%=0 � bytes_per_row � 4 �# A%=banks+(screen_size*b)+col% � B%=col%+b � C%=land D%=scene_spr � show_column � "� , � b=0 � 1 6 � mode+128*b @2 �0,31)"Scrolling landscape (mode ";mode;")"; J� T� mode=9 � ^8 ș "OS_SpriteOp",&118,scenery,"palette" � ,,pal_spr h pal_dat=pal_spr+44 r � i=0 � 15 | a=pal_dat+8*i � � i,a?1,a?2,a?3 � � �� �� �� scroll �� 0 �� �: �� �load_map(file$) �in%=�("Maps."+file$) �x%=0 �m%=0 �� i=0 � 255 scene_spr!(4*i)=-1 � ȕ � �#in% & s$=�strip(�#in%) 0 � s$<>"" � : Ȏ s$ � D � "Files:":m%=1 N � "Used:":m%=2 X � "Map:":m%=3 b � "Type:":m%=4 l v Ȏ m% � �7 � 1:ș "OS_SpriteOp",&10B,scenery,"Scenery."+s$ � � 2: � i=�("&"+�s$,2)) � s$=�strip(�s$,3)) �0 ș "OS_SpriteOp",&118,scenery,s$ � ,,d% � scene_spr!(4*i)=d% � � s$="blank" � � blnk=i �7 ș "OS_SpriteOp",&128,scenery,s$ � ,,,,,,mode � � � � 3: � dash%=�s$,"-") � � dash%>0 � s1$=�s$,dash%-1) s3$=�s$,dash%+1) s2$=�"0"+�~blnk,2) * s$=s1$+�no-�(s1$+s3$)/2,s2$)+s3$ * � 4 a%=land+no*x% > � i=0 � no-1 H a%?i=blnk R � \ y%=no-1 f ȕ s$<>"" p a%?y%=�("&"+�s$,2)) z s$=�s$,3) � y%-=1 � � � x%+=1 � � 4: � size=��s$,2) � � �s$,1)="H" � �3 � size=32 total_size=224 � total_size=240 � � �3 � 17,"Only horizontal landscapes please!" � � � no=total_size � size � � � � � � 5ș "OS_ReadModeVariable",mode,6 � ,,bytes_per_row $(screen_size=total_size*bytes_per_row .6� mode=9 sprite_width=size � 2 � sprite_width=size 8land_ext=x%*sprite_width B� i=0 � 255 L0 � scene_spr!(4*i)=-1 � scene_spr!(4*i)=blnk V� ` �#in% j� t: ~� �strip(s$) �ȕ �s$,1)=" " � s$=�s$,2) �� �ȕ �s$)=" " � s$=�s$) �� �=s$ �: � � �ass �� code% &800+4*screen_size �sp=13:link=14:pc=15 �VIDC=&3400000 � pass%=0 � 2 � 2 P%=code% [OPT pass% (.scroll STMFD (sp)!,{r0-r12,link} (( MOV r11,#1 ; bank number 2% MOV r10,#0 ; position <) MOV r9,#0 ; sub-position F.sloop BL swap_banks P MOV r0,#&F00 Z BL set_border d BL copy_bank n MOV r0,#&0F0 x BL set_border � BL scroll_on � MOV r0,#&000 � BL set_border �) SWI "XOS_ReadEscapeState" � BCC sloop � MOV r0,#126 � SWI "XOS_Byte" �% LDMFD (sp)!,{r0-r12,pc} � �.scroll_on �& STMFD (sp)!,{r0-r7,link} �! LDR r14,lands_end � CMP r10,r14 $ LDMGEFD (sp)!,{r0-r7,pc} � r0,r10,#3 ADR r1,bank_dat "% LDR r0,[r1,r0,LSL #2] , BIC r1,r9,#3 6 ADD r0,r0,r1 @) ADD r1,r10,#bytes_per_row J LDR r2,land_addr T LDR r3,spr_addr ^ BL show_column h ADD r9,r9,#1 r% CMP r9,#bytes_per_row | �Q r9,#0 � ADD r10,r10,#1 �$ LDMFD (sp)!,{r0-r7,pc} � �5.lands_end EQUD land_ext-bytes_per_row-16 �%.spr_addr EQUD scene_spr � .land_addr EQUD land � �.show_column �' STMFD (sp)!,{r0-r12,link} �3 MOV r14,r1,LSR #�log2(sprite_width) �' � r8,r1,#sprite_width-1 � MOV r6,#no � MLA r7,r14,r6,r2 .show_col1 LDRB r9,[r7],#1 % LDR r9,[r3,r9,LSL #2] & LDR r14,[r9,#32] 0 ADD r9,r9,r14 : BIC r14,r8,#3 D ADD r9,r9,r14 N& CMP r8,#sprite_width-4 X ADDLT r10,r9,#4 b" LDRGEB r10,[r7,#no-1] l' LDRGE r10,[r3,r10,LSL #2] v! LDRGE r14,[r10,#32] � ADDGE r10,r10,r14 � � r14,r1,#3 �" MOV r14,r14,LSL #3 � RSB r4,r14,#32 � ]:� z%=0 � size-1:[OPT pass% �* LDR r11,[r9],#sprite_width �+ LDR r12,[r10],#sprite_width �# MOV r11,r11,LSR r14 �% �R r11,r11,r12,LSL r4 �+ STR r11,[r0],#bytes_per_row �]:� z%:[OPT pass% � SUBS r6,r6,#1 � BNE show_col1 % LDMFD (sp)!,{r0-r12,pc} ] bank_dat=�alloc(16,0) [OPT pass% *.copy_bank 4' STMFD (sp)!,{r0-r12,link} > � r0,r10,#3 H ADR r1,bank_dat R& LDR r10,[r1,r0,LSL #2] \ BIC r9,r9,#3 f ADD r10,r10,r9 pJ ADR r7,routine ; where we're going to assemble our routine z% MOV r8,#bytes_per_row � MVN r14,#0 � ADR r2,loadi �.make_route � CMP r8,#0 � BEQ made_route �( RSB r6,r9,#bytes_per_row � CMP r6,r8 � MOVGT r6,r8 � CMP r6,#40 � MOVGT r6,#40 � LDMIA r2,{r3,r4} � MOV r0,r6,LSR #2 � RSB r0,r0,#10 " � r3,r3,r14,LSL r0 " � r4,r4,r14,LSL r0 STMIA r7!,{r3,r4} $ SUB r8,r8,r6 . ADD r9,r9,r6 8% CMP r9,#bytes_per_row B LDREQ r0,subi L STREQ r0,[r7],#4 V �Q r9,#0 ` B make_route j.made_route t ADR r2,add10 ~ LDMIA r2,{r3-r6} �! ADR r5,routine-16 � SUB r5,r7,r5 � MOV r5,r5,ASR #2 � RSB r5,r5,#0 �$ BIC r5,r5,#&FF000000 �# �R r5,r5,#&1A000000 � STMIA r7,{r3-r6} � LDR r11,vdu_o �# MOV r12,#total_size � BL routine �% LDMFD (sp)!,{r0-r12,pc} � .loadi LDMIA r10!,{r0-r9} STMIA r11!,{r0-r9} *.subi SUB r10,r10,#bytes_per_row (*.add10 ADD r10,r10,#bytes_per_row 2 SUBS r12,r12,#1 < DCD 0 F.reti MOV pc,link P Z.swap_banks d& STMFD (sp)!,{r0-r2,link} n MOV r0,#19 x SWI "XOS_Byte" � MOV r0,#112 � MOV r1,r11 � SWI "XOS_Byte" � RSB r11,r11,#3 � MOV r0,#113 � MOV r1,r11 � SWI "XOS_Byte" � ADR r0,vdu_i � ADR r1,vdu_o �* SWI "XOS_ReadVduVariables" �$ LDMFD (sp)!,{r0-r2,pc} � �.vdu_i EQUD 148 EQUD -1 .vdu_o EQUD 0 EQUD 0 " ,.set_border 6& STMFD (sp)!,{r0-r2,link} @! SWI "XOS_EnterOS" J MOV r2,pc T MOV r1,#VIDC ^ �R r0,r0,#1<<30 h STR r0,[r1] r TEQP r2,#3 | MOVNV r0,r0 �$ LDMFD (sp)!,{r0-r2,pc} �] �routine=�alloc(128,0) �!banks=�alloc(4*screen_size,0) �� pass% �� �: �� �alloc(size,align%) �ȕ P% � 16<>align% � P%+=4 �� �P%+=size �=P%-size : � �log2(a%)=�(a%)/�(2) �
00000000 0d 00 0a 11 f4 20 3e 48 53 63 61 70 65 46 61 73 |..... >HScapeFas| 00000010 74 0d 00 14 1b f4 20 62 79 20 41 6e 74 6f 6e 79 |t..... by Antony| 00000020 20 42 72 75 63 65 20 4c 79 74 69 73 0d 00 1e 19 | Bruce Lytis....| 00000030 f4 20 66 6f 72 20 33 32 20 62 69 74 20 6d 61 63 |. for 32 bit mac| 00000040 68 69 6e 65 73 0d 00 28 1a f4 20 28 63 29 20 42 |hines..(.. (c) B| 00000050 41 55 20 4a 61 6e 75 61 72 79 20 31 39 39 33 0d |AU January 1993.| 00000060 00 32 05 3a 0d 00 3c 07 eb 20 30 0d 00 46 05 87 |.2.:..<.. 0..F..| 00000070 0d 00 50 32 de 20 6c 61 6e 64 20 36 34 2a 31 30 |..P2. land 64*10| 00000080 32 34 2c 73 63 65 6e 65 72 79 20 36 34 2a 31 30 |24,scenery 64*10| 00000090 32 34 2c 73 63 65 6e 65 5f 73 70 72 20 34 2a 32 |24,scene_spr 4*2| 000000a0 35 36 0d 00 5a 14 21 73 63 65 6e 65 72 79 3d 36 |56..Z.!scenery=6| 000000b0 34 2a 31 30 32 34 0d 00 64 0f 73 63 65 6e 65 72 |4*1024..d.scener| 000000c0 79 21 34 3d 30 0d 00 6e 10 73 63 65 6e 65 72 79 |y!4=0..n.scenery| 000000d0 21 38 3d 31 36 0d 00 78 11 73 63 65 6e 65 72 79 |!8=16..x.scenery| 000000e0 21 31 32 3d 31 36 0d 00 82 0d 2a 43 41 54 20 4d |!12=16....*CAT M| 000000f0 61 70 73 0d 00 8c 05 f5 0d 00 96 1e 20 e8 22 57 |aps......... ."W| 00000100 68 69 63 68 20 6c 61 6e 64 73 63 61 70 65 3f 20 |hich landscape? | 00000110 22 6c 61 6e 64 24 0d 00 a0 2c 20 c8 99 20 22 58 |"land$..., .. "X| 00000120 4f 53 5f 46 69 6c 65 22 2c 35 2c 22 4d 61 70 73 |OS_File",5,"Maps| 00000130 2e 22 2b 6c 61 6e 64 24 20 b8 20 65 78 69 73 74 |."+land$ . exist| 00000140 73 25 0d 00 aa 0f fd 20 65 78 69 73 74 73 25 3d |s%..... exists%=| 00000150 31 0d 00 b4 14 f2 6c 6f 61 64 5f 6d 61 70 28 6c |1.....load_map(l| 00000160 61 6e 64 24 29 0d 00 be 08 f2 61 73 73 0d 00 c8 |and$).....ass...| 00000170 0d e3 20 62 3d 30 20 b8 20 33 0d 00 d2 27 20 62 |.. b=0 . 3...' b| 00000180 61 6e 6b 5f 64 61 74 21 28 34 2a 62 29 3d 62 61 |ank_dat!(4*b)=ba| 00000190 6e 6b 73 2b 62 2a 73 63 72 65 65 6e 5f 73 69 7a |nks+b*screen_siz| 000001a0 65 0d 00 dc 21 20 e3 20 63 6f 6c 25 3d 30 20 b8 |e...! . col%=0 .| 000001b0 20 62 79 74 65 73 5f 70 65 72 5f 72 6f 77 20 88 | bytes_per_row .| 000001c0 20 34 0d 00 e6 23 20 20 41 25 3d 62 61 6e 6b 73 | 4...# A%=banks| 000001d0 2b 28 73 63 72 65 65 6e 5f 73 69 7a 65 2a 62 29 |+(screen_size*b)| 000001e0 2b 63 6f 6c 25 0d 00 f0 0f 20 20 42 25 3d 63 6f |+col%.... B%=co| 000001f0 6c 25 2b 62 0d 00 fa 0d 20 20 43 25 3d 6c 61 6e |l%+b.... C%=lan| 00000200 64 0d 01 04 12 20 20 44 25 3d 73 63 65 6e 65 5f |d.... D%=scene_| 00000210 73 70 72 0d 01 0e 13 20 20 d6 20 73 68 6f 77 5f |spr.... . show_| 00000220 63 6f 6c 75 6d 6e 0d 01 18 06 20 ed 0d 01 22 05 |column.... ...".| 00000230 ed 0d 01 2c 0d e3 20 62 3d 30 20 b8 20 31 0d 01 |...,.. b=0 . 1..| 00000240 36 11 20 eb 20 6d 6f 64 65 2b 31 32 38 2a 62 0d |6. . mode+128*b.| 00000250 01 40 32 20 f1 8a 30 2c 33 31 29 22 53 63 72 6f |.@2 ..0,31)"Scro| 00000260 6c 6c 69 6e 67 20 6c 61 6e 64 73 63 61 70 65 20 |lling landscape | 00000270 28 6d 6f 64 65 20 22 3b 6d 6f 64 65 3b 22 29 22 |(mode ";mode;")"| 00000280 3b 0d 01 4a 05 ed 0d 01 54 0e e7 20 6d 6f 64 65 |;..J....T.. mode| 00000290 3d 39 20 8c 0d 01 5e 38 20 c8 99 20 22 4f 53 5f |=9 ...^8 .. "OS_| 000002a0 53 70 72 69 74 65 4f 70 22 2c 26 31 31 38 2c 73 |SpriteOp",&118,s| 000002b0 63 65 6e 65 72 79 2c 22 70 61 6c 65 74 74 65 22 |cenery,"palette"| 000002c0 20 b8 20 2c 2c 70 61 6c 5f 73 70 72 0d 01 68 17 | . ,,pal_spr..h.| 000002d0 20 70 61 6c 5f 64 61 74 3d 70 61 6c 5f 73 70 72 | pal_dat=pal_spr| 000002e0 2b 34 34 0d 01 72 0f 20 e3 20 69 3d 30 20 b8 20 |+44..r. . i=0 . | 000002f0 31 35 0d 01 7c 13 20 20 61 3d 70 61 6c 5f 64 61 |15..|. a=pal_da| 00000300 74 2b 38 2a 69 0d 01 86 15 20 20 fb 20 69 2c 61 |t+8*i.... . i,a| 00000310 3f 31 2c 61 3f 32 2c 61 3f 33 0d 01 90 06 20 ed |?1,a?2,a?3.... .| 00000320 0d 01 9a 05 cd 0d 01 a4 05 87 0d 01 ae 0c d6 20 |............... | 00000330 73 63 72 6f 6c 6c 0d 01 b8 07 eb 20 30 0d 01 c2 |scroll..... 0...| 00000340 05 e0 0d 01 cc 05 3a 0d 01 d6 16 dd 20 f2 6c 6f |......:..... .lo| 00000350 61 64 5f 6d 61 70 28 66 69 6c 65 24 29 0d 01 e0 |ad_map(file$)...| 00000360 18 69 6e 25 3d 8e 28 22 4d 61 70 73 2e 22 2b 66 |.in%=.("Maps."+f| 00000370 69 6c 65 24 29 0d 01 ea 08 78 25 3d 30 0d 01 f4 |ile$)....x%=0...| 00000380 08 6d 25 3d 30 0d 01 fe 0f e3 20 69 3d 30 20 b8 |.m%=0..... i=0 .| 00000390 20 32 35 35 0d 02 08 17 20 73 63 65 6e 65 5f 73 | 255.... scene_s| 000003a0 70 72 21 28 34 2a 69 29 3d 2d 31 0d 02 12 05 ed |pr!(4*i)=-1.....| 000003b0 0d 02 1c 0e c8 95 20 ac 20 c5 23 69 6e 25 0d 02 |...... . .#in%..| 000003c0 26 15 20 73 24 3d a4 73 74 72 69 70 28 be 23 69 |&. s$=.strip(.#i| 000003d0 6e 25 29 0d 02 30 0f 20 e7 20 73 24 3c 3e 22 22 |n%)..0. . s$<>""| 000003e0 20 8c 0d 02 3a 0d 20 20 c8 8e 20 73 24 20 ca 0d | ...:. .. s$ ..| 000003f0 02 44 16 20 20 20 c9 20 22 46 69 6c 65 73 3a 22 |.D. . "Files:"| 00000400 3a 6d 25 3d 31 0d 02 4e 15 20 20 20 c9 20 22 55 |:m%=1..N. . "U| 00000410 73 65 64 3a 22 3a 6d 25 3d 32 0d 02 58 14 20 20 |sed:":m%=2..X. | 00000420 20 c9 20 22 4d 61 70 3a 22 3a 6d 25 3d 33 0d 02 | . "Map:":m%=3..| 00000430 62 15 20 20 20 c9 20 22 54 79 70 65 3a 22 3a 6d |b. . "Type:":m| 00000440 25 3d 34 0d 02 6c 07 20 20 7f 0d 02 76 0e 20 20 |%=4..l. ...v. | 00000450 20 c8 8e 20 6d 25 20 ca 0d 02 80 37 20 20 20 20 | .. m% ....7 | 00000460 c9 20 31 3a c8 99 20 22 4f 53 5f 53 70 72 69 74 |. 1:.. "OS_Sprit| 00000470 65 4f 70 22 2c 26 31 30 42 2c 73 63 65 6e 65 72 |eOp",&10B,scener| 00000480 79 2c 22 53 63 65 6e 65 72 79 2e 22 2b 73 24 0d |y,"Scenery."+s$.| 00000490 02 8a 0c 20 20 20 20 c9 20 32 3a 0d 02 94 18 20 |... . 2:.... | 000004a0 20 20 20 20 69 3d a0 28 22 26 22 2b c0 73 24 2c | i=.("&"+.s$,| 000004b0 32 29 29 0d 02 9e 1a 20 20 20 20 20 73 24 3d a4 |2)).... s$=.| 000004c0 73 74 72 69 70 28 c1 73 24 2c 33 29 29 0d 02 a8 |strip(.s$,3))...| 000004d0 30 20 20 20 20 20 c8 99 20 22 4f 53 5f 53 70 72 |0 .. "OS_Spr| 000004e0 69 74 65 4f 70 22 2c 26 31 31 38 2c 73 63 65 6e |iteOp",&118,scen| 000004f0 65 72 79 2c 73 24 20 b8 20 2c 2c 64 25 0d 02 b2 |ery,s$ . ,,d%...| 00000500 1b 20 20 20 20 20 73 63 65 6e 65 5f 73 70 72 21 |. scene_spr!| 00000510 28 34 2a 69 29 3d 64 25 0d 02 bc 17 20 20 20 20 |(4*i)=d%.... | 00000520 20 e7 20 73 24 3d 22 62 6c 61 6e 6b 22 20 8c 0d | . s$="blank" ..| 00000530 02 c6 10 20 20 20 20 20 20 62 6c 6e 6b 3d 69 0d |... blnk=i.| 00000540 02 d0 37 20 20 20 20 20 20 c8 99 20 22 4f 53 5f |..7 .. "OS_| 00000550 53 70 72 69 74 65 4f 70 22 2c 26 31 32 38 2c 73 |SpriteOp",&128,s| 00000560 63 65 6e 65 72 79 2c 73 24 20 b8 20 2c 2c 2c 2c |cenery,s$ . ,,,,| 00000570 2c 2c 6d 6f 64 65 0d 02 da 0a 20 20 20 20 20 cd |,,mode.... .| 00000580 0d 02 e4 0c 20 20 20 20 c9 20 33 3a 0d 02 ee 17 |.... . 3:....| 00000590 20 20 20 20 20 64 61 73 68 25 3d a7 73 24 2c 22 | dash%=.s$,"| 000005a0 2d 22 29 0d 02 f8 14 20 20 20 20 20 e7 20 64 61 |-").... . da| 000005b0 73 68 25 3e 30 20 8c 0d 03 02 1a 20 20 20 20 20 |sh%>0 ..... | 000005c0 20 73 31 24 3d c0 73 24 2c 64 61 73 68 25 2d 31 | s1$=.s$,dash%-1| 000005d0 29 0d 03 0c 1a 20 20 20 20 20 20 73 33 24 3d c1 |).... s3$=.| 000005e0 73 24 2c 64 61 73 68 25 2b 31 29 0d 03 16 1c 20 |s$,dash%+1).... | 000005f0 20 20 20 20 20 73 32 24 3d c2 22 30 22 2b c3 7e | s2$=."0"+.~| 00000600 62 6c 6e 6b 2c 32 29 0d 03 20 2a 20 20 20 20 20 |blnk,2).. * | 00000610 20 73 24 3d 73 31 24 2b c4 6e 6f 2d a9 28 73 31 | s$=s1$+.no-.(s1| 00000620 24 2b 73 33 24 29 2f 32 2c 73 32 24 29 2b 73 33 |$+s3$)/2,s2$)+s3| 00000630 24 0d 03 2a 0a 20 20 20 20 20 cd 0d 03 34 16 20 |$..*. ...4. | 00000640 20 20 20 20 61 25 3d 6c 61 6e 64 2b 6e 6f 2a 78 | a%=land+no*x| 00000650 25 0d 03 3e 15 20 20 20 20 20 e3 20 69 3d 30 20 |%..>. . i=0 | 00000660 b8 20 6e 6f 2d 31 0d 03 48 13 20 20 20 20 20 20 |. no-1..H. | 00000670 61 25 3f 69 3d 62 6c 6e 6b 0d 03 52 0a 20 20 20 |a%?i=blnk..R. | 00000680 20 20 ed 0d 03 5c 10 20 20 20 20 20 79 25 3d 6e | ...\. y%=n| 00000690 6f 2d 31 0d 03 66 12 20 20 20 20 20 c8 95 20 73 |o-1..f. .. s| 000006a0 24 3c 3e 22 22 0d 03 70 1d 20 20 20 20 20 20 61 |$<>""..p. a| 000006b0 25 3f 79 25 3d a0 28 22 26 22 2b c0 73 24 2c 32 |%?y%=.("&"+.s$,2| 000006c0 29 29 0d 03 7a 13 20 20 20 20 20 20 73 24 3d c1 |))..z. s$=.| 000006d0 73 24 2c 33 29 0d 03 84 0f 20 20 20 20 20 20 79 |s$,3).... y| 000006e0 25 2d 3d 31 0d 03 8e 0a 20 20 20 20 20 ce 0d 03 |%-=1.... ...| 000006f0 98 0e 20 20 20 20 20 78 25 2b 3d 31 0d 03 a2 0c |.. x%+=1....| 00000700 20 20 20 20 c9 20 34 3a 0d 03 ac 15 20 20 20 20 | . 4:.... | 00000710 20 73 69 7a 65 3d bb c1 73 24 2c 32 29 0d 03 b6 | size=..s$,2)...| 00000720 17 20 20 20 20 20 e7 20 c0 73 24 2c 31 29 3d 22 |. . .s$,1)="| 00000730 48 22 20 8c 0d 03 c0 33 20 20 20 20 20 20 e7 20 |H" ....3 . | 00000740 73 69 7a 65 3d 33 32 20 74 6f 74 61 6c 5f 73 69 |size=32 total_si| 00000750 7a 65 3d 32 32 34 20 8b 20 74 6f 74 61 6c 5f 73 |ze=224 . total_s| 00000760 69 7a 65 3d 32 34 30 0d 03 ca 0a 20 20 20 20 20 |ize=240.... | 00000770 cc 0d 03 d4 33 20 20 20 20 20 20 85 20 31 37 2c |....3 . 17,| 00000780 22 4f 6e 6c 79 20 68 6f 72 69 7a 6f 6e 74 61 6c |"Only horizontal| 00000790 20 6c 61 6e 64 73 63 61 70 65 73 20 70 6c 65 61 | landscapes plea| 000007a0 73 65 21 22 0d 03 de 0a 20 20 20 20 20 cd 0d 03 |se!".... ...| 000007b0 e8 1d 20 20 20 20 20 6e 6f 3d 74 6f 74 61 6c 5f |.. no=total_| 000007c0 73 69 7a 65 20 81 20 73 69 7a 65 0d 03 f2 08 20 |size . size.... | 000007d0 20 20 cb 0d 03 fc 07 20 20 cb 0d 04 06 06 20 cd | ..... ..... .| 000007e0 0d 04 10 05 ce 0d 04 1a 35 c8 99 20 22 4f 53 5f |........5.. "OS_| 000007f0 52 65 61 64 4d 6f 64 65 56 61 72 69 61 62 6c 65 |ReadModeVariable| 00000800 22 2c 6d 6f 64 65 2c 36 20 b8 20 2c 2c 62 79 74 |",mode,6 . ,,byt| 00000810 65 73 5f 70 65 72 5f 72 6f 77 0d 04 24 28 73 63 |es_per_row..$(sc| 00000820 72 65 65 6e 5f 73 69 7a 65 3d 74 6f 74 61 6c 5f |reen_size=total_| 00000830 73 69 7a 65 2a 62 79 74 65 73 5f 70 65 72 5f 72 |size*bytes_per_r| 00000840 6f 77 0d 04 2e 36 e7 20 6d 6f 64 65 3d 39 20 73 |ow...6. mode=9 s| 00000850 70 72 69 74 65 5f 77 69 64 74 68 3d 73 69 7a 65 |prite_width=size| 00000860 20 81 20 32 20 8b 20 73 70 72 69 74 65 5f 77 69 | . 2 . sprite_wi| 00000870 64 74 68 3d 73 69 7a 65 0d 04 38 1c 6c 61 6e 64 |dth=size..8.land| 00000880 5f 65 78 74 3d 78 25 2a 73 70 72 69 74 65 5f 77 |_ext=x%*sprite_w| 00000890 69 64 74 68 0d 04 42 0f e3 20 69 3d 30 20 b8 20 |idth..B.. i=0 . | 000008a0 32 35 35 0d 04 4c 30 20 e7 20 73 63 65 6e 65 5f |255..L0 . scene_| 000008b0 73 70 72 21 28 34 2a 69 29 3d 2d 31 20 8c 20 73 |spr!(4*i)=-1 . s| 000008c0 63 65 6e 65 5f 73 70 72 21 28 34 2a 69 29 3d 62 |cene_spr!(4*i)=b| 000008d0 6c 6e 6b 0d 04 56 05 ed 0d 04 60 09 d9 23 69 6e |lnk..V....`..#in| 000008e0 25 0d 04 6a 05 e1 0d 04 74 05 3a 0d 04 7e 10 dd |%..j....t.:..~..| 000008f0 20 a4 73 74 72 69 70 28 73 24 29 0d 04 88 11 c8 | .strip(s$).....| 00000900 95 20 c0 73 24 2c 31 29 3d 22 20 22 0d 04 92 0e |. .s$,1)=" "....| 00000910 20 73 24 3d c1 73 24 2c 32 29 0d 04 9c 05 ce 0d | s$=.s$,2)......| 00000920 04 a6 0f c8 95 20 c2 73 24 29 3d 22 20 22 0d 04 |..... .s$)=" "..| 00000930 b0 0c 20 73 24 3d c0 73 24 29 0d 04 ba 05 ce 0d |.. s$=.s$)......| 00000940 04 c4 07 3d 73 24 0d 04 ce 05 3a 0d 04 d8 0a dd |...=s$....:.....| 00000950 20 f2 61 73 73 0d 04 e2 1e de 20 63 6f 64 65 25 | .ass..... code%| 00000960 20 26 38 30 30 2b 34 2a 73 63 72 65 65 6e 5f 73 | &800+4*screen_s| 00000970 69 7a 65 0d 04 ec 17 73 70 3d 31 33 3a 6c 69 6e |ize....sp=13:lin| 00000980 6b 3d 31 34 3a 70 63 3d 31 35 0d 04 f6 11 56 49 |k=14:pc=15....VI| 00000990 44 43 3d 26 33 34 30 30 30 30 30 0d 05 00 15 e3 |DC=&3400000.....| 000009a0 20 70 61 73 73 25 3d 30 20 b8 20 32 20 88 20 32 | pass%=0 . 2 . 2| 000009b0 0d 05 0a 0c 50 25 3d 63 6f 64 65 25 0d 05 14 0e |....P%=code%....| 000009c0 5b 4f 50 54 20 70 61 73 73 25 0d 05 1e 28 2e 73 |[OPT pass%...(.s| 000009d0 63 72 6f 6c 6c 20 20 53 54 4d 46 44 20 20 20 28 |croll STMFD (| 000009e0 73 70 29 21 2c 7b 72 30 2d 72 31 32 2c 6c 69 6e |sp)!,{r0-r12,lin| 000009f0 6b 7d 0d 05 28 28 20 20 20 20 20 20 20 20 4d 4f |k}..(( MO| 00000a00 56 20 20 20 20 20 72 31 31 2c 23 31 20 3b 20 62 |V r11,#1 ; b| 00000a10 61 6e 6b 20 6e 75 6d 62 65 72 0d 05 32 25 20 20 |ank number..2% | 00000a20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 31 | MOV r1| 00000a30 30 2c 23 30 20 3b 20 70 6f 73 69 74 69 6f 6e 0d |0,#0 ; position.| 00000a40 05 3c 29 20 20 20 20 20 20 20 20 4d 4f 56 20 20 |.<) MOV | 00000a50 20 20 20 72 39 2c 23 30 20 20 3b 20 73 75 62 2d | r9,#0 ; sub-| 00000a60 70 6f 73 69 74 69 6f 6e 0d 05 46 1e 2e 73 6c 6f |position..F..slo| 00000a70 6f 70 20 20 42 4c 20 20 20 20 20 20 73 77 61 70 |op BL swap| 00000a80 5f 62 61 6e 6b 73 0d 05 50 1c 20 20 20 20 20 20 |_banks..P. | 00000a90 20 20 4d 4f 56 20 20 20 20 20 72 30 2c 23 26 46 | MOV r0,#&F| 00000aa0 30 30 0d 05 5a 1e 20 20 20 20 20 20 20 20 42 4c |00..Z. BL| 00000ab0 20 20 20 20 20 20 73 65 74 5f 62 6f 72 64 65 72 | set_border| 00000ac0 0d 05 64 1d 20 20 20 20 20 20 20 20 42 4c 20 20 |..d. BL | 00000ad0 20 20 20 20 63 6f 70 79 5f 62 61 6e 6b 0d 05 6e | copy_bank..n| 00000ae0 1c 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 |. MOV | 00000af0 20 72 30 2c 23 26 30 46 30 0d 05 78 1e 20 20 20 | r0,#&0F0..x. | 00000b00 20 20 20 20 20 42 4c 20 20 20 20 20 20 73 65 74 | BL set| 00000b10 5f 62 6f 72 64 65 72 0d 05 82 1d 20 20 20 20 20 |_border.... | 00000b20 20 20 20 42 4c 20 20 20 20 20 20 73 63 72 6f 6c | BL scrol| 00000b30 6c 5f 6f 6e 0d 05 8c 1c 20 20 20 20 20 20 20 20 |l_on.... | 00000b40 4d 4f 56 20 20 20 20 20 72 30 2c 23 26 30 30 30 |MOV r0,#&000| 00000b50 0d 05 96 1e 20 20 20 20 20 20 20 20 42 4c 20 20 |.... BL | 00000b60 20 20 20 20 73 65 74 5f 62 6f 72 64 65 72 0d 05 | set_border..| 00000b70 a0 29 20 20 20 20 20 20 20 20 53 57 49 20 20 20 |.) SWI | 00000b80 20 20 22 58 4f 53 5f 52 65 61 64 45 73 63 61 70 | "XOS_ReadEscap| 00000b90 65 53 74 61 74 65 22 0d 05 aa 19 20 20 20 20 20 |eState".... | 00000ba0 20 20 20 42 43 43 20 20 20 20 20 73 6c 6f 6f 70 | BCC sloop| 00000bb0 0d 05 b4 1b 20 20 20 20 20 20 20 20 4d 4f 56 20 |.... MOV | 00000bc0 20 20 20 20 72 30 2c 23 31 32 36 0d 05 be 1e 20 | r0,#126.... | 00000bd0 20 20 20 20 20 20 20 53 57 49 20 20 20 20 20 22 | SWI "| 00000be0 58 4f 53 5f 42 79 74 65 22 0d 05 c8 25 20 20 20 |XOS_Byte"...% | 00000bf0 20 20 20 20 20 4c 44 4d 46 44 20 20 20 28 73 70 | LDMFD (sp| 00000c00 29 21 2c 7b 72 30 2d 72 31 32 2c 70 63 7d 0d 05 |)!,{r0-r12,pc}..| 00000c10 d2 04 0d 05 dc 0e 2e 73 63 72 6f 6c 6c 5f 6f 6e |.......scroll_on| 00000c20 0d 05 e6 26 20 20 20 20 20 20 20 20 53 54 4d 46 |...& STMF| 00000c30 44 20 20 20 28 73 70 29 21 2c 7b 72 30 2d 72 37 |D (sp)!,{r0-r7| 00000c40 2c 6c 69 6e 6b 7d 0d 05 f0 21 20 20 20 20 20 20 |,link}...! | 00000c50 20 20 4c 44 52 20 20 20 20 20 72 31 34 2c 6c 61 | LDR r14,la| 00000c60 6e 64 73 5f 65 6e 64 0d 05 fa 1b 20 20 20 20 20 |nds_end.... | 00000c70 20 20 20 43 4d 50 20 20 20 20 20 72 31 30 2c 72 | CMP r10,r| 00000c80 31 34 0d 06 04 24 20 20 20 20 20 20 20 20 4c 44 |14...$ LD| 00000c90 4d 47 45 46 44 20 28 73 70 29 21 2c 7b 72 30 2d |MGEFD (sp)!,{r0-| 00000ca0 72 37 2c 70 63 7d 0d 06 0e 1b 20 20 20 20 20 20 |r7,pc}.... | 00000cb0 20 20 80 20 20 20 20 20 72 30 2c 72 31 30 2c 23 | . r0,r10,#| 00000cc0 33 0d 06 18 1f 20 20 20 20 20 20 20 20 41 44 52 |3.... ADR| 00000cd0 20 20 20 20 20 72 31 2c 62 61 6e 6b 5f 64 61 74 | r1,bank_dat| 00000ce0 0d 06 22 25 20 20 20 20 20 20 20 20 4c 44 52 20 |.."% LDR | 00000cf0 20 20 20 20 72 30 2c 5b 72 31 2c 72 30 2c 4c 53 | r0,[r1,r0,LS| 00000d00 4c 20 23 32 5d 0d 06 2c 1c 20 20 20 20 20 20 20 |L #2]..,. | 00000d10 20 42 49 43 20 20 20 20 20 72 31 2c 72 39 2c 23 | BIC r1,r9,#| 00000d20 33 0d 06 36 1c 20 20 20 20 20 20 20 20 41 44 44 |3..6. ADD| 00000d30 20 20 20 20 20 72 30 2c 72 30 2c 72 31 0d 06 40 | r0,r0,r1..@| 00000d40 29 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 |) ADD | 00000d50 20 72 31 2c 72 31 30 2c 23 62 79 74 65 73 5f 70 | r1,r10,#bytes_p| 00000d60 65 72 5f 72 6f 77 0d 06 4a 20 20 20 20 20 20 20 |er_row..J | 00000d70 20 20 4c 44 52 20 20 20 20 20 72 32 2c 6c 61 6e | LDR r2,lan| 00000d80 64 5f 61 64 64 72 0d 06 54 1f 20 20 20 20 20 20 |d_addr..T. | 00000d90 20 20 4c 44 52 20 20 20 20 20 72 33 2c 73 70 72 | LDR r3,spr| 00000da0 5f 61 64 64 72 0d 06 5e 1f 20 20 20 20 20 20 20 |_addr..^. | 00000db0 20 42 4c 20 20 20 20 20 20 73 68 6f 77 5f 63 6f | BL show_co| 00000dc0 6c 75 6d 6e 0d 06 68 1c 20 20 20 20 20 20 20 20 |lumn..h. | 00000dd0 41 44 44 20 20 20 20 20 72 39 2c 72 39 2c 23 31 |ADD r9,r9,#1| 00000de0 0d 06 72 25 20 20 20 20 20 20 20 20 43 4d 50 20 |..r% CMP | 00000df0 20 20 20 20 72 39 2c 23 62 79 74 65 73 5f 70 65 | r9,#bytes_pe| 00000e00 72 5f 72 6f 77 0d 06 7c 16 20 20 20 20 20 20 20 |r_row..|. | 00000e10 20 ec 51 20 20 20 72 39 2c 23 30 0d 06 86 1e 20 | .Q r9,#0.... | 00000e20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 72 | ADD r| 00000e30 31 30 2c 72 31 30 2c 23 31 0d 06 90 24 20 20 20 |10,r10,#1...$ | 00000e40 20 20 20 20 20 4c 44 4d 46 44 20 20 20 28 73 70 | LDMFD (sp| 00000e50 29 21 2c 7b 72 30 2d 72 37 2c 70 63 7d 0d 06 9a |)!,{r0-r7,pc}...| 00000e60 04 0d 06 a4 35 2e 6c 61 6e 64 73 5f 65 6e 64 20 |....5.lands_end | 00000e70 20 20 20 20 20 45 51 55 44 20 20 20 20 6c 61 6e | EQUD lan| 00000e80 64 5f 65 78 74 2d 62 79 74 65 73 5f 70 65 72 5f |d_ext-bytes_per_| 00000e90 72 6f 77 2d 31 36 0d 06 ae 25 2e 73 70 72 5f 61 |row-16...%.spr_a| 00000ea0 64 64 72 20 20 20 20 20 20 20 45 51 55 44 20 20 |ddr EQUD | 00000eb0 20 20 73 63 65 6e 65 5f 73 70 72 0d 06 b8 20 2e | scene_spr... .| 00000ec0 6c 61 6e 64 5f 61 64 64 72 20 20 20 20 20 20 45 |land_addr E| 00000ed0 51 55 44 20 20 20 20 6c 61 6e 64 0d 06 c2 04 0d |QUD land.....| 00000ee0 06 cc 10 2e 73 68 6f 77 5f 63 6f 6c 75 6d 6e 0d |....show_column.| 00000ef0 06 d6 27 20 20 20 20 20 20 20 20 53 54 4d 46 44 |..' STMFD| 00000f00 20 20 20 28 73 70 29 21 2c 7b 72 30 2d 72 31 32 | (sp)!,{r0-r12| 00000f10 2c 6c 69 6e 6b 7d 0d 06 e0 33 20 20 20 20 20 20 |,link}...3 | 00000f20 20 20 4d 4f 56 20 20 20 20 20 72 31 34 2c 72 31 | MOV r14,r1| 00000f30 2c 4c 53 52 20 23 a4 6c 6f 67 32 28 73 70 72 69 |,LSR #.log2(spri| 00000f40 74 65 5f 77 69 64 74 68 29 0d 06 ea 27 20 20 20 |te_width)...' | 00000f50 20 20 20 20 20 80 20 20 20 20 20 72 38 2c 72 31 | . r8,r1| 00000f60 2c 23 73 70 72 69 74 65 5f 77 69 64 74 68 2d 31 |,#sprite_width-1| 00000f70 0d 06 f4 1a 20 20 20 20 20 20 20 20 4d 4f 56 20 |.... MOV | 00000f80 20 20 20 20 72 36 2c 23 6e 6f 0d 06 fe 20 20 20 | r6,#no... | 00000f90 20 20 20 20 20 20 4d 4c 41 20 20 20 20 20 72 37 | MLA r7| 00000fa0 2c 72 31 34 2c 72 36 2c 72 32 0d 07 08 0e 2e 73 |,r14,r6,r2.....s| 00000fb0 68 6f 77 5f 63 6f 6c 31 0d 07 12 1e 20 20 20 20 |how_col1.... | 00000fc0 20 20 20 20 4c 44 52 42 20 20 20 20 72 39 2c 5b | LDRB r9,[| 00000fd0 72 37 5d 2c 23 31 0d 07 1c 25 20 20 20 20 20 20 |r7],#1...% | 00000fe0 20 20 4c 44 52 20 20 20 20 20 72 39 2c 5b 72 33 | LDR r9,[r3| 00000ff0 2c 72 39 2c 4c 53 4c 20 23 32 5d 0d 07 26 20 20 |,r9,LSL #2]..& | 00001000 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 | LDR r| 00001010 31 34 2c 5b 72 39 2c 23 33 32 5d 0d 07 30 1d 20 |14,[r9,#32]..0. | 00001020 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 72 | ADD r| 00001030 39 2c 72 39 2c 72 31 34 0d 07 3a 1d 20 20 20 20 |9,r9,r14..:. | 00001040 20 20 20 20 42 49 43 20 20 20 20 20 72 31 34 2c | BIC r14,| 00001050 72 38 2c 23 33 0d 07 44 1d 20 20 20 20 20 20 20 |r8,#3..D. | 00001060 20 41 44 44 20 20 20 20 20 72 39 2c 72 39 2c 72 | ADD r9,r9,r| 00001070 31 34 0d 07 4e 26 20 20 20 20 20 20 20 20 43 4d |14..N& CM| 00001080 50 20 20 20 20 20 72 38 2c 23 73 70 72 69 74 65 |P r8,#sprite| 00001090 5f 77 69 64 74 68 2d 34 0d 07 58 1d 20 20 20 20 |_width-4..X. | 000010a0 20 20 20 20 41 44 44 4c 54 20 20 20 72 31 30 2c | ADDLT r10,| 000010b0 72 39 2c 23 34 0d 07 62 22 20 20 20 20 20 20 20 |r9,#4..b" | 000010c0 20 4c 44 52 47 45 42 20 20 72 31 30 2c 5b 72 37 | LDRGEB r10,[r7| 000010d0 2c 23 6e 6f 2d 31 5d 0d 07 6c 27 20 20 20 20 20 |,#no-1]..l' | 000010e0 20 20 20 4c 44 52 47 45 20 20 20 72 31 30 2c 5b | LDRGE r10,[| 000010f0 72 33 2c 72 31 30 2c 4c 53 4c 20 23 32 5d 0d 07 |r3,r10,LSL #2]..| 00001100 76 21 20 20 20 20 20 20 20 20 4c 44 52 47 45 20 |v! LDRGE | 00001110 20 20 72 31 34 2c 5b 72 31 30 2c 23 33 32 5d 0d | r14,[r10,#32].| 00001120 07 80 1f 20 20 20 20 20 20 20 20 41 44 44 47 45 |... ADDGE| 00001130 20 20 20 72 31 30 2c 72 31 30 2c 72 31 34 0d 07 | r10,r10,r14..| 00001140 8a 1b 20 20 20 20 20 20 20 20 80 20 20 20 20 20 |.. . | 00001150 72 31 34 2c 72 31 2c 23 33 0d 07 94 22 20 20 20 |r14,r1,#3..." | 00001160 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 31 34 | MOV r14| 00001170 2c 72 31 34 2c 4c 53 4c 20 23 33 0d 07 9e 1e 20 |,r14,LSL #3.... | 00001180 20 20 20 20 20 20 20 52 53 42 20 20 20 20 20 72 | RSB r| 00001190 34 2c 72 31 34 2c 23 33 32 0d 07 a8 20 5d 3a e3 |4,r14,#32... ]:.| 000011a0 20 7a 25 3d 30 20 b8 20 73 69 7a 65 2d 31 3a 5b | z%=0 . size-1:[| 000011b0 4f 50 54 20 70 61 73 73 25 0d 07 b2 2a 20 20 20 |OPT pass%...* | 000011c0 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 31 31 | LDR r11| 000011d0 2c 5b 72 39 5d 2c 23 73 70 72 69 74 65 5f 77 69 |,[r9],#sprite_wi| 000011e0 64 74 68 0d 07 bc 2b 20 20 20 20 20 20 20 20 4c |dth...+ L| 000011f0 44 52 20 20 20 20 20 72 31 32 2c 5b 72 31 30 5d |DR r12,[r10]| 00001200 2c 23 73 70 72 69 74 65 5f 77 69 64 74 68 0d 07 |,#sprite_width..| 00001210 c6 23 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 |.# MOV | 00001220 20 20 72 31 31 2c 72 31 31 2c 4c 53 52 20 72 31 | r11,r11,LSR r1| 00001230 34 0d 07 d0 25 20 20 20 20 20 20 20 20 84 52 20 |4...% .R | 00001240 20 20 20 20 72 31 31 2c 72 31 31 2c 72 31 32 2c | r11,r11,r12,| 00001250 4c 53 4c 20 72 34 0d 07 da 2b 20 20 20 20 20 20 |LSL r4...+ | 00001260 20 20 53 54 52 20 20 20 20 20 72 31 31 2c 5b 72 | STR r11,[r| 00001270 30 5d 2c 23 62 79 74 65 73 5f 70 65 72 5f 72 6f |0],#bytes_per_ro| 00001280 77 0d 07 e4 15 5d 3a ed 20 7a 25 3a 5b 4f 50 54 |w....]:. z%:[OPT| 00001290 20 70 61 73 73 25 0d 07 ee 1c 20 20 20 20 20 20 | pass%.... | 000012a0 20 20 53 55 42 53 20 20 20 20 72 36 2c 72 36 2c | SUBS r6,r6,| 000012b0 23 31 0d 07 f8 1d 20 20 20 20 20 20 20 20 42 4e |#1.... BN| 000012c0 45 20 20 20 20 20 73 68 6f 77 5f 63 6f 6c 31 0d |E show_col1.| 000012d0 08 02 25 20 20 20 20 20 20 20 20 4c 44 4d 46 44 |..% LDMFD| 000012e0 20 20 20 28 73 70 29 21 2c 7b 72 30 2d 72 31 32 | (sp)!,{r0-r12| 000012f0 2c 70 63 7d 0d 08 0c 05 5d 0d 08 16 19 62 61 6e |,pc}....]....ban| 00001300 6b 5f 64 61 74 3d a4 61 6c 6c 6f 63 28 31 36 2c |k_dat=.alloc(16,| 00001310 30 29 0d 08 20 0e 5b 4f 50 54 20 70 61 73 73 25 |0).. .[OPT pass%| 00001320 0d 08 2a 0e 2e 63 6f 70 79 5f 62 61 6e 6b 0d 08 |..*..copy_bank..| 00001330 34 27 20 20 20 20 20 20 20 20 53 54 4d 46 44 20 |4' STMFD | 00001340 20 20 28 73 70 29 21 2c 7b 72 30 2d 72 31 32 2c | (sp)!,{r0-r12,| 00001350 6c 69 6e 6b 7d 0d 08 3e 1b 20 20 20 20 20 20 20 |link}..>. | 00001360 20 80 20 20 20 20 20 72 30 2c 72 31 30 2c 23 33 | . r0,r10,#3| 00001370 0d 08 48 1f 20 20 20 20 20 20 20 20 41 44 52 20 |..H. ADR | 00001380 20 20 20 20 72 31 2c 62 61 6e 6b 5f 64 61 74 0d | r1,bank_dat.| 00001390 08 52 26 20 20 20 20 20 20 20 20 4c 44 52 20 20 |.R& LDR | 000013a0 20 20 20 72 31 30 2c 5b 72 31 2c 72 30 2c 4c 53 | r10,[r1,r0,LS| 000013b0 4c 20 23 32 5d 0d 08 5c 1c 20 20 20 20 20 20 20 |L #2]..\. | 000013c0 20 42 49 43 20 20 20 20 20 72 39 2c 72 39 2c 23 | BIC r9,r9,#| 000013d0 33 0d 08 66 1e 20 20 20 20 20 20 20 20 41 44 44 |3..f. ADD| 000013e0 20 20 20 20 20 72 31 30 2c 72 31 30 2c 72 39 0d | r10,r10,r9.| 000013f0 08 70 4a 20 20 20 20 20 20 20 20 41 44 52 20 20 |.pJ ADR | 00001400 20 20 20 72 37 2c 72 6f 75 74 69 6e 65 20 3b 20 | r7,routine ; | 00001410 77 68 65 72 65 20 77 65 27 72 65 20 67 6f 69 6e |where we're goin| 00001420 67 20 74 6f 20 61 73 73 65 6d 62 6c 65 20 6f 75 |g to assemble ou| 00001430 72 20 72 6f 75 74 69 6e 65 0d 08 7a 25 20 20 20 |r routine..z% | 00001440 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 38 2c | MOV r8,| 00001450 23 62 79 74 65 73 5f 70 65 72 5f 72 6f 77 0d 08 |#bytes_per_row..| 00001460 84 1a 20 20 20 20 20 20 20 20 4d 56 4e 20 20 20 |.. MVN | 00001470 20 20 72 31 34 2c 23 30 0d 08 8e 1c 20 20 20 20 | r14,#0.... | 00001480 20 20 20 20 41 44 52 20 20 20 20 20 72 32 2c 6c | ADR r2,l| 00001490 6f 61 64 69 0d 08 98 0f 2e 6d 61 6b 65 5f 72 6f |oadi.....make_ro| 000014a0 75 74 65 0d 08 a2 19 20 20 20 20 20 20 20 20 43 |ute.... C| 000014b0 4d 50 20 20 20 20 20 72 38 2c 23 30 0d 08 ac 1e |MP r8,#0....| 000014c0 20 20 20 20 20 20 20 20 42 45 51 20 20 20 20 20 | BEQ | 000014d0 6d 61 64 65 5f 72 6f 75 74 65 0d 08 b6 28 20 20 |made_route...( | 000014e0 20 20 20 20 20 20 52 53 42 20 20 20 20 20 72 36 | RSB r6| 000014f0 2c 72 39 2c 23 62 79 74 65 73 5f 70 65 72 5f 72 |,r9,#bytes_per_r| 00001500 6f 77 0d 08 c0 19 20 20 20 20 20 20 20 20 43 4d |ow.... CM| 00001510 50 20 20 20 20 20 72 36 2c 72 38 0d 08 ca 19 20 |P r6,r8.... | 00001520 20 20 20 20 20 20 20 4d 4f 56 47 54 20 20 20 72 | MOVGT r| 00001530 36 2c 72 38 0d 08 d4 1a 20 20 20 20 20 20 20 20 |6,r8.... | 00001540 43 4d 50 20 20 20 20 20 72 36 2c 23 34 30 0d 08 |CMP r6,#40..| 00001550 de 1a 20 20 20 20 20 20 20 20 4d 4f 56 47 54 20 |.. MOVGT | 00001560 20 20 72 36 2c 23 34 30 0d 08 e8 1e 20 20 20 20 | r6,#40.... | 00001570 20 20 20 20 4c 44 4d 49 41 20 20 20 72 32 2c 7b | LDMIA r2,{| 00001580 72 33 2c 72 34 7d 0d 08 f2 20 20 20 20 20 20 20 |r3,r4}... | 00001590 20 20 4d 4f 56 20 20 20 20 20 72 30 2c 72 36 2c | MOV r0,r6,| 000015a0 4c 53 52 20 23 32 0d 08 fc 1d 20 20 20 20 20 20 |LSR #2.... | 000015b0 20 20 52 53 42 20 20 20 20 20 72 30 2c 72 30 2c | RSB r0,r0,| 000015c0 23 31 30 0d 09 06 22 20 20 20 20 20 20 20 20 80 |#10..." .| 000015d0 20 20 20 20 20 72 33 2c 72 33 2c 72 31 34 2c 4c | r3,r3,r14,L| 000015e0 53 4c 20 72 30 0d 09 10 22 20 20 20 20 20 20 20 |SL r0..." | 000015f0 20 80 20 20 20 20 20 72 34 2c 72 34 2c 72 31 34 | . r4,r4,r14| 00001600 2c 4c 53 4c 20 72 30 0d 09 1a 1f 20 20 20 20 20 |,LSL r0.... | 00001610 20 20 20 53 54 4d 49 41 20 20 20 72 37 21 2c 7b | STMIA r7!,{| 00001620 72 33 2c 72 34 7d 0d 09 24 1c 20 20 20 20 20 20 |r3,r4}..$. | 00001630 20 20 53 55 42 20 20 20 20 20 72 38 2c 72 38 2c | SUB r8,r8,| 00001640 72 36 0d 09 2e 1c 20 20 20 20 20 20 20 20 41 44 |r6.... AD| 00001650 44 20 20 20 20 20 72 39 2c 72 39 2c 72 36 0d 09 |D r9,r9,r6..| 00001660 38 25 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 |8% CMP | 00001670 20 20 72 39 2c 23 62 79 74 65 73 5f 70 65 72 5f | r9,#bytes_per_| 00001680 72 6f 77 0d 09 42 1b 20 20 20 20 20 20 20 20 4c |row..B. L| 00001690 44 52 45 51 20 20 20 72 30 2c 73 75 62 69 0d 09 |DREQ r0,subi..| 000016a0 4c 1e 20 20 20 20 20 20 20 20 53 54 52 45 51 20 |L. STREQ | 000016b0 20 20 72 30 2c 5b 72 37 5d 2c 23 34 0d 09 56 16 | r0,[r7],#4..V.| 000016c0 20 20 20 20 20 20 20 20 ec 51 20 20 20 72 39 2c | .Q r9,| 000016d0 23 30 0d 09 60 1e 20 20 20 20 20 20 20 20 42 20 |#0..`. B | 000016e0 20 20 20 20 20 20 6d 61 6b 65 5f 72 6f 75 74 65 | make_route| 000016f0 0d 09 6a 0f 2e 6d 61 64 65 5f 72 6f 75 74 65 0d |..j..made_route.| 00001700 09 74 1c 20 20 20 20 20 20 20 20 41 44 52 20 20 |.t. ADR | 00001710 20 20 20 72 32 2c 61 64 64 31 30 0d 09 7e 1e 20 | r2,add10..~. | 00001720 20 20 20 20 20 20 20 4c 44 4d 49 41 20 20 20 72 | LDMIA r| 00001730 32 2c 7b 72 33 2d 72 36 7d 0d 09 88 21 20 20 20 |2,{r3-r6}...! | 00001740 20 20 20 20 20 41 44 52 20 20 20 20 20 72 35 2c | ADR r5,| 00001750 72 6f 75 74 69 6e 65 2d 31 36 0d 09 92 1c 20 20 |routine-16.... | 00001760 20 20 20 20 20 20 53 55 42 20 20 20 20 20 72 35 | SUB r5| 00001770 2c 72 37 2c 72 35 0d 09 9c 20 20 20 20 20 20 20 |,r7,r5... | 00001780 20 20 4d 4f 56 20 20 20 20 20 72 35 2c 72 35 2c | MOV r5,r5,| 00001790 41 53 52 20 23 32 0d 09 a6 1c 20 20 20 20 20 20 |ASR #2.... | 000017a0 20 20 52 53 42 20 20 20 20 20 72 35 2c 72 35 2c | RSB r5,r5,| 000017b0 23 30 0d 09 b0 24 20 20 20 20 20 20 20 20 42 49 |#0...$ BI| 000017c0 43 20 20 20 20 20 72 35 2c 72 35 2c 23 26 46 46 |C r5,r5,#&FF| 000017d0 30 30 30 30 30 30 0d 09 ba 23 20 20 20 20 20 20 |000000...# | 000017e0 20 20 84 52 20 20 20 20 20 72 35 2c 72 35 2c 23 | .R r5,r5,#| 000017f0 26 31 41 30 30 30 30 30 30 0d 09 c4 1e 20 20 20 |&1A000000.... | 00001800 20 20 20 20 20 53 54 4d 49 41 20 20 20 72 37 2c | STMIA r7,| 00001810 7b 72 33 2d 72 36 7d 0d 09 ce 1d 20 20 20 20 20 |{r3-r6}.... | 00001820 20 20 20 4c 44 52 20 20 20 20 20 72 31 31 2c 76 | LDR r11,v| 00001830 64 75 5f 6f 0d 09 d8 23 20 20 20 20 20 20 20 20 |du_o...# | 00001840 4d 4f 56 20 20 20 20 20 72 31 32 2c 23 74 6f 74 |MOV r12,#tot| 00001850 61 6c 5f 73 69 7a 65 0d 09 e2 1b 20 20 20 20 20 |al_size.... | 00001860 20 20 20 42 4c 20 20 20 20 20 20 72 6f 75 74 69 | BL routi| 00001870 6e 65 0d 09 ec 25 20 20 20 20 20 20 20 20 4c 44 |ne...% LD| 00001880 4d 46 44 20 20 20 28 73 70 29 21 2c 7b 72 30 2d |MFD (sp)!,{r0-| 00001890 72 31 32 2c 70 63 7d 0d 09 f6 04 0d 0a 00 20 2e |r12,pc}....... .| 000018a0 6c 6f 61 64 69 20 20 4c 44 4d 49 41 20 20 20 72 |loadi LDMIA r| 000018b0 31 30 21 2c 7b 72 30 2d 72 39 7d 0d 0a 0a 20 20 |10!,{r0-r9}... | 000018c0 20 20 20 20 20 20 20 53 54 4d 49 41 20 20 20 72 | STMIA r| 000018d0 31 31 21 2c 7b 72 30 2d 72 39 7d 0d 0a 14 2a 2e |11!,{r0-r9}...*.| 000018e0 73 75 62 69 20 20 20 53 55 42 20 20 20 20 20 72 |subi SUB r| 000018f0 31 30 2c 72 31 30 2c 23 62 79 74 65 73 5f 70 65 |10,r10,#bytes_pe| 00001900 72 5f 72 6f 77 0d 0a 1e 04 0d 0a 28 2a 2e 61 64 |r_row......(*.ad| 00001910 64 31 30 20 20 41 44 44 20 20 20 20 20 72 31 30 |d10 ADD r10| 00001920 2c 72 31 30 2c 23 62 79 74 65 73 5f 70 65 72 5f |,r10,#bytes_per_| 00001930 72 6f 77 0d 0a 32 1e 20 20 20 20 20 20 20 20 53 |row..2. S| 00001940 55 42 53 20 20 20 20 72 31 32 2c 72 31 32 2c 23 |UBS r12,r12,#| 00001950 31 0d 0a 3c 15 20 20 20 20 20 20 20 20 44 43 44 |1..<. DCD| 00001960 20 20 20 20 20 30 0d 0a 46 1b 2e 72 65 74 69 20 | 0..F..reti | 00001970 20 20 4d 4f 56 20 20 20 20 20 70 63 2c 6c 69 6e | MOV pc,lin| 00001980 6b 0d 0a 50 04 0d 0a 5a 0f 2e 73 77 61 70 5f 62 |k..P...Z..swap_b| 00001990 61 6e 6b 73 0d 0a 64 26 20 20 20 20 20 20 20 20 |anks..d& | 000019a0 53 54 4d 46 44 20 20 20 28 73 70 29 21 2c 7b 72 |STMFD (sp)!,{r| 000019b0 30 2d 72 32 2c 6c 69 6e 6b 7d 0d 0a 6e 1a 20 20 |0-r2,link}..n. | 000019c0 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 30 | MOV r0| 000019d0 2c 23 31 39 0d 0a 78 1e 20 20 20 20 20 20 20 20 |,#19..x. | 000019e0 53 57 49 20 20 20 20 20 22 58 4f 53 5f 42 79 74 |SWI "XOS_Byt| 000019f0 65 22 0d 0a 82 1b 20 20 20 20 20 20 20 20 4d 4f |e".... MO| 00001a00 56 20 20 20 20 20 72 30 2c 23 31 31 32 0d 0a 8c |V r0,#112...| 00001a10 1a 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 |. MOV | 00001a20 20 72 31 2c 72 31 31 0d 0a 96 1e 20 20 20 20 20 | r1,r11.... | 00001a30 20 20 20 53 57 49 20 20 20 20 20 22 58 4f 53 5f | SWI "XOS_| 00001a40 42 79 74 65 22 0d 0a a0 1e 20 20 20 20 20 20 20 |Byte".... | 00001a50 20 52 53 42 20 20 20 20 20 72 31 31 2c 72 31 31 | RSB r11,r11| 00001a60 2c 23 33 0d 0a aa 1b 20 20 20 20 20 20 20 20 4d |,#3.... M| 00001a70 4f 56 20 20 20 20 20 72 30 2c 23 31 31 33 0d 0a |OV r0,#113..| 00001a80 b4 1a 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 |.. MOV | 00001a90 20 20 72 31 2c 72 31 31 0d 0a be 1e 20 20 20 20 | r1,r11.... | 00001aa0 20 20 20 20 53 57 49 20 20 20 20 20 22 58 4f 53 | SWI "XOS| 00001ab0 5f 42 79 74 65 22 0d 0a c8 1c 20 20 20 20 20 20 |_Byte".... | 00001ac0 20 20 41 44 52 20 20 20 20 20 72 30 2c 76 64 75 | ADR r0,vdu| 00001ad0 5f 69 0d 0a d2 1c 20 20 20 20 20 20 20 20 41 44 |_i.... AD| 00001ae0 52 20 20 20 20 20 72 31 2c 76 64 75 5f 6f 0d 0a |R r1,vdu_o..| 00001af0 dc 2a 20 20 20 20 20 20 20 20 53 57 49 20 20 20 |.* SWI | 00001b00 20 20 22 58 4f 53 5f 52 65 61 64 56 64 75 56 61 | "XOS_ReadVduVa| 00001b10 72 69 61 62 6c 65 73 22 0d 0a e6 24 20 20 20 20 |riables"...$ | 00001b20 20 20 20 20 4c 44 4d 46 44 20 20 20 28 73 70 29 | LDMFD (sp)| 00001b30 21 2c 7b 72 30 2d 72 32 2c 70 63 7d 0d 0a f0 04 |!,{r0-r2,pc}....| 00001b40 0d 0a fa 17 2e 76 64 75 5f 69 20 20 45 51 55 44 |.....vdu_i EQUD| 00001b50 20 20 20 20 31 34 38 0d 0b 04 16 20 20 20 20 20 | 148.... | 00001b60 20 20 20 45 51 55 44 20 20 20 20 2d 31 0d 0b 0e | EQUD -1...| 00001b70 15 2e 76 64 75 5f 6f 20 20 45 51 55 44 20 20 20 |..vdu_o EQUD | 00001b80 20 30 0d 0b 18 15 20 20 20 20 20 20 20 20 45 51 | 0.... EQ| 00001b90 55 44 20 20 20 20 30 0d 0b 22 04 0d 0b 2c 0f 2e |UD 0.."...,..| 00001ba0 73 65 74 5f 62 6f 72 64 65 72 0d 0b 36 26 20 20 |set_border..6& | 00001bb0 20 20 20 20 20 20 53 54 4d 46 44 20 20 20 28 73 | STMFD (s| 00001bc0 70 29 21 2c 7b 72 30 2d 72 32 2c 6c 69 6e 6b 7d |p)!,{r0-r2,link}| 00001bd0 0d 0b 40 21 20 20 20 20 20 20 20 20 53 57 49 20 |..@! SWI | 00001be0 20 20 20 20 22 58 4f 53 5f 45 6e 74 65 72 4f 53 | "XOS_EnterOS| 00001bf0 22 0d 0b 4a 19 20 20 20 20 20 20 20 20 4d 4f 56 |"..J. MOV| 00001c00 20 20 20 20 20 72 32 2c 70 63 0d 0b 54 1c 20 20 | r2,pc..T. | 00001c10 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 31 | MOV r1| 00001c20 2c 23 56 49 44 43 0d 0b 5e 1f 20 20 20 20 20 20 |,#VIDC..^. | 00001c30 20 20 84 52 20 20 20 20 20 72 30 2c 72 30 2c 23 | .R r0,r0,#| 00001c40 31 3c 3c 33 30 0d 0b 68 1b 20 20 20 20 20 20 20 |1<<30..h. | 00001c50 20 53 54 52 20 20 20 20 20 72 30 2c 5b 72 31 5d | STR r0,[r1]| 00001c60 0d 0b 72 19 20 20 20 20 20 20 20 20 54 45 51 50 |..r. TEQP| 00001c70 20 20 20 20 72 32 2c 23 33 0d 0b 7c 19 20 20 20 | r2,#3..|. | 00001c80 20 20 20 20 20 4d 4f 56 4e 56 20 20 20 72 30 2c | MOVNV r0,| 00001c90 72 30 0d 0b 86 24 20 20 20 20 20 20 20 20 4c 44 |r0...$ LD| 00001ca0 4d 46 44 20 20 20 28 73 70 29 21 2c 7b 72 30 2d |MFD (sp)!,{r0-| 00001cb0 72 32 2c 70 63 7d 0d 0b 90 05 5d 0d 0b 9a 19 72 |r2,pc}....]....r| 00001cc0 6f 75 74 69 6e 65 3d a4 61 6c 6c 6f 63 28 31 32 |outine=.alloc(12| 00001cd0 38 2c 30 29 0d 0b a4 21 62 61 6e 6b 73 3d a4 61 |8,0)...!banks=.a| 00001ce0 6c 6c 6f 63 28 34 2a 73 63 72 65 65 6e 5f 73 69 |lloc(4*screen_si| 00001cf0 7a 65 2c 30 29 0d 0b ae 0b ed 20 70 61 73 73 25 |ze,0)..... pass%| 00001d00 0d 0b b8 05 e1 0d 0b c2 05 3a 0d 0b cc 19 dd 20 |.........:..... | 00001d10 a4 61 6c 6c 6f 63 28 73 69 7a 65 2c 61 6c 69 67 |.alloc(size,alig| 00001d20 6e 25 29 0d 0b d6 16 c8 95 20 50 25 20 83 20 31 |n%)...... P% . 1| 00001d30 36 3c 3e 61 6c 69 67 6e 25 0d 0b e0 0a 20 50 25 |6<>align%.... P%| 00001d40 2b 3d 34 0d 0b ea 05 ce 0d 0b f4 0c 50 25 2b 3d |+=4.........P%+=| 00001d50 73 69 7a 65 0d 0b fe 0c 3d 50 25 2d 73 69 7a 65 |size....=P%-size| 00001d60 0d 0c 08 05 3a 0d 0c 12 1a dd 20 a4 6c 6f 67 32 |....:..... .log2| 00001d70 28 61 25 29 3d ab 28 61 25 29 2f ab 28 32 29 0d |(a%)=.(a%)/.(2).| 00001d80 ff |.| 00001d81