Home » Archimedes archive » Zipped Apps » 6502em » !6502Em/src/HWScroll
!6502Em/src/HWScroll
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 » Zipped Apps » 6502em |
Filename: | !6502Em/src/HWScroll |
Read OK: | ✔ |
File size: | 71D5 bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10REM > HWScroll 20 30DEFFNhardwarescroll 40LOCAL l%,pass% 50pass%=p 60[OPT pass% 70.rloffsetmod4is0 80 ; We are moving from word boundary to word boundary. 90 ; First, align source to a word 100 TST R0,#1 110 LDRNEB R2,[R0],#1 120 STRNEB R2,[R1],#1 130 SUBNE R12,R12,#1 140 TST R0,#2 150 LDRNEB R2,[R0],#1 160 STRNEB R2,[R1],#1 170 LDRNEB R2,[R0],#1 180 STRNEB R2,[R1],#1 190 SUBNE R12,R12,#2 200 ; Move line left. 210 BIC R2,R12,#31 220 RSBS R2,R2,#160 230 ADDGE PC,PC,R2,LSR#2 ;(32>>2=8) 240 B error 250 LDMIA R0!,{R2-R9} ;1 260 STMIA R1!,{R2-R9} 270 LDMIA R0!,{R2-R9} ;2 280 STMIA R1!,{R2-R9} 290 LDMIA R0!,{R2-R9} ;3 300 STMIA R1!,{R2-R9} 310 LDMIA R0!,{R2-R9} ;4 320 STMIA R1!,{R2-R9} 330 LDMIA R0!,{R2-R9} ;5 340 STMIA R1!,{R2-R9} 350 TST R12,#16 360 LDMNEIA R0!,{R2-R5} 370 STMNEIA R1!,{R2-R5} 380 TST R12,#8 390 LDMNEIA R0!,{R2-R3} 400 STMNEIA R1!,{R2-R3} 410 TST R12,#4 420 LDRNE R2,[R0],#4 430 STRNE R2,[R1],#4 440 TST R12,#2 450 LDRNEB R2,[R0],#1 460 STRNEB R2,[R1],#1 470 LDRNEB R2,[R0],#1 480 STRNEB R2,[R1],#1 490 TST R12,#1 500 LDRNEB R2,[R0],#1 510 STRNEB R2,[R1],#1 520 MOVS PC,R14 530 540.rloffsetmod4is1 550 ; First, align source to 1 before a word 560 AND R2,R0,#3 570 CMP R2,#3 ;if off by 0, move 3. 580 LDRLTB R3,[R0],#1 ;if off by 1, move 2. 590 STRLTB R3,[R1],#1 ;if off by 2, move 1. 600 SUBLT R12,R12,#1 ;if off by 3, move 0. 610 CMP R2,#2 620 LDRLTB R3,[R0],#1 630 STRLTB R3,[R1],#1 640 SUBLT R12,R12,#1 650 CMP R2,#1 660 LDRLTB R3,[R0],#1 670 STRLTB R3,[R1],#1 680 SUBLT R12,R12,#1 690 700 ; Load 1 to make us aligned... 710 LDRB R10,[R0],#1 720 MOV R10,R10,ASL#24 730 740 ; Move line left. 750 ; Source now aligned... 760 BIC R3,R12,#31 770 RSBS R3,R3,#160 780 ADD R3,R3,R3,LSL#3 790 ADDGE PC,PC,R3,LSR#2 ;(32>>2=8) 800 B error 810]:FOR l%=0 TO 4:[OPT pass% 820 MOV R2,R10,LSR#24 830 LDMIA R0!,{R3-R10} 840 ORR R2,R2,R3,ASL#8 850 MOV R3,R3,LSR#24 860 ORR R3,R3,R4,ASL#8 870 MOV R4,R4,LSR#24 880 ORR R4,R4,R5,ASL#8 890 MOV R5,R5,LSR#24 900 ORR R5,R5,R6,ASL#8 910 MOV R6,R6,LSR#24 920 ORR R6,R6,R7,ASL#8 930 MOV R7,R7,LSR#24 940 ORR R7,R7,R8,ASL#8 950 MOV R8,R8,LSR#24 960 ORR R8,R8,R9,ASL#8 970 MOV R9,R9,LSR#24 980 ORR R9,R9,R10,ASL#8 990 STMIA R1!,{R2-R9} 1000]:NEXT:[OPT pass% 1010 1020 TST R12,#16 1030 MOVNE R6,R10,LSR#24 1040 LDMNEIA R0!,{R7-R10} 1050 ORRNE R6,R6,R7,ASL#8 1060 MOVNE R7,R7,LSR#24 1070 ORRNE R7,R7,R8,ASL#8 1080 MOVNE R8,R8,LSR#24 1090 ORRNE R8,R8,R9,ASL#8 1100 MOVNE R9,R9,LSR#24 1110 ORRNE R9,R9,R10,ASL#8 1120 STMNEIA R1!,{R6-R9} 1130 1140 TST R12,#8 1150 MOVNE R8,R10,LSR#24 1160 LDMNEIA R0!,{R9-R10} 1170 ORRNE R8,R8,R9,ASL#8 1180 MOVNE R9,R9,LSR#24 1190 ORRNE R9,R9,R10,ASL#8 1200 STMNEIA R1!,{R8-R9} 1210 1220 TST R12,#4 1230 MOVNE R9,R10,LSR#24 1240 LDRNE R10,[R0],#4 1250 ORRNE R9,R9,R10,ASL#8 1260 STRNE R9,[R1],#4 1270 1280 MOV R9,R10,LSR#24 1290 1300 TST R12,#2 1310 STRNEB R9,[R1],#1 1320 LDRNEB R9,[R0],#1 1330 STRNEB R9,[R1],#1 1340 LDRNEB R9,[R0],#1 1350 1360 TST R12,#1 1370 STRNEB R9,[R1],#1 1380 MOVS PC,R14 1390 1400.rloffsetmod4is2 1410 ; First, align source to 2 before a word 1420 AND R2,R0,#3 1430 CMP R2,#3 ;if off by 0, move 2. 1440 LDREQB R3,[R0],#1 ;if off by 1, move 1. 1450 STREQB R3,[R1],#1 ;if off by 2, move 0. 1460 SUBEQ R12,R12,#1 ;if off by 3, move 3. 1470 CMP R2,#2 1480 LDRNEB R3,[R0],#1 1490 STRNEB R3,[R1],#1 1500 SUBNE R12,R12,#1 1510 CMP R2,#0 1520 CMPNE R2,#3 1530 LDREQB R3,[R0],#1 1540 STREQB R3,[R1],#1 1550 SUBEQ R12,R12,#1 1560 1570 ; Load 2 to make us aligned... 1580 LDRB R10,[R0],#1 1590 LDRB R9,[R0],#1 1600 ORR R10,R10,R9,ASL#8 1610 MOV R10,R10,ASL#16 1620 1630 ; Move line left. 1640 ; Source now aligned... 1650 BIC R3,R12,#31 1660 RSBS R3,R3,#160 1670 ADD R3,R3,R3,ASL#3 1680 ADDGE PC,PC,R3,LSR#2 ;(32>>2=8) 1690 B error 1700]:FOR l%=0 TO 4:[OPT pass% 1710 MOV R2,R10,LSR#16 1720 LDMIA R0!,{R3-R10} 1730 ORR R2,R2,R3,ASL#16 1740 MOV R3,R3,LSR#16 1750 ORR R3,R3,R4,ASL#16 1760 MOV R4,R4,LSR#16 1770 ORR R4,R4,R5,ASL#16 1780 MOV R5,R5,LSR#16 1790 ORR R5,R5,R6,ASL#16 1800 MOV R6,R6,LSR#16 1810 ORR R6,R6,R7,ASL#16 1820 MOV R7,R7,LSR#16 1830 ORR R7,R7,R8,ASL#16 1840 MOV R8,R8,LSR#16 1850 ORR R8,R8,R9,ASL#16 1860 MOV R9,R9,LSR#16 1870 ORR R9,R9,R10,ASL#16 1880 STMIA R1!,{R2-R9} 1890]:NEXT:[OPT pass% 1900 TST R12,#16 1910 MOVNE R6,R10,LSR#16 1920 LDMNEIA R0!,{R7-R10} 1930 ORRNE R6,R6,R7,ASL#16 1940 MOVNE R7,R7,LSR#16 1950 ORRNE R7,R7,R8,ASL#16 1960 MOVNE R8,R8,LSR#16 1970 ORRNE R8,R8,R9,ASL#16 1980 MOVNE R9,R9,LSR#16 1990 ORRNE R9,R9,R10,ASL#16 2000 STMNEIA R1!,{R6-R9} 2010 2020 TST R12,#8 2030 MOVNE R8,R10,LSR#16 2040 LDMNEIA R0!,{R9-R10} 2050 ORRNE R8,R8,R9,ASL#16 2060 MOVNE R9,R9,LSR#16 2070 ORRNE R9,R9,R10,ASL#16 2080 STMNEIA R1!,{R8-R9} 2090 2100 TST R12,#4 2110 MOVNE R9,R10,LSR#16 2120 LDRNE R10,[R0],#4 2130 ORRNE R9,R9,R10,ASL#16 2140 STRNE R9,[R1],#4 2150 2160 MOV R9,R10,LSR#16 2170 2180 TST R12,#2 2190 STRNEB R9,[R1],#1 2200 MOVNE R9,R9,LSR#8 2210 STRNEB R9,[R1],#1 2220 TSTNE R12,#1 2230 LDRNEB R9,[R0],#1 2240 2250 TST R12,#1 2260 STRNEB R9,[R1],#1 2270 MOVS PC,R14 2280 2290.rloffsetmod4is3 2300 ; First, align source to 3 before a word 2310 AND R2,R0,#3 2320 CMP R2,#2 ;if off by 0, move 1. 2330 LDREQB R3,[R0],#1 ;if off by 1, move 0. 2340 STREQB R3,[R1],#1 ;if off by 2, move 3. 2350 SUBEQ R12,R12,#1 ;if off by 3, move 2. 2360 LDRGEB R3,[R0],#1 2370 STRGEB R3,[R1],#1 2380 SUBGE R12,R12,#1 2390 CMP R2,#1 2400 LDRNEB R3,[R0],#1 2410 STRNEB R3,[R1],#1 2420 SUBNE R12,R12,#1 2430 2440 ; Load 1 to make us aligned... 2450 LDRB R10,[R0],#1 2460 LDRB R9,[R0],#1 2470 ORR R10,R10,R9,ASL#8 2480 LDRB R9,[R0],#1 2490 ORR R10,R10,R9,ASL#16 2500 MOV R10,R10,ASL#8 2510 2520 ; Move line left. 2530 ; Source now aligned... 2540 BIC R3,R12,#31 2550 RSBS R3,R3,#160 2560 ADD R3,R3,R3,LSL#3 2570 ADDGE PC,PC,R3,LSR#2 ;(32>>2=8) 2580 B error 2590]:FOR l%=0 TO 4:[OPT pass% 2600 MOV R2,R10,LSR#8 2610 LDMIA R0!,{R3-R10} 2620 ORR R2,R2,R3,ASL#24 2630 MOV R3,R3,LSR#8 2640 ORR R3,R3,R4,ASL#24 2650 MOV R4,R4,LSR#8 2660 ORR R4,R4,R5,ASL#24 2670 MOV R5,R5,LSR#8 2680 ORR R5,R5,R6,ASL#24 2690 MOV R6,R6,LSR#8 2700 ORR R6,R6,R7,ASL#24 2710 MOV R7,R7,LSR#8 2720 ORR R7,R7,R8,ASL#24 2730 MOV R8,R8,LSR#8 2740 ORR R8,R8,R9,ASL#24 2750 MOV R9,R9,LSR#8 2760 ORR R9,R9,R10,ASL#24 2770 STMIA R1!,{R2-R9} 2780]:NEXT:[OPT pass% 2790 2800 TST R12,#16 2810 MOVNE R6,R10,LSR#8 2820 LDMNEIA R0!,{R7-R10} 2830 ORRNE R6,R6,R7,ASL#24 2840 MOVNE R7,R7,LSR#8 2850 ORRNE R7,R7,R8,ASL#24 2860 MOVNE R8,R8,LSR#8 2870 ORRNE R8,R8,R9,ASL#24 2880 MOVNE R9,R9,LSR#8 2890 ORRNE R9,R9,R10,ASL#24 2900 STMNEIA R1!,{R6-R9} 2910 2920 TST R12,#8 2930 MOVNE R8,R10,LSR#8 2940 LDMNEIA R0!,{R9-R10} 2950 ORRNE R8,R8,R9,ASL#24 2960 MOVNE R9,R9,LSR#8 2970 ORRNE R9,R9,R10,ASL#24 2980 STMNEIA R1!,{R8-R9} 2990 3000 TST R12,#4 3010 MOVNE R9,R10,LSR#8 3020 LDRNE R10,[R0],#4 3030 ORRNE R9,R9,R10,ASL#24 3040 STRNE R9,[R1],#4 3050 3060 MOV R9,R10,LSR#8 3070 3080 TST R12,#2 3090 STRNEB R9,[R1],#1 3100 MOVNE R9,R9,LSR#8 3110 STRNEB R9,[R1],#1 3120 MOVNE R9,R9,LSR#8 3130 3140 TST R12,#1 3150 STRNEB R9,[R1],#1 3160.error 3170 MOVS PC,R14 3180 3190.lroffsetmod4is0 3200 ; We are moving from word boundary to word boundary. 3210 ADD R0,R0,R12 3220 ADD R1,R1,R12 3230 ; First, align source to a word 3240 TST R0,#1 3250 LDRNEB R2,[R0,#-1]! 3260 STRNEB R2,[R1,#-1]! 3270 SUBNE R12,R12,#1 3280 TST R0,#2 3290 LDRNEB R2,[R0,#-1]! 3300 STRNEB R2,[R1,#-1]! 3310 LDRNEB R2,[R0,#-1]! 3320 STRNEB R2,[R1,#-1]! 3330 SUBNE R12,R12,#2 3340 ; Move line right. 3350 BIC R2,R12,#31 3360 RSBS R2,R2,#320 3370 ADDGE PC,PC,R2,LSR#2 ;(32>>2=8) 3380 B error 3390 LDMDB R0!,{R2-R9} ;1 3400 STMDB R1!,{R2-R9} 3410 LDMDB R0!,{R2-R9} ;2 3420 STMDB R1!,{R2-R9} 3430 LDMDB R0!,{R2-R9} ;3 3440 STMDB R1!,{R2-R9} 3450 LDMDB R0!,{R2-R9} ;4 3460 STMDB R1!,{R2-R9} 3470 LDMDB R0!,{R2-R9} ;5 3480 STMDB R1!,{R2-R9} 3490 LDMDB R0!,{R2-R9} ;1 3500 STMDB R1!,{R2-R9} 3510 LDMDB R0!,{R2-R9} ;2 3520 STMDB R1!,{R2-R9} 3530 LDMDB R0!,{R2-R9} ;3 3540 STMDB R1!,{R2-R9} 3550 LDMDB R0!,{R2-R9} ;4 3560 STMDB R1!,{R2-R9} 3570 LDMDB R0!,{R2-R9} ;5 3580 STMDB R1!,{R2-R9} 3590 TST R12,#16 3600 LDMNEDB R0!,{R2-R5} 3610 STMNEDB R1!,{R2-R5} 3620 TST R12,#8 3630 LDMNEDB R0!,{R2-R3} 3640 STMNEDB R1!,{R2-R3} 3650 TST R12,#4 3660 LDRNE R2,[R0,#-4]! 3670 STRNE R2,[R1,#-4]! 3680 TST R12,#2 3690 LDRNEB R2,[R0,#-1]! 3700 STRNEB R2,[R1,#-1]! 3710 LDRNEB R2,[R0,#-1]! 3720 STRNEB R2,[R1,#-1]! 3730 TST R12,#1 3740 LDRNEB R2,[R0,#-1]! 3750 STRNEB R2,[R1,#-1]! 3760 MOVS PC,R14 3770 3780.lroffsetmod4is3 3790 ADD R0,R0,R12 3800 ADD R1,R1,R12 3810 ; First, align source to 1 before a word 3820 AND R2,R0,#3 3830 CMP R2,#0 ;if off by 0, move 3. 3840 LDREQB R3,[R0,#-1]! ;if off by 1, move 0. 3850 STREQB R3,[R1,#-1]! ;if off by 2, move 1. 3860 SUBEQ R12,R12,#1 ;if off by 3, move 2. 3870 CMP R2,#1 3880 LDRNEB R3,[R0,#-1]! 3890 STRNEB R3,[R1,#-1]! 3900 SUBNE R12,R12,#1 3910 CMP R2,#0 3920 CMPNE R2,#3 3930 LDREQB R3,[R0,#-1]! 3940 STREQB R3,[R1,#-1]! 3950 SUBEQ R12,R12,#1 3960 3970 ; Load 1 to make us aligned... 3980 LDRB R2,[R0,#-1]! 3990 4000 ; Move line right. 4010 ; Source now aligned... 4020 BIC R3,R12,#31 4030 RSBS R3,R3,#320 4040 ADD R3,R3,R3,LSL#3 4050 ADDGE PC,PC,R3,LSR#2 ;(32>>2=8) 4060 B error 4070]:FOR l%=0 TO 9:[OPT pass% 4080 MOV R10,R2,LSL#24 4090 LDMDB R0!,{R2-R9} 4100 ORR R10,R10,R9,LSR#8 4110 MOV R9,R9,LSL#24 4120 ORR R9,R9,R8,LSR#8 4130 MOV R8,R8,LSL#24 4140 ORR R8,R8,R7,LSR#8 4150 MOV R7,R7,LSL#24 4160 ORR R7,R7,R6,LSR#8 4170 MOV R6,R6,LSL#24 4180 ORR R6,R6,R5,LSR#8 4190 MOV R5,R5,LSL#24 4200 ORR R5,R5,R4,LSR#8 4210 MOV R4,R4,LSL#24 4220 ORR R4,R4,R3,LSR#8 4230 MOV R3,R3,LSL#24 4240 ORR R3,R3,R2,LSR#8 4250 STMDB R1!,{R3-R10} 4260]:NEXT:[OPT pass% 4270 4280 TST R12,#16 4290 MOVNE R6,R2,LSL#24 4300 LDMNEDB R0!,{R2-R5} 4310 ORRNE R6,R6,R5,LSR#8 4320 MOVNE R5,R5,LSL#24 4330 ORRNE R5,R5,R4,LSR#8 4340 MOVNE R4,R4,LSL#24 4350 ORRNE R4,R4,R3,LSR#8 4360 MOVNE R3,R3,LSL#24 4370 ORRNE R3,R3,R2,LSR#8 4380 STMNEDB R1!,{R3-R6} 4390 4400 TST R12,#8 4410 MOVNE R4,R2,LSL#24 4420 LDMNEDB R0!,{R2-R3} 4430 ORRNE R4,R4,R3,LSR#8 4440 MOVNE R3,R3,LSL#24 4450 ORRNE R3,R3,R2,LSR#8 4460 STMNEDB R1!,{R3-R4} 4470 4480 TST R12,#4 4490 MOVNE R3,R2,LSL#24 4500 LDRNE R2,[R0,#-4]! 4510 ORRNE R3,R3,R2,LSR#8 4520 STRNE R3,[R1,#-4]! 4530 4540 TST R12,#2 4550 STRNEB R2,[R1,#-1]! 4560 LDRNEB R2,[R0,#-1]! 4570 STRNEB R2,[R1,#-1]! 4580 4590 TST R12,#1 4600 ;LDRNEB R2,[R0,#-1]! 4610 STRNEB R2,[R1,#-1]! 4620 MOVS PC,R14 4630 4640.lroffsetmod4is2 4650 ADD R0,R0,R12 4660 ADD R1,R1,R12 4670 ; First, align source to 2 before a word 4680 AND R2,R0,#3 4690 CMP R2,#2 ;if off by 0, move 2. 4700 LDRNEB R3,[R0,#-1]! ;if off by 1, move 3. 4710 STRNEB R3,[R1,#-1]! ;if off by 2, move 0. 4720 SUBNE R12,R12,#1 ;if off by 3, move 1. 4730 LDRLTB R3,[R0,#-1]! 4740 STRLTB R3,[R1,#-1]! 4750 SUBLT R12,R12,#1 4760 CMP R2,#1 4770 LDREQB R3,[R0,#-1]! 4780 STREQB R3,[R1,#-1]! 4790 SUBEQ R12,R12,#1 4800 4810 ; Load 2 to make us aligned... 4820 LDRB R10,[R0,#-1]! 4830 LDRB R9,[R0,#-1]! 4840 ORR R2,R9,R10,ASL#8 4850 4860 ; Move line left. 4870 ; Source now aligned... 4880 BIC R3,R12,#31 4890 RSBS R3,R3,#320 4900 ADD R3,R3,R3,LSL#3 4910 ADDGE PC,PC,R3,LSR#2 ;(32>>2=8) 4920 B error 4930]:FOR l%=0 TO 9:[OPT pass% 4940 MOV R10,R2,LSL#16 4950 LDMDB R0!,{R2-R9} 4960 ORR R10,R10,R9,LSR#16 4970 MOV R9,R9,LSL#16 4980 ORR R9,R9,R8,LSR#16 4990 MOV R8,R8,LSL#16 5000 ORR R8,R8,R7,LSR#16 5010 MOV R7,R7,LSL#16 5020 ORR R7,R7,R6,LSR#16 5030 MOV R6,R6,LSL#16 5040 ORR R6,R6,R5,LSR#16 5050 MOV R5,R5,LSL#16 5060 ORR R5,R5,R4,LSR#16 5070 MOV R4,R4,LSL#16 5080 ORR R4,R4,R3,LSR#16 5090 MOV R3,R3,LSL#16 5100 ORR R3,R3,R2,LSR#16 5110 STMDB R1!,{R3-R10} 5120]:NEXT:[OPT pass% 5130 5140 TST R12,#16 5150 MOVNE R6,R2,LSL#16 5160 LDMNEDB R0!,{R2-R5} 5170 ORRNE R6,R6,R5,LSR#16 5180 MOVNE R5,R5,LSL#16 5190 ORRNE R5,R5,R4,LSR#16 5200 MOVNE R4,R4,LSL#16 5210 ORRNE R4,R4,R3,LSR#16 5220 MOVNE R3,R3,LSL#16 5230 ORRNE R3,R3,R2,LSR#16 5240 STMNEDB R1!,{R3-R6} 5250 5260 TST R12,#8 5270 MOVNE R4,R2,ASL#16 5280 LDMNEDB R0!,{R2-R3} 5290 ORRNE R4,R4,R3,LSR#16 5300 MOVNE R3,R3,ASL#16 5310 ORRNE R3,R3,R2,LSR#16 5320 STMNEDB R1!,{R3-R4} 5330 5340 TST R12,#4 5350 MOVNE R3,R2,ASL#16 5360 LDRNE R2,[R0,#-4]! 5370 ORRNE R3,R3,R2,LSR#16 5380 STRNE R3,[R1,#-4]! 5390 5400 MOV R2,R2,ROR#8 5410 TST R12,#2 5420 STRNEB R2,[R1,#-1]! 5430 MOVNE R2,R2,ROR#24 5440 STRNEB R2,[R1,#-1]! 5450 TSTNE R12,#1 5460 LDRNEB R2,[R0,#-1]! 5470 5480 TST R12,#1 5490 STRNEB R2,[R1,#-1]! 5500 MOVS PC,R14 5510 5520.lroffsetmod4is1 5530 ADD R0,R0,R12 5540 ADD R1,R1,R12 5550 ; First, align source to 3 after a word 5560 AND R2,R0,#3 5570 CMP R2,#2 ;if off by 0, move 1. 5580 LDRLEB R3,[R0,#-1]! ;if off by 1, move 2. 5590 STRLEB R3,[R1,#-1]! ;if off by 2, move 3. 5600 SUBLE R12,R12,#1 ;if off by 3, move 0. 5610 LDREQB R3,[R0,#-1]! 5620 STREQB R3,[R1,#-1]! 5630 SUBEQ R12,R12,#1 5640 CMPNE R2,#1 5650 LDREQB R3,[R0,#-1]! 5660 STREQB R3,[R1,#-1]! 5670 SUBEQ R12,R12,#1 5680 5690 ; Load 1 to make us aligned... 5700 LDRB R10,[R0,#-1]! 5710 LDRB R9,[R0,#-1]! 5720 ORR R10,R9,R10,ASL#8 5730 LDRB R9,[R0,#-1]! 5740 ORR R2,R9,R10,ASL#8 5750 5760 ; Move line right. 5770 ; Source now aligned... 5780 BIC R3,R12,#31 5790 RSBS R3,R3,#320 5800 ADD R3,R3,R3,LSL#3 5810 ADDGE PC,PC,R3,LSR#2 ;(32>>2=8) 5820 B error 5830]:FOR l%=0 TO 9:[OPT pass% 5840 MOV R10,R2,ASL#8 5850 LDMDB R0!,{R2-R9} 5860 ORR R10,R10,R9,LSR#24 5870 MOV R9,R9,ASL#8 5880 ORR R9,R9,R8,LSR#24 5890 MOV R8,R8,ASL#8 5900 ORR R8,R8,R7,LSR#24 5910 MOV R7,R7,ASL#8 5920 ORR R7,R7,R6,LSR#24 5930 MOV R6,R6,ASL#8 5940 ORR R6,R6,R5,LSR#24 5950 MOV R5,R5,ASL#8 5960 ORR R5,R5,R4,LSR#24 5970 MOV R4,R4,ASL#8 5980 ORR R4,R4,R3,LSR#24 5990 MOV R3,R3,ASL#8 6000 ORR R3,R3,R2,LSR#24 6010 STMDB R1!,{R3-R10} 6020]:NEXT:[OPT pass% 6030 6040 TST R12,#16 6050 MOVNE R6,R2,ASL#8 6060 LDMNEDB R0!,{R2-R5} 6070 ORRNE R6,R6,R5,LSR#24 6080 MOVNE R5,R5,ASL#8 6090 ORRNE R5,R5,R4,LSR#24 6100 MOVNE R4,R4,ASL#8 6110 ORRNE R4,R4,R3,LSR#24 6120 MOVNE R3,R3,ASL#8 6130 ORRNE R3,R3,R2,LSR#24 6140 STMNEDB R1!,{R3-R6} 6150 6160 TST R12,#8 6170 MOVNE R4,R2,ASL#8 6180 LDMNEDB R0!,{R2-R3} 6190 ORRNE R4,R4,R3,LSR#24 6200 MOVNE R3,R3,ASL#8 6210 ORRNE R3,R3,R2,LSR#24 6220 STMNEDB R1!,{R3-R4} 6230 6240 TST R12,#4 6250 MOVNE R3,R2,ASL#8 6260 LDRNE R2,[R0,#-4]! 6270 ORRNE R3,R3,R2,LSR#24 6280 STRNE R3,[R1,#-4]! 6290 6300 MOV R2,R2,ROR#16 6310 6320 TST R12,#2 6330 STRNEB R2,[R1,#-1]! 6340 MOVNE R2,R2,ROR#24 6350 STRNEB R2,[R1,#-1]! 6360 MOVNE R2,R2,ROR#24 6370 6380 TST R12,#1 6390 STRNEB R2,[R1,#-1]! 6400.error 6410 MOVS PC,R14 6420.small_copy 6430 MOVS PC,R14 6440.move_nw 6450 ; On entry R0=src, R1=dest, R11 = height, R12=width 6460 ; R4=linelength 6470 STMFD R13!,{R0-R12,R14} 6480 LDR R2,[mem,#arc_screenstart] 6490 ADD R0,R0,R2 6500 ADD R1,R1,R2 6510 6520 MOV R2,R4 6530 SUB R3,R1,R0 6540 AND R3,R3,#3 6550.move_nw_loop1 6560 STMFD R13!,{R0-R3,R12} 6570 ADD PC,PC,R3,LSL#3 6580 EQUD 0 6590 BL rloffsetmod4is0 6600 B move_nw_skip 6610 BL rloffsetmod4is1 6620 B move_nw_skip 6630 BL rloffsetmod4is2 6640 B move_nw_skip 6650 BL rloffsetmod4is3 6660.move_nw_skip 6670 LDMFD R13!,{R0-R3,R12} 6680 ADD R0,R0,R2 6690 ADD R1,R1,R2 6700 SUBS R11,R11,#1 6710 BGT move_nw_loop1 6720 LDMFD R13!,{R0-R12,PC}^ 6730.move_ne 6740 ; On entry R0=src, R1=dest, R11 = height, R12=width 6750 STMFD R13!,{R0-R12,R14} 6760 LDR R2,[mem,#arc_screenstart] 6770 ADD R0,R0,R2 6780 ADD R1,R1,R2 6790 6800 MOV R2,R4 6810 SUBS R3,R1,R0 6820 AND R3,R3,#3 6830.move_ne_loop1 6840 STMFD R13!,{R0-R3,R12} 6850 ADD PC,PC,R3,LSL#3 6860 EQUD 0 6870 BL lroffsetmod4is0 6880 B move_ne_skip 6890 BL lroffsetmod4is1 6900 B move_ne_skip 6910 BL lroffsetmod4is2 6920 B move_ne_skip 6930 BL lroffsetmod4is3 6940.move_ne_skip 6950 LDMFD R13!,{R0-R3,R12} 6960 ADD R0,R0,R2 6970 ADD R1,R1,R2 6980 SUBS R11,R11,#1 6990 BGT move_ne_loop1 7000.move_ne_end 7010 LDMFD R13!,{R0-R12,PC}^ 7020.move_sw 7030 ; On entry R0=src, R1=dest, R11 = height, R12=width 7040 STMFD R13!,{R0-R12,R14} 7050 LDR R3,[mem,#arc_screenstart] 7060 MOV R2,R4 7070 7080 MLA R3,R2,R11,R3 ; Offset to the bottom 7090 SUB R3,R3,R2 7100 ADD R0,R0,R3 7110 ADD R1,R1,R3 7120 7130 SUB R3,R1,R0 7140 AND R3,R3,#3 7150.move_sw_loop1 7160 STMFD R13!,{R0-R3,R12} 7170 ADD PC,PC,R3,LSL#3 7180 EQUD 0 7190 BL rloffsetmod4is0 7200 B move_sw_skip 7210 BL rloffsetmod4is1 7220 B move_sw_skip 7230 BL rloffsetmod4is2 7240 B move_sw_skip 7250 BL rloffsetmod4is3 7260.move_sw_skip 7270 LDMFD R13!,{R0-R3,R12} 7280 SUB R0,R0,R2 7290 SUB R1,R1,R2 7300 SUBS R11,R11,#1 7310 BGT move_sw_loop1 7320 LDMFD R13!,{R0-R12,PC}^ 7330.move_se 7340 ; On entry R0=src, R1=dest, R11 = height, R12=width 7350 STMFD R13!,{R0-R12,R14} 7360 LDR R3,[mem,#arc_screenstart] 7370 7380 MOV R2,R4 7390 7400 MLA R3,R2,R11,R3 ; Offset to the bottom 7410 SUB R3,R3,R2 7420 ADD R0,R0,R3 7430 ADD R1,R1,R3 7440 7450 SUB R3,R1,R0 7460 AND R3,R3,#3 7470.move_se_loop1 7480 STMFD R13!,{R0-R3,R12} 7490 ADD PC,PC,R3,LSL#3 7500 EQUD 0 7510 BL lroffsetmod4is0 7520 B move_se_skip 7530 BL lroffsetmod4is1 7540 B move_se_skip 7550 BL lroffsetmod4is2 7560 B move_se_skip 7570 BL lroffsetmod4is3 7580.move_se_skip 7590 LDMFD R13!,{R0-R3,R12} 7600 SUB R0,R0,R2 7610 SUB R1,R1,R2 7620 SUBS R11,R11,#1 7630 BGT move_se_loop1 7640 LDMFD R13!,{R0-R12,PC}^ 7650] 7660=pass% 7670: 7680DEFFNdohardwarescroll 7690[OPT p 7700 ADR R13,hardware_scroll_stack_space_top-4 7710 STMFD R13!,{R0-R12,R14} 7720 ; CHECK IF MODE CHANGED???? 7730 ;LDRB R0,[mem,#lastmode] 7750 ;CMP R0,#7 7760 ;;CMPNE R0,#99 7770 ;SWIEQ &100+ASC"P" 7780 ;BEQ no_scroll_reqd 7781 LDRB R0,[mem,#tamper] 7782 CMP R0,#0 7783 BNE no_scroll_reqd 7790 7800 ; First get where the screen is... 7810 LDRB R1,[mem,#crt_regs+13] 7820 LDRB R0,[mem,#crt_regs+12] 7830 AND R0,R0,#%1111 7840 ADD R1,R1,R0,LSL#8 7850 7860 SUB R2,mem,#512 ; sheila 7870 LDRB R2,[R2,#&20] 7880 MOVS R2,R2,LSR#2 7890 7900 AND R2,R2,#7 7910 ;Test for Mode 4 7920 CMP R2,#%000 7930 CMPNE R2,#%010 7940 MOVEQ R4,#160 ; 40 7950 MOVEQ R5,#4 ; 1 7960 ;Test for Mode 0 7970 CMP R2,#%011 7980 CMPNE R2,#%111 7990 MOVEQ R4,#80 8000 MOVEQ R5,#1 8010 ;Test for Mode 2 8020 CMP R2,#%101 8030 MOVEQ R4,#320 ; 320 8040 MOVEQ R5,#2 ; 4 8050 ;Test for Mode 1 8060 CMP R2,#%100 8070 CMPNE R2,#%110 8080 MOVEQ R4,#80 8090 MOVEQ R5,#1 8100 ;Test for Mode 5 8110 CMP R2,#%001 8120 MOVEQ R4,#160 8130 MOVEQ R5,#4 8140 8150 ; And then where it used to be 8160 LDR R0,[mem,#screenstart_previous] 8170 8180 ; If it hasn't moved then do nothing... 8190 SUBS R0,R1,R0 8200 SWIEQ &100+ASC"K" 8210 BEQ no_scroll_reqd 8220 STR R1,[mem,#screenstart_previous] 8230 8240 LDRB R12,[mem,#crt_regs+1] ; horiz. chars 8250 LDRB R11,[mem,#crt_regs+6] ; vert. chars 8260 MUL R2,R12,R11 8270 ADDLT R0,R2,R0 8280 8290 CMP R0,R2 8300 SWIGE &100+ASC"L" 8310 BGE no_scroll_reqd 8320 8330 CMP R12,#0 8340 CMPNE R11,#0 8350 SWIEQ &100+ASC"M" 8360 BEQ no_scroll_reqd 8370 8380 ; So we have to do some scrolling... 8390 ;R0=R0 MOD R12 8400 ;R2=R0 DIV R12 8410 ;R0 < R12*32 8420 MOV R2,#0 8430 CMP R0,R12,LSL#4 8440 SUBGE R0,R0,R12,LSL#4 8450 ADDGE R2,R2,#1<<4 8460 CMP R0,R12,LSL#3 8470 SUBGE R0,R0,R12,LSL#3 8480 ADDGE R2,R2,#1<<3 8490 CMP R0,R12,LSL#2 8500 SUBGE R0,R0,R12,LSL#2 8510 ADDGE R2,R2,#1<<2 8520 CMP R0,R12,LSL#1 8530 SUBGE R0,R0,R12,LSL#1 8540 ADDGE R2,R2,#1<<1 8550 CMP R0,R12 8560 SUBGE R0,R0,R12 8570 ADDGE R2,R2,#1 8580 8590 ; So now we want to scroll left/right by R0, 8600 ; and up/down by R2 8610 8620 CMP R0,R12,ASR#1 ; HALf of screenful 8630 ADDGE R2,R2,#1 ; which way 8640 CMP R2,R11 8650 SUBGE R2,R2,R11 8660 8670 ; By verification 0<=R0<R12 8680 ;CMP R0,#0 8690 ;SWILT &100+ASC"!" 8700 ;CMP R0,R12 8710 ;SWIGE &100+ASC"!" 8720 ; By verification 0<=R2<R11 8730 ;CMP R2,#0 8740 ;SWILT &100+ASC"!" 8750 ;CMP R2,R11 8760 ;SWIGE &100+ASC"!" 8770 8780 CMP R0,R12,ASR#1 8790 BGE must_scroll_w 8800 ; We are definately moving eastwards 8810 CMP R2,R11,ASR#1 8820 BGT must_scroll_ne 8830.must_scroll_se 8840 ; We are definately moving SE, so call move_nw 8850 ; We need R0=src, R1=dest, R11 = height, R12=width 8860 ; R4 = linelength 8870 ;SWI &100+ASC"S" 8880 ;SWI &100+ASC"E" 8890 ;SWI &100+ASC" " 8900 ;R11=(R11-R2)*8 8910 SUB R11,R11,R2 8920 MOV R11,R11,LSL#3 8930 ;R12=(R12-R0)*rowmult 8940 SUB R12,R12,R0 8950 MUL R12,R5,R12 8960 ;R0=R0*R5+R2*linelen*8 8970 MUL R2,R4,R2 8980 MUL R0,R5,R0 8990 ADD R0,R0,R2,LSL#3 9000 MOV R1,#0 9010 ;MOV R0,#4 9020 ;MOV R11,#256 9030 ;MOV R12,#320-4 9040 ;SWI &100+ASC"!" 9050 BL move_nw 9060 B scroll_done 9070 B no_scroll_reqd 9080.must_scroll_ne 9090 ; We are definately moving NE, so call move_sw 9100 ; We need R0=src, R1=dest, R11 = height, R12=width 9110 ; R4 = linelength 9120 ;SWI &100+ASC"N" 9130 ;SWI &100+ASC"E" 9140 ;SWI &100+ASC" " 9150 ;R1=(R11-R2)*linelen*8 9160 SUB R1,R11,R2 9170 MUL R1,R4,R1 9180 MOV R1,R1,LSL#3 9190 ;R11=R2*8 9200 MOV R11,R2,LSL#3 9210 ;R12=(R12-R0)*rowmult 9220 SUB R12,R12,R0 9230 MUL R12,R5,R12 9240 ;R0=R0*R5 9250 MUL R0,R5,R0 9260 BL move_sw 9270 B scroll_done 9280 B no_scroll_reqd 9290.must_scroll_w 9300 CMP R2,R11,ASR#1 9310 BGT must_scroll_nw 9320.must_scroll_sw 9330 ; We are definately moving SW, so call move_ne 9340 ; We need R0=src, R1=dest, R11 = height, R12=width 9350 ; R4 = linelength 9360 ;SWI &100+ASC"S" 9370 ;SWI &100+ASC"W" 9380 ;SWI &100+ASC" " 9390 ;R1=(R12-R0)*rowmult 9400 SUB R1,R12,R0 9410 MUL R1,R5,R1 9420 ;R11=(R11-R2)*8 9430 SUB R11,R11,R2 9440 MOV R11,R11,LSL#3 9450 ;R12=R0*rowmult 9460 MUL R12,R0,R5 9470 ;R0=R2*linelen*8 9480 MUL R2,R4,R2 9490 MOV R0,R2,LSL#3 9500 BL move_ne 9510 B scroll_done 9520 B no_scroll_reqd 9530.must_scroll_nw 9540 ; We are definately moving NW, so call move_se 9550 ; We need R0=src, R1=dest, R11 = height, R12=width 9560 ; R4 = linelength 9570 ;SWI &100+ASC"N" 9580 ;SWI &100+ASC"W" 9590 ;SWI &100+ASC" " 9600 ADD R0,R0,#1 9610 ;R1=(R11-R2)*linelen*8+(R12-R0)*R5 9620 SUB R1,R11,R2 9630 MUL R1,R5,R1 9640 SUB R12,R12,R0 9650 MUL R12,R5,R12 9660 ADD R1,R12,R1,LSL#3 9670 ;R11=R2*8 9680 MOV R11,R2,LSL#3 9690 ;R12=R0*rowmult 9700 MUL R12,R5,R0 9710 ;R0=0 9720 MOV R0,#0 9730 BL move_se 9740 B scroll_done 9750 B no_scroll_reqd 9760 9770.no_scroll_reqd 9780 ;SWI &100+ASC"O" 9790 LDMFD R13!,{R0-R12,PC}^ 9800.scroll_done 9810 LDMFD R13!,{R0-R12,PC}^ 9820 ;LDR PC,this_is_getting_really_horrible 9830] 9840=p
� > HWScroll ݤhardwarescroll (� l%,pass% 2pass%=p <[OPT pass% F.rloffsetmod4is0 PB ; We are moving from word boundary to word boundary. Z- ; First, align source to a word d TST R0,#1 n LDRNEB R2,[R0],#1 x STRNEB R2,[R1],#1 � SUBNE R12,R12,#1 � TST R0,#2 � LDRNEB R2,[R0],#1 � STRNEB R2,[R1],#1 � LDRNEB R2,[R0],#1 � STRNEB R2,[R1],#1 � SUBNE R12,R12,#2 � ; Move line left. � BIC R2,R12,#31 � RSBS R2,R2,#160 �0 ADDGE PC,PC,R2,LSR#2 ;(32>>2=8) � B error �# LDMIA R0!,{R2-R9} ;1 STMIA R1!,{R2-R9} # LDMIA R0!,{R2-R9} ;2 STMIA R1!,{R2-R9} "# LDMIA R0!,{R2-R9} ;3 , STMIA R1!,{R2-R9} 6# LDMIA R0!,{R2-R9} ;4 @ STMIA R1!,{R2-R9} J# LDMIA R0!,{R2-R9} ;5 T STMIA R1!,{R2-R9} ^ TST R12,#16 h! LDMNEIA R0!,{R2-R5} r! STMNEIA R1!,{R2-R5} | TST R12,#8 �! LDMNEIA R0!,{R2-R3} �! STMNEIA R1!,{R2-R3} � TST R12,#4 � LDRNE R2,[R0],#4 � STRNE R2,[R1],#4 � TST R12,#2 � LDRNEB R2,[R0],#1 � STRNEB R2,[R1],#1 � LDRNEB R2,[R0],#1 � STRNEB R2,[R1],#1 � TST R12,#1 � LDRNEB R2,[R0],#1 � STRNEB R2,[R1],#1 MOVS PC,R14 .rloffsetmod4is1 &6 ; First, align source to 1 before a word 0 � R2,R0,#3 :8 CMP R2,#3 ;if off by 0, move 3. D8 LDRLTB R3,[R0],#1 ;if off by 1, move 2. N8 STRLTB R3,[R1],#1 ;if off by 2, move 1. X8 SUBLT R12,R12,#1 ;if off by 3, move 0. b CMP R2,#2 l LDRLTB R3,[R0],#1 v STRLTB R3,[R1],#1 � SUBLT R12,R12,#1 � CMP R2,#1 � LDRLTB R3,[R0],#1 � STRLTB R3,[R1],#1 � SUBLT R12,R12,#1 � �, ; Load 1 to make us aligned... � LDRB R10,[R0],#1 � MOV R10,R10,ASL#24 � � ; Move line left. �% ; Source now aligned... � BIC R3,R12,#31 RSBS R3,R3,#160 # ADD R3,R3,R3,LSL#3 1 ADDGE PC,PC,R3,LSR#2 ;(32>>2=8) B error *]:� l%=0 � 4:[OPT pass% 4 MOV R2,R10,LSR#24 > LDMIA R0!,{R3-R10} H �R R2,R2,R3,ASL#8 R MOV R3,R3,LSR#24 \ �R R3,R3,R4,ASL#8 f MOV R4,R4,LSR#24 p �R R4,R4,R5,ASL#8 z MOV R5,R5,LSR#24 � �R R5,R5,R6,ASL#8 � MOV R6,R6,LSR#24 � �R R6,R6,R7,ASL#8 � MOV R7,R7,LSR#24 � �R R7,R7,R8,ASL#8 � MOV R8,R8,LSR#24 � �R R8,R8,R9,ASL#8 � MOV R9,R9,LSR#24 � �R R9,R9,R10,ASL#8 � STMIA R1!,{R2-R9} �]:�:[OPT pass% � � TST R12,#16 ! MOVNE R6,R10,LSR#24 " LDMNEIA R0!,{R7-R10} ! �RNE R6,R6,R7,ASL#8 $ MOVNE R7,R7,LSR#24 .! �RNE R7,R7,R8,ASL#8 8 MOVNE R8,R8,LSR#24 B! �RNE R8,R8,R9,ASL#8 L MOVNE R9,R9,LSR#24 V" �RNE R9,R9,R10,ASL#8 `! STMNEIA R1!,{R6-R9} j t TST R12,#8 ~! MOVNE R8,R10,LSR#24 �" LDMNEIA R0!,{R9-R10} �! �RNE R8,R8,R9,ASL#8 � MOVNE R9,R9,LSR#24 �" �RNE R9,R9,R10,ASL#8 �! STMNEIA R1!,{R8-R9} � � TST R12,#4 �! MOVNE R9,R10,LSR#24 � LDRNE R10,[R0],#4 �" �RNE R9,R9,R10,ASL#8 � STRNE R9,[R1],#4 � MOV R9,R10,LSR#24 TST R12,#2 STRNEB R9,[R1],#1 ( LDRNEB R9,[R0],#1 2 STRNEB R9,[R1],#1 < LDRNEB R9,[R0],#1 F P TST R12,#1 Z STRNEB R9,[R1],#1 d MOVS PC,R14 n x.rloffsetmod4is2 �6 ; First, align source to 2 before a word � � R2,R0,#3 �8 CMP R2,#3 ;if off by 0, move 2. �8 LDREQB R3,[R0],#1 ;if off by 1, move 1. �8 STREQB R3,[R1],#1 ;if off by 2, move 0. �8 SUBEQ R12,R12,#1 ;if off by 3, move 3. � CMP R2,#2 � LDRNEB R3,[R0],#1 � STRNEB R3,[R1],#1 � SUBNE R12,R12,#1 � CMP R2,#0 � CMPNE R2,#3 � LDREQB R3,[R0],#1 STREQB R3,[R1],#1 SUBEQ R12,R12,#1 ", ; Load 2 to make us aligned... , LDRB R10,[R0],#1 6 LDRB R9,[R0],#1 @! �R R10,R10,R9,ASL#8 J MOV R10,R10,ASL#16 T ^ ; Move line left. h% ; Source now aligned... r BIC R3,R12,#31 | RSBS R3,R3,#160 �# ADD R3,R3,R3,ASL#3 �1 ADDGE PC,PC,R3,LSR#2 ;(32>>2=8) � B error �]:� l%=0 � 4:[OPT pass% � MOV R2,R10,LSR#16 � LDMIA R0!,{R3-R10} � �R R2,R2,R3,ASL#16 � MOV R3,R3,LSR#16 � �R R3,R3,R4,ASL#16 � MOV R4,R4,LSR#16 � �R R4,R4,R5,ASL#16 � MOV R5,R5,LSR#16 � �R R5,R5,R6,ASL#16 MOV R6,R6,LSR#16 �R R6,R6,R7,ASL#16 MOV R7,R7,LSR#16 & �R R7,R7,R8,ASL#16 0 MOV R8,R8,LSR#16 : �R R8,R8,R9,ASL#16 D MOV R9,R9,LSR#16 N! �R R9,R9,R10,ASL#16 X STMIA R1!,{R2-R9} b]:�:[OPT pass% l TST R12,#16 v! MOVNE R6,R10,LSR#16 �" LDMNEIA R0!,{R7-R10} �" �RNE R6,R6,R7,ASL#16 � MOVNE R7,R7,LSR#16 �" �RNE R7,R7,R8,ASL#16 � MOVNE R8,R8,LSR#16 �" �RNE R8,R8,R9,ASL#16 � MOVNE R9,R9,LSR#16 �# �RNE R9,R9,R10,ASL#16 �! STMNEIA R1!,{R6-R9} � � TST R12,#8 �! MOVNE R8,R10,LSR#16 �" LDMNEIA R0!,{R9-R10} " �RNE R8,R8,R9,ASL#16 MOVNE R9,R9,LSR#16 # �RNE R9,R9,R10,ASL#16 ! STMNEIA R1!,{R8-R9} * 4 TST R12,#4 >! MOVNE R9,R10,LSR#16 H LDRNE R10,[R0],#4 R# �RNE R9,R9,R10,ASL#16 \ STRNE R9,[R1],#4 f p MOV R9,R10,LSR#16 z � TST R12,#2 � STRNEB R9,[R1],#1 � MOVNE R9,R9,LSR#8 � STRNEB R9,[R1],#1 � TSTNE R12,#1 � LDRNEB R9,[R0],#1 � � TST R12,#1 � STRNEB R9,[R1],#1 � MOVS PC,R14 � �.rloffsetmod4is3 �6 ; First, align source to 3 before a word � R2,R0,#3 8 CMP R2,#2 ;if off by 0, move 1. 8 LDREQB R3,[R0],#1 ;if off by 1, move 0. $8 STREQB R3,[R1],#1 ;if off by 2, move 3. .8 SUBEQ R12,R12,#1 ;if off by 3, move 2. 8 LDRGEB R3,[R0],#1 B STRGEB R3,[R1],#1 L SUBGE R12,R12,#1 V CMP R2,#1 ` LDRNEB R3,[R0],#1 j STRNEB R3,[R1],#1 t SUBNE R12,R12,#1 ~ �, ; Load 1 to make us aligned... � LDRB R10,[R0],#1 � LDRB R9,[R0],#1 �! �R R10,R10,R9,ASL#8 � LDRB R9,[R0],#1 �" �R R10,R10,R9,ASL#16 � MOV R10,R10,ASL#8 � � ; Move line left. �% ; Source now aligned... � BIC R3,R12,#31 � RSBS R3,R3,#160 # ADD R3,R3,R3,LSL#3 1 ADDGE PC,PC,R3,LSR#2 ;(32>>2=8) B error ]:� l%=0 � 4:[OPT pass% ( MOV R2,R10,LSR#8 2 LDMIA R0!,{R3-R10} < �R R2,R2,R3,ASL#24 F MOV R3,R3,LSR#8 P �R R3,R3,R4,ASL#24 Z MOV R4,R4,LSR#8 d �R R4,R4,R5,ASL#24 n MOV R5,R5,LSR#8 x �R R5,R5,R6,ASL#24 � MOV R6,R6,LSR#8 � �R R6,R6,R7,ASL#24 � MOV R7,R7,LSR#8 � �R R7,R7,R8,ASL#24 � MOV R8,R8,LSR#8 � �R R8,R8,R9,ASL#24 � MOV R9,R9,LSR#8 �! �R R9,R9,R10,ASL#24 � STMIA R1!,{R2-R9} �]:�:[OPT pass% � � TST R12,#16 � MOVNE R6,R10,LSR#8 " LDMNEIA R0!,{R7-R10} " �RNE R6,R6,R7,ASL#24 MOVNE R7,R7,LSR#8 "" �RNE R7,R7,R8,ASL#24 , MOVNE R8,R8,LSR#8 6" �RNE R8,R8,R9,ASL#24 @ MOVNE R9,R9,LSR#8 J# �RNE R9,R9,R10,ASL#24 T! STMNEIA R1!,{R6-R9} ^ h TST R12,#8 r MOVNE R8,R10,LSR#8 |" LDMNEIA R0!,{R9-R10} �" �RNE R8,R8,R9,ASL#24 � MOVNE R9,R9,LSR#8 �# �RNE R9,R9,R10,ASL#24 �! STMNEIA R1!,{R8-R9} � � TST R12,#4 � MOVNE R9,R10,LSR#8 � LDRNE R10,[R0],#4 �# �RNE R9,R9,R10,ASL#24 � STRNE R9,[R1],#4 � � MOV R9,R10,LSR#8 � TST R12,#2 STRNEB R9,[R1],#1 MOVNE R9,R9,LSR#8 & STRNEB R9,[R1],#1 0 MOVNE R9,R9,LSR#8 : D TST R12,#1 N STRNEB R9,[R1],#1 X .error b MOVS PC,R14 l v.lroffsetmod4is0 �B ; We are moving from word boundary to word boundary. � ADD R0,R0,R12 � ADD R1,R1,R12 �- ; First, align source to a word � TST R0,#1 �! LDRNEB R2,[R0,#-1]! �! STRNEB R2,[R1,#-1]! � SUBNE R12,R12,#1 � TST R0,#2 �! LDRNEB R2,[R0,#-1]! �! STRNEB R2,[R1,#-1]! �! LDRNEB R2,[R0,#-1]! �! STRNEB R2,[R1,#-1]! SUBNE R12,R12,#2 ; Move line right. BIC R2,R12,#31 RSBS R2,R2,#320 *1 ADDGE PC,PC,R2,LSR#2 ;(32>>2=8) 4 B error ># LDMDB R0!,{R2-R9} ;1 H STMDB R1!,{R2-R9} R# LDMDB R0!,{R2-R9} ;2 \ STMDB R1!,{R2-R9} f# LDMDB R0!,{R2-R9} ;3 p STMDB R1!,{R2-R9} z# LDMDB R0!,{R2-R9} ;4 � STMDB R1!,{R2-R9} �# LDMDB R0!,{R2-R9} ;5 � STMDB R1!,{R2-R9} �# LDMDB R0!,{R2-R9} ;1 � STMDB R1!,{R2-R9} �# LDMDB R0!,{R2-R9} ;2 � STMDB R1!,{R2-R9} �# LDMDB R0!,{R2-R9} ;3 � STMDB R1!,{R2-R9} �# LDMDB R0!,{R2-R9} ;4 � STMDB R1!,{R2-R9} �# LDMDB R0!,{R2-R9} ;5 � STMDB R1!,{R2-R9} TST R12,#16 ! LDMNEDB R0!,{R2-R5} ! STMNEDB R1!,{R2-R5} $ TST R12,#8 .! LDMNEDB R0!,{R2-R3} 8! STMNEDB R1!,{R2-R3} B TST R12,#4 L LDRNE R2,[R0,#-4]! V STRNE R2,[R1,#-4]! ` TST R12,#2 j! LDRNEB R2,[R0,#-1]! t! STRNEB R2,[R1,#-1]! ~! LDRNEB R2,[R0,#-1]! �! STRNEB R2,[R1,#-1]! � TST R12,#1 �! LDRNEB R2,[R0,#-1]! �! STRNEB R2,[R1,#-1]! � MOVS PC,R14 � �.lroffsetmod4is3 � ADD R0,R0,R12 � ADD R1,R1,R12 �6 ; First, align source to 1 before a word � � R2,R0,#3 �9 CMP R2,#0 ;if off by 0, move 3. 9 LDREQB R3,[R0,#-1]! ;if off by 1, move 0. 9 STREQB R3,[R1,#-1]! ;if off by 2, move 1. 9 SUBEQ R12,R12,#1 ;if off by 3, move 2. CMP R2,#1 (! LDRNEB R3,[R0,#-1]! 2! STRNEB R3,[R1,#-1]! < SUBNE R12,R12,#1 F CMP R2,#0 P CMPNE R2,#3 Z! LDREQB R3,[R0,#-1]! d! STREQB R3,[R1,#-1]! n SUBEQ R12,R12,#1 x �, ; Load 1 to make us aligned... � LDRB R2,[R0,#-1]! � � ; Move line right. �% ; Source now aligned... � BIC R3,R12,#31 � RSBS R3,R3,#320 �# ADD R3,R3,R3,LSL#3 �1 ADDGE PC,PC,R3,LSR#2 ;(32>>2=8) � B error �]:� l%=0 � 9:[OPT pass% � MOV R10,R2,LSL#24 � LDMDB R0!,{R2-R9} ! �R R10,R10,R9,LSR#8 MOV R9,R9,LSL#24 �R R9,R9,R8,LSR#8 " MOV R8,R8,LSL#24 , �R R8,R8,R7,LSR#8 6 MOV R7,R7,LSL#24 @ �R R7,R7,R6,LSR#8 J MOV R6,R6,LSL#24 T �R R6,R6,R5,LSR#8 ^ MOV R5,R5,LSL#24 h �R R5,R5,R4,LSR#8 r MOV R4,R4,LSL#24 | �R R4,R4,R3,LSR#8 � MOV R3,R3,LSL#24 � �R R3,R3,R2,LSR#8 � STMDB R1!,{R3-R10} �]:�:[OPT pass% � � TST R12,#16 � MOVNE R6,R2,LSL#24 �! LDMNEDB R0!,{R2-R5} �! �RNE R6,R6,R5,LSR#8 � MOVNE R5,R5,LSL#24 �! �RNE R5,R5,R4,LSR#8 � MOVNE R4,R4,LSL#24 �! �RNE R4,R4,R3,LSR#8 MOVNE R3,R3,LSL#24 ! �RNE R3,R3,R2,LSR#8 ! STMNEDB R1!,{R3-R6} & 0 TST R12,#8 : MOVNE R4,R2,LSL#24 D! LDMNEDB R0!,{R2-R3} N! �RNE R4,R4,R3,LSR#8 X MOVNE R3,R3,LSL#24 b! �RNE R3,R3,R2,LSR#8 l! STMNEDB R1!,{R3-R4} v � TST R12,#4 � MOVNE R3,R2,LSL#24 � LDRNE R2,[R0,#-4]! �! �RNE R3,R3,R2,LSR#8 � STRNE R3,[R1,#-4]! � � TST R12,#2 �! STRNEB R2,[R1,#-1]! �! LDRNEB R2,[R0,#-1]! �! STRNEB R2,[R1,#-1]! � � TST R12,#1 �" ;LDRNEB R2,[R0,#-1]! ! STRNEB R2,[R1,#-1]! MOVS PC,R14 .lroffsetmod4is2 * ADD R0,R0,R12 4 ADD R1,R1,R12 >6 ; First, align source to 2 before a word H � R2,R0,#3 R8 CMP R2,#2 ;if off by 0, move 2. \8 LDRNEB R3,[R0,#-1]! ;if off by 1, move 3. f8 STRNEB R3,[R1,#-1]! ;if off by 2, move 0. p8 SUBNE R12,R12,#1 ;if off by 3, move 1. z! LDRLTB R3,[R0,#-1]! �! STRLTB R3,[R1,#-1]! � SUBLT R12,R12,#1 � CMP R2,#1 �! LDREQB R3,[R0,#-1]! �! STREQB R3,[R1,#-1]! � SUBEQ R12,R12,#1 � �, ; Load 2 to make us aligned... � LDRB R10,[R0,#-1]! � LDRB R9,[R0,#-1]! � �R R2,R9,R10,ASL#8 � � ; Move line left. % ; Source now aligned... BIC R3,R12,#31 RSBS R3,R3,#320 $# ADD R3,R3,R3,LSL#3 .1 ADDGE PC,PC,R3,LSR#2 ;(32>>2=8) 8 B error B]:� l%=0 � 9:[OPT pass% L MOV R10,R2,LSL#16 V LDMDB R0!,{R2-R9} `" �R R10,R10,R9,LSR#16 j MOV R9,R9,LSL#16 t �R R9,R9,R8,LSR#16 ~ MOV R8,R8,LSL#16 � �R R8,R8,R7,LSR#16 � MOV R7,R7,LSL#16 � �R R7,R7,R6,LSR#16 � MOV R6,R6,LSL#16 � �R R6,R6,R5,LSR#16 � MOV R5,R5,LSL#16 � �R R5,R5,R4,LSR#16 � MOV R4,R4,LSL#16 � �R R4,R4,R3,LSR#16 � MOV R3,R3,LSL#16 � �R R3,R3,R2,LSR#16 � STMDB R1!,{R3-R10} ]:�:[OPT pass% TST R12,#16 MOVNE R6,R2,LSL#16 (! LDMNEDB R0!,{R2-R5} 2" �RNE R6,R6,R5,LSR#16 < MOVNE R5,R5,LSL#16 F" �RNE R5,R5,R4,LSR#16 P MOVNE R4,R4,LSL#16 Z" �RNE R4,R4,R3,LSR#16 d MOVNE R3,R3,LSL#16 n" �RNE R3,R3,R2,LSR#16 x! STMNEDB R1!,{R3-R6} � � TST R12,#8 � MOVNE R4,R2,ASL#16 �! LDMNEDB R0!,{R2-R3} �" �RNE R4,R4,R3,LSR#16 � MOVNE R3,R3,ASL#16 �" �RNE R3,R3,R2,LSR#16 �! STMNEDB R1!,{R3-R4} � � TST R12,#4 � MOVNE R3,R2,ASL#16 � LDRNE R2,[R0,#-4]! �" �RNE R3,R3,R2,LSR#16 STRNE R3,[R1,#-4]! MOV R2,R2,ROR#8 " TST R12,#2 ,! STRNEB R2,[R1,#-1]! 6! MOVNE R2,R2,ROR#24 @! STRNEB R2,[R1,#-1]! J TSTNE R12,#1 T! LDRNEB R2,[R0,#-1]! ^ h TST R12,#1 r! STRNEB R2,[R1,#-1]! | MOVS PC,R14 � �.lroffsetmod4is1 � ADD R0,R0,R12 � ADD R1,R1,R12 �5 ; First, align source to 3 after a word � � R2,R0,#3 �8 CMP R2,#2 ;if off by 0, move 1. �8 LDRLEB R3,[R0,#-1]! ;if off by 1, move 2. �8 STRLEB R3,[R1,#-1]! ;if off by 2, move 3. �8 SUBLE R12,R12,#1 ;if off by 3, move 0. �! LDREQB R3,[R0,#-1]! �! STREQB R3,[R1,#-1]! � SUBEQ R12,R12,#1 CMPNE R2,#1 ! LDREQB R3,[R0,#-1]! ! STREQB R3,[R1,#-1]! & SUBEQ R12,R12,#1 0 :, ; Load 1 to make us aligned... D LDRB R10,[R0,#-1]! N LDRB R9,[R0,#-1]! X! �R R10,R9,R10,ASL#8 b LDRB R9,[R0,#-1]! l �R R2,R9,R10,ASL#8 v � ; Move line right. �% ; Source now aligned... � BIC R3,R12,#31 � RSBS R3,R3,#320 �# ADD R3,R3,R3,LSL#3 �1 ADDGE PC,PC,R3,LSR#2 ;(32>>2=8) � B error �]:� l%=0 � 9:[OPT pass% � MOV R10,R2,ASL#8 � LDMDB R0!,{R2-R9} �" �R R10,R10,R9,LSR#24 � MOV R9,R9,ASL#8 � �R R9,R9,R8,LSR#24 MOV R8,R8,ASL#8 �R R8,R8,R7,LSR#24 MOV R7,R7,ASL#8 �R R7,R7,R6,LSR#24 * MOV R6,R6,ASL#8 4 �R R6,R6,R5,LSR#24 > MOV R5,R5,ASL#8 H �R R5,R5,R4,LSR#24 R MOV R4,R4,ASL#8 \ �R R4,R4,R3,LSR#24 f MOV R3,R3,ASL#8 p �R R3,R3,R2,LSR#24 z STMDB R1!,{R3-R10} �]:�:[OPT pass% � � TST R12,#16 � MOVNE R6,R2,ASL#8 �! LDMNEDB R0!,{R2-R5} �" �RNE R6,R6,R5,LSR#24 � MOVNE R5,R5,ASL#8 �" �RNE R5,R5,R4,LSR#24 � MOVNE R4,R4,ASL#8 �" �RNE R4,R4,R3,LSR#24 � MOVNE R3,R3,ASL#8 �" �RNE R3,R3,R2,LSR#24 �! STMNEDB R1!,{R3-R6} TST R12,#8 MOVNE R4,R2,ASL#8 $! LDMNEDB R0!,{R2-R3} ." �RNE R4,R4,R3,LSR#24 8 MOVNE R3,R3,ASL#8 B" �RNE R3,R3,R2,LSR#24 L! STMNEDB R1!,{R3-R4} V ` TST R12,#4 j MOVNE R3,R2,ASL#8 t LDRNE R2,[R0,#-4]! ~" �RNE R3,R3,R2,LSR#24 � STRNE R3,[R1,#-4]! � � MOV R2,R2,ROR#16 � � TST R12,#2 �! STRNEB R2,[R1,#-1]! � MOVNE R2,R2,ROR#24 �! STRNEB R2,[R1,#-1]! � MOVNE R2,R2,ROR#24 � � TST R12,#1 �! STRNEB R2,[R1,#-1]! .error MOVS PC,R14 .small_copy MOVS PC,R14 (.move_nw 2A ; On entry R0=src, R1=dest, R11 = height, R12=width <& ; R4=linelength F% STMFD R13!,{R0-R12,R14} P+ LDR R2,[mem,#arc_screenstart] Z ADD R0,R0,R2 d ADD R1,R1,R2 n x MOV R2,R4 � SUB R3,R1,R0 � � R3,R3,#3 �.move_nw_loop1 �$ STMFD R13!,{R0-R3,R12} � ADD PC,PC,R3,LSL#3 � EQUD 0 � BL rloffsetmod4is0 � B move_nw_skip � BL rloffsetmod4is1 � B move_nw_skip � BL rloffsetmod4is2 � B move_nw_skip � BL rloffsetmod4is3 .move_nw_skip $ LDMFD R13!,{R0-R3,R12} ADD R0,R0,R2 " ADD R1,R1,R2 , SUBS R11,R11,#1 6 BGT move_nw_loop1 @% LDMFD R13!,{R0-R12,PC}^ J.move_ne TA ; On entry R0=src, R1=dest, R11 = height, R12=width ^% STMFD R13!,{R0-R12,R14} h+ LDR R2,[mem,#arc_screenstart] r ADD R0,R0,R2 | ADD R1,R1,R2 � � MOV R2,R4 � SUBS R3,R1,R0 � � R3,R3,#3 �.move_ne_loop1 �$ STMFD R13!,{R0-R3,R12} � ADD PC,PC,R3,LSL#3 � EQUD 0 � BL lroffsetmod4is0 � B move_ne_skip � BL lroffsetmod4is1 � B move_ne_skip � BL lroffsetmod4is2 B move_ne_skip BL lroffsetmod4is3 .move_ne_skip &$ LDMFD R13!,{R0-R3,R12} 0 ADD R0,R0,R2 : ADD R1,R1,R2 D SUBS R11,R11,#1 N BGT move_ne_loop1 X.move_ne_end b% LDMFD R13!,{R0-R12,PC}^ l.move_sw vA ; On entry R0=src, R1=dest, R11 = height, R12=width �% STMFD R13!,{R0-R12,R14} �+ LDR R3,[mem,#arc_screenstart] � MOV R2,R4 � �8 MLA R3,R2,R11,R3 ; Offset to the bottom � SUB R3,R3,R2 � ADD R0,R0,R3 � ADD R1,R1,R3 � � SUB R3,R1,R0 � � R3,R3,#3 �.move_sw_loop1 �$ STMFD R13!,{R0-R3,R12} ADD PC,PC,R3,LSL#3 EQUD 0 BL rloffsetmod4is0 B move_sw_skip * BL rloffsetmod4is1 4 B move_sw_skip > BL rloffsetmod4is2 H B move_sw_skip R BL rloffsetmod4is3 \.move_sw_skip f$ LDMFD R13!,{R0-R3,R12} p SUB R0,R0,R2 z SUB R1,R1,R2 � SUBS R11,R11,#1 � BGT move_sw_loop1 �% LDMFD R13!,{R0-R12,PC}^ �.move_se �A ; On entry R0=src, R1=dest, R11 = height, R12=width �% STMFD R13!,{R0-R12,R14} �+ LDR R3,[mem,#arc_screenstart] � � MOV R2,R4 � �6 MLA R3,R2,R11,R3 ; Offset to the bottom � SUB R3,R3,R2 � ADD R0,R0,R3 ADD R1,R1,R3 SUB R3,R1,R0 $ � R3,R3,#3 ..move_se_loop1 8$ STMFD R13!,{R0-R3,R12} B ADD PC,PC,R3,LSL#3 L EQUD 0 V BL lroffsetmod4is0 ` B move_se_skip j BL lroffsetmod4is1 t B move_se_skip ~ BL lroffsetmod4is2 � B move_se_skip � BL lroffsetmod4is3 �.move_se_skip �$ LDMFD R13!,{R0-R3,R12} � SUB R0,R0,R2 � SUB R1,R1,R2 � SUBS R11,R11,#1 � BGT move_se_loop1 �% LDMFD R13!,{R0-R12,PC}^ �] � =pass% �: ݤdohardwarescroll [OPT p 7 ADR R13,hardware_scroll_stack_space_top-4 % STMFD R13!,{R0-R12,R14} (% ; CHECK � � CHANGED???? 2& ;LDRB R0,[mem,#lastmode] F ;CMP R0,#7 P ;;CMPNE R0,#99 Z ;SWIEQ &100+�"P" d! ;BEQ no_scroll_reqd e# LDRB R0,[mem,#tamper] f CMP R0,#0 g BNE no_scroll_reqd n x0 ; First get where the screen is... �( LDRB R1,[mem,#crt_regs+13] �( LDRB R0,[mem,#crt_regs+12] � � R0,R0,#%1111 � ADD R1,R1,R0,LSL#8 � �& SUB R2,mem,#512 ; sheila � LDRB R2,[R2,#&20] � MOVS R2,R2,LSR#2 � � � R2,R2,#7 � ;Test for Mode 4 � CMP R2,#%000 � CMPNE R2,#%010 �Q R4,#160 ; 40 �Q R5,#4 ; 1 ;Test for Mode 0 " CMP R2,#%011 , CMPNE R2,#%111 6 �Q R4,#80 @ �Q R5,#1 J ;Test for Mode 2 T CMP R2,#%101 ^ �Q R4,#320 ; 320 h �Q R5,#2 ; 4 r ;Test for Mode 1 | CMP R2,#%100 � CMPNE R2,#%110 � �Q R4,#80 � �Q R5,#1 � ;Test for Mode 5 � CMP R2,#%001 � �Q R4,#160 � �Q R5,#4 � �, ; And then where it used to be �0 LDR R0,[mem,#screenstart_previous] � �5 ; If it hasn't moved then do nothing... � SUBS R0,R1,R0 SWIEQ &100+�"K" BEQ no_scroll_reqd 0 STR R1,[mem,#screenstart_previous] & 07 LDRB R12,[mem,#crt_regs+1] ; horiz. chars :6 LDRB R11,[mem,#crt_regs+6] ; vert. chars D MUL R2,R12,R11 N ADDLT R0,R2,R0 X b CMP R0,R2 l SWIGE &100+�"L" v BGE no_scroll_reqd � � CMP R12,#0 � CMPNE R11,#0 � SWIEQ &100+�"M" � BEQ no_scroll_reqd � �2 ; So we have to do some scrolling... � ;R0=R0 � R12 � ;R2=R0 � R12 � ;R0 < R12*32 � MOV R2,#0 � CMP R0,R12,LSL#4 �# SUBGE R0,R0,R12,LSL#4 ! ADDGE R2,R2,#1<<4 ! CMP R0,R12,LSL#3 !# SUBGE R0,R0,R12,LSL#3 ! ADDGE R2,R2,#1<<3 !* CMP R0,R12,LSL#2 !4# SUBGE R0,R0,R12,LSL#2 !> ADDGE R2,R2,#1<<2 !H CMP R0,R12,LSL#1 !R# SUBGE R0,R0,R12,LSL#1 !\ ADDGE R2,R2,#1<<1 !f CMP R0,R12 !p SUBGE R0,R0,R12 !z ADDGE R2,R2,#1 !� !�: ; So now we want to scroll left/right by R0, !�! ; and up/down by R2 !� !�5 CMP R0,R12,ASR#1 ; HALf of screenful !�- ADDGE R2,R2,#1 ; which way !� CMP R2,R11 !� SUBGE R2,R2,R11 !� !�) ; By verification 0<=R0<R12 !� ;CMP R0,#0 !� ;SWILT &100+�"!" !� ;CMP R0,R12 " ;SWIGE &100+�"!" ") ; By verification 0<=R2<R11 " ;CMP R2,#0 "$ ;SWILT &100+�"!" ". ;CMP R2,R11 "8 ;SWIGE &100+�"!" "B "L CMP R0,R12,ASR#1 "V BGE must_scroll_w "`2 ; We are definately moving eastwards "j CMP R2,R11,ASR#1 "t BGT must_scroll_ne "~.must_scroll_se "�< ; We are definately moving SE, so call move_nw "�@ ; We need R0=src, R1=dest, R11 = height, R12=width "� ; R4 = linelength "� ;SWI &100+�"S" "� ;SWI &100+�"E" "� ;SWI &100+�" " "� ;R11=(R11-R2)*8 "� SUB R11,R11,R2 "� MOV R11,R11,LSL#3 "�# ;R12=(R12-R0)*rowmult "� SUB R12,R12,R0 "� MUL R12,R5,R12 # $ ;R0=R0*R5+R2*linelen*8 # MUL R2,R4,R2 # MUL R0,R5,R0 # ADD R0,R0,R2,LSL#3 #( MOV R1,#0 #2 ;MOV R0,#4 #< ;MOV R11,#256 #F ;MOV R12,#320-4 #P ;SWI &100+�"!" #Z BL move_nw #d B scroll_done #n B no_scroll_reqd #x.must_scroll_ne #�< ; We are definately moving NE, so call move_sw #�@ ; We need R0=src, R1=dest, R11 = height, R12=width #� ; R4 = linelength #� ;SWI &100+�"N" #� ;SWI &100+�"E" #� ;SWI &100+�" " #�$ ;R1=(R11-R2)*linelen*8 #� SUB R1,R11,R2 #� MUL R1,R4,R1 #� MOV R1,R1,LSL#3 #� ;R11=R2*8 #� MOV R11,R2,LSL#3 #�# ;R12=(R12-R0)*rowmult $ SUB R12,R12,R0 $ MUL R12,R5,R12 $ ;R0=R0*R5 $" MUL R0,R5,R0 $, BL move_sw $6 B scroll_done $@ B no_scroll_reqd $J.must_scroll_w $T CMP R2,R11,ASR#1 $^ BGT must_scroll_nw $h.must_scroll_sw $r< ; We are definately moving SW, so call move_ne $|@ ; We need R0=src, R1=dest, R11 = height, R12=width $� ; R4 = linelength $� ;SWI &100+�"S" $� ;SWI &100+�"W" $� ;SWI &100+�" " $�" ;R1=(R12-R0)*rowmult $� SUB R1,R12,R0 $� MUL R1,R5,R1 $� ;R11=(R11-R2)*8 $� SUB R11,R11,R2 $� MOV R11,R11,LSL#3 $� ;R12=R0*rowmult $� MUL R12,R0,R5 $� ;R0=R2*linelen*8 % MUL R2,R4,R2 % MOV R0,R2,LSL#3 % BL move_ne %& B scroll_done %0 B no_scroll_reqd %:.must_scroll_nw %D< ; We are definately moving NW, so call move_se %N@ ; We need R0=src, R1=dest, R11 = height, R12=width %X ; R4 = linelength %b ;SWI &100+�"N" %l ;SWI &100+�"W" %v ;SWI &100+�" " %� ADD R0,R0,#1 %�0 ;R1=(R11-R2)*linelen*8+(R12-R0)*R5 %� SUB R1,R11,R2 %� MUL R1,R5,R1 %� SUB R12,R12,R0 %� MUL R12,R5,R12 %�! ADD R1,R12,R1,LSL#3 %� ;R11=R2*8 %� MOV R11,R2,LSL#3 %� ;R12=R0*rowmult %� MUL R12,R5,R0 %� ;R0=0 %� MOV R0,#0 & BL move_se & B scroll_done & B no_scroll_reqd & &*.no_scroll_reqd &4 ;SWI &100+�"O" &>% LDMFD R13!,{R0-R12,PC}^ &H.scroll_done &R% LDMFD R13!,{R0-R12,PC}^ &\5 ;LDR PC,this_is_getting_really_horrible &f] &p=p �
00000000 0d 00 0a 10 f4 20 3e 20 48 57 53 63 72 6f 6c 6c |..... > HWScroll| 00000010 0d 00 14 04 0d 00 1e 14 dd a4 68 61 72 64 77 61 |..........hardwa| 00000020 72 65 73 63 72 6f 6c 6c 0d 00 28 0e ea 20 6c 25 |rescroll..(.. l%| 00000030 2c 70 61 73 73 25 0d 00 32 0b 70 61 73 73 25 3d |,pass%..2.pass%=| 00000040 70 0d 00 3c 0e 5b 4f 50 54 20 70 61 73 73 25 0d |p..<.[OPT pass%.| 00000050 00 46 14 2e 72 6c 6f 66 66 73 65 74 6d 6f 64 34 |.F..rloffsetmod4| 00000060 69 73 30 0d 00 50 42 20 20 20 20 20 20 20 20 20 |is0..PB | 00000070 20 3b 20 57 65 20 61 72 65 20 6d 6f 76 69 6e 67 | ; We are moving| 00000080 20 66 72 6f 6d 20 77 6f 72 64 20 62 6f 75 6e 64 | from word bound| 00000090 61 72 79 20 74 6f 20 77 6f 72 64 20 62 6f 75 6e |ary to word boun| 000000a0 64 61 72 79 2e 0d 00 5a 2d 20 20 20 20 20 20 20 |dary...Z- | 000000b0 20 20 20 3b 20 46 69 72 73 74 2c 20 61 6c 69 67 | ; First, alig| 000000c0 6e 20 73 6f 75 72 63 65 20 74 6f 20 61 20 77 6f |n source to a wo| 000000d0 72 64 0d 00 64 17 20 20 20 20 20 20 20 20 20 20 |rd..d. | 000000e0 54 53 54 20 52 30 2c 23 31 0d 00 6e 1f 20 20 20 |TST R0,#1..n. | 000000f0 20 20 20 20 20 20 20 4c 44 52 4e 45 42 20 52 32 | LDRNEB R2| 00000100 2c 5b 52 30 5d 2c 23 31 0d 00 78 1f 20 20 20 20 |,[R0],#1..x. | 00000110 20 20 20 20 20 20 53 54 52 4e 45 42 20 52 32 2c | STRNEB R2,| 00000120 5b 52 31 5d 2c 23 31 0d 00 82 1e 20 20 20 20 20 |[R1],#1.... | 00000130 20 20 20 20 20 53 55 42 4e 45 20 52 31 32 2c 52 | SUBNE R12,R| 00000140 31 32 2c 23 31 0d 00 8c 17 20 20 20 20 20 20 20 |12,#1.... | 00000150 20 20 20 54 53 54 20 52 30 2c 23 32 0d 00 96 1f | TST R0,#2....| 00000160 20 20 20 20 20 20 20 20 20 20 4c 44 52 4e 45 42 | LDRNEB| 00000170 20 52 32 2c 5b 52 30 5d 2c 23 31 0d 00 a0 1f 20 | R2,[R0],#1.... | 00000180 20 20 20 20 20 20 20 20 20 53 54 52 4e 45 42 20 | STRNEB | 00000190 52 32 2c 5b 52 31 5d 2c 23 31 0d 00 aa 1f 20 20 |R2,[R1],#1.... | 000001a0 20 20 20 20 20 20 20 20 4c 44 52 4e 45 42 20 52 | LDRNEB R| 000001b0 32 2c 5b 52 30 5d 2c 23 31 0d 00 b4 1f 20 20 20 |2,[R0],#1.... | 000001c0 20 20 20 20 20 20 20 53 54 52 4e 45 42 20 52 32 | STRNEB R2| 000001d0 2c 5b 52 31 5d 2c 23 31 0d 00 be 1e 20 20 20 20 |,[R1],#1.... | 000001e0 20 20 20 20 20 20 53 55 42 4e 45 20 52 31 32 2c | SUBNE R12,| 000001f0 52 31 32 2c 23 32 0d 00 c8 1f 20 20 20 20 20 20 |R12,#2.... | 00000200 20 20 20 20 3b 20 4d 6f 76 65 20 6c 69 6e 65 20 | ; Move line | 00000210 6c 65 66 74 2e 0d 00 d2 1e 20 20 20 20 20 20 20 |left..... | 00000220 20 20 20 42 49 43 20 20 20 52 32 2c 52 31 32 2c | BIC R2,R12,| 00000230 23 33 31 0d 00 dc 1e 20 20 20 20 20 20 20 20 20 |#31.... | 00000240 20 52 53 42 53 20 20 52 32 2c 52 32 2c 23 31 36 | RSBS R2,R2,#16| 00000250 30 0d 00 e6 30 20 20 20 20 20 20 20 20 20 20 41 |0...0 A| 00000260 44 44 47 45 20 50 43 2c 50 43 2c 52 32 2c 4c 53 |DDGE PC,PC,R2,LS| 00000270 52 23 32 20 20 20 20 3b 28 33 32 3e 3e 32 3d 38 |R#2 ;(32>>2=8| 00000280 29 0d 00 f0 15 20 20 20 20 20 20 20 20 20 20 42 |).... B| 00000290 20 65 72 72 6f 72 0d 00 fa 23 20 20 20 20 20 20 | error...# | 000002a0 20 20 20 20 4c 44 4d 49 41 20 52 30 21 2c 7b 52 | LDMIA R0!,{R| 000002b0 32 2d 52 39 7d 20 20 3b 31 0d 01 04 1f 20 20 20 |2-R9} ;1.... | 000002c0 20 20 20 20 20 20 20 53 54 4d 49 41 20 52 31 21 | STMIA R1!| 000002d0 2c 7b 52 32 2d 52 39 7d 0d 01 0e 23 20 20 20 20 |,{R2-R9}...# | 000002e0 20 20 20 20 20 20 4c 44 4d 49 41 20 52 30 21 2c | LDMIA R0!,| 000002f0 7b 52 32 2d 52 39 7d 20 20 3b 32 0d 01 18 1f 20 |{R2-R9} ;2.... | 00000300 20 20 20 20 20 20 20 20 20 53 54 4d 49 41 20 52 | STMIA R| 00000310 31 21 2c 7b 52 32 2d 52 39 7d 0d 01 22 23 20 20 |1!,{R2-R9}.."# | 00000320 20 20 20 20 20 20 20 20 4c 44 4d 49 41 20 52 30 | LDMIA R0| 00000330 21 2c 7b 52 32 2d 52 39 7d 20 20 3b 33 0d 01 2c |!,{R2-R9} ;3..,| 00000340 1f 20 20 20 20 20 20 20 20 20 20 53 54 4d 49 41 |. STMIA| 00000350 20 52 31 21 2c 7b 52 32 2d 52 39 7d 0d 01 36 23 | R1!,{R2-R9}..6#| 00000360 20 20 20 20 20 20 20 20 20 20 4c 44 4d 49 41 20 | LDMIA | 00000370 52 30 21 2c 7b 52 32 2d 52 39 7d 20 20 3b 34 0d |R0!,{R2-R9} ;4.| 00000380 01 40 1f 20 20 20 20 20 20 20 20 20 20 53 54 4d |.@. STM| 00000390 49 41 20 52 31 21 2c 7b 52 32 2d 52 39 7d 0d 01 |IA R1!,{R2-R9}..| 000003a0 4a 23 20 20 20 20 20 20 20 20 20 20 4c 44 4d 49 |J# LDMI| 000003b0 41 20 52 30 21 2c 7b 52 32 2d 52 39 7d 20 20 3b |A R0!,{R2-R9} ;| 000003c0 35 0d 01 54 1f 20 20 20 20 20 20 20 20 20 20 53 |5..T. S| 000003d0 54 4d 49 41 20 52 31 21 2c 7b 52 32 2d 52 39 7d |TMIA R1!,{R2-R9}| 000003e0 0d 01 5e 19 20 20 20 20 20 20 20 20 20 20 54 53 |..^. TS| 000003f0 54 20 52 31 32 2c 23 31 36 0d 01 68 21 20 20 20 |T R12,#16..h! | 00000400 20 20 20 20 20 20 20 4c 44 4d 4e 45 49 41 20 52 | LDMNEIA R| 00000410 30 21 2c 7b 52 32 2d 52 35 7d 0d 01 72 21 20 20 |0!,{R2-R5}..r! | 00000420 20 20 20 20 20 20 20 20 53 54 4d 4e 45 49 41 20 | STMNEIA | 00000430 52 31 21 2c 7b 52 32 2d 52 35 7d 0d 01 7c 18 20 |R1!,{R2-R5}..|. | 00000440 20 20 20 20 20 20 20 20 20 54 53 54 20 52 31 32 | TST R12| 00000450 2c 23 38 0d 01 86 21 20 20 20 20 20 20 20 20 20 |,#8...! | 00000460 20 4c 44 4d 4e 45 49 41 20 52 30 21 2c 7b 52 32 | LDMNEIA R0!,{R2| 00000470 2d 52 33 7d 0d 01 90 21 20 20 20 20 20 20 20 20 |-R3}...! | 00000480 20 20 53 54 4d 4e 45 49 41 20 52 31 21 2c 7b 52 | STMNEIA R1!,{R| 00000490 32 2d 52 33 7d 0d 01 9a 18 20 20 20 20 20 20 20 |2-R3}.... | 000004a0 20 20 20 54 53 54 20 52 31 32 2c 23 34 0d 01 a4 | TST R12,#4...| 000004b0 1e 20 20 20 20 20 20 20 20 20 20 4c 44 52 4e 45 |. LDRNE| 000004c0 20 52 32 2c 5b 52 30 5d 2c 23 34 0d 01 ae 1e 20 | R2,[R0],#4.... | 000004d0 20 20 20 20 20 20 20 20 20 53 54 52 4e 45 20 52 | STRNE R| 000004e0 32 2c 5b 52 31 5d 2c 23 34 0d 01 b8 18 20 20 20 |2,[R1],#4.... | 000004f0 20 20 20 20 20 20 20 54 53 54 20 52 31 32 2c 23 | TST R12,#| 00000500 32 0d 01 c2 1f 20 20 20 20 20 20 20 20 20 20 4c |2.... L| 00000510 44 52 4e 45 42 20 52 32 2c 5b 52 30 5d 2c 23 31 |DRNEB R2,[R0],#1| 00000520 0d 01 cc 1f 20 20 20 20 20 20 20 20 20 20 53 54 |.... ST| 00000530 52 4e 45 42 20 52 32 2c 5b 52 31 5d 2c 23 31 0d |RNEB R2,[R1],#1.| 00000540 01 d6 1f 20 20 20 20 20 20 20 20 20 20 4c 44 52 |... LDR| 00000550 4e 45 42 20 52 32 2c 5b 52 30 5d 2c 23 31 0d 01 |NEB R2,[R0],#1..| 00000560 e0 1f 20 20 20 20 20 20 20 20 20 20 53 54 52 4e |.. STRN| 00000570 45 42 20 52 32 2c 5b 52 31 5d 2c 23 31 0d 01 ea |EB R2,[R1],#1...| 00000580 18 20 20 20 20 20 20 20 20 20 20 54 53 54 20 52 |. TST R| 00000590 31 32 2c 23 31 0d 01 f4 1f 20 20 20 20 20 20 20 |12,#1.... | 000005a0 20 20 20 4c 44 52 4e 45 42 20 52 32 2c 5b 52 30 | LDRNEB R2,[R0| 000005b0 5d 2c 23 31 0d 01 fe 1f 20 20 20 20 20 20 20 20 |],#1.... | 000005c0 20 20 53 54 52 4e 45 42 20 52 32 2c 5b 52 31 5d | STRNEB R2,[R1]| 000005d0 2c 23 31 0d 02 08 19 20 20 20 20 20 20 20 20 20 |,#1.... | 000005e0 20 4d 4f 56 53 20 50 43 2c 52 31 34 0d 02 12 04 | MOVS PC,R14....| 000005f0 0d 02 1c 14 2e 72 6c 6f 66 66 73 65 74 6d 6f 64 |.....rloffsetmod| 00000600 34 69 73 31 0d 02 26 36 20 20 20 20 20 20 20 20 |4is1..&6 | 00000610 20 20 3b 20 46 69 72 73 74 2c 20 61 6c 69 67 6e | ; First, align| 00000620 20 73 6f 75 72 63 65 20 74 6f 20 31 20 62 65 66 | source to 1 bef| 00000630 6f 72 65 20 61 20 77 6f 72 64 0d 02 30 18 20 20 |ore a word..0. | 00000640 20 20 20 20 20 20 20 20 80 20 52 32 2c 52 30 2c | . R2,R0,| 00000650 23 33 0d 02 3a 38 20 20 20 20 20 20 20 20 20 20 |#3..:8 | 00000660 43 4d 50 20 52 32 2c 23 33 20 20 20 20 20 20 20 |CMP R2,#3 | 00000670 20 20 20 20 20 3b 69 66 20 6f 66 66 20 62 79 20 | ;if off by | 00000680 30 2c 20 6d 6f 76 65 20 33 2e 0d 02 44 38 20 20 |0, move 3...D8 | 00000690 20 20 20 20 20 20 20 20 4c 44 52 4c 54 42 20 52 | LDRLTB R| 000006a0 33 2c 5b 52 30 5d 2c 23 31 20 20 20 20 3b 69 66 |3,[R0],#1 ;if| 000006b0 20 6f 66 66 20 62 79 20 31 2c 20 6d 6f 76 65 20 | off by 1, move | 000006c0 32 2e 0d 02 4e 38 20 20 20 20 20 20 20 20 20 20 |2...N8 | 000006d0 53 54 52 4c 54 42 20 52 33 2c 5b 52 31 5d 2c 23 |STRLTB R3,[R1],#| 000006e0 31 20 20 20 20 3b 69 66 20 6f 66 66 20 62 79 20 |1 ;if off by | 000006f0 32 2c 20 6d 6f 76 65 20 31 2e 0d 02 58 38 20 20 |2, move 1...X8 | 00000700 20 20 20 20 20 20 20 20 53 55 42 4c 54 20 52 31 | SUBLT R1| 00000710 32 2c 52 31 32 2c 23 31 20 20 20 20 20 3b 69 66 |2,R12,#1 ;if| 00000720 20 6f 66 66 20 62 79 20 33 2c 20 6d 6f 76 65 20 | off by 3, move | 00000730 30 2e 0d 02 62 17 20 20 20 20 20 20 20 20 20 20 |0...b. | 00000740 43 4d 50 20 52 32 2c 23 32 0d 02 6c 1f 20 20 20 |CMP R2,#2..l. | 00000750 20 20 20 20 20 20 20 4c 44 52 4c 54 42 20 52 33 | LDRLTB R3| 00000760 2c 5b 52 30 5d 2c 23 31 0d 02 76 1f 20 20 20 20 |,[R0],#1..v. | 00000770 20 20 20 20 20 20 53 54 52 4c 54 42 20 52 33 2c | STRLTB R3,| 00000780 5b 52 31 5d 2c 23 31 0d 02 80 1e 20 20 20 20 20 |[R1],#1.... | 00000790 20 20 20 20 20 53 55 42 4c 54 20 52 31 32 2c 52 | SUBLT R12,R| 000007a0 31 32 2c 23 31 0d 02 8a 17 20 20 20 20 20 20 20 |12,#1.... | 000007b0 20 20 20 43 4d 50 20 52 32 2c 23 31 0d 02 94 1f | CMP R2,#1....| 000007c0 20 20 20 20 20 20 20 20 20 20 4c 44 52 4c 54 42 | LDRLTB| 000007d0 20 52 33 2c 5b 52 30 5d 2c 23 31 0d 02 9e 1f 20 | R3,[R0],#1.... | 000007e0 20 20 20 20 20 20 20 20 20 53 54 52 4c 54 42 20 | STRLTB | 000007f0 52 33 2c 5b 52 31 5d 2c 23 31 0d 02 a8 1e 20 20 |R3,[R1],#1.... | 00000800 20 20 20 20 20 20 20 20 53 55 42 4c 54 20 52 31 | SUBLT R1| 00000810 32 2c 52 31 32 2c 23 31 0d 02 b2 04 0d 02 bc 2c |2,R12,#1.......,| 00000820 20 20 20 20 20 20 20 20 20 20 3b 20 4c 6f 61 64 | ; Load| 00000830 20 31 20 74 6f 20 6d 61 6b 65 20 75 73 20 61 6c | 1 to make us al| 00000840 69 67 6e 65 64 2e 2e 2e 0d 02 c6 1e 20 20 20 20 |igned....... | 00000850 20 20 20 20 20 20 4c 44 52 42 20 52 31 30 2c 5b | LDRB R10,[| 00000860 52 30 5d 2c 23 31 0d 02 d0 20 20 20 20 20 20 20 |R0],#1... | 00000870 20 20 20 20 4d 4f 56 20 52 31 30 2c 52 31 30 2c | MOV R10,R10,| 00000880 41 53 4c 23 32 34 0d 02 da 04 0d 02 e4 1f 20 20 |ASL#24........ | 00000890 20 20 20 20 20 20 20 20 3b 20 4d 6f 76 65 20 6c | ; Move l| 000008a0 69 6e 65 20 6c 65 66 74 2e 0d 02 ee 25 20 20 20 |ine left....% | 000008b0 20 20 20 20 20 20 20 3b 20 53 6f 75 72 63 65 20 | ; Source | 000008c0 6e 6f 77 20 61 6c 69 67 6e 65 64 2e 2e 2e 0d 02 |now aligned.....| 000008d0 f8 1f 20 20 20 20 20 20 20 20 20 20 42 49 43 20 |.. BIC | 000008e0 20 20 20 52 33 2c 52 31 32 2c 23 33 31 0d 03 02 | R3,R12,#31...| 000008f0 1f 20 20 20 20 20 20 20 20 20 20 52 53 42 53 20 |. RSBS | 00000900 20 20 52 33 2c 52 33 2c 23 31 36 30 0d 03 0c 23 | R3,R3,#160...#| 00000910 20 20 20 20 20 20 20 20 20 20 41 44 44 20 20 20 | ADD | 00000920 20 52 33 2c 52 33 2c 52 33 2c 4c 53 4c 23 33 0d | R3,R3,R3,LSL#3.| 00000930 03 16 31 20 20 20 20 20 20 20 20 20 20 41 44 44 |..1 ADD| 00000940 47 45 20 20 50 43 2c 50 43 2c 52 33 2c 4c 53 52 |GE PC,PC,R3,LSR| 00000950 23 32 20 20 20 20 3b 28 33 32 3e 3e 32 3d 38 29 |#2 ;(32>>2=8)| 00000960 0d 03 20 15 20 20 20 20 20 20 20 20 20 20 42 20 |.. . B | 00000970 65 72 72 6f 72 0d 03 2a 1b 5d 3a e3 20 6c 25 3d |error..*.]:. l%=| 00000980 30 20 b8 20 34 3a 5b 4f 50 54 20 70 61 73 73 25 |0 . 4:[OPT pass%| 00000990 0d 03 34 1f 20 20 20 20 20 20 20 20 20 20 4d 4f |..4. MO| 000009a0 56 20 52 32 2c 52 31 30 2c 4c 53 52 23 32 34 0d |V R2,R10,LSR#24.| 000009b0 03 3e 20 20 20 20 20 20 20 20 20 20 20 4c 44 4d |.> LDM| 000009c0 49 41 20 52 30 21 2c 7b 52 33 2d 52 31 30 7d 0d |IA R0!,{R3-R10}.| 000009d0 03 48 1f 20 20 20 20 20 20 20 20 20 20 84 52 20 |.H. .R | 000009e0 52 32 2c 52 32 2c 52 33 2c 41 53 4c 23 38 0d 03 |R2,R2,R3,ASL#8..| 000009f0 52 1e 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 |R. MOV | 00000a00 52 33 2c 52 33 2c 4c 53 52 23 32 34 0d 03 5c 1f |R3,R3,LSR#24..\.| 00000a10 20 20 20 20 20 20 20 20 20 20 84 52 20 52 33 2c | .R R3,| 00000a20 52 33 2c 52 34 2c 41 53 4c 23 38 0d 03 66 1e 20 |R3,R4,ASL#8..f. | 00000a30 20 20 20 20 20 20 20 20 20 4d 4f 56 20 52 34 2c | MOV R4,| 00000a40 52 34 2c 4c 53 52 23 32 34 0d 03 70 1f 20 20 20 |R4,LSR#24..p. | 00000a50 20 20 20 20 20 20 20 84 52 20 52 34 2c 52 34 2c | .R R4,R4,| 00000a60 52 35 2c 41 53 4c 23 38 0d 03 7a 1e 20 20 20 20 |R5,ASL#8..z. | 00000a70 20 20 20 20 20 20 4d 4f 56 20 52 35 2c 52 35 2c | MOV R5,R5,| 00000a80 4c 53 52 23 32 34 0d 03 84 1f 20 20 20 20 20 20 |LSR#24.... | 00000a90 20 20 20 20 84 52 20 52 35 2c 52 35 2c 52 36 2c | .R R5,R5,R6,| 00000aa0 41 53 4c 23 38 0d 03 8e 1e 20 20 20 20 20 20 20 |ASL#8.... | 00000ab0 20 20 20 4d 4f 56 20 52 36 2c 52 36 2c 4c 53 52 | MOV R6,R6,LSR| 00000ac0 23 32 34 0d 03 98 1f 20 20 20 20 20 20 20 20 20 |#24.... | 00000ad0 20 84 52 20 52 36 2c 52 36 2c 52 37 2c 41 53 4c | .R R6,R6,R7,ASL| 00000ae0 23 38 0d 03 a2 1e 20 20 20 20 20 20 20 20 20 20 |#8.... | 00000af0 4d 4f 56 20 52 37 2c 52 37 2c 4c 53 52 23 32 34 |MOV R7,R7,LSR#24| 00000b00 0d 03 ac 1f 20 20 20 20 20 20 20 20 20 20 84 52 |.... .R| 00000b10 20 52 37 2c 52 37 2c 52 38 2c 41 53 4c 23 38 0d | R7,R7,R8,ASL#8.| 00000b20 03 b6 1e 20 20 20 20 20 20 20 20 20 20 4d 4f 56 |... MOV| 00000b30 20 52 38 2c 52 38 2c 4c 53 52 23 32 34 0d 03 c0 | R8,R8,LSR#24...| 00000b40 1f 20 20 20 20 20 20 20 20 20 20 84 52 20 52 38 |. .R R8| 00000b50 2c 52 38 2c 52 39 2c 41 53 4c 23 38 0d 03 ca 1e |,R8,R9,ASL#8....| 00000b60 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 52 39 | MOV R9| 00000b70 2c 52 39 2c 4c 53 52 23 32 34 0d 03 d4 20 20 20 |,R9,LSR#24... | 00000b80 20 20 20 20 20 20 20 20 84 52 20 52 39 2c 52 39 | .R R9,R9| 00000b90 2c 52 31 30 2c 41 53 4c 23 38 0d 03 de 1f 20 20 |,R10,ASL#8.... | 00000ba0 20 20 20 20 20 20 20 20 53 54 4d 49 41 20 52 31 | STMIA R1| 00000bb0 21 2c 7b 52 32 2d 52 39 7d 0d 03 e8 12 5d 3a ed |!,{R2-R9}....]:.| 00000bc0 3a 5b 4f 50 54 20 70 61 73 73 25 0d 03 f2 04 0d |:[OPT pass%.....| 00000bd0 03 fc 19 20 20 20 20 20 20 20 20 20 20 54 53 54 |... TST| 00000be0 20 52 31 32 2c 23 31 36 0d 04 06 21 20 20 20 20 | R12,#16...! | 00000bf0 20 20 20 20 20 20 4d 4f 56 4e 45 20 52 36 2c 52 | MOVNE R6,R| 00000c00 31 30 2c 4c 53 52 23 32 34 0d 04 10 22 20 20 20 |10,LSR#24..." | 00000c10 20 20 20 20 20 20 20 4c 44 4d 4e 45 49 41 20 52 | LDMNEIA R| 00000c20 30 21 2c 7b 52 37 2d 52 31 30 7d 0d 04 1a 21 20 |0!,{R7-R10}...! | 00000c30 20 20 20 20 20 20 20 20 20 84 52 4e 45 20 52 36 | .RNE R6| 00000c40 2c 52 36 2c 52 37 2c 41 53 4c 23 38 0d 04 24 20 |,R6,R7,ASL#8..$ | 00000c50 20 20 20 20 20 20 20 20 20 20 4d 4f 56 4e 45 20 | MOVNE | 00000c60 52 37 2c 52 37 2c 4c 53 52 23 32 34 0d 04 2e 21 |R7,R7,LSR#24...!| 00000c70 20 20 20 20 20 20 20 20 20 20 84 52 4e 45 20 52 | .RNE R| 00000c80 37 2c 52 37 2c 52 38 2c 41 53 4c 23 38 0d 04 38 |7,R7,R8,ASL#8..8| 00000c90 20 20 20 20 20 20 20 20 20 20 20 4d 4f 56 4e 45 | MOVNE| 00000ca0 20 52 38 2c 52 38 2c 4c 53 52 23 32 34 0d 04 42 | R8,R8,LSR#24..B| 00000cb0 21 20 20 20 20 20 20 20 20 20 20 84 52 4e 45 20 |! .RNE | 00000cc0 52 38 2c 52 38 2c 52 39 2c 41 53 4c 23 38 0d 04 |R8,R8,R9,ASL#8..| 00000cd0 4c 20 20 20 20 20 20 20 20 20 20 20 4d 4f 56 4e |L MOVN| 00000ce0 45 20 52 39 2c 52 39 2c 4c 53 52 23 32 34 0d 04 |E R9,R9,LSR#24..| 00000cf0 56 22 20 20 20 20 20 20 20 20 20 20 84 52 4e 45 |V" .RNE| 00000d00 20 52 39 2c 52 39 2c 52 31 30 2c 41 53 4c 23 38 | R9,R9,R10,ASL#8| 00000d10 0d 04 60 21 20 20 20 20 20 20 20 20 20 20 53 54 |..`! ST| 00000d20 4d 4e 45 49 41 20 52 31 21 2c 7b 52 36 2d 52 39 |MNEIA R1!,{R6-R9| 00000d30 7d 0d 04 6a 04 0d 04 74 18 20 20 20 20 20 20 20 |}..j...t. | 00000d40 20 20 20 54 53 54 20 52 31 32 2c 23 38 0d 04 7e | TST R12,#8..~| 00000d50 21 20 20 20 20 20 20 20 20 20 20 4d 4f 56 4e 45 |! MOVNE| 00000d60 20 52 38 2c 52 31 30 2c 4c 53 52 23 32 34 0d 04 | R8,R10,LSR#24..| 00000d70 88 22 20 20 20 20 20 20 20 20 20 20 4c 44 4d 4e |." LDMN| 00000d80 45 49 41 20 52 30 21 2c 7b 52 39 2d 52 31 30 7d |EIA R0!,{R9-R10}| 00000d90 0d 04 92 21 20 20 20 20 20 20 20 20 20 20 84 52 |...! .R| 00000da0 4e 45 20 52 38 2c 52 38 2c 52 39 2c 41 53 4c 23 |NE R8,R8,R9,ASL#| 00000db0 38 0d 04 9c 20 20 20 20 20 20 20 20 20 20 20 4d |8... M| 00000dc0 4f 56 4e 45 20 52 39 2c 52 39 2c 4c 53 52 23 32 |OVNE R9,R9,LSR#2| 00000dd0 34 0d 04 a6 22 20 20 20 20 20 20 20 20 20 20 84 |4..." .| 00000de0 52 4e 45 20 52 39 2c 52 39 2c 52 31 30 2c 41 53 |RNE R9,R9,R10,AS| 00000df0 4c 23 38 0d 04 b0 21 20 20 20 20 20 20 20 20 20 |L#8...! | 00000e00 20 53 54 4d 4e 45 49 41 20 52 31 21 2c 7b 52 38 | STMNEIA R1!,{R8| 00000e10 2d 52 39 7d 0d 04 ba 04 0d 04 c4 18 20 20 20 20 |-R9}........ | 00000e20 20 20 20 20 20 20 54 53 54 20 52 31 32 2c 23 34 | TST R12,#4| 00000e30 0d 04 ce 21 20 20 20 20 20 20 20 20 20 20 4d 4f |...! MO| 00000e40 56 4e 45 20 52 39 2c 52 31 30 2c 4c 53 52 23 32 |VNE R9,R10,LSR#2| 00000e50 34 0d 04 d8 1f 20 20 20 20 20 20 20 20 20 20 4c |4.... L| 00000e60 44 52 4e 45 20 52 31 30 2c 5b 52 30 5d 2c 23 34 |DRNE R10,[R0],#4| 00000e70 0d 04 e2 22 20 20 20 20 20 20 20 20 20 20 84 52 |..." .R| 00000e80 4e 45 20 52 39 2c 52 39 2c 52 31 30 2c 41 53 4c |NE R9,R9,R10,ASL| 00000e90 23 38 0d 04 ec 1e 20 20 20 20 20 20 20 20 20 20 |#8.... | 00000ea0 53 54 52 4e 45 20 52 39 2c 5b 52 31 5d 2c 23 34 |STRNE R9,[R1],#4| 00000eb0 0d 04 f6 04 0d 05 00 1f 20 20 20 20 20 20 20 20 |........ | 00000ec0 20 20 4d 4f 56 20 52 39 2c 52 31 30 2c 4c 53 52 | MOV R9,R10,LSR| 00000ed0 23 32 34 0d 05 0a 04 0d 05 14 18 20 20 20 20 20 |#24........ | 00000ee0 20 20 20 20 20 54 53 54 20 52 31 32 2c 23 32 0d | TST R12,#2.| 00000ef0 05 1e 1f 20 20 20 20 20 20 20 20 20 20 53 54 52 |... STR| 00000f00 4e 45 42 20 52 39 2c 5b 52 31 5d 2c 23 31 0d 05 |NEB R9,[R1],#1..| 00000f10 28 1f 20 20 20 20 20 20 20 20 20 20 4c 44 52 4e |(. LDRN| 00000f20 45 42 20 52 39 2c 5b 52 30 5d 2c 23 31 0d 05 32 |EB R9,[R0],#1..2| 00000f30 1f 20 20 20 20 20 20 20 20 20 20 53 54 52 4e 45 |. STRNE| 00000f40 42 20 52 39 2c 5b 52 31 5d 2c 23 31 0d 05 3c 1f |B R9,[R1],#1..<.| 00000f50 20 20 20 20 20 20 20 20 20 20 4c 44 52 4e 45 42 | LDRNEB| 00000f60 20 52 39 2c 5b 52 30 5d 2c 23 31 0d 05 46 0e 20 | R9,[R0],#1..F. | 00000f70 20 20 20 20 20 20 20 20 20 0d 05 50 18 20 20 20 | ..P. | 00000f80 20 20 20 20 20 20 20 54 53 54 20 52 31 32 2c 23 | TST R12,#| 00000f90 31 0d 05 5a 1f 20 20 20 20 20 20 20 20 20 20 53 |1..Z. S| 00000fa0 54 52 4e 45 42 20 52 39 2c 5b 52 31 5d 2c 23 31 |TRNEB R9,[R1],#1| 00000fb0 0d 05 64 19 20 20 20 20 20 20 20 20 20 20 4d 4f |..d. MO| 00000fc0 56 53 20 50 43 2c 52 31 34 0d 05 6e 04 0d 05 78 |VS PC,R14..n...x| 00000fd0 14 2e 72 6c 6f 66 66 73 65 74 6d 6f 64 34 69 73 |..rloffsetmod4is| 00000fe0 32 0d 05 82 36 20 20 20 20 20 20 20 20 20 20 3b |2...6 ;| 00000ff0 20 46 69 72 73 74 2c 20 61 6c 69 67 6e 20 73 6f | First, align so| 00001000 75 72 63 65 20 74 6f 20 32 20 62 65 66 6f 72 65 |urce to 2 before| 00001010 20 61 20 77 6f 72 64 0d 05 8c 18 20 20 20 20 20 | a word.... | 00001020 20 20 20 20 20 80 20 52 32 2c 52 30 2c 23 33 0d | . R2,R0,#3.| 00001030 05 96 38 20 20 20 20 20 20 20 20 20 20 43 4d 50 |..8 CMP| 00001040 20 52 32 2c 23 33 20 20 20 20 20 20 20 20 20 20 | R2,#3 | 00001050 20 20 3b 69 66 20 6f 66 66 20 62 79 20 30 2c 20 | ;if off by 0, | 00001060 6d 6f 76 65 20 32 2e 0d 05 a0 38 20 20 20 20 20 |move 2....8 | 00001070 20 20 20 20 20 4c 44 52 45 51 42 20 52 33 2c 5b | LDREQB R3,[| 00001080 52 30 5d 2c 23 31 20 20 20 20 3b 69 66 20 6f 66 |R0],#1 ;if of| 00001090 66 20 62 79 20 31 2c 20 6d 6f 76 65 20 31 2e 0d |f by 1, move 1..| 000010a0 05 aa 38 20 20 20 20 20 20 20 20 20 20 53 54 52 |..8 STR| 000010b0 45 51 42 20 52 33 2c 5b 52 31 5d 2c 23 31 20 20 |EQB R3,[R1],#1 | 000010c0 20 20 3b 69 66 20 6f 66 66 20 62 79 20 32 2c 20 | ;if off by 2, | 000010d0 6d 6f 76 65 20 30 2e 0d 05 b4 38 20 20 20 20 20 |move 0....8 | 000010e0 20 20 20 20 20 53 55 42 45 51 20 52 31 32 2c 52 | SUBEQ R12,R| 000010f0 31 32 2c 23 31 20 20 20 20 20 3b 69 66 20 6f 66 |12,#1 ;if of| 00001100 66 20 62 79 20 33 2c 20 6d 6f 76 65 20 33 2e 0d |f by 3, move 3..| 00001110 05 be 17 20 20 20 20 20 20 20 20 20 20 43 4d 50 |... CMP| 00001120 20 52 32 2c 23 32 0d 05 c8 1f 20 20 20 20 20 20 | R2,#2.... | 00001130 20 20 20 20 4c 44 52 4e 45 42 20 52 33 2c 5b 52 | LDRNEB R3,[R| 00001140 30 5d 2c 23 31 0d 05 d2 1f 20 20 20 20 20 20 20 |0],#1.... | 00001150 20 20 20 53 54 52 4e 45 42 20 52 33 2c 5b 52 31 | STRNEB R3,[R1| 00001160 5d 2c 23 31 0d 05 dc 1e 20 20 20 20 20 20 20 20 |],#1.... | 00001170 20 20 53 55 42 4e 45 20 52 31 32 2c 52 31 32 2c | SUBNE R12,R12,| 00001180 23 31 0d 05 e6 17 20 20 20 20 20 20 20 20 20 20 |#1.... | 00001190 43 4d 50 20 52 32 2c 23 30 0d 05 f0 19 20 20 20 |CMP R2,#0.... | 000011a0 20 20 20 20 20 20 20 43 4d 50 4e 45 20 52 32 2c | CMPNE R2,| 000011b0 23 33 0d 05 fa 1f 20 20 20 20 20 20 20 20 20 20 |#3.... | 000011c0 4c 44 52 45 51 42 20 52 33 2c 5b 52 30 5d 2c 23 |LDREQB R3,[R0],#| 000011d0 31 0d 06 04 1f 20 20 20 20 20 20 20 20 20 20 53 |1.... S| 000011e0 54 52 45 51 42 20 52 33 2c 5b 52 31 5d 2c 23 31 |TREQB R3,[R1],#1| 000011f0 0d 06 0e 1e 20 20 20 20 20 20 20 20 20 20 53 55 |.... SU| 00001200 42 45 51 20 52 31 32 2c 52 31 32 2c 23 31 0d 06 |BEQ R12,R12,#1..| 00001210 18 04 0d 06 22 2c 20 20 20 20 20 20 20 20 20 20 |....", | 00001220 3b 20 4c 6f 61 64 20 32 20 74 6f 20 6d 61 6b 65 |; Load 2 to make| 00001230 20 75 73 20 61 6c 69 67 6e 65 64 2e 2e 2e 0d 06 | us aligned.....| 00001240 2c 1e 20 20 20 20 20 20 20 20 20 20 4c 44 52 42 |,. LDRB| 00001250 20 52 31 30 2c 5b 52 30 5d 2c 23 31 0d 06 36 1d | R10,[R0],#1..6.| 00001260 20 20 20 20 20 20 20 20 20 20 4c 44 52 42 20 52 | LDRB R| 00001270 39 2c 5b 52 30 5d 2c 23 31 0d 06 40 21 20 20 20 |9,[R0],#1..@! | 00001280 20 20 20 20 20 20 20 84 52 20 52 31 30 2c 52 31 | .R R10,R1| 00001290 30 2c 52 39 2c 41 53 4c 23 38 0d 06 4a 20 20 20 |0,R9,ASL#8..J | 000012a0 20 20 20 20 20 20 20 20 4d 4f 56 20 52 31 30 2c | MOV R10,| 000012b0 52 31 30 2c 41 53 4c 23 31 36 0d 06 54 0e 20 20 |R10,ASL#16..T. | 000012c0 20 20 20 20 20 20 20 20 0d 06 5e 1f 20 20 20 20 | ..^. | 000012d0 20 20 20 20 20 20 3b 20 4d 6f 76 65 20 6c 69 6e | ; Move lin| 000012e0 65 20 6c 65 66 74 2e 0d 06 68 25 20 20 20 20 20 |e left...h% | 000012f0 20 20 20 20 20 3b 20 53 6f 75 72 63 65 20 6e 6f | ; Source no| 00001300 77 20 61 6c 69 67 6e 65 64 2e 2e 2e 0d 06 72 1f |w aligned.....r.| 00001310 20 20 20 20 20 20 20 20 20 20 42 49 43 20 20 20 | BIC | 00001320 20 52 33 2c 52 31 32 2c 23 33 31 0d 06 7c 1f 20 | R3,R12,#31..|. | 00001330 20 20 20 20 20 20 20 20 20 52 53 42 53 20 20 20 | RSBS | 00001340 52 33 2c 52 33 2c 23 31 36 30 0d 06 86 23 20 20 |R3,R3,#160...# | 00001350 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 52 | ADD R| 00001360 33 2c 52 33 2c 52 33 2c 41 53 4c 23 33 0d 06 90 |3,R3,R3,ASL#3...| 00001370 31 20 20 20 20 20 20 20 20 20 20 41 44 44 47 45 |1 ADDGE| 00001380 20 20 50 43 2c 50 43 2c 52 33 2c 4c 53 52 23 32 | PC,PC,R3,LSR#2| 00001390 20 20 20 20 3b 28 33 32 3e 3e 32 3d 38 29 0d 06 | ;(32>>2=8)..| 000013a0 9a 15 20 20 20 20 20 20 20 20 20 20 42 20 65 72 |.. B er| 000013b0 72 6f 72 0d 06 a4 1b 5d 3a e3 20 6c 25 3d 30 20 |ror....]:. l%=0 | 000013c0 b8 20 34 3a 5b 4f 50 54 20 70 61 73 73 25 0d 06 |. 4:[OPT pass%..| 000013d0 ae 1f 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 |.. MOV | 000013e0 52 32 2c 52 31 30 2c 4c 53 52 23 31 36 0d 06 b8 |R2,R10,LSR#16...| 000013f0 20 20 20 20 20 20 20 20 20 20 20 4c 44 4d 49 41 | LDMIA| 00001400 20 52 30 21 2c 7b 52 33 2d 52 31 30 7d 0d 06 c2 | R0!,{R3-R10}...| 00001410 20 20 20 20 20 20 20 20 20 20 20 84 52 20 52 32 | .R R2| 00001420 2c 52 32 2c 52 33 2c 41 53 4c 23 31 36 0d 06 cc |,R2,R3,ASL#16...| 00001430 1e 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 52 |. MOV R| 00001440 33 2c 52 33 2c 4c 53 52 23 31 36 0d 06 d6 20 20 |3,R3,LSR#16... | 00001450 20 20 20 20 20 20 20 20 20 84 52 20 52 33 2c 52 | .R R3,R| 00001460 33 2c 52 34 2c 41 53 4c 23 31 36 0d 06 e0 1e 20 |3,R4,ASL#16.... | 00001470 20 20 20 20 20 20 20 20 20 4d 4f 56 20 52 34 2c | MOV R4,| 00001480 52 34 2c 4c 53 52 23 31 36 0d 06 ea 20 20 20 20 |R4,LSR#16... | 00001490 20 20 20 20 20 20 20 84 52 20 52 34 2c 52 34 2c | .R R4,R4,| 000014a0 52 35 2c 41 53 4c 23 31 36 0d 06 f4 1e 20 20 20 |R5,ASL#16.... | 000014b0 20 20 20 20 20 20 20 4d 4f 56 20 52 35 2c 52 35 | MOV R5,R5| 000014c0 2c 4c 53 52 23 31 36 0d 06 fe 20 20 20 20 20 20 |,LSR#16... | 000014d0 20 20 20 20 20 84 52 20 52 35 2c 52 35 2c 52 36 | .R R5,R5,R6| 000014e0 2c 41 53 4c 23 31 36 0d 07 08 1e 20 20 20 20 20 |,ASL#16.... | 000014f0 20 20 20 20 20 4d 4f 56 20 52 36 2c 52 36 2c 4c | MOV R6,R6,L| 00001500 53 52 23 31 36 0d 07 12 20 20 20 20 20 20 20 20 |SR#16... | 00001510 20 20 20 84 52 20 52 36 2c 52 36 2c 52 37 2c 41 | .R R6,R6,R7,A| 00001520 53 4c 23 31 36 0d 07 1c 1e 20 20 20 20 20 20 20 |SL#16.... | 00001530 20 20 20 4d 4f 56 20 52 37 2c 52 37 2c 4c 53 52 | MOV R7,R7,LSR| 00001540 23 31 36 0d 07 26 20 20 20 20 20 20 20 20 20 20 |#16..& | 00001550 20 84 52 20 52 37 2c 52 37 2c 52 38 2c 41 53 4c | .R R7,R7,R8,ASL| 00001560 23 31 36 0d 07 30 1e 20 20 20 20 20 20 20 20 20 |#16..0. | 00001570 20 4d 4f 56 20 52 38 2c 52 38 2c 4c 53 52 23 31 | MOV R8,R8,LSR#1| 00001580 36 0d 07 3a 20 20 20 20 20 20 20 20 20 20 20 84 |6..: .| 00001590 52 20 52 38 2c 52 38 2c 52 39 2c 41 53 4c 23 31 |R R8,R8,R9,ASL#1| 000015a0 36 0d 07 44 1e 20 20 20 20 20 20 20 20 20 20 4d |6..D. M| 000015b0 4f 56 20 52 39 2c 52 39 2c 4c 53 52 23 31 36 0d |OV R9,R9,LSR#16.| 000015c0 07 4e 21 20 20 20 20 20 20 20 20 20 20 84 52 20 |.N! .R | 000015d0 52 39 2c 52 39 2c 52 31 30 2c 41 53 4c 23 31 36 |R9,R9,R10,ASL#16| 000015e0 0d 07 58 1f 20 20 20 20 20 20 20 20 20 20 53 54 |..X. ST| 000015f0 4d 49 41 20 52 31 21 2c 7b 52 32 2d 52 39 7d 0d |MIA R1!,{R2-R9}.| 00001600 07 62 12 5d 3a ed 3a 5b 4f 50 54 20 70 61 73 73 |.b.]:.:[OPT pass| 00001610 25 0d 07 6c 19 20 20 20 20 20 20 20 20 20 20 54 |%..l. T| 00001620 53 54 20 52 31 32 2c 23 31 36 0d 07 76 21 20 20 |ST R12,#16..v! | 00001630 20 20 20 20 20 20 20 20 4d 4f 56 4e 45 20 52 36 | MOVNE R6| 00001640 2c 52 31 30 2c 4c 53 52 23 31 36 0d 07 80 22 20 |,R10,LSR#16..." | 00001650 20 20 20 20 20 20 20 20 20 4c 44 4d 4e 45 49 41 | LDMNEIA| 00001660 20 52 30 21 2c 7b 52 37 2d 52 31 30 7d 0d 07 8a | R0!,{R7-R10}...| 00001670 22 20 20 20 20 20 20 20 20 20 20 84 52 4e 45 20 |" .RNE | 00001680 52 36 2c 52 36 2c 52 37 2c 41 53 4c 23 31 36 0d |R6,R6,R7,ASL#16.| 00001690 07 94 20 20 20 20 20 20 20 20 20 20 20 4d 4f 56 |.. MOV| 000016a0 4e 45 20 52 37 2c 52 37 2c 4c 53 52 23 31 36 0d |NE R7,R7,LSR#16.| 000016b0 07 9e 22 20 20 20 20 20 20 20 20 20 20 84 52 4e |.." .RN| 000016c0 45 20 52 37 2c 52 37 2c 52 38 2c 41 53 4c 23 31 |E R7,R7,R8,ASL#1| 000016d0 36 0d 07 a8 20 20 20 20 20 20 20 20 20 20 20 4d |6... M| 000016e0 4f 56 4e 45 20 52 38 2c 52 38 2c 4c 53 52 23 31 |OVNE R8,R8,LSR#1| 000016f0 36 0d 07 b2 22 20 20 20 20 20 20 20 20 20 20 84 |6..." .| 00001700 52 4e 45 20 52 38 2c 52 38 2c 52 39 2c 41 53 4c |RNE R8,R8,R9,ASL| 00001710 23 31 36 0d 07 bc 20 20 20 20 20 20 20 20 20 20 |#16... | 00001720 20 4d 4f 56 4e 45 20 52 39 2c 52 39 2c 4c 53 52 | MOVNE R9,R9,LSR| 00001730 23 31 36 0d 07 c6 23 20 20 20 20 20 20 20 20 20 |#16...# | 00001740 20 84 52 4e 45 20 52 39 2c 52 39 2c 52 31 30 2c | .RNE R9,R9,R10,| 00001750 41 53 4c 23 31 36 0d 07 d0 21 20 20 20 20 20 20 |ASL#16...! | 00001760 20 20 20 20 53 54 4d 4e 45 49 41 20 52 31 21 2c | STMNEIA R1!,| 00001770 7b 52 36 2d 52 39 7d 0d 07 da 04 0d 07 e4 18 20 |{R6-R9}........ | 00001780 20 20 20 20 20 20 20 20 20 54 53 54 20 52 31 32 | TST R12| 00001790 2c 23 38 0d 07 ee 21 20 20 20 20 20 20 20 20 20 |,#8...! | 000017a0 20 4d 4f 56 4e 45 20 52 38 2c 52 31 30 2c 4c 53 | MOVNE R8,R10,LS| 000017b0 52 23 31 36 0d 07 f8 22 20 20 20 20 20 20 20 20 |R#16..." | 000017c0 20 20 4c 44 4d 4e 45 49 41 20 52 30 21 2c 7b 52 | LDMNEIA R0!,{R| 000017d0 39 2d 52 31 30 7d 0d 08 02 22 20 20 20 20 20 20 |9-R10}..." | 000017e0 20 20 20 20 84 52 4e 45 20 52 38 2c 52 38 2c 52 | .RNE R8,R8,R| 000017f0 39 2c 41 53 4c 23 31 36 0d 08 0c 20 20 20 20 20 |9,ASL#16... | 00001800 20 20 20 20 20 20 4d 4f 56 4e 45 20 52 39 2c 52 | MOVNE R9,R| 00001810 39 2c 4c 53 52 23 31 36 0d 08 16 23 20 20 20 20 |9,LSR#16...# | 00001820 20 20 20 20 20 20 84 52 4e 45 20 52 39 2c 52 39 | .RNE R9,R9| 00001830 2c 52 31 30 2c 41 53 4c 23 31 36 0d 08 20 21 20 |,R10,ASL#16.. ! | 00001840 20 20 20 20 20 20 20 20 20 53 54 4d 4e 45 49 41 | STMNEIA| 00001850 20 52 31 21 2c 7b 52 38 2d 52 39 7d 0d 08 2a 04 | R1!,{R8-R9}..*.| 00001860 0d 08 34 18 20 20 20 20 20 20 20 20 20 20 54 53 |..4. TS| 00001870 54 20 52 31 32 2c 23 34 0d 08 3e 21 20 20 20 20 |T R12,#4..>! | 00001880 20 20 20 20 20 20 4d 4f 56 4e 45 20 52 39 2c 52 | MOVNE R9,R| 00001890 31 30 2c 4c 53 52 23 31 36 0d 08 48 1f 20 20 20 |10,LSR#16..H. | 000018a0 20 20 20 20 20 20 20 4c 44 52 4e 45 20 52 31 30 | LDRNE R10| 000018b0 2c 5b 52 30 5d 2c 23 34 0d 08 52 23 20 20 20 20 |,[R0],#4..R# | 000018c0 20 20 20 20 20 20 84 52 4e 45 20 52 39 2c 52 39 | .RNE R9,R9| 000018d0 2c 52 31 30 2c 41 53 4c 23 31 36 0d 08 5c 1e 20 |,R10,ASL#16..\. | 000018e0 20 20 20 20 20 20 20 20 20 53 54 52 4e 45 20 52 | STRNE R| 000018f0 39 2c 5b 52 31 5d 2c 23 34 0d 08 66 04 0d 08 70 |9,[R1],#4..f...p| 00001900 1f 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 52 |. MOV R| 00001910 39 2c 52 31 30 2c 4c 53 52 23 31 36 0d 08 7a 04 |9,R10,LSR#16..z.| 00001920 0d 08 84 18 20 20 20 20 20 20 20 20 20 20 54 53 |.... TS| 00001930 54 20 52 31 32 2c 23 32 0d 08 8e 1f 20 20 20 20 |T R12,#2.... | 00001940 20 20 20 20 20 20 53 54 52 4e 45 42 20 52 39 2c | STRNEB R9,| 00001950 5b 52 31 5d 2c 23 31 0d 08 98 1f 20 20 20 20 20 |[R1],#1.... | 00001960 20 20 20 20 20 4d 4f 56 4e 45 20 52 39 2c 52 39 | MOVNE R9,R9| 00001970 2c 4c 53 52 23 38 0d 08 a2 1f 20 20 20 20 20 20 |,LSR#8.... | 00001980 20 20 20 20 53 54 52 4e 45 42 20 52 39 2c 5b 52 | STRNEB R9,[R| 00001990 31 5d 2c 23 31 0d 08 ac 1a 20 20 20 20 20 20 20 |1],#1.... | 000019a0 20 20 20 54 53 54 4e 45 20 52 31 32 2c 23 31 0d | TSTNE R12,#1.| 000019b0 08 b6 1f 20 20 20 20 20 20 20 20 20 20 4c 44 52 |... LDR| 000019c0 4e 45 42 20 52 39 2c 5b 52 30 5d 2c 23 31 0d 08 |NEB R9,[R0],#1..| 000019d0 c0 0e 20 20 20 20 20 20 20 20 20 20 0d 08 ca 18 |.. ....| 000019e0 20 20 20 20 20 20 20 20 20 20 54 53 54 20 52 31 | TST R1| 000019f0 32 2c 23 31 0d 08 d4 1f 20 20 20 20 20 20 20 20 |2,#1.... | 00001a00 20 20 53 54 52 4e 45 42 20 52 39 2c 5b 52 31 5d | STRNEB R9,[R1]| 00001a10 2c 23 31 0d 08 de 19 20 20 20 20 20 20 20 20 20 |,#1.... | 00001a20 20 4d 4f 56 53 20 50 43 2c 52 31 34 0d 08 e8 04 | MOVS PC,R14....| 00001a30 0d 08 f2 14 2e 72 6c 6f 66 66 73 65 74 6d 6f 64 |.....rloffsetmod| 00001a40 34 69 73 33 0d 08 fc 36 20 20 20 20 20 20 20 20 |4is3...6 | 00001a50 20 20 3b 20 46 69 72 73 74 2c 20 61 6c 69 67 6e | ; First, align| 00001a60 20 73 6f 75 72 63 65 20 74 6f 20 33 20 62 65 66 | source to 3 bef| 00001a70 6f 72 65 20 61 20 77 6f 72 64 0d 09 06 18 20 20 |ore a word.... | 00001a80 20 20 20 20 20 20 20 20 80 20 52 32 2c 52 30 2c | . R2,R0,| 00001a90 23 33 0d 09 10 38 20 20 20 20 20 20 20 20 20 20 |#3...8 | 00001aa0 43 4d 50 20 52 32 2c 23 32 20 20 20 20 20 20 20 |CMP R2,#2 | 00001ab0 20 20 20 20 20 3b 69 66 20 6f 66 66 20 62 79 20 | ;if off by | 00001ac0 30 2c 20 6d 6f 76 65 20 31 2e 0d 09 1a 38 20 20 |0, move 1....8 | 00001ad0 20 20 20 20 20 20 20 20 4c 44 52 45 51 42 20 52 | LDREQB R| 00001ae0 33 2c 5b 52 30 5d 2c 23 31 20 20 20 20 3b 69 66 |3,[R0],#1 ;if| 00001af0 20 6f 66 66 20 62 79 20 31 2c 20 6d 6f 76 65 20 | off by 1, move | 00001b00 30 2e 0d 09 24 38 20 20 20 20 20 20 20 20 20 20 |0...$8 | 00001b10 53 54 52 45 51 42 20 52 33 2c 5b 52 31 5d 2c 23 |STREQB R3,[R1],#| 00001b20 31 20 20 20 20 3b 69 66 20 6f 66 66 20 62 79 20 |1 ;if off by | 00001b30 32 2c 20 6d 6f 76 65 20 33 2e 0d 09 2e 38 20 20 |2, move 3....8 | 00001b40 20 20 20 20 20 20 20 20 53 55 42 45 51 20 52 31 | SUBEQ R1| 00001b50 32 2c 52 31 32 2c 23 31 20 20 20 20 20 3b 69 66 |2,R12,#1 ;if| 00001b60 20 6f 66 66 20 62 79 20 33 2c 20 6d 6f 76 65 20 | off by 3, move | 00001b70 32 2e 0d 09 38 1f 20 20 20 20 20 20 20 20 20 20 |2...8. | 00001b80 4c 44 52 47 45 42 20 52 33 2c 5b 52 30 5d 2c 23 |LDRGEB R3,[R0],#| 00001b90 31 0d 09 42 1f 20 20 20 20 20 20 20 20 20 20 53 |1..B. S| 00001ba0 54 52 47 45 42 20 52 33 2c 5b 52 31 5d 2c 23 31 |TRGEB R3,[R1],#1| 00001bb0 0d 09 4c 1e 20 20 20 20 20 20 20 20 20 20 53 55 |..L. SU| 00001bc0 42 47 45 20 52 31 32 2c 52 31 32 2c 23 31 0d 09 |BGE R12,R12,#1..| 00001bd0 56 17 20 20 20 20 20 20 20 20 20 20 43 4d 50 20 |V. CMP | 00001be0 52 32 2c 23 31 0d 09 60 1f 20 20 20 20 20 20 20 |R2,#1..`. | 00001bf0 20 20 20 4c 44 52 4e 45 42 20 52 33 2c 5b 52 30 | LDRNEB R3,[R0| 00001c00 5d 2c 23 31 0d 09 6a 1f 20 20 20 20 20 20 20 20 |],#1..j. | 00001c10 20 20 53 54 52 4e 45 42 20 52 33 2c 5b 52 31 5d | STRNEB R3,[R1]| 00001c20 2c 23 31 0d 09 74 1e 20 20 20 20 20 20 20 20 20 |,#1..t. | 00001c30 20 53 55 42 4e 45 20 52 31 32 2c 52 31 32 2c 23 | SUBNE R12,R12,#| 00001c40 31 0d 09 7e 04 0d 09 88 2c 20 20 20 20 20 20 20 |1..~...., | 00001c50 20 20 20 3b 20 4c 6f 61 64 20 31 20 74 6f 20 6d | ; Load 1 to m| 00001c60 61 6b 65 20 75 73 20 61 6c 69 67 6e 65 64 2e 2e |ake us aligned..| 00001c70 2e 0d 09 92 1e 20 20 20 20 20 20 20 20 20 20 4c |..... L| 00001c80 44 52 42 20 52 31 30 2c 5b 52 30 5d 2c 23 31 0d |DRB R10,[R0],#1.| 00001c90 09 9c 1d 20 20 20 20 20 20 20 20 20 20 4c 44 52 |... LDR| 00001ca0 42 20 52 39 2c 5b 52 30 5d 2c 23 31 0d 09 a6 21 |B R9,[R0],#1...!| 00001cb0 20 20 20 20 20 20 20 20 20 20 84 52 20 52 31 30 | .R R10| 00001cc0 2c 52 31 30 2c 52 39 2c 41 53 4c 23 38 0d 09 b0 |,R10,R9,ASL#8...| 00001cd0 1d 20 20 20 20 20 20 20 20 20 20 4c 44 52 42 20 |. LDRB | 00001ce0 52 39 2c 5b 52 30 5d 2c 23 31 0d 09 ba 22 20 20 |R9,[R0],#1..." | 00001cf0 20 20 20 20 20 20 20 20 84 52 20 52 31 30 2c 52 | .R R10,R| 00001d00 31 30 2c 52 39 2c 41 53 4c 23 31 36 0d 09 c4 1f |10,R9,ASL#16....| 00001d10 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 52 31 | MOV R1| 00001d20 30 2c 52 31 30 2c 41 53 4c 23 38 0d 09 ce 04 0d |0,R10,ASL#8.....| 00001d30 09 d8 1f 20 20 20 20 20 20 20 20 20 20 3b 20 4d |... ; M| 00001d40 6f 76 65 20 6c 69 6e 65 20 6c 65 66 74 2e 0d 09 |ove line left...| 00001d50 e2 25 20 20 20 20 20 20 20 20 20 20 3b 20 53 6f |.% ; So| 00001d60 75 72 63 65 20 6e 6f 77 20 61 6c 69 67 6e 65 64 |urce now aligned| 00001d70 2e 2e 2e 0d 09 ec 1f 20 20 20 20 20 20 20 20 20 |....... | 00001d80 20 42 49 43 20 20 20 20 52 33 2c 52 31 32 2c 23 | BIC R3,R12,#| 00001d90 33 31 0d 09 f6 1f 20 20 20 20 20 20 20 20 20 20 |31.... | 00001da0 52 53 42 53 20 20 20 52 33 2c 52 33 2c 23 31 36 |RSBS R3,R3,#16| 00001db0 30 0d 0a 00 23 20 20 20 20 20 20 20 20 20 20 41 |0...# A| 00001dc0 44 44 20 20 20 20 52 33 2c 52 33 2c 52 33 2c 4c |DD R3,R3,R3,L| 00001dd0 53 4c 23 33 0d 0a 0a 31 20 20 20 20 20 20 20 20 |SL#3...1 | 00001de0 20 20 41 44 44 47 45 20 20 50 43 2c 50 43 2c 52 | ADDGE PC,PC,R| 00001df0 33 2c 4c 53 52 23 32 20 20 20 20 3b 28 33 32 3e |3,LSR#2 ;(32>| 00001e00 3e 32 3d 38 29 0d 0a 14 15 20 20 20 20 20 20 20 |>2=8).... | 00001e10 20 20 20 42 20 65 72 72 6f 72 0d 0a 1e 1b 5d 3a | B error....]:| 00001e20 e3 20 6c 25 3d 30 20 b8 20 34 3a 5b 4f 50 54 20 |. l%=0 . 4:[OPT | 00001e30 70 61 73 73 25 0d 0a 28 1e 20 20 20 20 20 20 20 |pass%..(. | 00001e40 20 20 20 4d 4f 56 20 52 32 2c 52 31 30 2c 4c 53 | MOV R2,R10,LS| 00001e50 52 23 38 0d 0a 32 20 20 20 20 20 20 20 20 20 20 |R#8..2 | 00001e60 20 4c 44 4d 49 41 20 52 30 21 2c 7b 52 33 2d 52 | LDMIA R0!,{R3-R| 00001e70 31 30 7d 0d 0a 3c 20 20 20 20 20 20 20 20 20 20 |10}..< | 00001e80 20 84 52 20 52 32 2c 52 32 2c 52 33 2c 41 53 4c | .R R2,R2,R3,ASL| 00001e90 23 32 34 0d 0a 46 1d 20 20 20 20 20 20 20 20 20 |#24..F. | 00001ea0 20 4d 4f 56 20 52 33 2c 52 33 2c 4c 53 52 23 38 | MOV R3,R3,LSR#8| 00001eb0 0d 0a 50 20 20 20 20 20 20 20 20 20 20 20 84 52 |..P .R| 00001ec0 20 52 33 2c 52 33 2c 52 34 2c 41 53 4c 23 32 34 | R3,R3,R4,ASL#24| 00001ed0 0d 0a 5a 1d 20 20 20 20 20 20 20 20 20 20 4d 4f |..Z. MO| 00001ee0 56 20 52 34 2c 52 34 2c 4c 53 52 23 38 0d 0a 64 |V R4,R4,LSR#8..d| 00001ef0 20 20 20 20 20 20 20 20 20 20 20 84 52 20 52 34 | .R R4| 00001f00 2c 52 34 2c 52 35 2c 41 53 4c 23 32 34 0d 0a 6e |,R4,R5,ASL#24..n| 00001f10 1d 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 52 |. MOV R| 00001f20 35 2c 52 35 2c 4c 53 52 23 38 0d 0a 78 20 20 20 |5,R5,LSR#8..x | 00001f30 20 20 20 20 20 20 20 20 84 52 20 52 35 2c 52 35 | .R R5,R5| 00001f40 2c 52 36 2c 41 53 4c 23 32 34 0d 0a 82 1d 20 20 |,R6,ASL#24.... | 00001f50 20 20 20 20 20 20 20 20 4d 4f 56 20 52 36 2c 52 | MOV R6,R| 00001f60 36 2c 4c 53 52 23 38 0d 0a 8c 20 20 20 20 20 20 |6,LSR#8... | 00001f70 20 20 20 20 20 84 52 20 52 36 2c 52 36 2c 52 37 | .R R6,R6,R7| 00001f80 2c 41 53 4c 23 32 34 0d 0a 96 1d 20 20 20 20 20 |,ASL#24.... | 00001f90 20 20 20 20 20 4d 4f 56 20 52 37 2c 52 37 2c 4c | MOV R7,R7,L| 00001fa0 53 52 23 38 0d 0a a0 20 20 20 20 20 20 20 20 20 |SR#8... | 00001fb0 20 20 84 52 20 52 37 2c 52 37 2c 52 38 2c 41 53 | .R R7,R7,R8,AS| 00001fc0 4c 23 32 34 0d 0a aa 1d 20 20 20 20 20 20 20 20 |L#24.... | 00001fd0 20 20 4d 4f 56 20 52 38 2c 52 38 2c 4c 53 52 23 | MOV R8,R8,LSR#| 00001fe0 38 0d 0a b4 20 20 20 20 20 20 20 20 20 20 20 84 |8... .| 00001ff0 52 20 52 38 2c 52 38 2c 52 39 2c 41 53 4c 23 32 |R R8,R8,R9,ASL#2| 00002000 34 0d 0a be 1d 20 20 20 20 20 20 20 20 20 20 4d |4.... M| 00002010 4f 56 20 52 39 2c 52 39 2c 4c 53 52 23 38 0d 0a |OV R9,R9,LSR#8..| 00002020 c8 21 20 20 20 20 20 20 20 20 20 20 84 52 20 52 |.! .R R| 00002030 39 2c 52 39 2c 52 31 30 2c 41 53 4c 23 32 34 0d |9,R9,R10,ASL#24.| 00002040 0a d2 1f 20 20 20 20 20 20 20 20 20 20 53 54 4d |... STM| 00002050 49 41 20 52 31 21 2c 7b 52 32 2d 52 39 7d 0d 0a |IA R1!,{R2-R9}..| 00002060 dc 12 5d 3a ed 3a 5b 4f 50 54 20 70 61 73 73 25 |..]:.:[OPT pass%| 00002070 0d 0a e6 04 0d 0a f0 19 20 20 20 20 20 20 20 20 |........ | 00002080 20 20 54 53 54 20 52 31 32 2c 23 31 36 0d 0a fa | TST R12,#16...| 00002090 20 20 20 20 20 20 20 20 20 20 20 4d 4f 56 4e 45 | MOVNE| 000020a0 20 52 36 2c 52 31 30 2c 4c 53 52 23 38 0d 0b 04 | R6,R10,LSR#8...| 000020b0 22 20 20 20 20 20 20 20 20 20 20 4c 44 4d 4e 45 |" LDMNE| 000020c0 49 41 20 52 30 21 2c 7b 52 37 2d 52 31 30 7d 0d |IA R0!,{R7-R10}.| 000020d0 0b 0e 22 20 20 20 20 20 20 20 20 20 20 84 52 4e |.." .RN| 000020e0 45 20 52 36 2c 52 36 2c 52 37 2c 41 53 4c 23 32 |E R6,R6,R7,ASL#2| 000020f0 34 0d 0b 18 1f 20 20 20 20 20 20 20 20 20 20 4d |4.... M| 00002100 4f 56 4e 45 20 52 37 2c 52 37 2c 4c 53 52 23 38 |OVNE R7,R7,LSR#8| 00002110 0d 0b 22 22 20 20 20 20 20 20 20 20 20 20 84 52 |.."" .R| 00002120 4e 45 20 52 37 2c 52 37 2c 52 38 2c 41 53 4c 23 |NE R7,R7,R8,ASL#| 00002130 32 34 0d 0b 2c 1f 20 20 20 20 20 20 20 20 20 20 |24..,. | 00002140 4d 4f 56 4e 45 20 52 38 2c 52 38 2c 4c 53 52 23 |MOVNE R8,R8,LSR#| 00002150 38 0d 0b 36 22 20 20 20 20 20 20 20 20 20 20 84 |8..6" .| 00002160 52 4e 45 20 52 38 2c 52 38 2c 52 39 2c 41 53 4c |RNE R8,R8,R9,ASL| 00002170 23 32 34 0d 0b 40 1f 20 20 20 20 20 20 20 20 20 |#24..@. | 00002180 20 4d 4f 56 4e 45 20 52 39 2c 52 39 2c 4c 53 52 | MOVNE R9,R9,LSR| 00002190 23 38 0d 0b 4a 23 20 20 20 20 20 20 20 20 20 20 |#8..J# | 000021a0 84 52 4e 45 20 52 39 2c 52 39 2c 52 31 30 2c 41 |.RNE R9,R9,R10,A| 000021b0 53 4c 23 32 34 0d 0b 54 21 20 20 20 20 20 20 20 |SL#24..T! | 000021c0 20 20 20 53 54 4d 4e 45 49 41 20 52 31 21 2c 7b | STMNEIA R1!,{| 000021d0 52 36 2d 52 39 7d 0d 0b 5e 04 0d 0b 68 18 20 20 |R6-R9}..^...h. | 000021e0 20 20 20 20 20 20 20 20 54 53 54 20 52 31 32 2c | TST R12,| 000021f0 23 38 0d 0b 72 20 20 20 20 20 20 20 20 20 20 20 |#8..r | 00002200 4d 4f 56 4e 45 20 52 38 2c 52 31 30 2c 4c 53 52 |MOVNE R8,R10,LSR| 00002210 23 38 0d 0b 7c 22 20 20 20 20 20 20 20 20 20 20 |#8..|" | 00002220 4c 44 4d 4e 45 49 41 20 52 30 21 2c 7b 52 39 2d |LDMNEIA R0!,{R9-| 00002230 52 31 30 7d 0d 0b 86 22 20 20 20 20 20 20 20 20 |R10}..." | 00002240 20 20 84 52 4e 45 20 52 38 2c 52 38 2c 52 39 2c | .RNE R8,R8,R9,| 00002250 41 53 4c 23 32 34 0d 0b 90 1f 20 20 20 20 20 20 |ASL#24.... | 00002260 20 20 20 20 4d 4f 56 4e 45 20 52 39 2c 52 39 2c | MOVNE R9,R9,| 00002270 4c 53 52 23 38 0d 0b 9a 23 20 20 20 20 20 20 20 |LSR#8...# | 00002280 20 20 20 84 52 4e 45 20 52 39 2c 52 39 2c 52 31 | .RNE R9,R9,R1| 00002290 30 2c 41 53 4c 23 32 34 0d 0b a4 21 20 20 20 20 |0,ASL#24...! | 000022a0 20 20 20 20 20 20 53 54 4d 4e 45 49 41 20 52 31 | STMNEIA R1| 000022b0 21 2c 7b 52 38 2d 52 39 7d 0d 0b ae 04 0d 0b b8 |!,{R8-R9}.......| 000022c0 18 20 20 20 20 20 20 20 20 20 20 54 53 54 20 52 |. TST R| 000022d0 31 32 2c 23 34 0d 0b c2 20 20 20 20 20 20 20 20 |12,#4... | 000022e0 20 20 20 4d 4f 56 4e 45 20 52 39 2c 52 31 30 2c | MOVNE R9,R10,| 000022f0 4c 53 52 23 38 0d 0b cc 1f 20 20 20 20 20 20 20 |LSR#8.... | 00002300 20 20 20 4c 44 52 4e 45 20 52 31 30 2c 5b 52 30 | LDRNE R10,[R0| 00002310 5d 2c 23 34 0d 0b d6 23 20 20 20 20 20 20 20 20 |],#4...# | 00002320 20 20 84 52 4e 45 20 52 39 2c 52 39 2c 52 31 30 | .RNE R9,R9,R10| 00002330 2c 41 53 4c 23 32 34 0d 0b e0 1e 20 20 20 20 20 |,ASL#24.... | 00002340 20 20 20 20 20 53 54 52 4e 45 20 52 39 2c 5b 52 | STRNE R9,[R| 00002350 31 5d 2c 23 34 0d 0b ea 04 0d 0b f4 1e 20 20 20 |1],#4........ | 00002360 20 20 20 20 20 20 20 4d 4f 56 20 52 39 2c 52 31 | MOV R9,R1| 00002370 30 2c 4c 53 52 23 38 0d 0b fe 04 0d 0c 08 18 20 |0,LSR#8........ | 00002380 20 20 20 20 20 20 20 20 20 54 53 54 20 52 31 32 | TST R12| 00002390 2c 23 32 0d 0c 12 1f 20 20 20 20 20 20 20 20 20 |,#2.... | 000023a0 20 53 54 52 4e 45 42 20 52 39 2c 5b 52 31 5d 2c | STRNEB R9,[R1],| 000023b0 23 31 0d 0c 1c 1f 20 20 20 20 20 20 20 20 20 20 |#1.... | 000023c0 4d 4f 56 4e 45 20 52 39 2c 52 39 2c 4c 53 52 23 |MOVNE R9,R9,LSR#| 000023d0 38 0d 0c 26 1f 20 20 20 20 20 20 20 20 20 20 53 |8..&. S| 000023e0 54 52 4e 45 42 20 52 39 2c 5b 52 31 5d 2c 23 31 |TRNEB R9,[R1],#1| 000023f0 0d 0c 30 1f 20 20 20 20 20 20 20 20 20 20 4d 4f |..0. MO| 00002400 56 4e 45 20 52 39 2c 52 39 2c 4c 53 52 23 38 0d |VNE R9,R9,LSR#8.| 00002410 0c 3a 0e 20 20 20 20 20 20 20 20 20 20 0d 0c 44 |.:. ..D| 00002420 18 20 20 20 20 20 20 20 20 20 20 54 53 54 20 52 |. TST R| 00002430 31 32 2c 23 31 0d 0c 4e 1f 20 20 20 20 20 20 20 |12,#1..N. | 00002440 20 20 20 53 54 52 4e 45 42 20 52 39 2c 5b 52 31 | STRNEB R9,[R1| 00002450 5d 2c 23 31 0d 0c 58 0a 2e 65 72 72 6f 72 0d 0c |],#1..X..error..| 00002460 62 19 20 20 20 20 20 20 20 20 20 20 4d 4f 56 53 |b. MOVS| 00002470 20 50 43 2c 52 31 34 0d 0c 6c 18 20 20 20 20 20 | PC,R14..l. | 00002480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0d | .| 00002490 0c 76 14 2e 6c 72 6f 66 66 73 65 74 6d 6f 64 34 |.v..lroffsetmod4| 000024a0 69 73 30 0d 0c 80 42 20 20 20 20 20 20 20 20 20 |is0...B | 000024b0 20 3b 20 57 65 20 61 72 65 20 6d 6f 76 69 6e 67 | ; We are moving| 000024c0 20 66 72 6f 6d 20 77 6f 72 64 20 62 6f 75 6e 64 | from word bound| 000024d0 61 72 79 20 74 6f 20 77 6f 72 64 20 62 6f 75 6e |ary to word boun| 000024e0 64 61 72 79 2e 0d 0c 8a 1b 20 20 20 20 20 20 20 |dary..... | 000024f0 20 20 20 41 44 44 20 52 30 2c 52 30 2c 52 31 32 | ADD R0,R0,R12| 00002500 0d 0c 94 1b 20 20 20 20 20 20 20 20 20 20 41 44 |.... AD| 00002510 44 20 52 31 2c 52 31 2c 52 31 32 0d 0c 9e 2d 20 |D R1,R1,R12...- | 00002520 20 20 20 20 20 20 20 20 20 3b 20 46 69 72 73 74 | ; First| 00002530 2c 20 61 6c 69 67 6e 20 73 6f 75 72 63 65 20 74 |, align source t| 00002540 6f 20 61 20 77 6f 72 64 0d 0c a8 17 20 20 20 20 |o a word.... | 00002550 20 20 20 20 20 20 54 53 54 20 52 30 2c 23 31 0d | TST R0,#1.| 00002560 0c b2 21 20 20 20 20 20 20 20 20 20 20 4c 44 52 |..! LDR| 00002570 4e 45 42 20 52 32 2c 5b 52 30 2c 23 2d 31 5d 21 |NEB R2,[R0,#-1]!| 00002580 0d 0c bc 21 20 20 20 20 20 20 20 20 20 20 53 54 |...! ST| 00002590 52 4e 45 42 20 52 32 2c 5b 52 31 2c 23 2d 31 5d |RNEB R2,[R1,#-1]| 000025a0 21 0d 0c c6 1e 20 20 20 20 20 20 20 20 20 20 53 |!.... S| 000025b0 55 42 4e 45 20 52 31 32 2c 52 31 32 2c 23 31 0d |UBNE R12,R12,#1.| 000025c0 0c d0 17 20 20 20 20 20 20 20 20 20 20 54 53 54 |... TST| 000025d0 20 52 30 2c 23 32 0d 0c da 21 20 20 20 20 20 20 | R0,#2...! | 000025e0 20 20 20 20 4c 44 52 4e 45 42 20 52 32 2c 5b 52 | LDRNEB R2,[R| 000025f0 30 2c 23 2d 31 5d 21 0d 0c e4 21 20 20 20 20 20 |0,#-1]!...! | 00002600 20 20 20 20 20 53 54 52 4e 45 42 20 52 32 2c 5b | STRNEB R2,[| 00002610 52 31 2c 23 2d 31 5d 21 0d 0c ee 21 20 20 20 20 |R1,#-1]!...! | 00002620 20 20 20 20 20 20 4c 44 52 4e 45 42 20 52 32 2c | LDRNEB R2,| 00002630 5b 52 30 2c 23 2d 31 5d 21 0d 0c f8 21 20 20 20 |[R0,#-1]!...! | 00002640 20 20 20 20 20 20 20 53 54 52 4e 45 42 20 52 32 | STRNEB R2| 00002650 2c 5b 52 31 2c 23 2d 31 5d 21 0d 0d 02 1e 20 20 |,[R1,#-1]!.... | 00002660 20 20 20 20 20 20 20 20 53 55 42 4e 45 20 52 31 | SUBNE R1| 00002670 32 2c 52 31 32 2c 23 32 0d 0d 0c 20 20 20 20 20 |2,R12,#2... | 00002680 20 20 20 20 20 20 3b 20 4d 6f 76 65 20 6c 69 6e | ; Move lin| 00002690 65 20 72 69 67 68 74 2e 0d 0d 16 1f 20 20 20 20 |e right..... | 000026a0 20 20 20 20 20 20 42 49 43 20 20 20 20 52 32 2c | BIC R2,| 000026b0 52 31 32 2c 23 33 31 0d 0d 20 1f 20 20 20 20 20 |R12,#31.. . | 000026c0 20 20 20 20 20 52 53 42 53 20 20 20 52 32 2c 52 | RSBS R2,R| 000026d0 32 2c 23 33 32 30 0d 0d 2a 31 20 20 20 20 20 20 |2,#320..*1 | 000026e0 20 20 20 20 41 44 44 47 45 20 20 50 43 2c 50 43 | ADDGE PC,PC| 000026f0 2c 52 32 2c 4c 53 52 23 32 20 20 20 20 3b 28 33 |,R2,LSR#2 ;(3| 00002700 32 3e 3e 32 3d 38 29 0d 0d 34 15 20 20 20 20 20 |2>>2=8)..4. | 00002710 20 20 20 20 20 42 20 65 72 72 6f 72 0d 0d 3e 23 | B error..>#| 00002720 20 20 20 20 20 20 20 20 20 20 4c 44 4d 44 42 20 | LDMDB | 00002730 52 30 21 2c 7b 52 32 2d 52 39 7d 20 20 3b 31 0d |R0!,{R2-R9} ;1.| 00002740 0d 48 1f 20 20 20 20 20 20 20 20 20 20 53 54 4d |.H. STM| 00002750 44 42 20 52 31 21 2c 7b 52 32 2d 52 39 7d 0d 0d |DB R1!,{R2-R9}..| 00002760 52 23 20 20 20 20 20 20 20 20 20 20 4c 44 4d 44 |R# LDMD| 00002770 42 20 52 30 21 2c 7b 52 32 2d 52 39 7d 20 20 3b |B R0!,{R2-R9} ;| 00002780 32 0d 0d 5c 1f 20 20 20 20 20 20 20 20 20 20 53 |2..\. S| 00002790 54 4d 44 42 20 52 31 21 2c 7b 52 32 2d 52 39 7d |TMDB R1!,{R2-R9}| 000027a0 0d 0d 66 23 20 20 20 20 20 20 20 20 20 20 4c 44 |..f# LD| 000027b0 4d 44 42 20 52 30 21 2c 7b 52 32 2d 52 39 7d 20 |MDB R0!,{R2-R9} | 000027c0 20 3b 33 0d 0d 70 1f 20 20 20 20 20 20 20 20 20 | ;3..p. | 000027d0 20 53 54 4d 44 42 20 52 31 21 2c 7b 52 32 2d 52 | STMDB R1!,{R2-R| 000027e0 39 7d 0d 0d 7a 23 20 20 20 20 20 20 20 20 20 20 |9}..z# | 000027f0 4c 44 4d 44 42 20 52 30 21 2c 7b 52 32 2d 52 39 |LDMDB R0!,{R2-R9| 00002800 7d 20 20 3b 34 0d 0d 84 1f 20 20 20 20 20 20 20 |} ;4.... | 00002810 20 20 20 53 54 4d 44 42 20 52 31 21 2c 7b 52 32 | STMDB R1!,{R2| 00002820 2d 52 39 7d 0d 0d 8e 23 20 20 20 20 20 20 20 20 |-R9}...# | 00002830 20 20 4c 44 4d 44 42 20 52 30 21 2c 7b 52 32 2d | LDMDB R0!,{R2-| 00002840 52 39 7d 20 20 3b 35 0d 0d 98 1f 20 20 20 20 20 |R9} ;5.... | 00002850 20 20 20 20 20 53 54 4d 44 42 20 52 31 21 2c 7b | STMDB R1!,{| 00002860 52 32 2d 52 39 7d 0d 0d a2 23 20 20 20 20 20 20 |R2-R9}...# | 00002870 20 20 20 20 4c 44 4d 44 42 20 52 30 21 2c 7b 52 | LDMDB R0!,{R| 00002880 32 2d 52 39 7d 20 20 3b 31 0d 0d ac 1f 20 20 20 |2-R9} ;1.... | 00002890 20 20 20 20 20 20 20 53 54 4d 44 42 20 52 31 21 | STMDB R1!| 000028a0 2c 7b 52 32 2d 52 39 7d 0d 0d b6 23 20 20 20 20 |,{R2-R9}...# | 000028b0 20 20 20 20 20 20 4c 44 4d 44 42 20 52 30 21 2c | LDMDB R0!,| 000028c0 7b 52 32 2d 52 39 7d 20 20 3b 32 0d 0d c0 1f 20 |{R2-R9} ;2.... | 000028d0 20 20 20 20 20 20 20 20 20 53 54 4d 44 42 20 52 | STMDB R| 000028e0 31 21 2c 7b 52 32 2d 52 39 7d 0d 0d ca 23 20 20 |1!,{R2-R9}...# | 000028f0 20 20 20 20 20 20 20 20 4c 44 4d 44 42 20 52 30 | LDMDB R0| 00002900 21 2c 7b 52 32 2d 52 39 7d 20 20 3b 33 0d 0d d4 |!,{R2-R9} ;3...| 00002910 1f 20 20 20 20 20 20 20 20 20 20 53 54 4d 44 42 |. STMDB| 00002920 20 52 31 21 2c 7b 52 32 2d 52 39 7d 0d 0d de 23 | R1!,{R2-R9}...#| 00002930 20 20 20 20 20 20 20 20 20 20 4c 44 4d 44 42 20 | LDMDB | 00002940 52 30 21 2c 7b 52 32 2d 52 39 7d 20 20 3b 34 0d |R0!,{R2-R9} ;4.| 00002950 0d e8 1f 20 20 20 20 20 20 20 20 20 20 53 54 4d |... STM| 00002960 44 42 20 52 31 21 2c 7b 52 32 2d 52 39 7d 0d 0d |DB R1!,{R2-R9}..| 00002970 f2 23 20 20 20 20 20 20 20 20 20 20 4c 44 4d 44 |.# LDMD| 00002980 42 20 52 30 21 2c 7b 52 32 2d 52 39 7d 20 20 3b |B R0!,{R2-R9} ;| 00002990 35 0d 0d fc 1f 20 20 20 20 20 20 20 20 20 20 53 |5.... S| 000029a0 54 4d 44 42 20 52 31 21 2c 7b 52 32 2d 52 39 7d |TMDB R1!,{R2-R9}| 000029b0 0d 0e 06 19 20 20 20 20 20 20 20 20 20 20 54 53 |.... TS| 000029c0 54 20 52 31 32 2c 23 31 36 0d 0e 10 21 20 20 20 |T R12,#16...! | 000029d0 20 20 20 20 20 20 20 4c 44 4d 4e 45 44 42 20 52 | LDMNEDB R| 000029e0 30 21 2c 7b 52 32 2d 52 35 7d 0d 0e 1a 21 20 20 |0!,{R2-R5}...! | 000029f0 20 20 20 20 20 20 20 20 53 54 4d 4e 45 44 42 20 | STMNEDB | 00002a00 52 31 21 2c 7b 52 32 2d 52 35 7d 0d 0e 24 18 20 |R1!,{R2-R5}..$. | 00002a10 20 20 20 20 20 20 20 20 20 54 53 54 20 52 31 32 | TST R12| 00002a20 2c 23 38 0d 0e 2e 21 20 20 20 20 20 20 20 20 20 |,#8...! | 00002a30 20 4c 44 4d 4e 45 44 42 20 52 30 21 2c 7b 52 32 | LDMNEDB R0!,{R2| 00002a40 2d 52 33 7d 0d 0e 38 21 20 20 20 20 20 20 20 20 |-R3}..8! | 00002a50 20 20 53 54 4d 4e 45 44 42 20 52 31 21 2c 7b 52 | STMNEDB R1!,{R| 00002a60 32 2d 52 33 7d 0d 0e 42 18 20 20 20 20 20 20 20 |2-R3}..B. | 00002a70 20 20 20 54 53 54 20 52 31 32 2c 23 34 0d 0e 4c | TST R12,#4..L| 00002a80 20 20 20 20 20 20 20 20 20 20 20 4c 44 52 4e 45 | LDRNE| 00002a90 20 52 32 2c 5b 52 30 2c 23 2d 34 5d 21 0d 0e 56 | R2,[R0,#-4]!..V| 00002aa0 20 20 20 20 20 20 20 20 20 20 20 53 54 52 4e 45 | STRNE| 00002ab0 20 52 32 2c 5b 52 31 2c 23 2d 34 5d 21 0d 0e 60 | R2,[R1,#-4]!..`| 00002ac0 18 20 20 20 20 20 20 20 20 20 20 54 53 54 20 52 |. TST R| 00002ad0 31 32 2c 23 32 0d 0e 6a 21 20 20 20 20 20 20 20 |12,#2..j! | 00002ae0 20 20 20 4c 44 52 4e 45 42 20 52 32 2c 5b 52 30 | LDRNEB R2,[R0| 00002af0 2c 23 2d 31 5d 21 0d 0e 74 21 20 20 20 20 20 20 |,#-1]!..t! | 00002b00 20 20 20 20 53 54 52 4e 45 42 20 52 32 2c 5b 52 | STRNEB R2,[R| 00002b10 31 2c 23 2d 31 5d 21 0d 0e 7e 21 20 20 20 20 20 |1,#-1]!..~! | 00002b20 20 20 20 20 20 4c 44 52 4e 45 42 20 52 32 2c 5b | LDRNEB R2,[| 00002b30 52 30 2c 23 2d 31 5d 21 0d 0e 88 21 20 20 20 20 |R0,#-1]!...! | 00002b40 20 20 20 20 20 20 53 54 52 4e 45 42 20 52 32 2c | STRNEB R2,| 00002b50 5b 52 31 2c 23 2d 31 5d 21 0d 0e 92 18 20 20 20 |[R1,#-1]!.... | 00002b60 20 20 20 20 20 20 20 54 53 54 20 52 31 32 2c 23 | TST R12,#| 00002b70 31 0d 0e 9c 21 20 20 20 20 20 20 20 20 20 20 4c |1...! L| 00002b80 44 52 4e 45 42 20 52 32 2c 5b 52 30 2c 23 2d 31 |DRNEB R2,[R0,#-1| 00002b90 5d 21 0d 0e a6 21 20 20 20 20 20 20 20 20 20 20 |]!...! | 00002ba0 53 54 52 4e 45 42 20 52 32 2c 5b 52 31 2c 23 2d |STRNEB R2,[R1,#-| 00002bb0 31 5d 21 0d 0e b0 19 20 20 20 20 20 20 20 20 20 |1]!.... | 00002bc0 20 4d 4f 56 53 20 50 43 2c 52 31 34 0d 0e ba 04 | MOVS PC,R14....| 00002bd0 0d 0e c4 14 2e 6c 72 6f 66 66 73 65 74 6d 6f 64 |.....lroffsetmod| 00002be0 34 69 73 33 0d 0e ce 1b 20 20 20 20 20 20 20 20 |4is3.... | 00002bf0 20 20 41 44 44 20 52 30 2c 52 30 2c 52 31 32 0d | ADD R0,R0,R12.| 00002c00 0e d8 1b 20 20 20 20 20 20 20 20 20 20 41 44 44 |... ADD| 00002c10 20 52 31 2c 52 31 2c 52 31 32 0d 0e e2 36 20 20 | R1,R1,R12...6 | 00002c20 20 20 20 20 20 20 20 20 3b 20 46 69 72 73 74 2c | ; First,| 00002c30 20 61 6c 69 67 6e 20 73 6f 75 72 63 65 20 74 6f | align source to| 00002c40 20 31 20 62 65 66 6f 72 65 20 61 20 77 6f 72 64 | 1 before a word| 00002c50 0d 0e ec 18 20 20 20 20 20 20 20 20 20 20 80 20 |.... . | 00002c60 52 32 2c 52 30 2c 23 33 0d 0e f6 39 20 20 20 20 |R2,R0,#3...9 | 00002c70 20 20 20 20 20 20 43 4d 50 20 52 32 2c 23 30 20 | CMP R2,#0 | 00002c80 20 20 20 20 20 20 20 20 20 20 20 20 3b 69 66 20 | ;if | 00002c90 6f 66 66 20 62 79 20 30 2c 20 6d 6f 76 65 20 33 |off by 0, move 3| 00002ca0 2e 0d 0f 00 39 20 20 20 20 20 20 20 20 20 20 4c |....9 L| 00002cb0 44 52 45 51 42 20 52 33 2c 5b 52 30 2c 23 2d 31 |DREQB R3,[R0,#-1| 00002cc0 5d 21 20 20 20 3b 69 66 20 6f 66 66 20 62 79 20 |]! ;if off by | 00002cd0 31 2c 20 6d 6f 76 65 20 30 2e 0d 0f 0a 39 20 20 |1, move 0....9 | 00002ce0 20 20 20 20 20 20 20 20 53 54 52 45 51 42 20 52 | STREQB R| 00002cf0 33 2c 5b 52 31 2c 23 2d 31 5d 21 20 20 20 3b 69 |3,[R1,#-1]! ;i| 00002d00 66 20 6f 66 66 20 62 79 20 32 2c 20 6d 6f 76 65 |f off by 2, move| 00002d10 20 31 2e 0d 0f 14 39 20 20 20 20 20 20 20 20 20 | 1....9 | 00002d20 20 53 55 42 45 51 20 20 52 31 32 2c 52 31 32 2c | SUBEQ R12,R12,| 00002d30 23 31 20 20 20 20 20 3b 69 66 20 6f 66 66 20 62 |#1 ;if off b| 00002d40 79 20 33 2c 20 6d 6f 76 65 20 32 2e 0d 0f 1e 17 |y 3, move 2.....| 00002d50 20 20 20 20 20 20 20 20 20 20 43 4d 50 20 52 32 | CMP R2| 00002d60 2c 23 31 0d 0f 28 21 20 20 20 20 20 20 20 20 20 |,#1..(! | 00002d70 20 4c 44 52 4e 45 42 20 52 33 2c 5b 52 30 2c 23 | LDRNEB R3,[R0,#| 00002d80 2d 31 5d 21 0d 0f 32 21 20 20 20 20 20 20 20 20 |-1]!..2! | 00002d90 20 20 53 54 52 4e 45 42 20 52 33 2c 5b 52 31 2c | STRNEB R3,[R1,| 00002da0 23 2d 31 5d 21 0d 0f 3c 1f 20 20 20 20 20 20 20 |#-1]!..<. | 00002db0 20 20 20 53 55 42 4e 45 20 20 52 31 32 2c 52 31 | SUBNE R12,R1| 00002dc0 32 2c 23 31 0d 0f 46 17 20 20 20 20 20 20 20 20 |2,#1..F. | 00002dd0 20 20 43 4d 50 20 52 32 2c 23 30 0d 0f 50 19 20 | CMP R2,#0..P. | 00002de0 20 20 20 20 20 20 20 20 20 43 4d 50 4e 45 20 52 | CMPNE R| 00002df0 32 2c 23 33 0d 0f 5a 21 20 20 20 20 20 20 20 20 |2,#3..Z! | 00002e00 20 20 4c 44 52 45 51 42 20 52 33 2c 5b 52 30 2c | LDREQB R3,[R0,| 00002e10 23 2d 31 5d 21 0d 0f 64 21 20 20 20 20 20 20 20 |#-1]!..d! | 00002e20 20 20 20 53 54 52 45 51 42 20 52 33 2c 5b 52 31 | STREQB R3,[R1| 00002e30 2c 23 2d 31 5d 21 0d 0f 6e 1e 20 20 20 20 20 20 |,#-1]!..n. | 00002e40 20 20 20 20 53 55 42 45 51 20 52 31 32 2c 52 31 | SUBEQ R12,R1| 00002e50 32 2c 23 31 0d 0f 78 04 0d 0f 82 2c 20 20 20 20 |2,#1..x...., | 00002e60 20 20 20 20 20 20 3b 20 4c 6f 61 64 20 31 20 74 | ; Load 1 t| 00002e70 6f 20 6d 61 6b 65 20 75 73 20 61 6c 69 67 6e 65 |o make us aligne| 00002e80 64 2e 2e 2e 0d 0f 8c 1f 20 20 20 20 20 20 20 20 |d....... | 00002e90 20 20 4c 44 52 42 20 52 32 2c 5b 52 30 2c 23 2d | LDRB R2,[R0,#-| 00002ea0 31 5d 21 0d 0f 96 04 0d 0f a0 20 20 20 20 20 20 |1]!....... | 00002eb0 20 20 20 20 20 3b 20 4d 6f 76 65 20 6c 69 6e 65 | ; Move line| 00002ec0 20 72 69 67 68 74 2e 0d 0f aa 25 20 20 20 20 20 | right....% | 00002ed0 20 20 20 20 20 3b 20 53 6f 75 72 63 65 20 6e 6f | ; Source no| 00002ee0 77 20 61 6c 69 67 6e 65 64 2e 2e 2e 0d 0f b4 1f |w aligned.......| 00002ef0 20 20 20 20 20 20 20 20 20 20 42 49 43 20 20 20 | BIC | 00002f00 20 52 33 2c 52 31 32 2c 23 33 31 0d 0f be 1f 20 | R3,R12,#31.... | 00002f10 20 20 20 20 20 20 20 20 20 52 53 42 53 20 20 20 | RSBS | 00002f20 52 33 2c 52 33 2c 23 33 32 30 0d 0f c8 23 20 20 |R3,R3,#320...# | 00002f30 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 52 | ADD R| 00002f40 33 2c 52 33 2c 52 33 2c 4c 53 4c 23 33 0d 0f d2 |3,R3,R3,LSL#3...| 00002f50 31 20 20 20 20 20 20 20 20 20 20 41 44 44 47 45 |1 ADDGE| 00002f60 20 20 50 43 2c 50 43 2c 52 33 2c 4c 53 52 23 32 | PC,PC,R3,LSR#2| 00002f70 20 20 20 20 3b 28 33 32 3e 3e 32 3d 38 29 0d 0f | ;(32>>2=8)..| 00002f80 dc 15 20 20 20 20 20 20 20 20 20 20 42 20 65 72 |.. B er| 00002f90 72 6f 72 0d 0f e6 1b 5d 3a e3 20 6c 25 3d 30 20 |ror....]:. l%=0 | 00002fa0 b8 20 39 3a 5b 4f 50 54 20 70 61 73 73 25 0d 0f |. 9:[OPT pass%..| 00002fb0 f0 1f 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 |.. MOV | 00002fc0 52 31 30 2c 52 32 2c 4c 53 4c 23 32 34 0d 0f fa |R10,R2,LSL#24...| 00002fd0 1f 20 20 20 20 20 20 20 20 20 20 4c 44 4d 44 42 |. LDMDB| 00002fe0 20 52 30 21 2c 7b 52 32 2d 52 39 7d 0d 10 04 21 | R0!,{R2-R9}...!| 00002ff0 20 20 20 20 20 20 20 20 20 20 84 52 20 52 31 30 | .R R10| 00003000 2c 52 31 30 2c 52 39 2c 4c 53 52 23 38 0d 10 0e |,R10,R9,LSR#8...| 00003010 1e 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 52 |. MOV R| 00003020 39 2c 52 39 2c 4c 53 4c 23 32 34 0d 10 18 1f 20 |9,R9,LSL#24.... | 00003030 20 20 20 20 20 20 20 20 20 84 52 20 52 39 2c 52 | .R R9,R| 00003040 39 2c 52 38 2c 4c 53 52 23 38 0d 10 22 1e 20 20 |9,R8,LSR#8..". | 00003050 20 20 20 20 20 20 20 20 4d 4f 56 20 52 38 2c 52 | MOV R8,R| 00003060 38 2c 4c 53 4c 23 32 34 0d 10 2c 1f 20 20 20 20 |8,LSL#24..,. | 00003070 20 20 20 20 20 20 84 52 20 52 38 2c 52 38 2c 52 | .R R8,R8,R| 00003080 37 2c 4c 53 52 23 38 0d 10 36 1e 20 20 20 20 20 |7,LSR#8..6. | 00003090 20 20 20 20 20 4d 4f 56 20 52 37 2c 52 37 2c 4c | MOV R7,R7,L| 000030a0 53 4c 23 32 34 0d 10 40 1f 20 20 20 20 20 20 20 |SL#24..@. | 000030b0 20 20 20 84 52 20 52 37 2c 52 37 2c 52 36 2c 4c | .R R7,R7,R6,L| 000030c0 53 52 23 38 0d 10 4a 1e 20 20 20 20 20 20 20 20 |SR#8..J. | 000030d0 20 20 4d 4f 56 20 52 36 2c 52 36 2c 4c 53 4c 23 | MOV R6,R6,LSL#| 000030e0 32 34 0d 10 54 1f 20 20 20 20 20 20 20 20 20 20 |24..T. | 000030f0 84 52 20 52 36 2c 52 36 2c 52 35 2c 4c 53 52 23 |.R R6,R6,R5,LSR#| 00003100 38 0d 10 5e 1e 20 20 20 20 20 20 20 20 20 20 4d |8..^. M| 00003110 4f 56 20 52 35 2c 52 35 2c 4c 53 4c 23 32 34 0d |OV R5,R5,LSL#24.| 00003120 10 68 1f 20 20 20 20 20 20 20 20 20 20 84 52 20 |.h. .R | 00003130 52 35 2c 52 35 2c 52 34 2c 4c 53 52 23 38 0d 10 |R5,R5,R4,LSR#8..| 00003140 72 1e 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 |r. MOV | 00003150 52 34 2c 52 34 2c 4c 53 4c 23 32 34 0d 10 7c 1f |R4,R4,LSL#24..|.| 00003160 20 20 20 20 20 20 20 20 20 20 84 52 20 52 34 2c | .R R4,| 00003170 52 34 2c 52 33 2c 4c 53 52 23 38 0d 10 86 1e 20 |R4,R3,LSR#8.... | 00003180 20 20 20 20 20 20 20 20 20 4d 4f 56 20 52 33 2c | MOV R3,| 00003190 52 33 2c 4c 53 4c 23 32 34 0d 10 90 1f 20 20 20 |R3,LSL#24.... | 000031a0 20 20 20 20 20 20 20 84 52 20 52 33 2c 52 33 2c | .R R3,R3,| 000031b0 52 32 2c 4c 53 52 23 38 0d 10 9a 20 20 20 20 20 |R2,LSR#8... | 000031c0 20 20 20 20 20 20 53 54 4d 44 42 20 52 31 21 2c | STMDB R1!,| 000031d0 7b 52 33 2d 52 31 30 7d 0d 10 a4 12 5d 3a ed 3a |{R3-R10}....]:.:| 000031e0 5b 4f 50 54 20 70 61 73 73 25 0d 10 ae 04 0d 10 |[OPT pass%......| 000031f0 b8 19 20 20 20 20 20 20 20 20 20 20 54 53 54 20 |.. TST | 00003200 52 31 32 2c 23 31 36 0d 10 c2 20 20 20 20 20 20 |R12,#16... | 00003210 20 20 20 20 20 4d 4f 56 4e 45 20 52 36 2c 52 32 | MOVNE R6,R2| 00003220 2c 4c 53 4c 23 32 34 0d 10 cc 21 20 20 20 20 20 |,LSL#24...! | 00003230 20 20 20 20 20 4c 44 4d 4e 45 44 42 20 52 30 21 | LDMNEDB R0!| 00003240 2c 7b 52 32 2d 52 35 7d 0d 10 d6 21 20 20 20 20 |,{R2-R5}...! | 00003250 20 20 20 20 20 20 84 52 4e 45 20 52 36 2c 52 36 | .RNE R6,R6| 00003260 2c 52 35 2c 4c 53 52 23 38 0d 10 e0 20 20 20 20 |,R5,LSR#8... | 00003270 20 20 20 20 20 20 20 4d 4f 56 4e 45 20 52 35 2c | MOVNE R5,| 00003280 52 35 2c 4c 53 4c 23 32 34 0d 10 ea 21 20 20 20 |R5,LSL#24...! | 00003290 20 20 20 20 20 20 20 84 52 4e 45 20 52 35 2c 52 | .RNE R5,R| 000032a0 35 2c 52 34 2c 4c 53 52 23 38 0d 10 f4 20 20 20 |5,R4,LSR#8... | 000032b0 20 20 20 20 20 20 20 20 4d 4f 56 4e 45 20 52 34 | MOVNE R4| 000032c0 2c 52 34 2c 4c 53 4c 23 32 34 0d 10 fe 21 20 20 |,R4,LSL#24...! | 000032d0 20 20 20 20 20 20 20 20 84 52 4e 45 20 52 34 2c | .RNE R4,| 000032e0 52 34 2c 52 33 2c 4c 53 52 23 38 0d 11 08 20 20 |R4,R3,LSR#8... | 000032f0 20 20 20 20 20 20 20 20 20 4d 4f 56 4e 45 20 52 | MOVNE R| 00003300 33 2c 52 33 2c 4c 53 4c 23 32 34 0d 11 12 21 20 |3,R3,LSL#24...! | 00003310 20 20 20 20 20 20 20 20 20 84 52 4e 45 20 52 33 | .RNE R3| 00003320 2c 52 33 2c 52 32 2c 4c 53 52 23 38 0d 11 1c 21 |,R3,R2,LSR#8...!| 00003330 20 20 20 20 20 20 20 20 20 20 53 54 4d 4e 45 44 | STMNED| 00003340 42 20 52 31 21 2c 7b 52 33 2d 52 36 7d 0d 11 26 |B R1!,{R3-R6}..&| 00003350 04 0d 11 30 18 20 20 20 20 20 20 20 20 20 20 54 |...0. T| 00003360 53 54 20 52 31 32 2c 23 38 0d 11 3a 20 20 20 20 |ST R12,#8..: | 00003370 20 20 20 20 20 20 20 4d 4f 56 4e 45 20 52 34 2c | MOVNE R4,| 00003380 52 32 2c 4c 53 4c 23 32 34 0d 11 44 21 20 20 20 |R2,LSL#24..D! | 00003390 20 20 20 20 20 20 20 4c 44 4d 4e 45 44 42 20 52 | LDMNEDB R| 000033a0 30 21 2c 7b 52 32 2d 52 33 7d 0d 11 4e 21 20 20 |0!,{R2-R3}..N! | 000033b0 20 20 20 20 20 20 20 20 84 52 4e 45 20 52 34 2c | .RNE R4,| 000033c0 52 34 2c 52 33 2c 4c 53 52 23 38 0d 11 58 20 20 |R4,R3,LSR#8..X | 000033d0 20 20 20 20 20 20 20 20 20 4d 4f 56 4e 45 20 52 | MOVNE R| 000033e0 33 2c 52 33 2c 4c 53 4c 23 32 34 0d 11 62 21 20 |3,R3,LSL#24..b! | 000033f0 20 20 20 20 20 20 20 20 20 84 52 4e 45 20 52 33 | .RNE R3| 00003400 2c 52 33 2c 52 32 2c 4c 53 52 23 38 0d 11 6c 21 |,R3,R2,LSR#8..l!| 00003410 20 20 20 20 20 20 20 20 20 20 53 54 4d 4e 45 44 | STMNED| 00003420 42 20 52 31 21 2c 7b 52 33 2d 52 34 7d 0d 11 76 |B R1!,{R3-R4}..v| 00003430 04 0d 11 80 18 20 20 20 20 20 20 20 20 20 20 54 |..... T| 00003440 53 54 20 52 31 32 2c 23 34 0d 11 8a 20 20 20 20 |ST R12,#4... | 00003450 20 20 20 20 20 20 20 4d 4f 56 4e 45 20 52 33 2c | MOVNE R3,| 00003460 52 32 2c 4c 53 4c 23 32 34 0d 11 94 20 20 20 20 |R2,LSL#24... | 00003470 20 20 20 20 20 20 20 4c 44 52 4e 45 20 52 32 2c | LDRNE R2,| 00003480 5b 52 30 2c 23 2d 34 5d 21 0d 11 9e 21 20 20 20 |[R0,#-4]!...! | 00003490 20 20 20 20 20 20 20 84 52 4e 45 20 52 33 2c 52 | .RNE R3,R| 000034a0 33 2c 52 32 2c 4c 53 52 23 38 0d 11 a8 20 20 20 |3,R2,LSR#8... | 000034b0 20 20 20 20 20 20 20 20 53 54 52 4e 45 20 52 33 | STRNE R3| 000034c0 2c 5b 52 31 2c 23 2d 34 5d 21 0d 11 b2 04 0d 11 |,[R1,#-4]!......| 000034d0 bc 18 20 20 20 20 20 20 20 20 20 20 54 53 54 20 |.. TST | 000034e0 52 31 32 2c 23 32 0d 11 c6 21 20 20 20 20 20 20 |R12,#2...! | 000034f0 20 20 20 20 53 54 52 4e 45 42 20 52 32 2c 5b 52 | STRNEB R2,[R| 00003500 31 2c 23 2d 31 5d 21 0d 11 d0 21 20 20 20 20 20 |1,#-1]!...! | 00003510 20 20 20 20 20 4c 44 52 4e 45 42 20 52 32 2c 5b | LDRNEB R2,[| 00003520 52 30 2c 23 2d 31 5d 21 0d 11 da 21 20 20 20 20 |R0,#-1]!...! | 00003530 20 20 20 20 20 20 53 54 52 4e 45 42 20 52 32 2c | STRNEB R2,| 00003540 5b 52 31 2c 23 2d 31 5d 21 0d 11 e4 0e 20 20 20 |[R1,#-1]!.... | 00003550 20 20 20 20 20 20 20 0d 11 ee 18 20 20 20 20 20 | .... | 00003560 20 20 20 20 20 54 53 54 20 52 31 32 2c 23 31 0d | TST R12,#1.| 00003570 11 f8 22 20 20 20 20 20 20 20 20 20 20 3b 4c 44 |.." ;LD| 00003580 52 4e 45 42 20 52 32 2c 5b 52 30 2c 23 2d 31 5d |RNEB R2,[R0,#-1]| 00003590 21 0d 12 02 21 20 20 20 20 20 20 20 20 20 20 53 |!...! S| 000035a0 54 52 4e 45 42 20 52 32 2c 5b 52 31 2c 23 2d 31 |TRNEB R2,[R1,#-1| 000035b0 5d 21 0d 12 0c 19 20 20 20 20 20 20 20 20 20 20 |]!.... | 000035c0 4d 4f 56 53 20 50 43 2c 52 31 34 0d 12 16 04 0d |MOVS PC,R14.....| 000035d0 12 20 14 2e 6c 72 6f 66 66 73 65 74 6d 6f 64 34 |. ..lroffsetmod4| 000035e0 69 73 32 0d 12 2a 1b 20 20 20 20 20 20 20 20 20 |is2..*. | 000035f0 20 41 44 44 20 52 30 2c 52 30 2c 52 31 32 0d 12 | ADD R0,R0,R12..| 00003600 34 1b 20 20 20 20 20 20 20 20 20 20 41 44 44 20 |4. ADD | 00003610 52 31 2c 52 31 2c 52 31 32 0d 12 3e 36 20 20 20 |R1,R1,R12..>6 | 00003620 20 20 20 20 20 20 20 3b 20 46 69 72 73 74 2c 20 | ; First, | 00003630 61 6c 69 67 6e 20 73 6f 75 72 63 65 20 74 6f 20 |align source to | 00003640 32 20 62 65 66 6f 72 65 20 61 20 77 6f 72 64 0d |2 before a word.| 00003650 12 48 18 20 20 20 20 20 20 20 20 20 20 80 20 52 |.H. . R| 00003660 32 2c 52 30 2c 23 33 0d 12 52 38 20 20 20 20 20 |2,R0,#3..R8 | 00003670 20 20 20 20 20 43 4d 50 20 52 32 2c 23 32 20 20 | CMP R2,#2 | 00003680 20 20 20 20 20 20 20 20 20 20 3b 69 66 20 6f 66 | ;if of| 00003690 66 20 62 79 20 30 2c 20 6d 6f 76 65 20 32 2e 0d |f by 0, move 2..| 000036a0 12 5c 38 20 20 20 20 20 20 20 20 20 20 4c 44 52 |.\8 LDR| 000036b0 4e 45 42 20 52 33 2c 5b 52 30 2c 23 2d 31 5d 21 |NEB R3,[R0,#-1]!| 000036c0 20 20 3b 69 66 20 6f 66 66 20 62 79 20 31 2c 20 | ;if off by 1, | 000036d0 6d 6f 76 65 20 33 2e 0d 12 66 38 20 20 20 20 20 |move 3...f8 | 000036e0 20 20 20 20 20 53 54 52 4e 45 42 20 52 33 2c 5b | STRNEB R3,[| 000036f0 52 31 2c 23 2d 31 5d 21 20 20 3b 69 66 20 6f 66 |R1,#-1]! ;if of| 00003700 66 20 62 79 20 32 2c 20 6d 6f 76 65 20 30 2e 0d |f by 2, move 0..| 00003710 12 70 38 20 20 20 20 20 20 20 20 20 20 53 55 42 |.p8 SUB| 00003720 4e 45 20 52 31 32 2c 52 31 32 2c 23 31 20 20 20 |NE R12,R12,#1 | 00003730 20 20 3b 69 66 20 6f 66 66 20 62 79 20 33 2c 20 | ;if off by 3, | 00003740 6d 6f 76 65 20 31 2e 0d 12 7a 21 20 20 20 20 20 |move 1...z! | 00003750 20 20 20 20 20 4c 44 52 4c 54 42 20 52 33 2c 5b | LDRLTB R3,[| 00003760 52 30 2c 23 2d 31 5d 21 0d 12 84 21 20 20 20 20 |R0,#-1]!...! | 00003770 20 20 20 20 20 20 53 54 52 4c 54 42 20 52 33 2c | STRLTB R3,| 00003780 5b 52 31 2c 23 2d 31 5d 21 0d 12 8e 1e 20 20 20 |[R1,#-1]!.... | 00003790 20 20 20 20 20 20 20 53 55 42 4c 54 20 52 31 32 | SUBLT R12| 000037a0 2c 52 31 32 2c 23 31 0d 12 98 17 20 20 20 20 20 |,R12,#1.... | 000037b0 20 20 20 20 20 43 4d 50 20 52 32 2c 23 31 0d 12 | CMP R2,#1..| 000037c0 a2 21 20 20 20 20 20 20 20 20 20 20 4c 44 52 45 |.! LDRE| 000037d0 51 42 20 52 33 2c 5b 52 30 2c 23 2d 31 5d 21 0d |QB R3,[R0,#-1]!.| 000037e0 12 ac 21 20 20 20 20 20 20 20 20 20 20 53 54 52 |..! STR| 000037f0 45 51 42 20 52 33 2c 5b 52 31 2c 23 2d 31 5d 21 |EQB R3,[R1,#-1]!| 00003800 0d 12 b6 1e 20 20 20 20 20 20 20 20 20 20 53 55 |.... SU| 00003810 42 45 51 20 52 31 32 2c 52 31 32 2c 23 31 0d 12 |BEQ R12,R12,#1..| 00003820 c0 04 0d 12 ca 2c 20 20 20 20 20 20 20 20 20 20 |....., | 00003830 3b 20 4c 6f 61 64 20 32 20 74 6f 20 6d 61 6b 65 |; Load 2 to make| 00003840 20 75 73 20 61 6c 69 67 6e 65 64 2e 2e 2e 0d 12 | us aligned.....| 00003850 d4 20 20 20 20 20 20 20 20 20 20 20 4c 44 52 42 |. LDRB| 00003860 20 52 31 30 2c 5b 52 30 2c 23 2d 31 5d 21 0d 12 | R10,[R0,#-1]!..| 00003870 de 1f 20 20 20 20 20 20 20 20 20 20 4c 44 52 42 |.. LDRB| 00003880 20 52 39 2c 5b 52 30 2c 23 2d 31 5d 21 0d 12 e8 | R9,[R0,#-1]!...| 00003890 20 20 20 20 20 20 20 20 20 20 20 84 52 20 52 32 | .R R2| 000038a0 2c 52 39 2c 52 31 30 2c 41 53 4c 23 38 0d 12 f2 |,R9,R10,ASL#8...| 000038b0 0e 20 20 20 20 20 20 20 20 20 20 0d 12 fc 1f 20 |. .... | 000038c0 20 20 20 20 20 20 20 20 20 3b 20 4d 6f 76 65 20 | ; Move | 000038d0 6c 69 6e 65 20 6c 65 66 74 2e 0d 13 06 25 20 20 |line left....% | 000038e0 20 20 20 20 20 20 20 20 3b 20 53 6f 75 72 63 65 | ; Source| 000038f0 20 6e 6f 77 20 61 6c 69 67 6e 65 64 2e 2e 2e 0d | now aligned....| 00003900 13 10 1f 20 20 20 20 20 20 20 20 20 20 42 49 43 |... BIC| 00003910 20 20 20 20 52 33 2c 52 31 32 2c 23 33 31 0d 13 | R3,R12,#31..| 00003920 1a 1f 20 20 20 20 20 20 20 20 20 20 52 53 42 53 |.. RSBS| 00003930 20 20 20 52 33 2c 52 33 2c 23 33 32 30 0d 13 24 | R3,R3,#320..$| 00003940 23 20 20 20 20 20 20 20 20 20 20 41 44 44 20 20 |# ADD | 00003950 20 20 52 33 2c 52 33 2c 52 33 2c 4c 53 4c 23 33 | R3,R3,R3,LSL#3| 00003960 0d 13 2e 31 20 20 20 20 20 20 20 20 20 20 41 44 |...1 AD| 00003970 44 47 45 20 20 50 43 2c 50 43 2c 52 33 2c 4c 53 |DGE PC,PC,R3,LS| 00003980 52 23 32 20 20 20 20 3b 28 33 32 3e 3e 32 3d 38 |R#2 ;(32>>2=8| 00003990 29 0d 13 38 15 20 20 20 20 20 20 20 20 20 20 42 |)..8. B| 000039a0 20 65 72 72 6f 72 0d 13 42 1b 5d 3a e3 20 6c 25 | error..B.]:. l%| 000039b0 3d 30 20 b8 20 39 3a 5b 4f 50 54 20 70 61 73 73 |=0 . 9:[OPT pass| 000039c0 25 0d 13 4c 1f 20 20 20 20 20 20 20 20 20 20 4d |%..L. M| 000039d0 4f 56 20 52 31 30 2c 52 32 2c 4c 53 4c 23 31 36 |OV R10,R2,LSL#16| 000039e0 0d 13 56 1f 20 20 20 20 20 20 20 20 20 20 4c 44 |..V. LD| 000039f0 4d 44 42 20 52 30 21 2c 7b 52 32 2d 52 39 7d 0d |MDB R0!,{R2-R9}.| 00003a00 13 60 22 20 20 20 20 20 20 20 20 20 20 84 52 20 |.`" .R | 00003a10 52 31 30 2c 52 31 30 2c 52 39 2c 4c 53 52 23 31 |R10,R10,R9,LSR#1| 00003a20 36 0d 13 6a 1e 20 20 20 20 20 20 20 20 20 20 4d |6..j. M| 00003a30 4f 56 20 52 39 2c 52 39 2c 4c 53 4c 23 31 36 0d |OV R9,R9,LSL#16.| 00003a40 13 74 20 20 20 20 20 20 20 20 20 20 20 84 52 20 |.t .R | 00003a50 52 39 2c 52 39 2c 52 38 2c 4c 53 52 23 31 36 0d |R9,R9,R8,LSR#16.| 00003a60 13 7e 1e 20 20 20 20 20 20 20 20 20 20 4d 4f 56 |.~. MOV| 00003a70 20 52 38 2c 52 38 2c 4c 53 4c 23 31 36 0d 13 88 | R8,R8,LSL#16...| 00003a80 20 20 20 20 20 20 20 20 20 20 20 84 52 20 52 38 | .R R8| 00003a90 2c 52 38 2c 52 37 2c 4c 53 52 23 31 36 0d 13 92 |,R8,R7,LSR#16...| 00003aa0 1e 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 52 |. MOV R| 00003ab0 37 2c 52 37 2c 4c 53 4c 23 31 36 0d 13 9c 20 20 |7,R7,LSL#16... | 00003ac0 20 20 20 20 20 20 20 20 20 84 52 20 52 37 2c 52 | .R R7,R| 00003ad0 37 2c 52 36 2c 4c 53 52 23 31 36 0d 13 a6 1e 20 |7,R6,LSR#16.... | 00003ae0 20 20 20 20 20 20 20 20 20 4d 4f 56 20 52 36 2c | MOV R6,| 00003af0 52 36 2c 4c 53 4c 23 31 36 0d 13 b0 20 20 20 20 |R6,LSL#16... | 00003b00 20 20 20 20 20 20 20 84 52 20 52 36 2c 52 36 2c | .R R6,R6,| 00003b10 52 35 2c 4c 53 52 23 31 36 0d 13 ba 1e 20 20 20 |R5,LSR#16.... | 00003b20 20 20 20 20 20 20 20 4d 4f 56 20 52 35 2c 52 35 | MOV R5,R5| 00003b30 2c 4c 53 4c 23 31 36 0d 13 c4 20 20 20 20 20 20 |,LSL#16... | 00003b40 20 20 20 20 20 84 52 20 52 35 2c 52 35 2c 52 34 | .R R5,R5,R4| 00003b50 2c 4c 53 52 23 31 36 0d 13 ce 1e 20 20 20 20 20 |,LSR#16.... | 00003b60 20 20 20 20 20 4d 4f 56 20 52 34 2c 52 34 2c 4c | MOV R4,R4,L| 00003b70 53 4c 23 31 36 0d 13 d8 20 20 20 20 20 20 20 20 |SL#16... | 00003b80 20 20 20 84 52 20 52 34 2c 52 34 2c 52 33 2c 4c | .R R4,R4,R3,L| 00003b90 53 52 23 31 36 0d 13 e2 1e 20 20 20 20 20 20 20 |SR#16.... | 00003ba0 20 20 20 4d 4f 56 20 52 33 2c 52 33 2c 4c 53 4c | MOV R3,R3,LSL| 00003bb0 23 31 36 0d 13 ec 20 20 20 20 20 20 20 20 20 20 |#16... | 00003bc0 20 84 52 20 52 33 2c 52 33 2c 52 32 2c 4c 53 52 | .R R3,R3,R2,LSR| 00003bd0 23 31 36 0d 13 f6 20 20 20 20 20 20 20 20 20 20 |#16... | 00003be0 20 53 54 4d 44 42 20 52 31 21 2c 7b 52 33 2d 52 | STMDB R1!,{R3-R| 00003bf0 31 30 7d 0d 14 00 12 5d 3a ed 3a 5b 4f 50 54 20 |10}....]:.:[OPT | 00003c00 70 61 73 73 25 0d 14 0a 04 0d 14 14 19 20 20 20 |pass%........ | 00003c10 20 20 20 20 20 20 20 54 53 54 20 52 31 32 2c 23 | TST R12,#| 00003c20 31 36 0d 14 1e 20 20 20 20 20 20 20 20 20 20 20 |16... | 00003c30 4d 4f 56 4e 45 20 52 36 2c 52 32 2c 4c 53 4c 23 |MOVNE R6,R2,LSL#| 00003c40 31 36 0d 14 28 21 20 20 20 20 20 20 20 20 20 20 |16..(! | 00003c50 4c 44 4d 4e 45 44 42 20 52 30 21 2c 7b 52 32 2d |LDMNEDB R0!,{R2-| 00003c60 52 35 7d 0d 14 32 22 20 20 20 20 20 20 20 20 20 |R5}..2" | 00003c70 20 84 52 4e 45 20 52 36 2c 52 36 2c 52 35 2c 4c | .RNE R6,R6,R5,L| 00003c80 53 52 23 31 36 0d 14 3c 20 20 20 20 20 20 20 20 |SR#16..< | 00003c90 20 20 20 4d 4f 56 4e 45 20 52 35 2c 52 35 2c 4c | MOVNE R5,R5,L| 00003ca0 53 4c 23 31 36 0d 14 46 22 20 20 20 20 20 20 20 |SL#16..F" | 00003cb0 20 20 20 84 52 4e 45 20 52 35 2c 52 35 2c 52 34 | .RNE R5,R5,R4| 00003cc0 2c 4c 53 52 23 31 36 0d 14 50 20 20 20 20 20 20 |,LSR#16..P | 00003cd0 20 20 20 20 20 4d 4f 56 4e 45 20 52 34 2c 52 34 | MOVNE R4,R4| 00003ce0 2c 4c 53 4c 23 31 36 0d 14 5a 22 20 20 20 20 20 |,LSL#16..Z" | 00003cf0 20 20 20 20 20 84 52 4e 45 20 52 34 2c 52 34 2c | .RNE R4,R4,| 00003d00 52 33 2c 4c 53 52 23 31 36 0d 14 64 20 20 20 20 |R3,LSR#16..d | 00003d10 20 20 20 20 20 20 20 4d 4f 56 4e 45 20 52 33 2c | MOVNE R3,| 00003d20 52 33 2c 4c 53 4c 23 31 36 0d 14 6e 22 20 20 20 |R3,LSL#16..n" | 00003d30 20 20 20 20 20 20 20 84 52 4e 45 20 52 33 2c 52 | .RNE R3,R| 00003d40 33 2c 52 32 2c 4c 53 52 23 31 36 0d 14 78 21 20 |3,R2,LSR#16..x! | 00003d50 20 20 20 20 20 20 20 20 20 53 54 4d 4e 45 44 42 | STMNEDB| 00003d60 20 52 31 21 2c 7b 52 33 2d 52 36 7d 0d 14 82 04 | R1!,{R3-R6}....| 00003d70 0d 14 8c 18 20 20 20 20 20 20 20 20 20 20 54 53 |.... TS| 00003d80 54 20 52 31 32 2c 23 38 0d 14 96 20 20 20 20 20 |T R12,#8... | 00003d90 20 20 20 20 20 20 4d 4f 56 4e 45 20 52 34 2c 52 | MOVNE R4,R| 00003da0 32 2c 41 53 4c 23 31 36 0d 14 a0 21 20 20 20 20 |2,ASL#16...! | 00003db0 20 20 20 20 20 20 4c 44 4d 4e 45 44 42 20 52 30 | LDMNEDB R0| 00003dc0 21 2c 7b 52 32 2d 52 33 7d 0d 14 aa 22 20 20 20 |!,{R2-R3}..." | 00003dd0 20 20 20 20 20 20 20 84 52 4e 45 20 52 34 2c 52 | .RNE R4,R| 00003de0 34 2c 52 33 2c 4c 53 52 23 31 36 0d 14 b4 20 20 |4,R3,LSR#16... | 00003df0 20 20 20 20 20 20 20 20 20 4d 4f 56 4e 45 20 52 | MOVNE R| 00003e00 33 2c 52 33 2c 41 53 4c 23 31 36 0d 14 be 22 20 |3,R3,ASL#16..." | 00003e10 20 20 20 20 20 20 20 20 20 84 52 4e 45 20 52 33 | .RNE R3| 00003e20 2c 52 33 2c 52 32 2c 4c 53 52 23 31 36 0d 14 c8 |,R3,R2,LSR#16...| 00003e30 21 20 20 20 20 20 20 20 20 20 20 53 54 4d 4e 45 |! STMNE| 00003e40 44 42 20 52 31 21 2c 7b 52 33 2d 52 34 7d 0d 14 |DB R1!,{R3-R4}..| 00003e50 d2 04 0d 14 dc 18 20 20 20 20 20 20 20 20 20 20 |...... | 00003e60 54 53 54 20 52 31 32 2c 23 34 0d 14 e6 20 20 20 |TST R12,#4... | 00003e70 20 20 20 20 20 20 20 20 4d 4f 56 4e 45 20 52 33 | MOVNE R3| 00003e80 2c 52 32 2c 41 53 4c 23 31 36 0d 14 f0 20 20 20 |,R2,ASL#16... | 00003e90 20 20 20 20 20 20 20 20 4c 44 52 4e 45 20 52 32 | LDRNE R2| 00003ea0 2c 5b 52 30 2c 23 2d 34 5d 21 0d 14 fa 22 20 20 |,[R0,#-4]!..." | 00003eb0 20 20 20 20 20 20 20 20 84 52 4e 45 20 52 33 2c | .RNE R3,| 00003ec0 52 33 2c 52 32 2c 4c 53 52 23 31 36 0d 15 04 20 |R3,R2,LSR#16... | 00003ed0 20 20 20 20 20 20 20 20 20 20 53 54 52 4e 45 20 | STRNE | 00003ee0 52 33 2c 5b 52 31 2c 23 2d 34 5d 21 0d 15 0e 04 |R3,[R1,#-4]!....| 00003ef0 0d 15 18 20 20 20 20 20 20 20 20 20 20 20 4d 4f |... MO| 00003f00 56 20 20 20 20 52 32 2c 52 32 2c 52 4f 52 23 38 |V R2,R2,ROR#8| 00003f10 0d 15 22 18 20 20 20 20 20 20 20 20 20 20 54 53 |..". TS| 00003f20 54 20 52 31 32 2c 23 32 0d 15 2c 21 20 20 20 20 |T R12,#2..,! | 00003f30 20 20 20 20 20 20 53 54 52 4e 45 42 20 52 32 2c | STRNEB R2,| 00003f40 5b 52 31 2c 23 2d 31 5d 21 0d 15 36 21 20 20 20 |[R1,#-1]!..6! | 00003f50 20 20 20 20 20 20 20 4d 4f 56 4e 45 20 20 52 32 | MOVNE R2| 00003f60 2c 52 32 2c 52 4f 52 23 32 34 0d 15 40 21 20 20 |,R2,ROR#24..@! | 00003f70 20 20 20 20 20 20 20 20 53 54 52 4e 45 42 20 52 | STRNEB R| 00003f80 32 2c 5b 52 31 2c 23 2d 31 5d 21 0d 15 4a 1a 20 |2,[R1,#-1]!..J. | 00003f90 20 20 20 20 20 20 20 20 20 54 53 54 4e 45 20 52 | TSTNE R| 00003fa0 31 32 2c 23 31 0d 15 54 21 20 20 20 20 20 20 20 |12,#1..T! | 00003fb0 20 20 20 4c 44 52 4e 45 42 20 52 32 2c 5b 52 30 | LDRNEB R2,[R0| 00003fc0 2c 23 2d 31 5d 21 0d 15 5e 04 0d 15 68 18 20 20 |,#-1]!..^...h. | 00003fd0 20 20 20 20 20 20 20 20 54 53 54 20 52 31 32 2c | TST R12,| 00003fe0 23 31 0d 15 72 21 20 20 20 20 20 20 20 20 20 20 |#1..r! | 00003ff0 53 54 52 4e 45 42 20 52 32 2c 5b 52 31 2c 23 2d |STRNEB R2,[R1,#-| 00004000 31 5d 21 0d 15 7c 19 20 20 20 20 20 20 20 20 20 |1]!..|. | 00004010 20 4d 4f 56 53 20 50 43 2c 52 31 34 0d 15 86 04 | MOVS PC,R14....| 00004020 0d 15 90 14 2e 6c 72 6f 66 66 73 65 74 6d 6f 64 |.....lroffsetmod| 00004030 34 69 73 31 0d 15 9a 1b 20 20 20 20 20 20 20 20 |4is1.... | 00004040 20 20 41 44 44 20 52 30 2c 52 30 2c 52 31 32 0d | ADD R0,R0,R12.| 00004050 15 a4 1b 20 20 20 20 20 20 20 20 20 20 41 44 44 |... ADD| 00004060 20 52 31 2c 52 31 2c 52 31 32 0d 15 ae 35 20 20 | R1,R1,R12...5 | 00004070 20 20 20 20 20 20 20 20 3b 20 46 69 72 73 74 2c | ; First,| 00004080 20 61 6c 69 67 6e 20 73 6f 75 72 63 65 20 74 6f | align source to| 00004090 20 33 20 61 66 74 65 72 20 61 20 77 6f 72 64 0d | 3 after a word.| 000040a0 15 b8 18 20 20 20 20 20 20 20 20 20 20 80 20 52 |... . R| 000040b0 32 2c 52 30 2c 23 33 0d 15 c2 38 20 20 20 20 20 |2,R0,#3...8 | 000040c0 20 20 20 20 20 43 4d 50 20 52 32 2c 23 32 20 20 | CMP R2,#2 | 000040d0 20 20 20 20 20 20 20 20 20 20 3b 69 66 20 6f 66 | ;if of| 000040e0 66 20 62 79 20 30 2c 20 6d 6f 76 65 20 31 2e 0d |f by 0, move 1..| 000040f0 15 cc 38 20 20 20 20 20 20 20 20 20 20 4c 44 52 |..8 LDR| 00004100 4c 45 42 20 52 33 2c 5b 52 30 2c 23 2d 31 5d 21 |LEB R3,[R0,#-1]!| 00004110 20 20 3b 69 66 20 6f 66 66 20 62 79 20 31 2c 20 | ;if off by 1, | 00004120 6d 6f 76 65 20 32 2e 0d 15 d6 38 20 20 20 20 20 |move 2....8 | 00004130 20 20 20 20 20 53 54 52 4c 45 42 20 52 33 2c 5b | STRLEB R3,[| 00004140 52 31 2c 23 2d 31 5d 21 20 20 3b 69 66 20 6f 66 |R1,#-1]! ;if of| 00004150 66 20 62 79 20 32 2c 20 6d 6f 76 65 20 33 2e 0d |f by 2, move 3..| 00004160 15 e0 38 20 20 20 20 20 20 20 20 20 20 53 55 42 |..8 SUB| 00004170 4c 45 20 20 52 31 32 2c 52 31 32 2c 23 31 20 20 |LE R12,R12,#1 | 00004180 20 20 3b 69 66 20 6f 66 66 20 62 79 20 33 2c 20 | ;if off by 3, | 00004190 6d 6f 76 65 20 30 2e 0d 15 ea 21 20 20 20 20 20 |move 0....! | 000041a0 20 20 20 20 20 4c 44 52 45 51 42 20 52 33 2c 5b | LDREQB R3,[| 000041b0 52 30 2c 23 2d 31 5d 21 0d 15 f4 21 20 20 20 20 |R0,#-1]!...! | 000041c0 20 20 20 20 20 20 53 54 52 45 51 42 20 52 33 2c | STREQB R3,| 000041d0 5b 52 31 2c 23 2d 31 5d 21 0d 15 fe 1f 20 20 20 |[R1,#-1]!.... | 000041e0 20 20 20 20 20 20 20 53 55 42 45 51 20 20 52 31 | SUBEQ R1| 000041f0 32 2c 52 31 32 2c 23 31 0d 16 08 1a 20 20 20 20 |2,R12,#1.... | 00004200 20 20 20 20 20 20 43 4d 50 4e 45 20 20 52 32 2c | CMPNE R2,| 00004210 23 31 0d 16 12 21 20 20 20 20 20 20 20 20 20 20 |#1...! | 00004220 4c 44 52 45 51 42 20 52 33 2c 5b 52 30 2c 23 2d |LDREQB R3,[R0,#-| 00004230 31 5d 21 0d 16 1c 21 20 20 20 20 20 20 20 20 20 |1]!...! | 00004240 20 53 54 52 45 51 42 20 52 33 2c 5b 52 31 2c 23 | STREQB R3,[R1,#| 00004250 2d 31 5d 21 0d 16 26 1f 20 20 20 20 20 20 20 20 |-1]!..&. | 00004260 20 20 53 55 42 45 51 20 20 52 31 32 2c 52 31 32 | SUBEQ R12,R12| 00004270 2c 23 31 0d 16 30 04 0d 16 3a 2c 20 20 20 20 20 |,#1..0...:, | 00004280 20 20 20 20 20 3b 20 4c 6f 61 64 20 31 20 74 6f | ; Load 1 to| 00004290 20 6d 61 6b 65 20 75 73 20 61 6c 69 67 6e 65 64 | make us aligned| 000042a0 2e 2e 2e 0d 16 44 20 20 20 20 20 20 20 20 20 20 |.....D | 000042b0 20 4c 44 52 42 20 52 31 30 2c 5b 52 30 2c 23 2d | LDRB R10,[R0,#-| 000042c0 31 5d 21 0d 16 4e 1f 20 20 20 20 20 20 20 20 20 |1]!..N. | 000042d0 20 4c 44 52 42 20 52 39 2c 5b 52 30 2c 23 2d 31 | LDRB R9,[R0,#-1| 000042e0 5d 21 0d 16 58 21 20 20 20 20 20 20 20 20 20 20 |]!..X! | 000042f0 84 52 20 52 31 30 2c 52 39 2c 52 31 30 2c 41 53 |.R R10,R9,R10,AS| 00004300 4c 23 38 0d 16 62 1f 20 20 20 20 20 20 20 20 20 |L#8..b. | 00004310 20 4c 44 52 42 20 52 39 2c 5b 52 30 2c 23 2d 31 | LDRB R9,[R0,#-1| 00004320 5d 21 0d 16 6c 20 20 20 20 20 20 20 20 20 20 20 |]!..l | 00004330 84 52 20 52 32 2c 52 39 2c 52 31 30 2c 41 53 4c |.R R2,R9,R10,ASL| 00004340 23 38 0d 16 76 0e 20 20 20 20 20 20 20 20 20 20 |#8..v. | 00004350 0d 16 80 20 20 20 20 20 20 20 20 20 20 20 3b 20 |... ; | 00004360 4d 6f 76 65 20 6c 69 6e 65 20 72 69 67 68 74 2e |Move line right.| 00004370 0d 16 8a 25 20 20 20 20 20 20 20 20 20 20 3b 20 |...% ; | 00004380 53 6f 75 72 63 65 20 6e 6f 77 20 61 6c 69 67 6e |Source now align| 00004390 65 64 2e 2e 2e 0d 16 94 1f 20 20 20 20 20 20 20 |ed....... | 000043a0 20 20 20 42 49 43 20 20 20 20 52 33 2c 52 31 32 | BIC R3,R12| 000043b0 2c 23 33 31 0d 16 9e 1f 20 20 20 20 20 20 20 20 |,#31.... | 000043c0 20 20 52 53 42 53 20 20 20 52 33 2c 52 33 2c 23 | RSBS R3,R3,#| 000043d0 33 32 30 0d 16 a8 23 20 20 20 20 20 20 20 20 20 |320...# | 000043e0 20 41 44 44 20 20 20 20 52 33 2c 52 33 2c 52 33 | ADD R3,R3,R3| 000043f0 2c 4c 53 4c 23 33 0d 16 b2 31 20 20 20 20 20 20 |,LSL#3...1 | 00004400 20 20 20 20 41 44 44 47 45 20 20 50 43 2c 50 43 | ADDGE PC,PC| 00004410 2c 52 33 2c 4c 53 52 23 32 20 20 20 20 3b 28 33 |,R3,LSR#2 ;(3| 00004420 32 3e 3e 32 3d 38 29 0d 16 bc 15 20 20 20 20 20 |2>>2=8).... | 00004430 20 20 20 20 20 42 20 65 72 72 6f 72 0d 16 c6 1b | B error....| 00004440 5d 3a e3 20 6c 25 3d 30 20 b8 20 39 3a 5b 4f 50 |]:. l%=0 . 9:[OP| 00004450 54 20 70 61 73 73 25 0d 16 d0 1e 20 20 20 20 20 |T pass%.... | 00004460 20 20 20 20 20 4d 4f 56 20 52 31 30 2c 52 32 2c | MOV R10,R2,| 00004470 41 53 4c 23 38 0d 16 da 1f 20 20 20 20 20 20 20 |ASL#8.... | 00004480 20 20 20 4c 44 4d 44 42 20 52 30 21 2c 7b 52 32 | LDMDB R0!,{R2| 00004490 2d 52 39 7d 0d 16 e4 22 20 20 20 20 20 20 20 20 |-R9}..." | 000044a0 20 20 84 52 20 52 31 30 2c 52 31 30 2c 52 39 2c | .R R10,R10,R9,| 000044b0 4c 53 52 23 32 34 0d 16 ee 1d 20 20 20 20 20 20 |LSR#24.... | 000044c0 20 20 20 20 4d 4f 56 20 52 39 2c 52 39 2c 41 53 | MOV R9,R9,AS| 000044d0 4c 23 38 0d 16 f8 20 20 20 20 20 20 20 20 20 20 |L#8... | 000044e0 20 84 52 20 52 39 2c 52 39 2c 52 38 2c 4c 53 52 | .R R9,R9,R8,LSR| 000044f0 23 32 34 0d 17 02 1d 20 20 20 20 20 20 20 20 20 |#24.... | 00004500 20 4d 4f 56 20 52 38 2c 52 38 2c 41 53 4c 23 38 | MOV R8,R8,ASL#8| 00004510 0d 17 0c 20 20 20 20 20 20 20 20 20 20 20 84 52 |... .R| 00004520 20 52 38 2c 52 38 2c 52 37 2c 4c 53 52 23 32 34 | R8,R8,R7,LSR#24| 00004530 0d 17 16 1d 20 20 20 20 20 20 20 20 20 20 4d 4f |.... MO| 00004540 56 20 52 37 2c 52 37 2c 41 53 4c 23 38 0d 17 20 |V R7,R7,ASL#8.. | 00004550 20 20 20 20 20 20 20 20 20 20 20 84 52 20 52 37 | .R R7| 00004560 2c 52 37 2c 52 36 2c 4c 53 52 23 32 34 0d 17 2a |,R7,R6,LSR#24..*| 00004570 1d 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 52 |. MOV R| 00004580 36 2c 52 36 2c 41 53 4c 23 38 0d 17 34 20 20 20 |6,R6,ASL#8..4 | 00004590 20 20 20 20 20 20 20 20 84 52 20 52 36 2c 52 36 | .R R6,R6| 000045a0 2c 52 35 2c 4c 53 52 23 32 34 0d 17 3e 1d 20 20 |,R5,LSR#24..>. | 000045b0 20 20 20 20 20 20 20 20 4d 4f 56 20 52 35 2c 52 | MOV R5,R| 000045c0 35 2c 41 53 4c 23 38 0d 17 48 20 20 20 20 20 20 |5,ASL#8..H | 000045d0 20 20 20 20 20 84 52 20 52 35 2c 52 35 2c 52 34 | .R R5,R5,R4| 000045e0 2c 4c 53 52 23 32 34 0d 17 52 1d 20 20 20 20 20 |,LSR#24..R. | 000045f0 20 20 20 20 20 4d 4f 56 20 52 34 2c 52 34 2c 41 | MOV R4,R4,A| 00004600 53 4c 23 38 0d 17 5c 20 20 20 20 20 20 20 20 20 |SL#8..\ | 00004610 20 20 84 52 20 52 34 2c 52 34 2c 52 33 2c 4c 53 | .R R4,R4,R3,LS| 00004620 52 23 32 34 0d 17 66 1d 20 20 20 20 20 20 20 20 |R#24..f. | 00004630 20 20 4d 4f 56 20 52 33 2c 52 33 2c 41 53 4c 23 | MOV R3,R3,ASL#| 00004640 38 0d 17 70 20 20 20 20 20 20 20 20 20 20 20 84 |8..p .| 00004650 52 20 52 33 2c 52 33 2c 52 32 2c 4c 53 52 23 32 |R R3,R3,R2,LSR#2| 00004660 34 0d 17 7a 20 20 20 20 20 20 20 20 20 20 20 53 |4..z S| 00004670 54 4d 44 42 20 52 31 21 2c 7b 52 33 2d 52 31 30 |TMDB R1!,{R3-R10| 00004680 7d 0d 17 84 12 5d 3a ed 3a 5b 4f 50 54 20 70 61 |}....]:.:[OPT pa| 00004690 73 73 25 0d 17 8e 04 0d 17 98 19 20 20 20 20 20 |ss%........ | 000046a0 20 20 20 20 20 54 53 54 20 52 31 32 2c 23 31 36 | TST R12,#16| 000046b0 0d 17 a2 1f 20 20 20 20 20 20 20 20 20 20 4d 4f |.... MO| 000046c0 56 4e 45 20 52 36 2c 52 32 2c 41 53 4c 23 38 0d |VNE R6,R2,ASL#8.| 000046d0 17 ac 21 20 20 20 20 20 20 20 20 20 20 4c 44 4d |..! LDM| 000046e0 4e 45 44 42 20 52 30 21 2c 7b 52 32 2d 52 35 7d |NEDB R0!,{R2-R5}| 000046f0 0d 17 b6 22 20 20 20 20 20 20 20 20 20 20 84 52 |..." .R| 00004700 4e 45 20 52 36 2c 52 36 2c 52 35 2c 4c 53 52 23 |NE R6,R6,R5,LSR#| 00004710 32 34 0d 17 c0 1f 20 20 20 20 20 20 20 20 20 20 |24.... | 00004720 4d 4f 56 4e 45 20 52 35 2c 52 35 2c 41 53 4c 23 |MOVNE R5,R5,ASL#| 00004730 38 0d 17 ca 22 20 20 20 20 20 20 20 20 20 20 84 |8..." .| 00004740 52 4e 45 20 52 35 2c 52 35 2c 52 34 2c 4c 53 52 |RNE R5,R5,R4,LSR| 00004750 23 32 34 0d 17 d4 1f 20 20 20 20 20 20 20 20 20 |#24.... | 00004760 20 4d 4f 56 4e 45 20 52 34 2c 52 34 2c 41 53 4c | MOVNE R4,R4,ASL| 00004770 23 38 0d 17 de 22 20 20 20 20 20 20 20 20 20 20 |#8..." | 00004780 84 52 4e 45 20 52 34 2c 52 34 2c 52 33 2c 4c 53 |.RNE R4,R4,R3,LS| 00004790 52 23 32 34 0d 17 e8 1f 20 20 20 20 20 20 20 20 |R#24.... | 000047a0 20 20 4d 4f 56 4e 45 20 52 33 2c 52 33 2c 41 53 | MOVNE R3,R3,AS| 000047b0 4c 23 38 0d 17 f2 22 20 20 20 20 20 20 20 20 20 |L#8..." | 000047c0 20 84 52 4e 45 20 52 33 2c 52 33 2c 52 32 2c 4c | .RNE R3,R3,R2,L| 000047d0 53 52 23 32 34 0d 17 fc 21 20 20 20 20 20 20 20 |SR#24...! | 000047e0 20 20 20 53 54 4d 4e 45 44 42 20 52 31 21 2c 7b | STMNEDB R1!,{| 000047f0 52 33 2d 52 36 7d 0d 18 06 04 0d 18 10 18 20 20 |R3-R6}........ | 00004800 20 20 20 20 20 20 20 20 54 53 54 20 52 31 32 2c | TST R12,| 00004810 23 38 0d 18 1a 1f 20 20 20 20 20 20 20 20 20 20 |#8.... | 00004820 4d 4f 56 4e 45 20 52 34 2c 52 32 2c 41 53 4c 23 |MOVNE R4,R2,ASL#| 00004830 38 0d 18 24 21 20 20 20 20 20 20 20 20 20 20 4c |8..$! L| 00004840 44 4d 4e 45 44 42 20 52 30 21 2c 7b 52 32 2d 52 |DMNEDB R0!,{R2-R| 00004850 33 7d 0d 18 2e 22 20 20 20 20 20 20 20 20 20 20 |3}..." | 00004860 84 52 4e 45 20 52 34 2c 52 34 2c 52 33 2c 4c 53 |.RNE R4,R4,R3,LS| 00004870 52 23 32 34 0d 18 38 1f 20 20 20 20 20 20 20 20 |R#24..8. | 00004880 20 20 4d 4f 56 4e 45 20 52 33 2c 52 33 2c 41 53 | MOVNE R3,R3,AS| 00004890 4c 23 38 0d 18 42 22 20 20 20 20 20 20 20 20 20 |L#8..B" | 000048a0 20 84 52 4e 45 20 52 33 2c 52 33 2c 52 32 2c 4c | .RNE R3,R3,R2,L| 000048b0 53 52 23 32 34 0d 18 4c 21 20 20 20 20 20 20 20 |SR#24..L! | 000048c0 20 20 20 53 54 4d 4e 45 44 42 20 52 31 21 2c 7b | STMNEDB R1!,{| 000048d0 52 33 2d 52 34 7d 0d 18 56 04 0d 18 60 18 20 20 |R3-R4}..V...`. | 000048e0 20 20 20 20 20 20 20 20 54 53 54 20 52 31 32 2c | TST R12,| 000048f0 23 34 0d 18 6a 1f 20 20 20 20 20 20 20 20 20 20 |#4..j. | 00004900 4d 4f 56 4e 45 20 52 33 2c 52 32 2c 41 53 4c 23 |MOVNE R3,R2,ASL#| 00004910 38 0d 18 74 20 20 20 20 20 20 20 20 20 20 20 4c |8..t L| 00004920 44 52 4e 45 20 52 32 2c 5b 52 30 2c 23 2d 34 5d |DRNE R2,[R0,#-4]| 00004930 21 0d 18 7e 22 20 20 20 20 20 20 20 20 20 20 84 |!..~" .| 00004940 52 4e 45 20 52 33 2c 52 33 2c 52 32 2c 4c 53 52 |RNE R3,R3,R2,LSR| 00004950 23 32 34 0d 18 88 20 20 20 20 20 20 20 20 20 20 |#24... | 00004960 20 53 54 52 4e 45 20 52 33 2c 5b 52 31 2c 23 2d | STRNE R3,[R1,#-| 00004970 34 5d 21 0d 18 92 04 0d 18 9c 1e 20 20 20 20 20 |4]!........ | 00004980 20 20 20 20 20 4d 4f 56 20 52 32 2c 52 32 2c 52 | MOV R2,R2,R| 00004990 4f 52 23 31 36 0d 18 a6 04 0d 18 b0 18 20 20 20 |OR#16........ | 000049a0 20 20 20 20 20 20 20 54 53 54 20 52 31 32 2c 23 | TST R12,#| 000049b0 32 0d 18 ba 21 20 20 20 20 20 20 20 20 20 20 53 |2...! S| 000049c0 54 52 4e 45 42 20 52 32 2c 5b 52 31 2c 23 2d 31 |TRNEB R2,[R1,#-1| 000049d0 5d 21 0d 18 c4 20 20 20 20 20 20 20 20 20 20 20 |]!... | 000049e0 4d 4f 56 4e 45 20 52 32 2c 52 32 2c 52 4f 52 23 |MOVNE R2,R2,ROR#| 000049f0 32 34 0d 18 ce 21 20 20 20 20 20 20 20 20 20 20 |24...! | 00004a00 53 54 52 4e 45 42 20 52 32 2c 5b 52 31 2c 23 2d |STRNEB R2,[R1,#-| 00004a10 31 5d 21 0d 18 d8 20 20 20 20 20 20 20 20 20 20 |1]!... | 00004a20 20 4d 4f 56 4e 45 20 52 32 2c 52 32 2c 52 4f 52 | MOVNE R2,R2,ROR| 00004a30 23 32 34 0d 18 e2 04 0d 18 ec 18 20 20 20 20 20 |#24........ | 00004a40 20 20 20 20 20 54 53 54 20 52 31 32 2c 23 31 0d | TST R12,#1.| 00004a50 18 f6 21 20 20 20 20 20 20 20 20 20 20 53 54 52 |..! STR| 00004a60 4e 45 42 20 52 32 2c 5b 52 31 2c 23 2d 31 5d 21 |NEB R2,[R1,#-1]!| 00004a70 0d 19 00 0a 2e 65 72 72 6f 72 0d 19 0a 19 20 20 |.....error.... | 00004a80 20 20 20 20 20 20 20 20 4d 4f 56 53 20 50 43 2c | MOVS PC,| 00004a90 52 31 34 0d 19 14 0f 2e 73 6d 61 6c 6c 5f 63 6f |R14.....small_co| 00004aa0 70 79 0d 19 1e 19 20 20 20 20 20 20 20 20 20 20 |py.... | 00004ab0 4d 4f 56 53 20 50 43 2c 52 31 34 0d 19 28 0c 2e |MOVS PC,R14..(..| 00004ac0 6d 6f 76 65 5f 6e 77 0d 19 32 41 20 20 20 20 20 |move_nw..2A | 00004ad0 20 20 20 20 20 3b 20 4f 6e 20 65 6e 74 72 79 20 | ; On entry | 00004ae0 52 30 3d 73 72 63 2c 20 52 31 3d 64 65 73 74 2c |R0=src, R1=dest,| 00004af0 20 52 31 31 20 3d 20 68 65 69 67 68 74 2c 20 52 | R11 = height, R| 00004b00 31 32 3d 77 69 64 74 68 0d 19 3c 26 20 20 20 20 |12=width..<& | 00004b10 20 20 20 20 20 20 3b 20 20 20 20 20 20 20 20 20 | ; | 00004b20 20 52 34 3d 6c 69 6e 65 6c 65 6e 67 74 68 0d 19 | R4=linelength..| 00004b30 46 25 20 20 20 20 20 20 20 20 20 20 53 54 4d 46 |F% STMF| 00004b40 44 20 52 31 33 21 2c 7b 52 30 2d 52 31 32 2c 52 |D R13!,{R0-R12,R| 00004b50 31 34 7d 0d 19 50 2b 20 20 20 20 20 20 20 20 20 |14}..P+ | 00004b60 20 4c 44 52 20 52 32 2c 5b 6d 65 6d 2c 23 61 72 | LDR R2,[mem,#ar| 00004b70 63 5f 73 63 72 65 65 6e 73 74 61 72 74 5d 0d 19 |c_screenstart]..| 00004b80 5a 1a 20 20 20 20 20 20 20 20 20 20 41 44 44 20 |Z. ADD | 00004b90 52 30 2c 52 30 2c 52 32 0d 19 64 1a 20 20 20 20 |R0,R0,R2..d. | 00004ba0 20 20 20 20 20 20 41 44 44 20 52 31 2c 52 31 2c | ADD R1,R1,| 00004bb0 52 32 0d 19 6e 04 0d 19 78 17 20 20 20 20 20 20 |R2..n...x. | 00004bc0 20 20 20 20 4d 4f 56 20 52 32 2c 52 34 0d 19 82 | MOV R2,R4...| 00004bd0 1a 20 20 20 20 20 20 20 20 20 20 53 55 42 20 52 |. SUB R| 00004be0 33 2c 52 31 2c 52 30 0d 19 8c 18 20 20 20 20 20 |3,R1,R0.... | 00004bf0 20 20 20 20 20 80 20 52 33 2c 52 33 2c 23 33 0d | . R3,R3,#3.| 00004c00 19 96 12 2e 6d 6f 76 65 5f 6e 77 5f 6c 6f 6f 70 |....move_nw_loop| 00004c10 31 0d 19 a0 24 20 20 20 20 20 20 20 20 20 20 53 |1...$ S| 00004c20 54 4d 46 44 20 52 31 33 21 2c 7b 52 30 2d 52 33 |TMFD R13!,{R0-R3| 00004c30 2c 52 31 32 7d 0d 19 aa 20 20 20 20 20 20 20 20 |,R12}... | 00004c40 20 20 20 41 44 44 20 50 43 2c 50 43 2c 52 33 2c | ADD PC,PC,R3,| 00004c50 4c 53 4c 23 33 0d 19 b4 14 20 20 20 20 20 20 20 |LSL#3.... | 00004c60 20 20 20 45 51 55 44 20 30 0d 19 be 20 20 20 20 | EQUD 0... | 00004c70 20 20 20 20 20 20 20 42 4c 20 72 6c 6f 66 66 73 | BL rloffs| 00004c80 65 74 6d 6f 64 34 69 73 30 0d 19 c8 1c 20 20 20 |etmod4is0.... | 00004c90 20 20 20 20 20 20 20 42 20 6d 6f 76 65 5f 6e 77 | B move_nw| 00004ca0 5f 73 6b 69 70 0d 19 d2 20 20 20 20 20 20 20 20 |_skip... | 00004cb0 20 20 20 42 4c 20 72 6c 6f 66 66 73 65 74 6d 6f | BL rloffsetmo| 00004cc0 64 34 69 73 31 0d 19 dc 1c 20 20 20 20 20 20 20 |d4is1.... | 00004cd0 20 20 20 42 20 6d 6f 76 65 5f 6e 77 5f 73 6b 69 | B move_nw_ski| 00004ce0 70 0d 19 e6 20 20 20 20 20 20 20 20 20 20 20 42 |p... B| 00004cf0 4c 20 72 6c 6f 66 66 73 65 74 6d 6f 64 34 69 73 |L rloffsetmod4is| 00004d00 32 0d 19 f0 1c 20 20 20 20 20 20 20 20 20 20 42 |2.... B| 00004d10 20 6d 6f 76 65 5f 6e 77 5f 73 6b 69 70 0d 19 fa | move_nw_skip...| 00004d20 20 20 20 20 20 20 20 20 20 20 20 42 4c 20 72 6c | BL rl| 00004d30 6f 66 66 73 65 74 6d 6f 64 34 69 73 33 0d 1a 04 |offsetmod4is3...| 00004d40 11 2e 6d 6f 76 65 5f 6e 77 5f 73 6b 69 70 0d 1a |..move_nw_skip..| 00004d50 0e 24 20 20 20 20 20 20 20 20 20 20 4c 44 4d 46 |.$ LDMF| 00004d60 44 20 52 31 33 21 2c 7b 52 30 2d 52 33 2c 52 31 |D R13!,{R0-R3,R1| 00004d70 32 7d 0d 1a 18 1a 20 20 20 20 20 20 20 20 20 20 |2}.... | 00004d80 41 44 44 20 52 30 2c 52 30 2c 52 32 0d 1a 22 1a |ADD R0,R0,R2..".| 00004d90 20 20 20 20 20 20 20 20 20 20 41 44 44 20 52 31 | ADD R1| 00004da0 2c 52 31 2c 52 32 0d 1a 2c 1d 20 20 20 20 20 20 |,R1,R2..,. | 00004db0 20 20 20 20 53 55 42 53 20 52 31 31 2c 52 31 31 | SUBS R11,R11| 00004dc0 2c 23 31 0d 1a 36 1f 20 20 20 20 20 20 20 20 20 |,#1..6. | 00004dd0 20 42 47 54 20 6d 6f 76 65 5f 6e 77 5f 6c 6f 6f | BGT move_nw_loo| 00004de0 70 31 0d 1a 40 25 20 20 20 20 20 20 20 20 20 20 |p1..@% | 00004df0 4c 44 4d 46 44 20 52 31 33 21 2c 7b 52 30 2d 52 |LDMFD R13!,{R0-R| 00004e00 31 32 2c 50 43 7d 5e 0d 1a 4a 0c 2e 6d 6f 76 65 |12,PC}^..J..move| 00004e10 5f 6e 65 0d 1a 54 41 20 20 20 20 20 20 20 20 20 |_ne..TA | 00004e20 20 3b 20 4f 6e 20 65 6e 74 72 79 20 52 30 3d 73 | ; On entry R0=s| 00004e30 72 63 2c 20 52 31 3d 64 65 73 74 2c 20 52 31 31 |rc, R1=dest, R11| 00004e40 20 3d 20 68 65 69 67 68 74 2c 20 52 31 32 3d 77 | = height, R12=w| 00004e50 69 64 74 68 0d 1a 5e 25 20 20 20 20 20 20 20 20 |idth..^% | 00004e60 20 20 53 54 4d 46 44 20 52 31 33 21 2c 7b 52 30 | STMFD R13!,{R0| 00004e70 2d 52 31 32 2c 52 31 34 7d 0d 1a 68 2b 20 20 20 |-R12,R14}..h+ | 00004e80 20 20 20 20 20 20 20 4c 44 52 20 52 32 2c 5b 6d | LDR R2,[m| 00004e90 65 6d 2c 23 61 72 63 5f 73 63 72 65 65 6e 73 74 |em,#arc_screenst| 00004ea0 61 72 74 5d 0d 1a 72 1a 20 20 20 20 20 20 20 20 |art]..r. | 00004eb0 20 20 41 44 44 20 52 30 2c 52 30 2c 52 32 0d 1a | ADD R0,R0,R2..| 00004ec0 7c 1a 20 20 20 20 20 20 20 20 20 20 41 44 44 20 ||. ADD | 00004ed0 52 31 2c 52 31 2c 52 32 0d 1a 86 04 0d 1a 90 17 |R1,R1,R2........| 00004ee0 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 52 32 | MOV R2| 00004ef0 2c 52 34 0d 1a 9a 1b 20 20 20 20 20 20 20 20 20 |,R4.... | 00004f00 20 53 55 42 53 20 52 33 2c 52 31 2c 52 30 0d 1a | SUBS R3,R1,R0..| 00004f10 a4 18 20 20 20 20 20 20 20 20 20 20 80 20 52 33 |.. . R3| 00004f20 2c 52 33 2c 23 33 0d 1a ae 12 2e 6d 6f 76 65 5f |,R3,#3.....move_| 00004f30 6e 65 5f 6c 6f 6f 70 31 0d 1a b8 24 20 20 20 20 |ne_loop1...$ | 00004f40 20 20 20 20 20 20 53 54 4d 46 44 20 52 31 33 21 | STMFD R13!| 00004f50 2c 7b 52 30 2d 52 33 2c 52 31 32 7d 0d 1a c2 20 |,{R0-R3,R12}... | 00004f60 20 20 20 20 20 20 20 20 20 20 41 44 44 20 50 43 | ADD PC| 00004f70 2c 50 43 2c 52 33 2c 4c 53 4c 23 33 0d 1a cc 14 |,PC,R3,LSL#3....| 00004f80 20 20 20 20 20 20 20 20 20 20 45 51 55 44 20 30 | EQUD 0| 00004f90 0d 1a d6 20 20 20 20 20 20 20 20 20 20 20 42 4c |... BL| 00004fa0 20 6c 72 6f 66 66 73 65 74 6d 6f 64 34 69 73 30 | lroffsetmod4is0| 00004fb0 0d 1a e0 1c 20 20 20 20 20 20 20 20 20 20 42 20 |.... B | 00004fc0 6d 6f 76 65 5f 6e 65 5f 73 6b 69 70 0d 1a ea 20 |move_ne_skip... | 00004fd0 20 20 20 20 20 20 20 20 20 20 42 4c 20 6c 72 6f | BL lro| 00004fe0 66 66 73 65 74 6d 6f 64 34 69 73 31 0d 1a f4 1c |ffsetmod4is1....| 00004ff0 20 20 20 20 20 20 20 20 20 20 42 20 6d 6f 76 65 | B move| 00005000 5f 6e 65 5f 73 6b 69 70 0d 1a fe 20 20 20 20 20 |_ne_skip... | 00005010 20 20 20 20 20 20 42 4c 20 6c 72 6f 66 66 73 65 | BL lroffse| 00005020 74 6d 6f 64 34 69 73 32 0d 1b 08 1c 20 20 20 20 |tmod4is2.... | 00005030 20 20 20 20 20 20 42 20 6d 6f 76 65 5f 6e 65 5f | B move_ne_| 00005040 73 6b 69 70 0d 1b 12 20 20 20 20 20 20 20 20 20 |skip... | 00005050 20 20 42 4c 20 6c 72 6f 66 66 73 65 74 6d 6f 64 | BL lroffsetmod| 00005060 34 69 73 33 0d 1b 1c 11 2e 6d 6f 76 65 5f 6e 65 |4is3.....move_ne| 00005070 5f 73 6b 69 70 0d 1b 26 24 20 20 20 20 20 20 20 |_skip..&$ | 00005080 20 20 20 4c 44 4d 46 44 20 52 31 33 21 2c 7b 52 | LDMFD R13!,{R| 00005090 30 2d 52 33 2c 52 31 32 7d 0d 1b 30 1a 20 20 20 |0-R3,R12}..0. | 000050a0 20 20 20 20 20 20 20 41 44 44 20 52 30 2c 52 30 | ADD R0,R0| 000050b0 2c 52 32 0d 1b 3a 1a 20 20 20 20 20 20 20 20 20 |,R2..:. | 000050c0 20 41 44 44 20 52 31 2c 52 31 2c 52 32 0d 1b 44 | ADD R1,R1,R2..D| 000050d0 1d 20 20 20 20 20 20 20 20 20 20 53 55 42 53 20 |. SUBS | 000050e0 52 31 31 2c 52 31 31 2c 23 31 0d 1b 4e 1f 20 20 |R11,R11,#1..N. | 000050f0 20 20 20 20 20 20 20 20 42 47 54 20 6d 6f 76 65 | BGT move| 00005100 5f 6e 65 5f 6c 6f 6f 70 31 0d 1b 58 10 2e 6d 6f |_ne_loop1..X..mo| 00005110 76 65 5f 6e 65 5f 65 6e 64 0d 1b 62 25 20 20 20 |ve_ne_end..b% | 00005120 20 20 20 20 20 20 20 4c 44 4d 46 44 20 52 31 33 | LDMFD R13| 00005130 21 2c 7b 52 30 2d 52 31 32 2c 50 43 7d 5e 0d 1b |!,{R0-R12,PC}^..| 00005140 6c 0c 2e 6d 6f 76 65 5f 73 77 0d 1b 76 41 20 20 |l..move_sw..vA | 00005150 20 20 20 20 20 20 20 20 3b 20 4f 6e 20 65 6e 74 | ; On ent| 00005160 72 79 20 52 30 3d 73 72 63 2c 20 52 31 3d 64 65 |ry R0=src, R1=de| 00005170 73 74 2c 20 52 31 31 20 3d 20 68 65 69 67 68 74 |st, R11 = height| 00005180 2c 20 52 31 32 3d 77 69 64 74 68 0d 1b 80 25 20 |, R12=width...% | 00005190 20 20 20 20 20 20 20 20 20 53 54 4d 46 44 20 52 | STMFD R| 000051a0 31 33 21 2c 7b 52 30 2d 52 31 32 2c 52 31 34 7d |13!,{R0-R12,R14}| 000051b0 0d 1b 8a 2b 20 20 20 20 20 20 20 20 20 20 4c 44 |...+ LD| 000051c0 52 20 52 33 2c 5b 6d 65 6d 2c 23 61 72 63 5f 73 |R R3,[mem,#arc_s| 000051d0 63 72 65 65 6e 73 74 61 72 74 5d 0d 1b 94 17 20 |creenstart].... | 000051e0 20 20 20 20 20 20 20 20 20 4d 4f 56 20 52 32 2c | MOV R2,| 000051f0 52 34 0d 1b 9e 0e 20 20 20 20 20 20 20 20 20 20 |R4.... | 00005200 0d 1b a8 38 20 20 20 20 20 20 20 20 20 20 4d 4c |...8 ML| 00005210 41 20 52 33 2c 52 32 2c 52 31 31 2c 52 33 20 20 |A R3,R2,R11,R3 | 00005220 20 20 3b 20 4f 66 66 73 65 74 20 74 6f 20 74 68 | ; Offset to th| 00005230 65 20 62 6f 74 74 6f 6d 0d 1b b2 1a 20 20 20 20 |e bottom.... | 00005240 20 20 20 20 20 20 53 55 42 20 52 33 2c 52 33 2c | SUB R3,R3,| 00005250 52 32 0d 1b bc 1a 20 20 20 20 20 20 20 20 20 20 |R2.... | 00005260 41 44 44 20 52 30 2c 52 30 2c 52 33 0d 1b c6 1a |ADD R0,R0,R3....| 00005270 20 20 20 20 20 20 20 20 20 20 41 44 44 20 52 31 | ADD R1| 00005280 2c 52 31 2c 52 33 0d 1b d0 0e 20 20 20 20 20 20 |,R1,R3.... | 00005290 20 20 20 20 0d 1b da 1a 20 20 20 20 20 20 20 20 | .... | 000052a0 20 20 53 55 42 20 52 33 2c 52 31 2c 52 30 0d 1b | SUB R3,R1,R0..| 000052b0 e4 18 20 20 20 20 20 20 20 20 20 20 80 20 52 33 |.. . R3| 000052c0 2c 52 33 2c 23 33 0d 1b ee 12 2e 6d 6f 76 65 5f |,R3,#3.....move_| 000052d0 73 77 5f 6c 6f 6f 70 31 0d 1b f8 24 20 20 20 20 |sw_loop1...$ | 000052e0 20 20 20 20 20 20 53 54 4d 46 44 20 52 31 33 21 | STMFD R13!| 000052f0 2c 7b 52 30 2d 52 33 2c 52 31 32 7d 0d 1c 02 20 |,{R0-R3,R12}... | 00005300 20 20 20 20 20 20 20 20 20 20 41 44 44 20 50 43 | ADD PC| 00005310 2c 50 43 2c 52 33 2c 4c 53 4c 23 33 0d 1c 0c 14 |,PC,R3,LSL#3....| 00005320 20 20 20 20 20 20 20 20 20 20 45 51 55 44 20 30 | EQUD 0| 00005330 0d 1c 16 20 20 20 20 20 20 20 20 20 20 20 42 4c |... BL| 00005340 20 72 6c 6f 66 66 73 65 74 6d 6f 64 34 69 73 30 | rloffsetmod4is0| 00005350 0d 1c 20 1c 20 20 20 20 20 20 20 20 20 20 42 20 |.. . B | 00005360 6d 6f 76 65 5f 73 77 5f 73 6b 69 70 0d 1c 2a 20 |move_sw_skip..* | 00005370 20 20 20 20 20 20 20 20 20 20 42 4c 20 72 6c 6f | BL rlo| 00005380 66 66 73 65 74 6d 6f 64 34 69 73 31 0d 1c 34 1c |ffsetmod4is1..4.| 00005390 20 20 20 20 20 20 20 20 20 20 42 20 6d 6f 76 65 | B move| 000053a0 5f 73 77 5f 73 6b 69 70 0d 1c 3e 20 20 20 20 20 |_sw_skip..> | 000053b0 20 20 20 20 20 20 42 4c 20 72 6c 6f 66 66 73 65 | BL rloffse| 000053c0 74 6d 6f 64 34 69 73 32 0d 1c 48 1c 20 20 20 20 |tmod4is2..H. | 000053d0 20 20 20 20 20 20 42 20 6d 6f 76 65 5f 73 77 5f | B move_sw_| 000053e0 73 6b 69 70 0d 1c 52 20 20 20 20 20 20 20 20 20 |skip..R | 000053f0 20 20 42 4c 20 72 6c 6f 66 66 73 65 74 6d 6f 64 | BL rloffsetmod| 00005400 34 69 73 33 0d 1c 5c 11 2e 6d 6f 76 65 5f 73 77 |4is3..\..move_sw| 00005410 5f 73 6b 69 70 0d 1c 66 24 20 20 20 20 20 20 20 |_skip..f$ | 00005420 20 20 20 4c 44 4d 46 44 20 52 31 33 21 2c 7b 52 | LDMFD R13!,{R| 00005430 30 2d 52 33 2c 52 31 32 7d 0d 1c 70 1a 20 20 20 |0-R3,R12}..p. | 00005440 20 20 20 20 20 20 20 53 55 42 20 52 30 2c 52 30 | SUB R0,R0| 00005450 2c 52 32 0d 1c 7a 1a 20 20 20 20 20 20 20 20 20 |,R2..z. | 00005460 20 53 55 42 20 52 31 2c 52 31 2c 52 32 0d 1c 84 | SUB R1,R1,R2...| 00005470 1d 20 20 20 20 20 20 20 20 20 20 53 55 42 53 20 |. SUBS | 00005480 52 31 31 2c 52 31 31 2c 23 31 0d 1c 8e 1f 20 20 |R11,R11,#1.... | 00005490 20 20 20 20 20 20 20 20 42 47 54 20 6d 6f 76 65 | BGT move| 000054a0 5f 73 77 5f 6c 6f 6f 70 31 0d 1c 98 25 20 20 20 |_sw_loop1...% | 000054b0 20 20 20 20 20 20 20 4c 44 4d 46 44 20 52 31 33 | LDMFD R13| 000054c0 21 2c 7b 52 30 2d 52 31 32 2c 50 43 7d 5e 0d 1c |!,{R0-R12,PC}^..| 000054d0 a2 0c 2e 6d 6f 76 65 5f 73 65 0d 1c ac 41 20 20 |...move_se...A | 000054e0 20 20 20 20 20 20 20 20 3b 20 4f 6e 20 65 6e 74 | ; On ent| 000054f0 72 79 20 52 30 3d 73 72 63 2c 20 52 31 3d 64 65 |ry R0=src, R1=de| 00005500 73 74 2c 20 52 31 31 20 3d 20 68 65 69 67 68 74 |st, R11 = height| 00005510 2c 20 52 31 32 3d 77 69 64 74 68 0d 1c b6 25 20 |, R12=width...% | 00005520 20 20 20 20 20 20 20 20 20 53 54 4d 46 44 20 52 | STMFD R| 00005530 31 33 21 2c 7b 52 30 2d 52 31 32 2c 52 31 34 7d |13!,{R0-R12,R14}| 00005540 0d 1c c0 2b 20 20 20 20 20 20 20 20 20 20 4c 44 |...+ LD| 00005550 52 20 52 33 2c 5b 6d 65 6d 2c 23 61 72 63 5f 73 |R R3,[mem,#arc_s| 00005560 63 72 65 65 6e 73 74 61 72 74 5d 0d 1c ca 04 0d |creenstart].....| 00005570 1c d4 17 20 20 20 20 20 20 20 20 20 20 4d 4f 56 |... MOV| 00005580 20 52 32 2c 52 34 0d 1c de 04 0d 1c e8 36 20 20 | R2,R4.......6 | 00005590 20 20 20 20 20 20 20 20 4d 4c 41 20 52 33 2c 52 | MLA R3,R| 000055a0 32 2c 52 31 31 2c 52 33 20 20 3b 20 4f 66 66 73 |2,R11,R3 ; Offs| 000055b0 65 74 20 74 6f 20 74 68 65 20 62 6f 74 74 6f 6d |et to the bottom| 000055c0 0d 1c f2 1a 20 20 20 20 20 20 20 20 20 20 53 55 |.... SU| 000055d0 42 20 52 33 2c 52 33 2c 52 32 0d 1c fc 1a 20 20 |B R3,R3,R2.... | 000055e0 20 20 20 20 20 20 20 20 41 44 44 20 52 30 2c 52 | ADD R0,R| 000055f0 30 2c 52 33 0d 1d 06 1a 20 20 20 20 20 20 20 20 |0,R3.... | 00005600 20 20 41 44 44 20 52 31 2c 52 31 2c 52 33 0d 1d | ADD R1,R1,R3..| 00005610 10 04 0d 1d 1a 1a 20 20 20 20 20 20 20 20 20 20 |...... | 00005620 53 55 42 20 52 33 2c 52 31 2c 52 30 0d 1d 24 18 |SUB R3,R1,R0..$.| 00005630 20 20 20 20 20 20 20 20 20 20 80 20 52 33 2c 52 | . R3,R| 00005640 33 2c 23 33 0d 1d 2e 12 2e 6d 6f 76 65 5f 73 65 |3,#3.....move_se| 00005650 5f 6c 6f 6f 70 31 0d 1d 38 24 20 20 20 20 20 20 |_loop1..8$ | 00005660 20 20 20 20 53 54 4d 46 44 20 52 31 33 21 2c 7b | STMFD R13!,{| 00005670 52 30 2d 52 33 2c 52 31 32 7d 0d 1d 42 20 20 20 |R0-R3,R12}..B | 00005680 20 20 20 20 20 20 20 20 41 44 44 20 50 43 2c 50 | ADD PC,P| 00005690 43 2c 52 33 2c 4c 53 4c 23 33 0d 1d 4c 14 20 20 |C,R3,LSL#3..L. | 000056a0 20 20 20 20 20 20 20 20 45 51 55 44 20 30 0d 1d | EQUD 0..| 000056b0 56 20 20 20 20 20 20 20 20 20 20 20 42 4c 20 6c |V BL l| 000056c0 72 6f 66 66 73 65 74 6d 6f 64 34 69 73 30 0d 1d |roffsetmod4is0..| 000056d0 60 1c 20 20 20 20 20 20 20 20 20 20 42 20 6d 6f |`. B mo| 000056e0 76 65 5f 73 65 5f 73 6b 69 70 0d 1d 6a 20 20 20 |ve_se_skip..j | 000056f0 20 20 20 20 20 20 20 20 42 4c 20 6c 72 6f 66 66 | BL lroff| 00005700 73 65 74 6d 6f 64 34 69 73 31 0d 1d 74 1c 20 20 |setmod4is1..t. | 00005710 20 20 20 20 20 20 20 20 42 20 6d 6f 76 65 5f 73 | B move_s| 00005720 65 5f 73 6b 69 70 0d 1d 7e 20 20 20 20 20 20 20 |e_skip..~ | 00005730 20 20 20 20 42 4c 20 6c 72 6f 66 66 73 65 74 6d | BL lroffsetm| 00005740 6f 64 34 69 73 32 0d 1d 88 1c 20 20 20 20 20 20 |od4is2.... | 00005750 20 20 20 20 42 20 6d 6f 76 65 5f 73 65 5f 73 6b | B move_se_sk| 00005760 69 70 0d 1d 92 20 20 20 20 20 20 20 20 20 20 20 |ip... | 00005770 42 4c 20 6c 72 6f 66 66 73 65 74 6d 6f 64 34 69 |BL lroffsetmod4i| 00005780 73 33 0d 1d 9c 11 2e 6d 6f 76 65 5f 73 65 5f 73 |s3.....move_se_s| 00005790 6b 69 70 0d 1d a6 24 20 20 20 20 20 20 20 20 20 |kip...$ | 000057a0 20 4c 44 4d 46 44 20 52 31 33 21 2c 7b 52 30 2d | LDMFD R13!,{R0-| 000057b0 52 33 2c 52 31 32 7d 0d 1d b0 1a 20 20 20 20 20 |R3,R12}.... | 000057c0 20 20 20 20 20 53 55 42 20 52 30 2c 52 30 2c 52 | SUB R0,R0,R| 000057d0 32 0d 1d ba 1a 20 20 20 20 20 20 20 20 20 20 53 |2.... S| 000057e0 55 42 20 52 31 2c 52 31 2c 52 32 0d 1d c4 1d 20 |UB R1,R1,R2.... | 000057f0 20 20 20 20 20 20 20 20 20 53 55 42 53 20 52 31 | SUBS R1| 00005800 31 2c 52 31 31 2c 23 31 0d 1d ce 1f 20 20 20 20 |1,R11,#1.... | 00005810 20 20 20 20 20 20 42 47 54 20 6d 6f 76 65 5f 73 | BGT move_s| 00005820 65 5f 6c 6f 6f 70 31 0d 1d d8 25 20 20 20 20 20 |e_loop1...% | 00005830 20 20 20 20 20 4c 44 4d 46 44 20 52 31 33 21 2c | LDMFD R13!,| 00005840 7b 52 30 2d 52 31 32 2c 50 43 7d 5e 0d 1d e2 05 |{R0-R12,PC}^....| 00005850 5d 0d 1d ec 0a 3d 70 61 73 73 25 0d 1d f6 05 3a |]....=pass%....:| 00005860 0d 1e 00 16 dd a4 64 6f 68 61 72 64 77 61 72 65 |......dohardware| 00005870 73 63 72 6f 6c 6c 0d 1e 0a 0a 5b 4f 50 54 20 70 |scroll....[OPT p| 00005880 0d 1e 14 37 20 20 20 20 20 20 20 20 20 20 41 44 |...7 AD| 00005890 52 20 52 31 33 2c 68 61 72 64 77 61 72 65 5f 73 |R R13,hardware_s| 000058a0 63 72 6f 6c 6c 5f 73 74 61 63 6b 5f 73 70 61 63 |croll_stack_spac| 000058b0 65 5f 74 6f 70 2d 34 0d 1e 1e 25 20 20 20 20 20 |e_top-4...% | 000058c0 20 20 20 20 20 53 54 4d 46 44 20 52 31 33 21 2c | STMFD R13!,| 000058d0 7b 52 30 2d 52 31 32 2c 52 31 34 7d 0d 1e 28 25 |{R0-R12,R14}..(%| 000058e0 20 20 20 20 20 20 20 20 20 20 3b 20 43 48 45 43 | ; CHEC| 000058f0 4b 20 e7 20 eb 20 43 48 41 4e 47 45 44 3f 3f 3f |K . . CHANGED???| 00005900 3f 0d 1e 32 26 20 20 20 20 20 20 20 20 20 20 3b |?..2& ;| 00005910 4c 44 52 42 20 52 30 2c 5b 6d 65 6d 2c 23 6c 61 |LDRB R0,[mem,#la| 00005920 73 74 6d 6f 64 65 5d 0d 1e 46 18 20 20 20 20 20 |stmode]..F. | 00005930 20 20 20 20 20 3b 43 4d 50 20 52 30 2c 23 37 0d | ;CMP R0,#7.| 00005940 1e 50 1c 20 20 20 20 20 20 20 20 20 20 3b 3b 43 |.P. ;;C| 00005950 4d 50 4e 45 20 52 30 2c 23 39 39 0d 1e 5a 1e 20 |MPNE R0,#99..Z. | 00005960 20 20 20 20 20 20 20 20 20 3b 53 57 49 45 51 20 | ;SWIEQ | 00005970 26 31 30 30 2b 97 22 50 22 0d 1e 64 21 20 20 20 |&100+."P"..d! | 00005980 20 20 20 20 20 20 20 3b 42 45 51 20 6e 6f 5f 73 | ;BEQ no_s| 00005990 63 72 6f 6c 6c 5f 72 65 71 64 0d 1e 65 23 20 20 |croll_reqd..e# | 000059a0 20 20 20 20 20 20 20 20 4c 44 52 42 20 52 30 2c | LDRB R0,| 000059b0 5b 6d 65 6d 2c 23 74 61 6d 70 65 72 5d 0d 1e 66 |[mem,#tamper]..f| 000059c0 17 20 20 20 20 20 20 20 20 20 20 43 4d 50 20 52 |. CMP R| 000059d0 30 2c 23 30 0d 1e 67 20 20 20 20 20 20 20 20 20 |0,#0..g | 000059e0 20 20 42 4e 45 20 6e 6f 5f 73 63 72 6f 6c 6c 5f | BNE no_scroll_| 000059f0 72 65 71 64 0d 1e 6e 0e 20 20 20 20 20 20 20 20 |reqd..n. | 00005a00 20 20 0d 1e 78 30 20 20 20 20 20 20 20 20 20 20 | ..x0 | 00005a10 3b 20 46 69 72 73 74 20 67 65 74 20 77 68 65 72 |; First get wher| 00005a20 65 20 74 68 65 20 73 63 72 65 65 6e 20 69 73 2e |e the screen is.| 00005a30 2e 2e 0d 1e 82 28 20 20 20 20 20 20 20 20 20 20 |.....( | 00005a40 4c 44 52 42 20 52 31 2c 5b 6d 65 6d 2c 23 63 72 |LDRB R1,[mem,#cr| 00005a50 74 5f 72 65 67 73 2b 31 33 5d 0d 1e 8c 28 20 20 |t_regs+13]...( | 00005a60 20 20 20 20 20 20 20 20 4c 44 52 42 20 52 30 2c | LDRB R0,| 00005a70 5b 6d 65 6d 2c 23 63 72 74 5f 72 65 67 73 2b 31 |[mem,#crt_regs+1| 00005a80 32 5d 0d 1e 96 1c 20 20 20 20 20 20 20 20 20 20 |2].... | 00005a90 80 20 52 30 2c 52 30 2c 23 25 31 31 31 31 0d 1e |. R0,R0,#%1111..| 00005aa0 a0 20 20 20 20 20 20 20 20 20 20 20 41 44 44 20 |. ADD | 00005ab0 52 31 2c 52 31 2c 52 30 2c 4c 53 4c 23 38 0d 1e |R1,R1,R0,LSL#8..| 00005ac0 aa 04 0d 1e b4 26 20 20 20 20 20 20 20 20 20 20 |.....& | 00005ad0 53 55 42 20 52 32 2c 6d 65 6d 2c 23 35 31 32 20 |SUB R2,mem,#512 | 00005ae0 3b 20 73 68 65 69 6c 61 0d 1e be 1f 20 20 20 20 |; sheila.... | 00005af0 20 20 20 20 20 20 4c 44 52 42 20 52 32 2c 5b 52 | LDRB R2,[R| 00005b00 32 2c 23 26 32 30 5d 0d 1e c8 1e 20 20 20 20 20 |2,#&20].... | 00005b10 20 20 20 20 20 4d 4f 56 53 20 52 32 2c 52 32 2c | MOVS R2,R2,| 00005b20 4c 53 52 23 32 0d 1e d2 04 0d 1e dc 18 20 20 20 |LSR#2........ | 00005b30 20 20 20 20 20 20 20 80 20 52 32 2c 52 32 2c 23 | . R2,R2,#| 00005b40 37 0d 1e e6 1e 20 20 20 20 20 20 20 20 20 20 3b |7.... ;| 00005b50 54 65 73 74 20 66 6f 72 20 4d 6f 64 65 20 34 0d |Test for Mode 4.| 00005b60 1e f0 1c 20 20 20 20 20 20 20 20 20 20 43 4d 50 |... CMP| 00005b70 20 20 20 52 32 2c 23 25 30 30 30 0d 1e fa 1c 20 | R2,#%000.... | 00005b80 20 20 20 20 20 20 20 20 20 43 4d 50 4e 45 20 52 | CMPNE R| 00005b90 32 2c 23 25 30 31 30 0d 1f 04 1d 20 20 20 20 20 |2,#%010.... | 00005ba0 20 20 20 20 20 ec 51 20 52 34 2c 23 31 36 30 20 | .Q R4,#160 | 00005bb0 3b 20 34 30 0d 1f 0e 1a 20 20 20 20 20 20 20 20 |; 40.... | 00005bc0 20 20 ec 51 20 52 35 2c 23 34 20 3b 20 31 0d 1f | .Q R5,#4 ; 1..| 00005bd0 18 1e 20 20 20 20 20 20 20 20 20 20 3b 54 65 73 |.. ;Tes| 00005be0 74 20 66 6f 72 20 4d 6f 64 65 20 30 0d 1f 22 1c |t for Mode 0..".| 00005bf0 20 20 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 | CMP | 00005c00 52 32 2c 23 25 30 31 31 0d 1f 2c 1c 20 20 20 20 |R2,#%011..,. | 00005c10 20 20 20 20 20 20 43 4d 50 4e 45 20 52 32 2c 23 | CMPNE R2,#| 00005c20 25 31 31 31 0d 1f 36 17 20 20 20 20 20 20 20 20 |%111..6. | 00005c30 20 20 ec 51 20 52 34 2c 23 38 30 0d 1f 40 16 20 | .Q R4,#80..@. | 00005c40 20 20 20 20 20 20 20 20 20 ec 51 20 52 35 2c 23 | .Q R5,#| 00005c50 31 0d 1f 4a 1e 20 20 20 20 20 20 20 20 20 20 3b |1..J. ;| 00005c60 54 65 73 74 20 66 6f 72 20 4d 6f 64 65 20 32 0d |Test for Mode 2.| 00005c70 1f 54 1c 20 20 20 20 20 20 20 20 20 20 43 4d 50 |.T. CMP| 00005c80 20 20 20 52 32 2c 23 25 31 30 31 0d 1f 5e 1e 20 | R2,#%101..^. | 00005c90 20 20 20 20 20 20 20 20 20 ec 51 20 52 34 2c 23 | .Q R4,#| 00005ca0 33 32 30 20 3b 20 33 32 30 0d 1f 68 1a 20 20 20 |320 ; 320..h. | 00005cb0 20 20 20 20 20 20 20 ec 51 20 52 35 2c 23 32 20 | .Q R5,#2 | 00005cc0 3b 20 34 0d 1f 72 1e 20 20 20 20 20 20 20 20 20 |; 4..r. | 00005cd0 20 3b 54 65 73 74 20 66 6f 72 20 4d 6f 64 65 20 | ;Test for Mode | 00005ce0 31 0d 1f 7c 1c 20 20 20 20 20 20 20 20 20 20 43 |1..|. C| 00005cf0 4d 50 20 20 20 52 32 2c 23 25 31 30 30 0d 1f 86 |MP R2,#%100...| 00005d00 1c 20 20 20 20 20 20 20 20 20 20 43 4d 50 4e 45 |. CMPNE| 00005d10 20 52 32 2c 23 25 31 31 30 0d 1f 90 17 20 20 20 | R2,#%110.... | 00005d20 20 20 20 20 20 20 20 ec 51 20 52 34 2c 23 38 30 | .Q R4,#80| 00005d30 0d 1f 9a 16 20 20 20 20 20 20 20 20 20 20 ec 51 |.... .Q| 00005d40 20 52 35 2c 23 31 0d 1f a4 1e 20 20 20 20 20 20 | R5,#1.... | 00005d50 20 20 20 20 3b 54 65 73 74 20 66 6f 72 20 4d 6f | ;Test for Mo| 00005d60 64 65 20 35 0d 1f ae 1c 20 20 20 20 20 20 20 20 |de 5.... | 00005d70 20 20 43 4d 50 20 20 20 52 32 2c 23 25 30 30 31 | CMP R2,#%001| 00005d80 0d 1f b8 18 20 20 20 20 20 20 20 20 20 20 ec 51 |.... .Q| 00005d90 20 52 34 2c 23 31 36 30 0d 1f c2 16 20 20 20 20 | R4,#160.... | 00005da0 20 20 20 20 20 20 ec 51 20 52 35 2c 23 34 0d 1f | .Q R5,#4..| 00005db0 cc 0e 20 20 20 20 20 20 20 20 20 20 0d 1f d6 2c |.. ...,| 00005dc0 20 20 20 20 20 20 20 20 20 20 3b 20 41 6e 64 20 | ; And | 00005dd0 74 68 65 6e 20 77 68 65 72 65 20 69 74 20 75 73 |then where it us| 00005de0 65 64 20 74 6f 20 62 65 0d 1f e0 30 20 20 20 20 |ed to be...0 | 00005df0 20 20 20 20 20 20 4c 44 52 20 52 30 2c 5b 6d 65 | LDR R0,[me| 00005e00 6d 2c 23 73 63 72 65 65 6e 73 74 61 72 74 5f 70 |m,#screenstart_p| 00005e10 72 65 76 69 6f 75 73 5d 0d 1f ea 0e 20 20 20 20 |revious].... | 00005e20 20 20 20 20 20 20 0d 1f f4 35 20 20 20 20 20 20 | ...5 | 00005e30 20 20 20 20 3b 20 49 66 20 69 74 20 68 61 73 6e | ; If it hasn| 00005e40 27 74 20 6d 6f 76 65 64 20 74 68 65 6e 20 64 6f |'t moved then do| 00005e50 20 6e 6f 74 68 69 6e 67 2e 2e 2e 0d 1f fe 1b 20 | nothing....... | 00005e60 20 20 20 20 20 20 20 20 20 53 55 42 53 20 52 30 | SUBS R0| 00005e70 2c 52 31 2c 52 30 0d 20 08 1d 20 20 20 20 20 20 |,R1,R0. .. | 00005e80 20 20 20 20 53 57 49 45 51 20 26 31 30 30 2b 97 | SWIEQ &100+.| 00005e90 22 4b 22 0d 20 12 20 20 20 20 20 20 20 20 20 20 |"K". . | 00005ea0 20 42 45 51 20 6e 6f 5f 73 63 72 6f 6c 6c 5f 72 | BEQ no_scroll_r| 00005eb0 65 71 64 0d 20 1c 30 20 20 20 20 20 20 20 20 20 |eqd. .0 | 00005ec0 20 53 54 52 20 52 31 2c 5b 6d 65 6d 2c 23 73 63 | STR R1,[mem,#sc| 00005ed0 72 65 65 6e 73 74 61 72 74 5f 70 72 65 76 69 6f |reenstart_previo| 00005ee0 75 73 5d 0d 20 26 0e 20 20 20 20 20 20 20 20 20 |us]. &. | 00005ef0 20 0d 20 30 37 20 20 20 20 20 20 20 20 20 20 4c | . 07 L| 00005f00 44 52 42 20 52 31 32 2c 5b 6d 65 6d 2c 23 63 72 |DRB R12,[mem,#cr| 00005f10 74 5f 72 65 67 73 2b 31 5d 20 3b 20 68 6f 72 69 |t_regs+1] ; hori| 00005f20 7a 2e 20 63 68 61 72 73 0d 20 3a 36 20 20 20 20 |z. chars. :6 | 00005f30 20 20 20 20 20 20 4c 44 52 42 20 52 31 31 2c 5b | LDRB R11,[| 00005f40 6d 65 6d 2c 23 63 72 74 5f 72 65 67 73 2b 36 5d |mem,#crt_regs+6]| 00005f50 20 3b 20 76 65 72 74 2e 20 63 68 61 72 73 0d 20 | ; vert. chars. | 00005f60 44 1c 20 20 20 20 20 20 20 20 20 20 4d 55 4c 20 |D. MUL | 00005f70 52 32 2c 52 31 32 2c 52 31 31 0d 20 4e 1c 20 20 |R2,R12,R11. N. | 00005f80 20 20 20 20 20 20 20 20 41 44 44 4c 54 20 52 30 | ADDLT R0| 00005f90 2c 52 32 2c 52 30 0d 20 58 0e 20 20 20 20 20 20 |,R2,R0. X. | 00005fa0 20 20 20 20 0d 20 62 17 20 20 20 20 20 20 20 20 | . b. | 00005fb0 20 20 43 4d 50 20 52 30 2c 52 32 0d 20 6c 1d 20 | CMP R0,R2. l. | 00005fc0 20 20 20 20 20 20 20 20 20 53 57 49 47 45 20 26 | SWIGE &| 00005fd0 31 30 30 2b 97 22 4c 22 0d 20 76 20 20 20 20 20 |100+."L". v | 00005fe0 20 20 20 20 20 20 42 47 45 20 6e 6f 5f 73 63 72 | BGE no_scr| 00005ff0 6f 6c 6c 5f 72 65 71 64 0d 20 80 0e 20 20 20 20 |oll_reqd. .. | 00006000 20 20 20 20 20 20 0d 20 8a 18 20 20 20 20 20 20 | . .. | 00006010 20 20 20 20 43 4d 50 20 52 31 32 2c 23 30 0d 20 | CMP R12,#0. | 00006020 94 1a 20 20 20 20 20 20 20 20 20 20 43 4d 50 4e |.. CMPN| 00006030 45 20 52 31 31 2c 23 30 0d 20 9e 1d 20 20 20 20 |E R11,#0. .. | 00006040 20 20 20 20 20 20 53 57 49 45 51 20 26 31 30 30 | SWIEQ &100| 00006050 2b 97 22 4d 22 0d 20 a8 20 20 20 20 20 20 20 20 |+."M". . | 00006060 20 20 20 42 45 51 20 6e 6f 5f 73 63 72 6f 6c 6c | BEQ no_scroll| 00006070 5f 72 65 71 64 0d 20 b2 18 20 20 20 20 20 20 20 |_reqd. .. | 00006080 20 20 20 20 20 20 20 20 20 20 20 20 20 0d 20 bc | . .| 00006090 32 20 20 20 20 20 20 20 20 20 20 3b 20 53 6f 20 |2 ; So | 000060a0 77 65 20 68 61 76 65 20 74 6f 20 64 6f 20 73 6f |we have to do so| 000060b0 6d 65 20 73 63 72 6f 6c 6c 69 6e 67 2e 2e 2e 0d |me scrolling....| 000060c0 20 c6 1a 20 20 20 20 20 20 20 20 20 20 3b 52 30 | .. ;R0| 000060d0 3d 52 30 20 83 20 52 31 32 0d 20 d0 1a 20 20 20 |=R0 . R12. .. | 000060e0 20 20 20 20 20 20 20 3b 52 32 3d 52 30 20 81 20 | ;R2=R0 . | 000060f0 52 31 32 0d 20 da 1a 20 20 20 20 20 20 20 20 20 |R12. .. | 00006100 20 3b 52 30 20 3c 20 52 31 32 2a 33 32 0d 20 e4 | ;R0 < R12*32. .| 00006110 17 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 52 |. MOV R| 00006120 32 2c 23 30 0d 20 ee 1e 20 20 20 20 20 20 20 20 |2,#0. .. | 00006130 20 20 43 4d 50 20 52 30 2c 52 31 32 2c 4c 53 4c | CMP R0,R12,LSL| 00006140 23 34 0d 20 f8 23 20 20 20 20 20 20 20 20 20 20 |#4. .# | 00006150 53 55 42 47 45 20 52 30 2c 52 30 2c 52 31 32 2c |SUBGE R0,R0,R12,| 00006160 4c 53 4c 23 34 0d 21 02 1f 20 20 20 20 20 20 20 |LSL#4.!.. | 00006170 20 20 20 41 44 44 47 45 20 52 32 2c 52 32 2c 23 | ADDGE R2,R2,#| 00006180 31 3c 3c 34 0d 21 0c 1e 20 20 20 20 20 20 20 20 |1<<4.!.. | 00006190 20 20 43 4d 50 20 52 30 2c 52 31 32 2c 4c 53 4c | CMP R0,R12,LSL| 000061a0 23 33 0d 21 16 23 20 20 20 20 20 20 20 20 20 20 |#3.!.# | 000061b0 53 55 42 47 45 20 52 30 2c 52 30 2c 52 31 32 2c |SUBGE R0,R0,R12,| 000061c0 4c 53 4c 23 33 0d 21 20 1f 20 20 20 20 20 20 20 |LSL#3.! . | 000061d0 20 20 20 41 44 44 47 45 20 52 32 2c 52 32 2c 23 | ADDGE R2,R2,#| 000061e0 31 3c 3c 33 0d 21 2a 1e 20 20 20 20 20 20 20 20 |1<<3.!*. | 000061f0 20 20 43 4d 50 20 52 30 2c 52 31 32 2c 4c 53 4c | CMP R0,R12,LSL| 00006200 23 32 0d 21 34 23 20 20 20 20 20 20 20 20 20 20 |#2.!4# | 00006210 53 55 42 47 45 20 52 30 2c 52 30 2c 52 31 32 2c |SUBGE R0,R0,R12,| 00006220 4c 53 4c 23 32 0d 21 3e 1f 20 20 20 20 20 20 20 |LSL#2.!>. | 00006230 20 20 20 41 44 44 47 45 20 52 32 2c 52 32 2c 23 | ADDGE R2,R2,#| 00006240 31 3c 3c 32 0d 21 48 1e 20 20 20 20 20 20 20 20 |1<<2.!H. | 00006250 20 20 43 4d 50 20 52 30 2c 52 31 32 2c 4c 53 4c | CMP R0,R12,LSL| 00006260 23 31 0d 21 52 23 20 20 20 20 20 20 20 20 20 20 |#1.!R# | 00006270 53 55 42 47 45 20 52 30 2c 52 30 2c 52 31 32 2c |SUBGE R0,R0,R12,| 00006280 4c 53 4c 23 31 0d 21 5c 1f 20 20 20 20 20 20 20 |LSL#1.!\. | 00006290 20 20 20 41 44 44 47 45 20 52 32 2c 52 32 2c 23 | ADDGE R2,R2,#| 000062a0 31 3c 3c 31 0d 21 66 18 20 20 20 20 20 20 20 20 |1<<1.!f. | 000062b0 20 20 43 4d 50 20 52 30 2c 52 31 32 0d 21 70 1d | CMP R0,R12.!p.| 000062c0 20 20 20 20 20 20 20 20 20 20 53 55 42 47 45 20 | SUBGE | 000062d0 52 30 2c 52 30 2c 52 31 32 0d 21 7a 1c 20 20 20 |R0,R0,R12.!z. | 000062e0 20 20 20 20 20 20 20 41 44 44 47 45 20 52 32 2c | ADDGE R2,| 000062f0 52 32 2c 23 31 0d 21 84 04 0d 21 8e 3a 20 20 20 |R2,#1.!...!.: | 00006300 20 20 20 20 20 20 20 3b 20 53 6f 20 6e 6f 77 20 | ; So now | 00006310 77 65 20 77 61 6e 74 20 74 6f 20 73 63 72 6f 6c |we want to scrol| 00006320 6c 20 6c 65 66 74 2f 72 69 67 68 74 20 62 79 20 |l left/right by | 00006330 52 30 2c 0d 21 98 21 20 20 20 20 20 20 20 20 20 |R0,.!.! | 00006340 20 3b 20 61 6e 64 20 75 70 2f 64 6f 77 6e 20 62 | ; and up/down b| 00006350 79 20 52 32 0d 21 a2 04 0d 21 ac 35 20 20 20 20 |y R2.!...!.5 | 00006360 20 20 20 20 20 20 43 4d 50 20 52 30 2c 52 31 32 | CMP R0,R12| 00006370 2c 41 53 52 23 31 20 20 20 20 3b 20 48 41 4c 66 |,ASR#1 ; HALf| 00006380 20 6f 66 20 73 63 72 65 65 6e 66 75 6c 0d 21 b6 | of screenful.!.| 00006390 2d 20 20 20 20 20 20 20 20 20 20 41 44 44 47 45 |- ADDGE| 000063a0 20 52 32 2c 52 32 2c 23 31 20 20 20 20 20 20 3b | R2,R2,#1 ;| 000063b0 20 77 68 69 63 68 20 77 61 79 0d 21 c0 18 20 20 | which way.!.. | 000063c0 20 20 20 20 20 20 20 20 43 4d 50 20 52 32 2c 52 | CMP R2,R| 000063d0 31 31 0d 21 ca 1d 20 20 20 20 20 20 20 20 20 20 |11.!.. | 000063e0 53 55 42 47 45 20 52 32 2c 52 32 2c 52 31 31 0d |SUBGE R2,R2,R11.| 000063f0 21 d4 04 0d 21 de 29 20 20 20 20 20 20 20 20 20 |!...!.) | 00006400 20 3b 20 42 79 20 76 65 72 69 66 69 63 61 74 69 | ; By verificati| 00006410 6f 6e 20 30 3c 3d 52 30 3c 52 31 32 0d 21 e8 18 |on 0<=R0<R12.!..| 00006420 20 20 20 20 20 20 20 20 20 20 3b 43 4d 50 20 52 | ;CMP R| 00006430 30 2c 23 30 0d 21 f2 1e 20 20 20 20 20 20 20 20 |0,#0.!.. | 00006440 20 20 3b 53 57 49 4c 54 20 26 31 30 30 2b 97 22 | ;SWILT &100+."| 00006450 21 22 0d 21 fc 19 20 20 20 20 20 20 20 20 20 20 |!".!.. | 00006460 3b 43 4d 50 20 52 30 2c 52 31 32 0d 22 06 1e 20 |;CMP R0,R12.".. | 00006470 20 20 20 20 20 20 20 20 20 3b 53 57 49 47 45 20 | ;SWIGE | 00006480 26 31 30 30 2b 97 22 21 22 0d 22 10 29 20 20 20 |&100+."!".".) | 00006490 20 20 20 20 20 20 20 3b 20 42 79 20 76 65 72 69 | ; By veri| 000064a0 66 69 63 61 74 69 6f 6e 20 30 3c 3d 52 32 3c 52 |fication 0<=R2<R| 000064b0 31 31 0d 22 1a 18 20 20 20 20 20 20 20 20 20 20 |11.".. | 000064c0 3b 43 4d 50 20 52 32 2c 23 30 0d 22 24 1e 20 20 |;CMP R2,#0."$. | 000064d0 20 20 20 20 20 20 20 20 3b 53 57 49 4c 54 20 26 | ;SWILT &| 000064e0 31 30 30 2b 97 22 21 22 0d 22 2e 19 20 20 20 20 |100+."!".".. | 000064f0 20 20 20 20 20 20 3b 43 4d 50 20 52 32 2c 52 31 | ;CMP R2,R1| 00006500 31 0d 22 38 1e 20 20 20 20 20 20 20 20 20 20 3b |1."8. ;| 00006510 53 57 49 47 45 20 26 31 30 30 2b 97 22 21 22 0d |SWIGE &100+."!".| 00006520 22 42 04 0d 22 4c 1e 20 20 20 20 20 20 20 20 20 |"B.."L. | 00006530 20 43 4d 50 20 52 30 2c 52 31 32 2c 41 53 52 23 | CMP R0,R12,ASR#| 00006540 31 0d 22 56 1f 20 20 20 20 20 20 20 20 20 20 42 |1."V. B| 00006550 47 45 20 6d 75 73 74 5f 73 63 72 6f 6c 6c 5f 77 |GE must_scroll_w| 00006560 0d 22 60 32 20 20 20 20 20 20 20 20 20 20 3b 20 |."`2 ; | 00006570 57 65 20 61 72 65 20 64 65 66 69 6e 61 74 65 6c |We are definatel| 00006580 79 20 6d 6f 76 69 6e 67 20 65 61 73 74 77 61 72 |y moving eastwar| 00006590 64 73 0d 22 6a 1e 20 20 20 20 20 20 20 20 20 20 |ds."j. | 000065a0 43 4d 50 20 52 32 2c 52 31 31 2c 41 53 52 23 31 |CMP R2,R11,ASR#1| 000065b0 0d 22 74 20 20 20 20 20 20 20 20 20 20 20 42 47 |."t BG| 000065c0 54 20 6d 75 73 74 5f 73 63 72 6f 6c 6c 5f 6e 65 |T must_scroll_ne| 000065d0 0d 22 7e 13 2e 6d 75 73 74 5f 73 63 72 6f 6c 6c |."~..must_scroll| 000065e0 5f 73 65 0d 22 88 3c 20 20 20 20 20 20 20 20 20 |_se.".< | 000065f0 20 3b 20 57 65 20 61 72 65 20 64 65 66 69 6e 61 | ; We are defina| 00006600 74 65 6c 79 20 6d 6f 76 69 6e 67 20 53 45 2c 20 |tely moving SE, | 00006610 73 6f 20 63 61 6c 6c 20 6d 6f 76 65 5f 6e 77 0d |so call move_nw.| 00006620 22 92 40 20 20 20 20 20 20 20 20 20 20 3b 20 57 |".@ ; W| 00006630 65 20 6e 65 65 64 20 52 30 3d 73 72 63 2c 20 52 |e need R0=src, R| 00006640 31 3d 64 65 73 74 2c 20 52 31 31 20 3d 20 68 65 |1=dest, R11 = he| 00006650 69 67 68 74 2c 20 52 31 32 3d 77 69 64 74 68 0d |ight, R12=width.| 00006660 22 9c 1f 20 20 20 20 20 20 20 20 20 20 3b 20 52 |".. ; R| 00006670 34 20 3d 20 6c 69 6e 65 6c 65 6e 67 74 68 0d 22 |4 = linelength."| 00006680 a6 1c 20 20 20 20 20 20 20 20 20 20 3b 53 57 49 |.. ;SWI| 00006690 20 26 31 30 30 2b 97 22 53 22 0d 22 b0 1c 20 20 | &100+."S".".. | 000066a0 20 20 20 20 20 20 20 20 3b 53 57 49 20 26 31 30 | ;SWI &10| 000066b0 30 2b 97 22 45 22 0d 22 ba 1c 20 20 20 20 20 20 |0+."E".".. | 000066c0 20 20 20 20 3b 53 57 49 20 26 31 30 30 2b 97 22 | ;SWI &100+."| 000066d0 20 22 0d 22 c4 1d 20 20 20 20 20 20 20 20 20 20 | ".".. | 000066e0 3b 52 31 31 3d 28 52 31 31 2d 52 32 29 2a 38 0d |;R11=(R11-R2)*8.| 000066f0 22 ce 1c 20 20 20 20 20 20 20 20 20 20 53 55 42 |".. SUB| 00006700 20 52 31 31 2c 52 31 31 2c 52 32 0d 22 d8 1f 20 | R11,R11,R2.".. | 00006710 20 20 20 20 20 20 20 20 20 4d 4f 56 20 52 31 31 | MOV R11| 00006720 2c 52 31 31 2c 4c 53 4c 23 33 0d 22 e2 23 20 20 |,R11,LSL#3.".# | 00006730 20 20 20 20 20 20 20 20 3b 52 31 32 3d 28 52 31 | ;R12=(R1| 00006740 32 2d 52 30 29 2a 72 6f 77 6d 75 6c 74 0d 22 ec |2-R0)*rowmult.".| 00006750 1c 20 20 20 20 20 20 20 20 20 20 53 55 42 20 52 |. SUB R| 00006760 31 32 2c 52 31 32 2c 52 30 0d 22 f6 1c 20 20 20 |12,R12,R0.".. | 00006770 20 20 20 20 20 20 20 4d 55 4c 20 52 31 32 2c 52 | MUL R12,R| 00006780 35 2c 52 31 32 0d 23 00 24 20 20 20 20 20 20 20 |5,R12.#.$ | 00006790 20 20 20 3b 52 30 3d 52 30 2a 52 35 2b 52 32 2a | ;R0=R0*R5+R2*| 000067a0 6c 69 6e 65 6c 65 6e 2a 38 0d 23 0a 1a 20 20 20 |linelen*8.#.. | 000067b0 20 20 20 20 20 20 20 4d 55 4c 20 52 32 2c 52 34 | MUL R2,R4| 000067c0 2c 52 32 0d 23 14 1a 20 20 20 20 20 20 20 20 20 |,R2.#.. | 000067d0 20 4d 55 4c 20 52 30 2c 52 35 2c 52 30 0d 23 1e | MUL R0,R5,R0.#.| 000067e0 20 20 20 20 20 20 20 20 20 20 20 41 44 44 20 52 | ADD R| 000067f0 30 2c 52 30 2c 52 32 2c 4c 53 4c 23 33 0d 23 28 |0,R0,R2,LSL#3.#(| 00006800 17 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 52 |. MOV R| 00006810 31 2c 23 30 0d 23 32 18 20 20 20 20 20 20 20 20 |1,#0.#2. | 00006820 20 20 3b 4d 4f 56 20 52 30 2c 23 34 0d 23 3c 1b | ;MOV R0,#4.#<.| 00006830 20 20 20 20 20 20 20 20 20 20 3b 4d 4f 56 20 52 | ;MOV R| 00006840 31 31 2c 23 32 35 36 0d 23 46 1d 20 20 20 20 20 |11,#256.#F. | 00006850 20 20 20 20 20 3b 4d 4f 56 20 52 31 32 2c 23 33 | ;MOV R12,#3| 00006860 32 30 2d 34 0d 23 50 1c 20 20 20 20 20 20 20 20 |20-4.#P. | 00006870 20 20 3b 53 57 49 20 26 31 30 30 2b 97 22 21 22 | ;SWI &100+."!"| 00006880 0d 23 5a 18 20 20 20 20 20 20 20 20 20 20 42 4c |.#Z. BL| 00006890 20 6d 6f 76 65 5f 6e 77 0d 23 64 1b 20 20 20 20 | move_nw.#d. | 000068a0 20 20 20 20 20 20 42 20 73 63 72 6f 6c 6c 5f 64 | B scroll_d| 000068b0 6f 6e 65 0d 23 6e 1e 20 20 20 20 20 20 20 20 20 |one.#n. | 000068c0 20 42 20 6e 6f 5f 73 63 72 6f 6c 6c 5f 72 65 71 | B no_scroll_req| 000068d0 64 0d 23 78 13 2e 6d 75 73 74 5f 73 63 72 6f 6c |d.#x..must_scrol| 000068e0 6c 5f 6e 65 0d 23 82 3c 20 20 20 20 20 20 20 20 |l_ne.#.< | 000068f0 20 20 3b 20 57 65 20 61 72 65 20 64 65 66 69 6e | ; We are defin| 00006900 61 74 65 6c 79 20 6d 6f 76 69 6e 67 20 4e 45 2c |ately moving NE,| 00006910 20 73 6f 20 63 61 6c 6c 20 6d 6f 76 65 5f 73 77 | so call move_sw| 00006920 0d 23 8c 40 20 20 20 20 20 20 20 20 20 20 3b 20 |.#.@ ; | 00006930 57 65 20 6e 65 65 64 20 52 30 3d 73 72 63 2c 20 |We need R0=src, | 00006940 52 31 3d 64 65 73 74 2c 20 52 31 31 20 3d 20 68 |R1=dest, R11 = h| 00006950 65 69 67 68 74 2c 20 52 31 32 3d 77 69 64 74 68 |eight, R12=width| 00006960 0d 23 96 1f 20 20 20 20 20 20 20 20 20 20 3b 20 |.#.. ; | 00006970 52 34 20 3d 20 6c 69 6e 65 6c 65 6e 67 74 68 0d |R4 = linelength.| 00006980 23 a0 1c 20 20 20 20 20 20 20 20 20 20 3b 53 57 |#.. ;SW| 00006990 49 20 26 31 30 30 2b 97 22 4e 22 0d 23 aa 1c 20 |I &100+."N".#.. | 000069a0 20 20 20 20 20 20 20 20 20 3b 53 57 49 20 26 31 | ;SWI &1| 000069b0 30 30 2b 97 22 45 22 0d 23 b4 1c 20 20 20 20 20 |00+."E".#.. | 000069c0 20 20 20 20 20 3b 53 57 49 20 26 31 30 30 2b 97 | ;SWI &100+.| 000069d0 22 20 22 0d 23 be 24 20 20 20 20 20 20 20 20 20 |" ".#.$ | 000069e0 20 3b 52 31 3d 28 52 31 31 2d 52 32 29 2a 6c 69 | ;R1=(R11-R2)*li| 000069f0 6e 65 6c 65 6e 2a 38 0d 23 c8 1b 20 20 20 20 20 |nelen*8.#.. | 00006a00 20 20 20 20 20 53 55 42 20 52 31 2c 52 31 31 2c | SUB R1,R11,| 00006a10 52 32 0d 23 d2 1a 20 20 20 20 20 20 20 20 20 20 |R2.#.. | 00006a20 4d 55 4c 20 52 31 2c 52 34 2c 52 31 0d 23 dc 1d |MUL R1,R4,R1.#..| 00006a30 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 52 31 | MOV R1| 00006a40 2c 52 31 2c 4c 53 4c 23 33 0d 23 e6 17 20 20 20 |,R1,LSL#3.#.. | 00006a50 20 20 20 20 20 20 20 3b 52 31 31 3d 52 32 2a 38 | ;R11=R2*8| 00006a60 0d 23 f0 1e 20 20 20 20 20 20 20 20 20 20 4d 4f |.#.. MO| 00006a70 56 20 52 31 31 2c 52 32 2c 4c 53 4c 23 33 0d 23 |V R11,R2,LSL#3.#| 00006a80 fa 23 20 20 20 20 20 20 20 20 20 20 3b 52 31 32 |.# ;R12| 00006a90 3d 28 52 31 32 2d 52 30 29 2a 72 6f 77 6d 75 6c |=(R12-R0)*rowmul| 00006aa0 74 0d 24 04 1c 20 20 20 20 20 20 20 20 20 20 53 |t.$.. S| 00006ab0 55 42 20 52 31 32 2c 52 31 32 2c 52 30 0d 24 0e |UB R12,R12,R0.$.| 00006ac0 1c 20 20 20 20 20 20 20 20 20 20 4d 55 4c 20 52 |. MUL R| 00006ad0 31 32 2c 52 35 2c 52 31 32 0d 24 18 17 20 20 20 |12,R5,R12.$.. | 00006ae0 20 20 20 20 20 20 20 3b 52 30 3d 52 30 2a 52 35 | ;R0=R0*R5| 00006af0 0d 24 22 1a 20 20 20 20 20 20 20 20 20 20 4d 55 |.$". MU| 00006b00 4c 20 52 30 2c 52 35 2c 52 30 0d 24 2c 18 20 20 |L R0,R5,R0.$,. | 00006b10 20 20 20 20 20 20 20 20 42 4c 20 6d 6f 76 65 5f | BL move_| 00006b20 73 77 0d 24 36 1b 20 20 20 20 20 20 20 20 20 20 |sw.$6. | 00006b30 42 20 73 63 72 6f 6c 6c 5f 64 6f 6e 65 0d 24 40 |B scroll_done.$@| 00006b40 1e 20 20 20 20 20 20 20 20 20 20 42 20 6e 6f 5f |. B no_| 00006b50 73 63 72 6f 6c 6c 5f 72 65 71 64 0d 24 4a 12 2e |scroll_reqd.$J..| 00006b60 6d 75 73 74 5f 73 63 72 6f 6c 6c 5f 77 0d 24 54 |must_scroll_w.$T| 00006b70 1e 20 20 20 20 20 20 20 20 20 20 43 4d 50 20 52 |. CMP R| 00006b80 32 2c 52 31 31 2c 41 53 52 23 31 0d 24 5e 20 20 |2,R11,ASR#1.$^ | 00006b90 20 20 20 20 20 20 20 20 20 42 47 54 20 6d 75 73 | BGT mus| 00006ba0 74 5f 73 63 72 6f 6c 6c 5f 6e 77 0d 24 68 13 2e |t_scroll_nw.$h..| 00006bb0 6d 75 73 74 5f 73 63 72 6f 6c 6c 5f 73 77 0d 24 |must_scroll_sw.$| 00006bc0 72 3c 20 20 20 20 20 20 20 20 20 20 3b 20 57 65 |r< ; We| 00006bd0 20 61 72 65 20 64 65 66 69 6e 61 74 65 6c 79 20 | are definately | 00006be0 6d 6f 76 69 6e 67 20 53 57 2c 20 73 6f 20 63 61 |moving SW, so ca| 00006bf0 6c 6c 20 6d 6f 76 65 5f 6e 65 0d 24 7c 40 20 20 |ll move_ne.$|@ | 00006c00 20 20 20 20 20 20 20 20 3b 20 57 65 20 6e 65 65 | ; We nee| 00006c10 64 20 52 30 3d 73 72 63 2c 20 52 31 3d 64 65 73 |d R0=src, R1=des| 00006c20 74 2c 20 52 31 31 20 3d 20 68 65 69 67 68 74 2c |t, R11 = height,| 00006c30 20 52 31 32 3d 77 69 64 74 68 0d 24 86 1f 20 20 | R12=width.$.. | 00006c40 20 20 20 20 20 20 20 20 3b 20 52 34 20 3d 20 6c | ; R4 = l| 00006c50 69 6e 65 6c 65 6e 67 74 68 0d 24 90 1c 20 20 20 |inelength.$.. | 00006c60 20 20 20 20 20 20 20 3b 53 57 49 20 26 31 30 30 | ;SWI &100| 00006c70 2b 97 22 53 22 0d 24 9a 1c 20 20 20 20 20 20 20 |+."S".$.. | 00006c80 20 20 20 3b 53 57 49 20 26 31 30 30 2b 97 22 57 | ;SWI &100+."W| 00006c90 22 0d 24 a4 1c 20 20 20 20 20 20 20 20 20 20 3b |".$.. ;| 00006ca0 53 57 49 20 26 31 30 30 2b 97 22 20 22 0d 24 ae |SWI &100+." ".$.| 00006cb0 22 20 20 20 20 20 20 20 20 20 20 3b 52 31 3d 28 |" ;R1=(| 00006cc0 52 31 32 2d 52 30 29 2a 72 6f 77 6d 75 6c 74 0d |R12-R0)*rowmult.| 00006cd0 24 b8 1b 20 20 20 20 20 20 20 20 20 20 53 55 42 |$.. SUB| 00006ce0 20 52 31 2c 52 31 32 2c 52 30 0d 24 c2 1a 20 20 | R1,R12,R0.$.. | 00006cf0 20 20 20 20 20 20 20 20 4d 55 4c 20 52 31 2c 52 | MUL R1,R| 00006d00 35 2c 52 31 0d 24 cc 1d 20 20 20 20 20 20 20 20 |5,R1.$.. | 00006d10 20 20 3b 52 31 31 3d 28 52 31 31 2d 52 32 29 2a | ;R11=(R11-R2)*| 00006d20 38 0d 24 d6 1c 20 20 20 20 20 20 20 20 20 20 53 |8.$.. S| 00006d30 55 42 20 52 31 31 2c 52 31 31 2c 52 32 0d 24 e0 |UB R11,R11,R2.$.| 00006d40 1f 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 52 |. MOV R| 00006d50 31 31 2c 52 31 31 2c 4c 53 4c 23 33 0d 24 ea 1d |11,R11,LSL#3.$..| 00006d60 20 20 20 20 20 20 20 20 20 20 3b 52 31 32 3d 52 | ;R12=R| 00006d70 30 2a 72 6f 77 6d 75 6c 74 0d 24 f4 1b 20 20 20 |0*rowmult.$.. | 00006d80 20 20 20 20 20 20 20 4d 55 4c 20 52 31 32 2c 52 | MUL R12,R| 00006d90 30 2c 52 35 0d 24 fe 1e 20 20 20 20 20 20 20 20 |0,R5.$.. | 00006da0 20 20 3b 52 30 3d 52 32 2a 6c 69 6e 65 6c 65 6e | ;R0=R2*linelen| 00006db0 2a 38 0d 25 08 1a 20 20 20 20 20 20 20 20 20 20 |*8.%.. | 00006dc0 4d 55 4c 20 52 32 2c 52 34 2c 52 32 0d 25 12 1d |MUL R2,R4,R2.%..| 00006dd0 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 52 30 | MOV R0| 00006de0 2c 52 32 2c 4c 53 4c 23 33 0d 25 1c 18 20 20 20 |,R2,LSL#3.%.. | 00006df0 20 20 20 20 20 20 20 42 4c 20 6d 6f 76 65 5f 6e | BL move_n| 00006e00 65 0d 25 26 1b 20 20 20 20 20 20 20 20 20 20 42 |e.%&. B| 00006e10 20 73 63 72 6f 6c 6c 5f 64 6f 6e 65 0d 25 30 1e | scroll_done.%0.| 00006e20 20 20 20 20 20 20 20 20 20 20 42 20 6e 6f 5f 73 | B no_s| 00006e30 63 72 6f 6c 6c 5f 72 65 71 64 0d 25 3a 13 2e 6d |croll_reqd.%:..m| 00006e40 75 73 74 5f 73 63 72 6f 6c 6c 5f 6e 77 0d 25 44 |ust_scroll_nw.%D| 00006e50 3c 20 20 20 20 20 20 20 20 20 20 3b 20 57 65 20 |< ; We | 00006e60 61 72 65 20 64 65 66 69 6e 61 74 65 6c 79 20 6d |are definately m| 00006e70 6f 76 69 6e 67 20 4e 57 2c 20 73 6f 20 63 61 6c |oving NW, so cal| 00006e80 6c 20 6d 6f 76 65 5f 73 65 0d 25 4e 40 20 20 20 |l move_se.%N@ | 00006e90 20 20 20 20 20 20 20 3b 20 57 65 20 6e 65 65 64 | ; We need| 00006ea0 20 52 30 3d 73 72 63 2c 20 52 31 3d 64 65 73 74 | R0=src, R1=dest| 00006eb0 2c 20 52 31 31 20 3d 20 68 65 69 67 68 74 2c 20 |, R11 = height, | 00006ec0 52 31 32 3d 77 69 64 74 68 0d 25 58 1f 20 20 20 |R12=width.%X. | 00006ed0 20 20 20 20 20 20 20 3b 20 52 34 20 3d 20 6c 69 | ; R4 = li| 00006ee0 6e 65 6c 65 6e 67 74 68 0d 25 62 1c 20 20 20 20 |nelength.%b. | 00006ef0 20 20 20 20 20 20 3b 53 57 49 20 26 31 30 30 2b | ;SWI &100+| 00006f00 97 22 4e 22 0d 25 6c 1c 20 20 20 20 20 20 20 20 |."N".%l. | 00006f10 20 20 3b 53 57 49 20 26 31 30 30 2b 97 22 57 22 | ;SWI &100+."W"| 00006f20 0d 25 76 1c 20 20 20 20 20 20 20 20 20 20 3b 53 |.%v. ;S| 00006f30 57 49 20 26 31 30 30 2b 97 22 20 22 0d 25 80 1a |WI &100+." ".%..| 00006f40 20 20 20 20 20 20 20 20 20 20 41 44 44 20 52 30 | ADD R0| 00006f50 2c 52 30 2c 23 31 0d 25 8a 30 20 20 20 20 20 20 |,R0,#1.%.0 | 00006f60 20 20 20 20 3b 52 31 3d 28 52 31 31 2d 52 32 29 | ;R1=(R11-R2)| 00006f70 2a 6c 69 6e 65 6c 65 6e 2a 38 2b 28 52 31 32 2d |*linelen*8+(R12-| 00006f80 52 30 29 2a 52 35 0d 25 94 1b 20 20 20 20 20 20 |R0)*R5.%.. | 00006f90 20 20 20 20 53 55 42 20 52 31 2c 52 31 31 2c 52 | SUB R1,R11,R| 00006fa0 32 0d 25 9e 1a 20 20 20 20 20 20 20 20 20 20 4d |2.%.. M| 00006fb0 55 4c 20 52 31 2c 52 35 2c 52 31 0d 25 a8 1c 20 |UL R1,R5,R1.%.. | 00006fc0 20 20 20 20 20 20 20 20 20 53 55 42 20 52 31 32 | SUB R12| 00006fd0 2c 52 31 32 2c 52 30 0d 25 b2 1c 20 20 20 20 20 |,R12,R0.%.. | 00006fe0 20 20 20 20 20 4d 55 4c 20 52 31 32 2c 52 35 2c | MUL R12,R5,| 00006ff0 52 31 32 0d 25 bc 21 20 20 20 20 20 20 20 20 20 |R12.%.! | 00007000 20 41 44 44 20 52 31 2c 52 31 32 2c 52 31 2c 4c | ADD R1,R12,R1,L| 00007010 53 4c 23 33 0d 25 c6 17 20 20 20 20 20 20 20 20 |SL#3.%.. | 00007020 20 20 3b 52 31 31 3d 52 32 2a 38 0d 25 d0 1e 20 | ;R11=R2*8.%.. | 00007030 20 20 20 20 20 20 20 20 20 4d 4f 56 20 52 31 31 | MOV R11| 00007040 2c 52 32 2c 4c 53 4c 23 33 0d 25 da 1d 20 20 20 |,R2,LSL#3.%.. | 00007050 20 20 20 20 20 20 20 3b 52 31 32 3d 52 30 2a 72 | ;R12=R0*r| 00007060 6f 77 6d 75 6c 74 0d 25 e4 1b 20 20 20 20 20 20 |owmult.%.. | 00007070 20 20 20 20 4d 55 4c 20 52 31 32 2c 52 35 2c 52 | MUL R12,R5,R| 00007080 30 0d 25 ee 13 20 20 20 20 20 20 20 20 20 20 3b |0.%.. ;| 00007090 52 30 3d 30 0d 25 f8 17 20 20 20 20 20 20 20 20 |R0=0.%.. | 000070a0 20 20 4d 4f 56 20 52 30 2c 23 30 0d 26 02 18 20 | MOV R0,#0.&.. | 000070b0 20 20 20 20 20 20 20 20 20 42 4c 20 6d 6f 76 65 | BL move| 000070c0 5f 73 65 0d 26 0c 1b 20 20 20 20 20 20 20 20 20 |_se.&.. | 000070d0 20 42 20 73 63 72 6f 6c 6c 5f 64 6f 6e 65 0d 26 | B scroll_done.&| 000070e0 16 1e 20 20 20 20 20 20 20 20 20 20 42 20 6e 6f |.. B no| 000070f0 5f 73 63 72 6f 6c 6c 5f 72 65 71 64 0d 26 20 0e |_scroll_reqd.& .| 00007100 20 20 20 20 20 20 20 20 20 20 0d 26 2a 13 2e 6e | .&*..n| 00007110 6f 5f 73 63 72 6f 6c 6c 5f 72 65 71 64 0d 26 34 |o_scroll_reqd.&4| 00007120 1c 20 20 20 20 20 20 20 20 20 20 3b 53 57 49 20 |. ;SWI | 00007130 26 31 30 30 2b 97 22 4f 22 0d 26 3e 25 20 20 20 |&100+."O".&>% | 00007140 20 20 20 20 20 20 20 4c 44 4d 46 44 20 52 31 33 | LDMFD R13| 00007150 21 2c 7b 52 30 2d 52 31 32 2c 50 43 7d 5e 0d 26 |!,{R0-R12,PC}^.&| 00007160 48 10 2e 73 63 72 6f 6c 6c 5f 64 6f 6e 65 0d 26 |H..scroll_done.&| 00007170 52 25 20 20 20 20 20 20 20 20 20 20 4c 44 4d 46 |R% LDMF| 00007180 44 20 52 31 33 21 2c 7b 52 30 2d 52 31 32 2c 50 |D R13!,{R0-R12,P| 00007190 43 7d 5e 0d 26 5c 35 20 20 20 20 20 20 20 20 20 |C}^.&\5 | 000071a0 20 3b 4c 44 52 20 50 43 2c 74 68 69 73 5f 69 73 | ;LDR PC,this_is| 000071b0 5f 67 65 74 74 69 6e 67 5f 72 65 61 6c 6c 79 5f |_getting_really_| 000071c0 68 6f 72 72 69 62 6c 65 0d 26 66 05 5d 0d 26 70 |horrible.&f.].&p| 000071d0 06 3d 70 0d ff |.=p..| 000071d5