Home » Archimedes archive » Acorn User » AU 1998-10.adf » Regulars » StarInfo/Smith/URhere20
StarInfo/Smith/URhere20
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Archimedes archive » Acorn User » AU 1998-10.adf » Regulars |
Filename: | StarInfo/Smith/URhere20 |
Read OK: | ✔ |
File size: | 1E40 bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10 REM >YouAreHere20 20 REM by Stu Smith 30 ON ERROR MODE 20:SYS"Hourglass_Smash":PRINT REPORT$;" at line ";ERL:END 40 steps% = 513 : REM subdivisions in 360 deg. 50 dots% = 8193 : REM no. of stars in galaxy 60 per = 900 : REM perspective distance 70 yp = 512 : REM y position of stars in galaxy 80 numst% = 220 : REM no. of stars in background 90 inca% = 129 : REM angle increment for galaxy shape 100 incd% = 1 : REM distance incrememt for galaxy shape 110 SYS "Hourglass_On" 120 PROCassm 130 MODE 21:MODE 20 140 FOR i%=0 TO 14 150 COLOUR i%,(i%<<4),(i%<<4),(i%<<4) 160 NEXT 170 COLOUR 15,0,255,0 180 COLOUR 14 190 OFF 200 DIM vdu% 8 210 CALL swap 220 PRINT"Please wait..." 230 !vdu%=148:vdu%!4=-1 240 SYS "OS_ReadVduVariables",vdu%,vdu% 250 !st1 = !vdu% 260 CALL swap 270 !vdu%=148:vdu%!4=-1 280 SYS "OS_ReadVduVariables",vdu%,vdu% 290 !st2 = !vdu% 300 FOR s%=0 TO numst%-1 310 !(stars+s%*16) = RND(639)-1 320 !(stars+s%*16+4) = RND(510)-1 330 !(stars+s%*16+8) = RND(29)-1 340 IF RND(2)=1 THEN 350 !(stars+s%*16+12) = 1 360 ELSE 370 !(stars+s%*16+12) = -1 380 ENDIF 390 NEXT 400 FOR ang=0 TO steps%-1 410 x=SINRAD(360*ang/steps%)*639 420 z=COSRAD(360*ang/steps%)*639+1200 430 xx%=per*(x/z) 440 yy%=per*(yp/z)-460 450 IF xx% > 639 xx% = 639 460 IF xx% < -639 xx% = -639 470 IF yy% > 512 yy% = 512 480 IF yy% < -512 yy% = -512 490 !(table+ang*16) = (xx%/2) 500 !(table+ang*16+4) = (yy%/2) 510 !(table+ang*16+8) = 255 520 NEXT 530 di%=0 540 an%=0 550 cutoff%=0.6*dots% 560 FOR d%=0 TO cutoff% 570 SYS "Hourglass_Percentage",d%*100/dots% 580 di%+=incd% 590 an%+=inca% 600 IF an%>=steps% an%-=steps% 610 IF di%>=256 di%-=256 620 anv%=an%+RND(20)-10 630 div%=di%+RND(20)-10 640 IF anv% < 0 anv%+=steps% 650 IF anv% >= steps% anv%-=steps% 660 IF div% < 0 div%+=256 670 IF div% >= 256 div%-=256 680 !(dots+d%*12) = anv% 690 !(dots+d%*12+4) = div% 700 !(dots+d%*12+8) = RND(4)+10 710 IF div% > 200 AND div% < 220 THEN 720 tmp1%=!(dots+d%*12) 730 tmp2%=!(dots+d%*12+4) 740 tmp3%=!(dots+d%*12+8) 750 ENDIF 760 NEXT 770 FOR d%=cutoff%+1 TO dots%-2 780 SYS "Hourglass_Percentage",d%*100/dots% 790 !(dots+d%*12)=RND(steps%)-1 800 !(dots+d%*12+4)=RND(RND(160)) 810 !(dots+d%*12+8)=15 820 NEXT 830 d%=dots%-1 840 !(dots+d%*12)=tmp1% 850 !(dots+d%*12+4)=tmp2% 860 !(dots+d%*12+8)=tmp3% 870 SYS "Hourglass_Off" 880 COLOUR 15 890 CALL entry 900 END 910 DEFPROCassm 920 DIM mem% (16*steps%)+(12*dots%)+(16*numst%)+2000 930 FOR pass%=0 TO 2 STEP 2 940 P%=mem% 950 [OPT pass% 960 ; Entry point 970 .entry stmfd 13!,{14} 980 .l swi "OS_ReadEscapeState" 990 bcs out ; Quit if ESC 1000 bl swap ; Swap screens 1010 bl gal ; Draw screen 1020 b l 1030 .out ldmfd 13!,{15} 1040 ; Screen information 1050 .bank dcd 1 ; bank number (1 or 2) 1060 .start dcd 0 ; Screen start address 1070 .st1 dcd 0 ; Screen 1 start address 1080 .st2 dcd 0 ; Screen 2 start address 1090 ; Swap screens smoothly 1100 .swap 1110 ldr 6,bank 1120 cmp 6,#1 1130 ldreq 7,st1 1140 ldrne 7,st2 1150 str 7,start 1160 mov 0,#19 1170 swi "OS_Byte" 1180 mov 0,#113 1190 mov 1,6 1200 swi "OS_Byte" 1210 rsb 6,6,#3 1220 str 6,bank 1230 mov 0,#112 1240 mov 1,6 1250 swi "OS_Byte" 1260 mov 15,14 1270 ; Pointers to tables 1280 .dotp dcd dots 1290 .tabp dcd table 1300 .strp dcd stars 1310 ; Draw screen 1320 .gal stmfd 13!,{14} 1330 swi 256+12 1340 ; draw star field 1350 ldr 9,start ; r9 -> screen start 1360 mov 12,#numst%-1 ; r12 = starfield count 1370 ldr 11,strp ; r11 -> starfield table 1380 .loop2 1390 ldmia 11,{5,6,7,8} ; r5 = xpos, r6 = ypos, r7 = shade (0..31), r8 = dir 1400 adds 7,7,8 ; change shade 1410 movlt 7,#0 ; range check 1420 rsblt 8,8,#0 1430 cmp 7,#28 1440 movgt 7,#28 1450 rsbgt 8,8,#0 1460 stmia 11!,{5,6,7,8} ; store new values 1470 mov 7,7,asr#1 1480 add 4,9,6,lsl#8 ; address = screen + ypos * 320 + xpos 1490 add 4,4,6,lsl#6 1500 strb 7,[4,5,asr#1] ; plot star 1510 subs 12,12,#1 ; loop 1520 bge loop2 1530 ; write message 1540 swi "OS_WriteS" 1550 dcb 31 1560 dcb 34 1570 dcb 5 1580 equs "YOU ARE HERE" 1590 dcb 0 1600 align 1610 ; plot galaxy 1620 mov 12,#dots%-1 ; r12 = star count 1630 ldr 11,dotp ; r11 -> dot table 1640 ldr 10,tabp ; r10 -> rotation/perspective table 1650 .loop 1660 ldmia 11,{1,4,8} ; r1 = angular posn, r4 = dist (0..255), r8 = shade 1670 subs 1,1,#1 ; move dot 1680 movle 1,#steps%-1 ; range check 1690 str 1,[11] ; store new value 1700 add 14,10,1,lsl#4 ; find screen posn in lookup table 1710 ldmia 14,{6,7} ; r6 = x, r7 = y 1720 mul 6,4,6 ; scale towards centre of screen 1730 mul 7,4,7 1740 mov 6,6,asr#8 1750 mov 7,7,asr#8 1760 add 6,6,#320 ; translate for top-left origin 1770 add 7,7,#256 1780 sub 14,7,#76*2 ; calculate distance shade 1790 movs 14,14,asr#4 ; (convert ypos to range 0..31) 1800 adds 14,14,#6 1810 movlt 14,#0 ; range check 1820 cmp 14,#14 1830 movgt 14,#14 1840 cmp 8,#15 ; if star shade is 31, actual colour is 211 1850 mulne 14,8,14 ; shade according to distance 1860 movne 14,14,asr#4 1870 moveq 14,#14 1880 add 5,9,7,lsl#8 ; get screen address 1890 add 5,5,7,lsl#6 1900 ldrb 0,[5,6,asr#1] ; get old colour 1910 tst 6,#1 ; choose low or high nibble 1920 andeq 0,0,#&f0 1930 andne 0,0,#&0f 1940 orreq 0,0,14 1950 orrne 0,0,14,lsl#4 1960 strb 0,[5,6,asr#1] ; plot point 1970 add 11,11,#12 1980 subs 12,12,#1 ; loop 1990 bge loop 2000 ; plot last point with arrow above it 2010 tst 6,#1 2020 bne asdf 2030 mov 0,#15 2040 add 6,5,6,asr#1 2050 sub 6,6,#640 2060 strb 0,[6] 2070 sub 6,6,#320 2080 orr 0,0,#15<<4 2090 strb 0,[6] 2100 mov 0,#15<<4 2110 strb 0,[6,#-1] 2120 sub 6,6,#320 2130 mov 0,#15 2140 strb 0,[6] 2150 strb 0,[6,#-1] 2160 mov 0,#15 2170 strb 0,[6,#1] 2180 sub 6,6,#320 2190 mov 0,#15 2200 strb 0,[6] 2210 sub 6,6,#320 2220 strb 0,[6] 2230 ldmfd 13!,{15} 2240 .asdf 2250 mov 0,#15<<4 2260 add 6,5,6,asr#1 2270 sub 6,6,#640 2280 strb 0,[6] 2290 sub 6,6,#320 2300 orr 0,0,#15 2310 strb 0,[6] 2320 mov 0,#15 2330 strb 0,[6,#1] 2340 sub 6,6,#320 2350 mov 0,#15<<4 2360 strb 0,[6] 2370 mov 0,#15<<4 2380 strb 0,[6,#-1] 2390 mov 0,#15<<4 2400 strb 0,[6,#1] 2410 sub 6,6,#320 2420 mov 0,#15<<4 2430 strb 0,[6] 2440 sub 6,6,#320 2450 strb 0,[6] 2460 ldmfd 13!,{15} 2470 ; perspective/rotation table (0..steps%) 2480 ; +0 xpos 2490 ; +4 ypos 2500 ; +8 unused 2510 ; +12 unused 2520 .table FNspace(16*steps%) 2530 ; dots (galaxy table) (0..dots%) 2540 ; +0 angle (0..steps%) 2550 ; +4 distance from centre (0..255) 2560 ; +12 shade (0..31) 2570 .dots FNspace(12*dots%) 2580 ; starfield table 2590 ; +0 xpos 2600 ; +4 ypos 2610 ; +8 shade 2620 ; +12 direction 2630 .stars FNspace(16*numst%) 2640 ] 2650 NEXT 2660 ENDPROC 2670 DEFFNspace(l%) 2680 P%+=l% 2690 =0 2700
� >YouAreHere20 � by Stu Smith 6 � � � 20:ș"Hourglass_Smash":� �$;" at line ";�:� (4 steps% = 513 : � subdivisions in 360 deg. 22 dots% = 8193 : � no. of stars in galaxy <0 per = 900 : � perspective distance F9 yp = 512 : � y position of stars in galaxy P6 numst% = 220 : � no. of stars in background Z< inca% = 129 : � angle increment for galaxy shape d? incd% = 1 : � distance incrememt for galaxy shape n ș "Hourglass_On" x �assm � � 21:� 20 � � i%=0 � 14 �! � i%,(i%<<4),(i%<<4),(i%<<4) � � � � 15,0,255,0 � � 14 � � � � vdu% 8 � � swap � �"Please wait..." � !vdu%=148:vdu%!4=-1 �' ș "OS_ReadVduVariables",vdu%,vdu% � !st1 = !vdu% � swap !vdu%=148:vdu%!4=-1 ' ș "OS_ReadVduVariables",vdu%,vdu% " !st2 = !vdu% , � s%=0 � numst%-1 6 !(stars+s%*16) = �(639)-1 @ !(stars+s%*16+4) = �(510)-1 J !(stars+s%*16+8) = �(29)-1 T � �(2)=1 � ^ !(stars+s%*16+12) = 1 h � r !(stars+s%*16+12) = -1 | � � � � � ang=0 � steps%-1 � x=��(360*ang/steps%)*639 �" z=��(360*ang/steps%)*639+1200 � xx%=per*(x/z) � yy%=per*(yp/z)-460 � � xx% > 639 xx% = 639 � � xx% < -639 xx% = -639 � � yy% > 512 yy% = 512 � � yy% < -512 yy% = -512 � !(table+ang*16) = (xx%/2) � !(table+ang*16+4) = (yy%/2) � !(table+ang*16+8) = 255 � di%=0 an%=0 & cutoff%=0.6*dots% 0 � d%=0 � cutoff% :+ ș "Hourglass_Percentage",d%*100/dots% D di%+=incd% N an%+=inca% X � an%>=steps% an%-=steps% b � di%>=256 di%-=256 l anv%=an%+�(20)-10 v div%=di%+�(20)-10 �" � anv% < 0 anv%+=steps% �" � anv% >= steps% anv%-=steps% � � div% < 0 div%+=256 � � div% >= 256 div%-=256 � !(dots+d%*12) = anv% � !(dots+d%*12+4) = div% � !(dots+d%*12+8) = �(4)+10 �! � div% > 200 � div% < 220 � � tmp1%=!(dots+d%*12) � tmp2%=!(dots+d%*12+4) � tmp3%=!(dots+d%*12+8) � � � � � d%=cutoff%+1 � dots%-2 + ș "Hourglass_Percentage",d%*100/dots% !(dots+d%*12)=�(steps%)-1 !(dots+d%*12+4)=�(�(160)) * !(dots+d%*12+8)=15 4 � > d%=dots%-1 H !(dots+d%*12)=tmp1% R !(dots+d%*12+4)=tmp2% \ !(dots+d%*12+8)=tmp3% f ș "Hourglass_Off" p � 15 z � entry � � � ��assm �3 � mem% (16*steps%)+(12*dots%)+(16*numst%)+2000 � � pass%=0 � 2 � 2 � P%=mem% � [OPT pass% � ; Entry point � .entry stmfd 13!,{14} �' .l swi "OS_ReadEscapeState" �. bcs out ; Quit if ESC �/ bl swap ; Swap screens �. bl gal ; Draw screen � b l .out ldmfd 13!,{15} ; Screen information 7 .bank dcd 1 ; bank number (1 or 2) $7 .start dcd 0 ; Screen start address .9 .st1 dcd 0 ; Screen 1 start address 89 .st2 dcd 0 ; Screen 2 start address B ; Swap screens smoothly L .swap V ldr 6,bank ` cmp 6,#1 j ldreq 7,st1 t ldrne 7,st2 ~ str 7,start � mov 0,#19 � swi "OS_Byte" � mov 0,#113 � mov 1,6 � swi "OS_Byte" � rsb 6,6,#3 � str 6,bank � mov 0,#112 � mov 1,6 � swi "OS_Byte" � mov 15,14 � ; Pointers to tables .dotp dcd dots .tabp dcd table .strp dcd stars ; Draw screen ( .gal stmfd 13!,{14} 2 swi 256+12 < ; draw star field F5 ldr 9,start ; r9 -> screen start P8 mov 12,#numst%-1 ; r12 = starfield count Z9 ldr 11,strp ; r11 -> starfield table d .loop2 nU ldmia 11,{5,6,7,8} ; r5 = xpos, r6 = ypos, r7 = shade (0..31), r8 = dir x/ adds 7,7,8 ; change shade �. movlt 7,#0 ; range check � rsblt 8,8,#0 � cmp 7,#28 � movgt 7,#28 � rsbgt 8,8,#0 �3 stmia 11!,{5,6,7,8} ; store new values � mov 7,7,asr#1 �G add 4,9,6,lsl#8 ; address = screen + ypos * 320 + xpos � add 4,4,6,lsl#6 �, strb 7,[4,5,asr#1] ; plot star �' subs 12,12,#1 ; loop � bge loop2 � ; write message swi "OS_WriteS" dcb 31 dcb 34 " dcb 5 ,! equs "YOU ARE HERE" 6 dcb 0 @ align J ; plot galaxy T3 mov 12,#dots%-1 ; r12 = star count ^3 ldr 11,dotp ; r11 -> dot table hD ldr 10,tabp ; r10 -> rotation/perspective table r .loop |T ldmia 11,{1,4,8} ; r1 = angular posn, r4 = dist (0..255), r8 = shade �+ subs 1,1,#1 ; move dot �. movle 1,#steps%-1 ; range check �2 str 1,[11] ; store new value �C add 14,10,1,lsl#4 ; find screen posn in lookup table �1 ldmia 14,{6,7} ; r6 = x, r7 = y �A mul 6,4,6 ; scale towards centre of screen � mul 7,4,7 � mov 6,6,asr#8 � mov 7,7,asr#8 �@ add 6,6,#320 ; translate for top-left origin � add 7,7,#256 �; sub 14,7,#76*2 ; calculate distance shade �@ movs 14,14,asr#4 ; (convert ypos to range 0..31) adds 14,14,#6 . movlt 14,#0 ; range check cmp 14,#14 & movgt 14,#14 0L cmp 8,#15 ; if star shade is 31, actual colour is 211 :> mulne 14,8,14 ; shade according to distance D movne 14,14,asr#4 N moveq 14,#14 X5 add 5,9,7,lsl#8 ; get screen address b add 5,5,7,lsl#6 l1 ldrb 0,[5,6,asr#1] ; get old colour v< tst 6,#1 ; choose low or high nibble � andeq 0,0,#&f0 � andne 0,0,#&0f � orreq 0,0,14 � orrne 0,0,14,lsl#4 �- strb 0,[5,6,asr#1] ; plot point � add 11,11,#12 �' subs 12,12,#1 ; loop � bge loop �* ; plot last point with arrow above it � tst 6,#1 � bne asdf � mov 0,#15 � add 6,5,6,asr#1 sub 6,6,#640 strb 0,[6] sub 6,6,#320 orr 0,0,#15<<4 * strb 0,[6] 4 mov 0,#15<<4 > strb 0,[6,#-1] H sub 6,6,#320 R mov 0,#15 \ strb 0,[6] f strb 0,[6,#-1] p mov 0,#15 z strb 0,[6,#1] � sub 6,6,#320 � mov 0,#15 � strb 0,[6] � sub 6,6,#320 � strb 0,[6] � ldmfd 13!,{15} � .asdf � mov 0,#15<<4 � add 6,5,6,asr#1 � sub 6,6,#640 � strb 0,[6] � sub 6,6,#320 � orr 0,0,#15 strb 0,[6] mov 0,#15 strb 0,[6,#1] $ sub 6,6,#320 . mov 0,#15<<4 8 strb 0,[6] B mov 0,#15<<4 L strb 0,[6,#-1] V mov 0,#15<<4 ` strb 0,[6,#1] j sub 6,6,#320 t mov 0,#15<<4 ~ strb 0,[6] � sub 6,6,#320 � strb 0,[6] � ldmfd 13!,{15} �- ; perspective/rotation table (0..steps%) � ; +0 xpos � ; +4 ypos � ; +8 unused � ; +12 unused � .table �space(16*steps%) �% ; dots (galaxy table) (0..dots%) � ; +0 angle (0..steps%) �) ; +4 distance from centre (0..255) ; +12 shade (0..31) .dots �space(12*dots%) ; starfield table ; +0 xpos ( ; +4 ypos 2 ; +8 shade < ; +12 direction F .stars �space(16*numst%) P ] Z � d � n ݤspace(l%) x P%+=l% � =0 � �
00000000 0d 00 0a 14 20 f4 20 3e 59 6f 75 41 72 65 48 65 |.... . >YouAreHe| 00000010 72 65 32 30 0d 00 14 13 20 f4 20 62 79 20 53 74 |re20.... . by St| 00000020 75 20 53 6d 69 74 68 0d 00 1e 36 20 ee 20 85 20 |u Smith...6 . . | 00000030 eb 20 32 30 3a c8 99 22 48 6f 75 72 67 6c 61 73 |. 20:.."Hourglas| 00000040 73 5f 53 6d 61 73 68 22 3a f1 20 f6 24 3b 22 20 |s_Smash":. .$;" | 00000050 61 74 20 6c 69 6e 65 20 22 3b 9e 3a e0 0d 00 28 |at line ";.:...(| 00000060 34 20 73 74 65 70 73 25 20 3d 20 35 31 33 20 20 |4 steps% = 513 | 00000070 20 20 20 20 20 3a 20 f4 20 73 75 62 64 69 76 69 | : . subdivi| 00000080 73 69 6f 6e 73 20 69 6e 20 33 36 30 20 64 65 67 |sions in 360 deg| 00000090 2e 0d 00 32 32 20 64 6f 74 73 25 20 20 3d 20 38 |...22 dots% = 8| 000000a0 31 39 33 20 20 20 20 20 20 3a 20 f4 20 6e 6f 2e |193 : . no.| 000000b0 20 6f 66 20 73 74 61 72 73 20 69 6e 20 67 61 6c | of stars in gal| 000000c0 61 78 79 0d 00 3c 30 20 70 65 72 20 20 20 20 3d |axy..<0 per =| 000000d0 20 39 30 30 20 20 20 20 20 20 20 3a 20 f4 20 70 | 900 : . p| 000000e0 65 72 73 70 65 63 74 69 76 65 20 64 69 73 74 61 |erspective dista| 000000f0 6e 63 65 0d 00 46 39 20 79 70 20 20 20 20 20 3d |nce..F9 yp =| 00000100 20 35 31 32 20 20 20 20 20 20 20 3a 20 f4 20 79 | 512 : . y| 00000110 20 70 6f 73 69 74 69 6f 6e 20 6f 66 20 73 74 61 | position of sta| 00000120 72 73 20 69 6e 20 67 61 6c 61 78 79 0d 00 50 36 |rs in galaxy..P6| 00000130 20 6e 75 6d 73 74 25 20 3d 20 32 32 30 20 20 20 | numst% = 220 | 00000140 20 20 20 20 3a 20 f4 20 6e 6f 2e 20 6f 66 20 73 | : . no. of s| 00000150 74 61 72 73 20 69 6e 20 62 61 63 6b 67 72 6f 75 |tars in backgrou| 00000160 6e 64 0d 00 5a 3c 20 69 6e 63 61 25 20 20 3d 20 |nd..Z< inca% = | 00000170 31 32 39 20 20 20 20 20 20 20 3a 20 f4 20 61 6e |129 : . an| 00000180 67 6c 65 20 69 6e 63 72 65 6d 65 6e 74 20 66 6f |gle increment fo| 00000190 72 20 67 61 6c 61 78 79 20 73 68 61 70 65 0d 00 |r galaxy shape..| 000001a0 64 3f 20 69 6e 63 64 25 20 20 3d 20 31 20 20 20 |d? incd% = 1 | 000001b0 20 20 20 20 20 20 3a 20 f4 20 64 69 73 74 61 6e | : . distan| 000001c0 63 65 20 69 6e 63 72 65 6d 65 6d 74 20 66 6f 72 |ce incrememt for| 000001d0 20 67 61 6c 61 78 79 20 73 68 61 70 65 0d 00 6e | galaxy shape..n| 000001e0 16 20 c8 99 20 22 48 6f 75 72 67 6c 61 73 73 5f |. .. "Hourglass_| 000001f0 4f 6e 22 0d 00 78 0a 20 f2 61 73 73 6d 0d 00 82 |On"..x. .assm...| 00000200 0e 20 eb 20 32 31 3a eb 20 32 30 0d 00 8c 10 20 |. . 21:. 20.... | 00000210 e3 20 69 25 3d 30 20 b8 20 31 34 0d 00 96 21 20 |. i%=0 . 14...! | 00000220 fb 20 69 25 2c 28 69 25 3c 3c 34 29 2c 28 69 25 |. i%,(i%<<4),(i%| 00000230 3c 3c 34 29 2c 28 69 25 3c 3c 34 29 0d 00 a0 06 |<<4),(i%<<4)....| 00000240 20 ed 0d 00 aa 11 20 fb 20 31 35 2c 30 2c 32 35 | ..... . 15,0,25| 00000250 35 2c 30 0d 00 b4 09 20 fb 20 31 34 0d 00 be 06 |5,0.... . 14....| 00000260 20 87 0d 00 c8 0d 20 de 20 76 64 75 25 20 38 0d | ..... . vdu% 8.| 00000270 00 d2 0b 20 d6 20 73 77 61 70 0d 00 dc 16 20 f1 |... . swap.... .| 00000280 22 50 6c 65 61 73 65 20 77 61 69 74 2e 2e 2e 22 |"Please wait..."| 00000290 0d 00 e6 18 20 21 76 64 75 25 3d 31 34 38 3a 76 |.... !vdu%=148:v| 000002a0 64 75 25 21 34 3d 2d 31 0d 00 f0 27 20 c8 99 20 |du%!4=-1...' .. | 000002b0 22 4f 53 5f 52 65 61 64 56 64 75 56 61 72 69 61 |"OS_ReadVduVaria| 000002c0 62 6c 65 73 22 2c 76 64 75 25 2c 76 64 75 25 0d |bles",vdu%,vdu%.| 000002d0 00 fa 11 20 21 73 74 31 20 3d 20 21 76 64 75 25 |... !st1 = !vdu%| 000002e0 0d 01 04 0b 20 d6 20 73 77 61 70 0d 01 0e 18 20 |.... . swap.... | 000002f0 21 76 64 75 25 3d 31 34 38 3a 76 64 75 25 21 34 |!vdu%=148:vdu%!4| 00000300 3d 2d 31 0d 01 18 27 20 c8 99 20 22 4f 53 5f 52 |=-1...' .. "OS_R| 00000310 65 61 64 56 64 75 56 61 72 69 61 62 6c 65 73 22 |eadVduVariables"| 00000320 2c 76 64 75 25 2c 76 64 75 25 0d 01 22 11 20 21 |,vdu%,vdu%..". !| 00000330 73 74 32 20 3d 20 21 76 64 75 25 0d 01 2c 16 20 |st2 = !vdu%..,. | 00000340 e3 20 73 25 3d 30 20 b8 20 6e 75 6d 73 74 25 2d |. s%=0 . numst%-| 00000350 31 0d 01 36 1e 20 21 28 73 74 61 72 73 2b 73 25 |1..6. !(stars+s%| 00000360 2a 31 36 29 20 3d 20 b3 28 36 33 39 29 2d 31 0d |*16) = .(639)-1.| 00000370 01 40 20 20 21 28 73 74 61 72 73 2b 73 25 2a 31 |.@ !(stars+s%*1| 00000380 36 2b 34 29 20 3d 20 b3 28 35 31 30 29 2d 31 0d |6+4) = .(510)-1.| 00000390 01 4a 1f 20 21 28 73 74 61 72 73 2b 73 25 2a 31 |.J. !(stars+s%*1| 000003a0 36 2b 38 29 20 3d 20 b3 28 32 39 29 2d 31 0d 01 |6+8) = .(29)-1..| 000003b0 54 0f 20 e7 20 b3 28 32 29 3d 31 20 8c 0d 01 5e |T. . .(2)=1 ...^| 000003c0 1a 20 21 28 73 74 61 72 73 2b 73 25 2a 31 36 2b |. !(stars+s%*16+| 000003d0 31 32 29 20 3d 20 31 0d 01 68 06 20 cc 0d 01 72 |12) = 1..h. ...r| 000003e0 1b 20 21 28 73 74 61 72 73 2b 73 25 2a 31 36 2b |. !(stars+s%*16+| 000003f0 31 32 29 20 3d 20 2d 31 0d 01 7c 06 20 cd 0d 01 |12) = -1..|. ...| 00000400 86 06 20 ed 0d 01 90 17 20 e3 20 61 6e 67 3d 30 |.. ..... . ang=0| 00000410 20 b8 20 73 74 65 70 73 25 2d 31 0d 01 9a 1d 20 | . steps%-1.... | 00000420 78 3d b5 b2 28 33 36 30 2a 61 6e 67 2f 73 74 65 |x=..(360*ang/ste| 00000430 70 73 25 29 2a 36 33 39 0d 01 a4 22 20 7a 3d 9b |ps%)*639..." z=.| 00000440 b2 28 33 36 30 2a 61 6e 67 2f 73 74 65 70 73 25 |.(360*ang/steps%| 00000450 29 2a 36 33 39 2b 31 32 30 30 0d 01 ae 12 20 78 |)*639+1200.... x| 00000460 78 25 3d 70 65 72 2a 28 78 2f 7a 29 0d 01 b8 17 |x%=per*(x/z)....| 00000470 20 79 79 25 3d 70 65 72 2a 28 79 70 2f 7a 29 2d | yy%=per*(yp/z)-| 00000480 34 36 30 0d 01 c2 1b 20 e7 20 78 78 25 20 3e 20 |460.... . xx% > | 00000490 36 33 39 20 20 78 78 25 20 3d 20 36 33 39 0d 01 |639 xx% = 639..| 000004a0 cc 1c 20 e7 20 78 78 25 20 3c 20 2d 36 33 39 20 |.. . xx% < -639 | 000004b0 78 78 25 20 3d 20 2d 36 33 39 0d 01 d6 1b 20 e7 |xx% = -639.... .| 000004c0 20 79 79 25 20 3e 20 35 31 32 20 20 79 79 25 20 | yy% > 512 yy% | 000004d0 3d 20 35 31 32 0d 01 e0 1c 20 e7 20 79 79 25 20 |= 512.... . yy% | 000004e0 3c 20 2d 35 31 32 20 79 79 25 20 3d 20 2d 35 31 |< -512 yy% = -51| 000004f0 32 0d 01 ea 20 20 21 28 74 61 62 6c 65 2b 61 6e |2... !(table+an| 00000500 67 2a 31 36 29 20 20 20 3d 20 28 78 78 25 2f 32 |g*16) = (xx%/2| 00000510 29 0d 01 f4 20 20 21 28 74 61 62 6c 65 2b 61 6e |)... !(table+an| 00000520 67 2a 31 36 2b 34 29 20 3d 20 28 79 79 25 2f 32 |g*16+4) = (yy%/2| 00000530 29 0d 01 fe 1c 20 21 28 74 61 62 6c 65 2b 61 6e |).... !(table+an| 00000540 67 2a 31 36 2b 38 29 20 3d 20 32 35 35 0d 02 08 |g*16+8) = 255...| 00000550 06 20 ed 0d 02 12 0a 20 64 69 25 3d 30 0d 02 1c |. ..... di%=0...| 00000560 0a 20 61 6e 25 3d 30 0d 02 26 16 20 63 75 74 6f |. an%=0..&. cuto| 00000570 66 66 25 3d 30 2e 36 2a 64 6f 74 73 25 0d 02 30 |ff%=0.6*dots%..0| 00000580 15 20 e3 20 64 25 3d 30 20 b8 20 63 75 74 6f 66 |. . d%=0 . cutof| 00000590 66 25 0d 02 3a 2b 20 c8 99 20 22 48 6f 75 72 67 |f%..:+ .. "Hourg| 000005a0 6c 61 73 73 5f 50 65 72 63 65 6e 74 61 67 65 22 |lass_Percentage"| 000005b0 2c 64 25 2a 31 30 30 2f 64 6f 74 73 25 0d 02 44 |,d%*100/dots%..D| 000005c0 0f 20 64 69 25 2b 3d 69 6e 63 64 25 0d 02 4e 0f |. di%+=incd%..N.| 000005d0 20 61 6e 25 2b 3d 69 6e 63 61 25 0d 02 58 1e 20 | an%+=inca%..X. | 000005e0 e7 20 61 6e 25 3e 3d 73 74 65 70 73 25 20 61 6e |. an%>=steps% an| 000005f0 25 2d 3d 73 74 65 70 73 25 0d 02 62 18 20 e7 20 |%-=steps%..b. . | 00000600 64 69 25 3e 3d 32 35 36 20 64 69 25 2d 3d 32 35 |di%>=256 di%-=25| 00000610 36 0d 02 6c 16 20 61 6e 76 25 3d 61 6e 25 2b b3 |6..l. anv%=an%+.| 00000620 28 32 30 29 2d 31 30 0d 02 76 16 20 64 69 76 25 |(20)-10..v. div%| 00000630 3d 64 69 25 2b b3 28 32 30 29 2d 31 30 0d 02 80 |=di%+.(20)-10...| 00000640 22 20 e7 20 61 6e 76 25 20 3c 20 30 20 20 20 20 |" . anv% < 0 | 00000650 20 20 20 61 6e 76 25 2b 3d 73 74 65 70 73 25 0d | anv%+=steps%.| 00000660 02 8a 22 20 e7 20 61 6e 76 25 20 3e 3d 20 73 74 |.." . anv% >= st| 00000670 65 70 73 25 20 61 6e 76 25 2d 3d 73 74 65 70 73 |eps% anv%-=steps| 00000680 25 0d 02 94 1f 20 e7 20 64 69 76 25 20 3c 20 30 |%.... . div% < 0| 00000690 20 20 20 20 20 20 20 64 69 76 25 2b 3d 32 35 36 | div%+=256| 000006a0 0d 02 9e 1f 20 e7 20 64 69 76 25 20 3e 3d 20 32 |.... . div% >= 2| 000006b0 35 36 20 20 20 20 64 69 76 25 2d 3d 32 35 36 0d |56 div%-=256.| 000006c0 02 a8 1b 20 21 28 64 6f 74 73 2b 64 25 2a 31 32 |... !(dots+d%*12| 000006d0 29 20 20 20 3d 20 61 6e 76 25 0d 02 b2 1b 20 21 |) = anv%.... !| 000006e0 28 64 6f 74 73 2b 64 25 2a 31 32 2b 34 29 20 3d |(dots+d%*12+4) =| 000006f0 20 64 69 76 25 0d 02 bc 1e 20 21 28 64 6f 74 73 | div%.... !(dots| 00000700 2b 64 25 2a 31 32 2b 38 29 20 3d 20 b3 28 34 29 |+d%*12+8) = .(4)| 00000710 2b 31 30 0d 02 c6 21 20 e7 20 64 69 76 25 20 3e |+10...! . div% >| 00000720 20 32 30 30 20 20 80 20 64 69 76 25 20 3c 20 32 | 200 . div% < 2| 00000730 32 30 20 8c 0d 02 d0 18 20 74 6d 70 31 25 3d 21 |20 ..... tmp1%=!| 00000740 28 64 6f 74 73 2b 64 25 2a 31 32 29 0d 02 da 1a |(dots+d%*12)....| 00000750 20 74 6d 70 32 25 3d 21 28 64 6f 74 73 2b 64 25 | tmp2%=!(dots+d%| 00000760 2a 31 32 2b 34 29 0d 02 e4 1a 20 74 6d 70 33 25 |*12+4).... tmp3%| 00000770 3d 21 28 64 6f 74 73 2b 64 25 2a 31 32 2b 38 29 |=!(dots+d%*12+8)| 00000780 0d 02 ee 06 20 cd 0d 02 f8 06 20 ed 0d 03 02 1d |.... ..... .....| 00000790 20 e3 20 64 25 3d 63 75 74 6f 66 66 25 2b 31 20 | . d%=cutoff%+1 | 000007a0 b8 20 64 6f 74 73 25 2d 32 0d 03 0c 2b 20 c8 99 |. dots%-2...+ ..| 000007b0 20 22 48 6f 75 72 67 6c 61 73 73 5f 50 65 72 63 | "Hourglass_Perc| 000007c0 65 6e 74 61 67 65 22 2c 64 25 2a 31 30 30 2f 64 |entage",d%*100/d| 000007d0 6f 74 73 25 0d 03 16 1e 20 21 28 64 6f 74 73 2b |ots%.... !(dots+| 000007e0 64 25 2a 31 32 29 3d b3 28 73 74 65 70 73 25 29 |d%*12)=.(steps%)| 000007f0 2d 31 0d 03 20 1e 20 21 28 64 6f 74 73 2b 64 25 |-1.. . !(dots+d%| 00000800 2a 31 32 2b 34 29 3d b3 28 b3 28 31 36 30 29 29 |*12+4)=.(.(160))| 00000810 0d 03 2a 17 20 21 28 64 6f 74 73 2b 64 25 2a 31 |..*. !(dots+d%*1| 00000820 32 2b 38 29 3d 31 35 0d 03 34 06 20 ed 0d 03 3e |2+8)=15..4. ...>| 00000830 0f 20 64 25 3d 64 6f 74 73 25 2d 31 0d 03 48 18 |. d%=dots%-1..H.| 00000840 20 21 28 64 6f 74 73 2b 64 25 2a 31 32 29 3d 74 | !(dots+d%*12)=t| 00000850 6d 70 31 25 0d 03 52 1a 20 21 28 64 6f 74 73 2b |mp1%..R. !(dots+| 00000860 64 25 2a 31 32 2b 34 29 3d 74 6d 70 32 25 0d 03 |d%*12+4)=tmp2%..| 00000870 5c 1a 20 21 28 64 6f 74 73 2b 64 25 2a 31 32 2b |\. !(dots+d%*12+| 00000880 38 29 3d 74 6d 70 33 25 0d 03 66 17 20 c8 99 20 |8)=tmp3%..f. .. | 00000890 22 48 6f 75 72 67 6c 61 73 73 5f 4f 66 66 22 0d |"Hourglass_Off".| 000008a0 03 70 09 20 fb 20 31 35 0d 03 7a 0c 20 d6 20 65 |.p. . 15..z. . e| 000008b0 6e 74 72 79 0d 03 84 06 20 e0 0d 03 8e 0b 20 dd |ntry.... ..... .| 000008c0 f2 61 73 73 6d 0d 03 98 33 20 de 20 6d 65 6d 25 |.assm...3 . mem%| 000008d0 20 28 31 36 2a 73 74 65 70 73 25 29 2b 28 31 32 | (16*steps%)+(12| 000008e0 2a 64 6f 74 73 25 29 2b 28 31 36 2a 6e 75 6d 73 |*dots%)+(16*nums| 000008f0 74 25 29 2b 32 30 30 30 0d 03 a2 16 20 e3 20 70 |t%)+2000.... . p| 00000900 61 73 73 25 3d 30 20 b8 20 32 20 88 20 32 0d 03 |ass%=0 . 2 . 2..| 00000910 ac 0c 20 50 25 3d 6d 65 6d 25 0d 03 b6 0f 20 5b |.. P%=mem%.... [| 00000920 4f 50 54 20 70 61 73 73 25 0d 03 c0 12 20 3b 20 |OPT pass%.... ; | 00000930 45 6e 74 72 79 20 70 6f 69 6e 74 0d 03 ca 1b 20 |Entry point.... | 00000940 2e 65 6e 74 72 79 20 73 74 6d 66 64 20 20 31 33 |.entry stmfd 13| 00000950 21 2c 7b 31 34 7d 0d 03 d4 27 20 2e 6c 20 20 20 |!,{14}...' .l | 00000960 20 20 73 77 69 20 20 20 20 22 4f 53 5f 52 65 61 | swi "OS_Rea| 00000970 64 45 73 63 61 70 65 53 74 61 74 65 22 0d 03 de |dEscapeState"...| 00000980 2e 20 20 20 20 20 20 20 20 62 63 73 20 20 20 20 |. bcs | 00000990 6f 75 74 20 20 20 20 20 20 20 20 20 20 20 3b 20 |out ; | 000009a0 51 75 69 74 20 69 66 20 45 53 43 0d 03 e8 2f 20 |Quit if ESC.../ | 000009b0 20 20 20 20 20 20 20 62 6c 20 20 20 20 20 73 77 | bl sw| 000009c0 61 70 20 20 20 20 20 20 20 20 20 20 3b 20 53 77 |ap ; Sw| 000009d0 61 70 20 73 63 72 65 65 6e 73 0d 03 f2 2e 20 20 |ap screens.... | 000009e0 20 20 20 20 20 20 62 6c 20 20 20 20 20 67 61 6c | bl gal| 000009f0 20 20 20 20 20 20 20 20 20 20 20 3b 20 44 72 61 | ; Dra| 00000a00 77 20 73 63 72 65 65 6e 0d 03 fc 14 20 20 20 20 |w screen.... | 00000a10 20 20 20 20 62 20 20 20 20 20 20 6c 0d 04 06 1b | b l....| 00000a20 20 2e 6f 75 74 20 20 20 6c 64 6d 66 64 20 20 31 | .out ldmfd 1| 00000a30 33 21 2c 7b 31 35 7d 0d 04 10 19 20 3b 20 53 63 |3!,{15}.... ; Sc| 00000a40 72 65 65 6e 20 69 6e 66 6f 72 6d 61 74 69 6f 6e |reen information| 00000a50 0d 04 1a 37 20 2e 62 61 6e 6b 20 20 64 63 64 20 |...7 .bank dcd | 00000a60 20 20 20 31 20 20 20 20 20 20 20 20 20 20 20 20 | 1 | 00000a70 20 3b 20 62 61 6e 6b 20 6e 75 6d 62 65 72 20 28 | ; bank number (| 00000a80 31 20 6f 72 20 32 29 0d 04 24 37 20 2e 73 74 61 |1 or 2)..$7 .sta| 00000a90 72 74 20 64 63 64 20 20 20 20 30 20 20 20 20 20 |rt dcd 0 | 00000aa0 20 20 20 20 20 20 20 20 3b 20 53 63 72 65 65 6e | ; Screen| 00000ab0 20 73 74 61 72 74 20 61 64 64 72 65 73 73 0d 04 | start address..| 00000ac0 2e 39 20 2e 73 74 31 20 20 20 64 63 64 20 20 20 |.9 .st1 dcd | 00000ad0 20 30 20 20 20 20 20 20 20 20 20 20 20 20 20 3b | 0 ;| 00000ae0 20 53 63 72 65 65 6e 20 31 20 73 74 61 72 74 20 | Screen 1 start | 00000af0 61 64 64 72 65 73 73 0d 04 38 39 20 2e 73 74 32 |address..89 .st2| 00000b00 20 20 20 64 63 64 20 20 20 20 30 20 20 20 20 20 | dcd 0 | 00000b10 20 20 20 20 20 20 20 20 3b 20 53 63 72 65 65 6e | ; Screen| 00000b20 20 32 20 73 74 61 72 74 20 61 64 64 72 65 73 73 | 2 start address| 00000b30 0d 04 42 1c 20 3b 20 53 77 61 70 20 73 63 72 65 |..B. ; Swap scre| 00000b40 65 6e 73 20 73 6d 6f 6f 74 68 6c 79 0d 04 4c 0a |ens smoothly..L.| 00000b50 20 2e 73 77 61 70 0d 04 56 19 20 20 20 20 20 20 | .swap..V. | 00000b60 20 20 6c 64 72 20 20 20 20 36 2c 62 61 6e 6b 0d | ldr 6,bank.| 00000b70 04 60 17 20 20 20 20 20 20 20 20 63 6d 70 20 20 |.`. cmp | 00000b80 20 20 36 2c 23 31 0d 04 6a 18 20 20 20 20 20 20 | 6,#1..j. | 00000b90 20 20 6c 64 72 65 71 20 20 37 2c 73 74 31 0d 04 | ldreq 7,st1..| 00000ba0 74 18 20 20 20 20 20 20 20 20 6c 64 72 6e 65 20 |t. ldrne | 00000bb0 20 37 2c 73 74 32 0d 04 7e 1a 20 20 20 20 20 20 | 7,st2..~. | 00000bc0 20 20 73 74 72 20 20 20 20 37 2c 73 74 61 72 74 | str 7,start| 00000bd0 0d 04 88 18 20 20 20 20 20 20 20 20 6d 6f 76 20 |.... mov | 00000be0 20 20 20 30 2c 23 31 39 0d 04 92 1c 20 20 20 20 | 0,#19.... | 00000bf0 20 20 20 20 73 77 69 20 20 20 20 22 4f 53 5f 42 | swi "OS_B| 00000c00 79 74 65 22 0d 04 9c 19 20 20 20 20 20 20 20 20 |yte".... | 00000c10 6d 6f 76 20 20 20 20 30 2c 23 31 31 33 0d 04 a6 |mov 0,#113...| 00000c20 16 20 20 20 20 20 20 20 20 6d 6f 76 20 20 20 20 |. mov | 00000c30 31 2c 36 0d 04 b0 1c 20 20 20 20 20 20 20 20 73 |1,6.... s| 00000c40 77 69 20 20 20 20 22 4f 53 5f 42 79 74 65 22 0d |wi "OS_Byte".| 00000c50 04 ba 19 20 20 20 20 20 20 20 20 72 73 62 20 20 |... rsb | 00000c60 20 20 36 2c 36 2c 23 33 0d 04 c4 19 20 20 20 20 | 6,6,#3.... | 00000c70 20 20 20 20 73 74 72 20 20 20 20 36 2c 62 61 6e | str 6,ban| 00000c80 6b 0d 04 ce 19 20 20 20 20 20 20 20 20 6d 6f 76 |k.... mov| 00000c90 20 20 20 20 30 2c 23 31 31 32 0d 04 d8 16 20 20 | 0,#112.... | 00000ca0 20 20 20 20 20 20 6d 6f 76 20 20 20 20 31 2c 36 | mov 1,6| 00000cb0 0d 04 e2 1c 20 20 20 20 20 20 20 20 73 77 69 20 |.... swi | 00000cc0 20 20 20 22 4f 53 5f 42 79 74 65 22 0d 04 ec 18 | "OS_Byte"....| 00000cd0 20 20 20 20 20 20 20 20 6d 6f 76 20 20 20 20 31 | mov 1| 00000ce0 35 2c 31 34 0d 04 f6 19 20 3b 20 50 6f 69 6e 74 |5,14.... ; Point| 00000cf0 65 72 73 20 74 6f 20 74 61 62 6c 65 73 0d 05 00 |ers to tables...| 00000d00 17 20 2e 64 6f 74 70 20 20 64 63 64 20 20 20 20 |. .dotp dcd | 00000d10 64 6f 74 73 0d 05 0a 18 20 2e 74 61 62 70 20 20 |dots.... .tabp | 00000d20 64 63 64 20 20 20 20 74 61 62 6c 65 0d 05 14 18 |dcd table....| 00000d30 20 2e 73 74 72 70 20 20 64 63 64 20 20 20 20 73 | .strp dcd s| 00000d40 74 61 72 73 0d 05 1e 12 20 3b 20 44 72 61 77 20 |tars.... ; Draw | 00000d50 73 63 72 65 65 6e 0d 05 28 1b 20 2e 67 61 6c 20 |screen..(. .gal | 00000d60 20 20 73 74 6d 66 64 20 20 31 33 21 2c 7b 31 34 | stmfd 13!,{14| 00000d70 7d 0d 05 32 19 20 20 20 20 20 20 20 20 73 77 69 |}..2. swi| 00000d80 20 20 20 20 32 35 36 2b 31 32 0d 05 3c 16 20 3b | 256+12..<. ;| 00000d90 20 64 72 61 77 20 73 74 61 72 20 66 69 65 6c 64 | draw star field| 00000da0 0d 05 46 35 20 20 20 20 20 20 20 20 6c 64 72 20 |..F5 ldr | 00000db0 20 20 20 39 2c 73 74 61 72 74 20 20 20 20 20 20 | 9,start | 00000dc0 20 3b 20 72 39 20 2d 3e 20 73 63 72 65 65 6e 20 | ; r9 -> screen | 00000dd0 73 74 61 72 74 0d 05 50 38 20 20 20 20 20 20 20 |start..P8 | 00000de0 20 6d 6f 76 20 20 20 20 31 32 2c 23 6e 75 6d 73 | mov 12,#nums| 00000df0 74 25 2d 31 20 20 3b 20 72 31 32 20 3d 20 73 74 |t%-1 ; r12 = st| 00000e00 61 72 66 69 65 6c 64 20 63 6f 75 6e 74 0d 05 5a |arfield count..Z| 00000e10 39 20 20 20 20 20 20 20 20 6c 64 72 20 20 20 20 |9 ldr | 00000e20 31 31 2c 73 74 72 70 20 20 20 20 20 20 20 3b 20 |11,strp ; | 00000e30 72 31 31 20 2d 3e 20 73 74 61 72 66 69 65 6c 64 |r11 -> starfield| 00000e40 20 74 61 62 6c 65 0d 05 64 0b 20 2e 6c 6f 6f 70 | table..d. .loop| 00000e50 32 0d 05 6e 55 20 20 20 20 20 20 20 20 6c 64 6d |2..nU ldm| 00000e60 69 61 20 20 31 31 2c 7b 35 2c 36 2c 37 2c 38 7d |ia 11,{5,6,7,8}| 00000e70 20 20 3b 20 72 35 20 3d 20 78 70 6f 73 2c 20 72 | ; r5 = xpos, r| 00000e80 36 20 3d 20 79 70 6f 73 2c 20 72 37 20 3d 20 73 |6 = ypos, r7 = s| 00000e90 68 61 64 65 20 28 30 2e 2e 33 31 29 2c 20 72 38 |hade (0..31), r8| 00000ea0 20 3d 20 64 69 72 0d 05 78 2f 20 20 20 20 20 20 | = dir..x/ | 00000eb0 20 20 61 64 64 73 20 20 20 37 2c 37 2c 38 20 20 | adds 7,7,8 | 00000ec0 20 20 20 20 20 20 20 3b 20 63 68 61 6e 67 65 20 | ; change | 00000ed0 73 68 61 64 65 0d 05 82 2e 20 20 20 20 20 20 20 |shade.... | 00000ee0 20 6d 6f 76 6c 74 20 20 37 2c 23 30 20 20 20 20 | movlt 7,#0 | 00000ef0 20 20 20 20 20 20 3b 20 72 61 6e 67 65 20 63 68 | ; range ch| 00000f00 65 63 6b 0d 05 8c 19 20 20 20 20 20 20 20 20 72 |eck.... r| 00000f10 73 62 6c 74 20 20 38 2c 38 2c 23 30 0d 05 96 18 |sblt 8,8,#0....| 00000f20 20 20 20 20 20 20 20 20 63 6d 70 20 20 20 20 37 | cmp 7| 00000f30 2c 23 32 38 0d 05 a0 18 20 20 20 20 20 20 20 20 |,#28.... | 00000f40 6d 6f 76 67 74 20 20 37 2c 23 32 38 0d 05 aa 19 |movgt 7,#28....| 00000f50 20 20 20 20 20 20 20 20 72 73 62 67 74 20 20 38 | rsbgt 8| 00000f60 2c 38 2c 23 30 0d 05 b4 33 20 20 20 20 20 20 20 |,8,#0...3 | 00000f70 20 73 74 6d 69 61 20 20 31 31 21 2c 7b 35 2c 36 | stmia 11!,{5,6| 00000f80 2c 37 2c 38 7d 20 3b 20 73 74 6f 72 65 20 6e 65 |,7,8} ; store ne| 00000f90 77 20 76 61 6c 75 65 73 0d 05 be 1c 20 20 20 20 |w values.... | 00000fa0 20 20 20 20 6d 6f 76 20 20 20 20 37 2c 37 2c 61 | mov 7,7,a| 00000fb0 73 72 23 31 0d 05 c8 47 20 20 20 20 20 20 20 20 |sr#1...G | 00000fc0 61 64 64 20 20 20 20 34 2c 39 2c 36 2c 6c 73 6c |add 4,9,6,lsl| 00000fd0 23 38 20 20 20 3b 20 61 64 64 72 65 73 73 20 3d |#8 ; address =| 00000fe0 20 73 63 72 65 65 6e 20 2b 20 79 70 6f 73 20 2a | screen + ypos *| 00000ff0 20 33 32 30 20 2b 20 78 70 6f 73 0d 05 d2 1e 20 | 320 + xpos.... | 00001000 20 20 20 20 20 20 20 61 64 64 20 20 20 20 34 2c | add 4,| 00001010 34 2c 36 2c 6c 73 6c 23 36 0d 05 dc 2c 20 20 20 |4,6,lsl#6..., | 00001020 20 20 20 20 20 73 74 72 62 20 20 20 37 2c 5b 34 | strb 7,[4| 00001030 2c 35 2c 61 73 72 23 31 5d 20 3b 20 70 6c 6f 74 |,5,asr#1] ; plot| 00001040 20 73 74 61 72 0d 05 e6 27 20 20 20 20 20 20 20 | star...' | 00001050 20 73 75 62 73 20 20 20 31 32 2c 31 32 2c 23 31 | subs 12,12,#1| 00001060 20 20 20 20 20 20 3b 20 6c 6f 6f 70 0d 05 f0 18 | ; loop....| 00001070 20 20 20 20 20 20 20 20 62 67 65 20 20 20 20 6c | bge l| 00001080 6f 6f 70 32 0d 05 fa 14 20 3b 20 77 72 69 74 65 |oop2.... ; write| 00001090 20 6d 65 73 73 61 67 65 0d 06 04 1e 20 20 20 20 | message.... | 000010a0 20 20 20 20 73 77 69 20 20 20 20 22 4f 53 5f 57 | swi "OS_W| 000010b0 72 69 74 65 53 22 0d 06 0e 15 20 20 20 20 20 20 |riteS".... | 000010c0 20 20 64 63 62 20 20 20 20 33 31 0d 06 18 15 20 | dcb 31.... | 000010d0 20 20 20 20 20 20 20 64 63 62 20 20 20 20 33 34 | dcb 34| 000010e0 0d 06 22 14 20 20 20 20 20 20 20 20 64 63 62 20 |..". dcb | 000010f0 20 20 20 35 0d 06 2c 21 20 20 20 20 20 20 20 20 | 5..,! | 00001100 65 71 75 73 20 20 20 22 59 4f 55 20 41 52 45 20 |equs "YOU ARE | 00001110 48 45 52 45 22 0d 06 36 14 20 20 20 20 20 20 20 |HERE"..6. | 00001120 20 64 63 62 20 20 20 20 30 0d 06 40 11 20 20 20 | dcb 0..@. | 00001130 20 20 20 20 20 61 6c 69 67 6e 0d 06 4a 12 20 3b | align..J. ;| 00001140 20 70 6c 6f 74 20 67 61 6c 61 78 79 0d 06 54 33 | plot galaxy..T3| 00001150 20 20 20 20 20 20 20 20 6d 6f 76 20 20 20 20 31 | mov 1| 00001160 32 2c 23 64 6f 74 73 25 2d 31 20 20 20 3b 20 72 |2,#dots%-1 ; r| 00001170 31 32 20 3d 20 73 74 61 72 20 63 6f 75 6e 74 0d |12 = star count.| 00001180 06 5e 33 20 20 20 20 20 20 20 20 6c 64 72 20 20 |.^3 ldr | 00001190 20 20 31 31 2c 64 6f 74 70 20 20 20 20 20 20 20 | 11,dotp | 000011a0 3b 20 72 31 31 20 2d 3e 20 64 6f 74 20 74 61 62 |; r11 -> dot tab| 000011b0 6c 65 0d 06 68 44 20 20 20 20 20 20 20 20 6c 64 |le..hD ld| 000011c0 72 20 20 20 20 31 30 2c 74 61 62 70 20 20 20 20 |r 10,tabp | 000011d0 20 20 20 3b 20 72 31 30 20 2d 3e 20 72 6f 74 61 | ; r10 -> rota| 000011e0 74 69 6f 6e 2f 70 65 72 73 70 65 63 74 69 76 65 |tion/perspective| 000011f0 20 74 61 62 6c 65 0d 06 72 0a 20 2e 6c 6f 6f 70 | table..r. .loop| 00001200 0d 06 7c 54 20 20 20 20 20 20 20 20 6c 64 6d 69 |..|T ldmi| 00001210 61 20 20 31 31 2c 7b 31 2c 34 2c 38 7d 20 20 20 |a 11,{1,4,8} | 00001220 20 3b 20 72 31 20 3d 20 61 6e 67 75 6c 61 72 20 | ; r1 = angular | 00001230 70 6f 73 6e 2c 20 72 34 20 3d 20 64 69 73 74 20 |posn, r4 = dist | 00001240 28 30 2e 2e 32 35 35 29 2c 20 72 38 20 3d 20 73 |(0..255), r8 = s| 00001250 68 61 64 65 0d 06 86 2b 20 20 20 20 20 20 20 20 |hade...+ | 00001260 73 75 62 73 20 20 20 31 2c 31 2c 23 31 20 20 20 |subs 1,1,#1 | 00001270 20 20 20 20 20 3b 20 6d 6f 76 65 20 64 6f 74 0d | ; move dot.| 00001280 06 90 2e 20 20 20 20 20 20 20 20 6d 6f 76 6c 65 |... movle| 00001290 20 20 31 2c 23 73 74 65 70 73 25 2d 31 20 20 20 | 1,#steps%-1 | 000012a0 3b 20 72 61 6e 67 65 20 63 68 65 63 6b 0d 06 9a |; range check...| 000012b0 32 20 20 20 20 20 20 20 20 73 74 72 20 20 20 20 |2 str | 000012c0 31 2c 5b 31 31 5d 20 20 20 20 20 20 20 20 3b 20 |1,[11] ; | 000012d0 73 74 6f 72 65 20 6e 65 77 20 76 61 6c 75 65 0d |store new value.| 000012e0 06 a4 43 20 20 20 20 20 20 20 20 61 64 64 20 20 |..C add | 000012f0 20 20 31 34 2c 31 30 2c 31 2c 6c 73 6c 23 34 20 | 14,10,1,lsl#4 | 00001300 3b 20 66 69 6e 64 20 73 63 72 65 65 6e 20 70 6f |; find screen po| 00001310 73 6e 20 69 6e 20 6c 6f 6f 6b 75 70 20 74 61 62 |sn in lookup tab| 00001320 6c 65 0d 06 ae 31 20 20 20 20 20 20 20 20 6c 64 |le...1 ld| 00001330 6d 69 61 20 20 31 34 2c 7b 36 2c 37 7d 20 20 20 |mia 14,{6,7} | 00001340 20 20 20 3b 20 72 36 20 3d 20 78 2c 20 72 37 20 | ; r6 = x, r7 | 00001350 3d 20 79 0d 06 b8 41 20 20 20 20 20 20 20 20 6d |= y...A m| 00001360 75 6c 20 20 20 20 36 2c 34 2c 36 20 20 20 20 20 |ul 6,4,6 | 00001370 20 20 20 20 3b 20 73 63 61 6c 65 20 74 6f 77 61 | ; scale towa| 00001380 72 64 73 20 63 65 6e 74 72 65 20 6f 66 20 73 63 |rds centre of sc| 00001390 72 65 65 6e 0d 06 c2 18 20 20 20 20 20 20 20 20 |reen.... | 000013a0 6d 75 6c 20 20 20 20 37 2c 34 2c 37 0d 06 cc 1c |mul 7,4,7....| 000013b0 20 20 20 20 20 20 20 20 6d 6f 76 20 20 20 20 36 | mov 6| 000013c0 2c 36 2c 61 73 72 23 38 0d 06 d6 1c 20 20 20 20 |,6,asr#8.... | 000013d0 20 20 20 20 6d 6f 76 20 20 20 20 37 2c 37 2c 61 | mov 7,7,a| 000013e0 73 72 23 38 0d 06 e0 40 20 20 20 20 20 20 20 20 |sr#8...@ | 000013f0 61 64 64 20 20 20 20 36 2c 36 2c 23 33 32 30 20 |add 6,6,#320 | 00001400 20 20 20 20 20 3b 20 74 72 61 6e 73 6c 61 74 65 | ; translate| 00001410 20 66 6f 72 20 74 6f 70 2d 6c 65 66 74 20 6f 72 | for top-left or| 00001420 69 67 69 6e 0d 06 ea 1b 20 20 20 20 20 20 20 20 |igin.... | 00001430 61 64 64 20 20 20 20 37 2c 37 2c 23 32 35 36 0d |add 7,7,#256.| 00001440 06 f4 3b 20 20 20 20 20 20 20 20 73 75 62 20 20 |..; sub | 00001450 20 20 31 34 2c 37 2c 23 37 36 2a 32 20 20 20 20 | 14,7,#76*2 | 00001460 3b 20 63 61 6c 63 75 6c 61 74 65 20 64 69 73 74 |; calculate dist| 00001470 61 6e 63 65 20 73 68 61 64 65 0d 06 fe 40 20 20 |ance shade...@ | 00001480 20 20 20 20 20 20 6d 6f 76 73 20 20 20 31 34 2c | movs 14,| 00001490 31 34 2c 61 73 72 23 34 20 20 20 3b 20 28 63 6f |14,asr#4 ; (co| 000014a0 6e 76 65 72 74 20 79 70 6f 73 20 74 6f 20 72 61 |nvert ypos to ra| 000014b0 6e 67 65 20 30 2e 2e 33 31 29 0d 07 08 1b 20 20 |nge 0..31).... | 000014c0 20 20 20 20 20 20 61 64 64 73 20 20 20 31 34 2c | adds 14,| 000014d0 31 34 2c 23 36 0d 07 12 2e 20 20 20 20 20 20 20 |14,#6.... | 000014e0 20 6d 6f 76 6c 74 20 20 31 34 2c 23 30 20 20 20 | movlt 14,#0 | 000014f0 20 20 20 20 20 20 3b 20 72 61 6e 67 65 20 63 68 | ; range ch| 00001500 65 63 6b 0d 07 1c 19 20 20 20 20 20 20 20 20 63 |eck.... c| 00001510 6d 70 20 20 20 20 31 34 2c 23 31 34 0d 07 26 19 |mp 14,#14..&.| 00001520 20 20 20 20 20 20 20 20 6d 6f 76 67 74 20 20 31 | movgt 1| 00001530 34 2c 23 31 34 0d 07 30 4c 20 20 20 20 20 20 20 |4,#14..0L | 00001540 20 63 6d 70 20 20 20 20 38 2c 23 31 35 20 20 20 | cmp 8,#15 | 00001550 20 20 20 20 20 20 3b 20 69 66 20 73 74 61 72 20 | ; if star | 00001560 73 68 61 64 65 20 69 73 20 33 31 2c 20 61 63 74 |shade is 31, act| 00001570 75 61 6c 20 63 6f 6c 6f 75 72 20 69 73 20 32 31 |ual colour is 21| 00001580 31 0d 07 3a 3e 20 20 20 20 20 20 20 20 6d 75 6c |1..:> mul| 00001590 6e 65 20 20 31 34 2c 38 2c 31 34 20 20 20 20 20 |ne 14,8,14 | 000015a0 20 20 3b 20 73 68 61 64 65 20 61 63 63 6f 72 64 | ; shade accord| 000015b0 69 6e 67 20 74 6f 20 64 69 73 74 61 6e 63 65 0d |ing to distance.| 000015c0 07 44 1e 20 20 20 20 20 20 20 20 6d 6f 76 6e 65 |.D. movne| 000015d0 20 20 31 34 2c 31 34 2c 61 73 72 23 34 0d 07 4e | 14,14,asr#4..N| 000015e0 19 20 20 20 20 20 20 20 20 6d 6f 76 65 71 20 20 |. moveq | 000015f0 31 34 2c 23 31 34 0d 07 58 35 20 20 20 20 20 20 |14,#14..X5 | 00001600 20 20 61 64 64 20 20 20 20 35 2c 39 2c 37 2c 6c | add 5,9,7,l| 00001610 73 6c 23 38 20 20 20 3b 20 67 65 74 20 73 63 72 |sl#8 ; get scr| 00001620 65 65 6e 20 61 64 64 72 65 73 73 0d 07 62 1e 20 |een address..b. | 00001630 20 20 20 20 20 20 20 61 64 64 20 20 20 20 35 2c | add 5,| 00001640 35 2c 37 2c 6c 73 6c 23 36 0d 07 6c 31 20 20 20 |5,7,lsl#6..l1 | 00001650 20 20 20 20 20 6c 64 72 62 20 20 20 30 2c 5b 35 | ldrb 0,[5| 00001660 2c 36 2c 61 73 72 23 31 5d 20 3b 20 67 65 74 20 |,6,asr#1] ; get | 00001670 6f 6c 64 20 63 6f 6c 6f 75 72 0d 07 76 3c 20 20 |old colour..v< | 00001680 20 20 20 20 20 20 74 73 74 20 20 20 20 36 2c 23 | tst 6,#| 00001690 31 20 20 20 20 20 20 20 20 20 20 3b 20 63 68 6f |1 ; cho| 000016a0 6f 73 65 20 6c 6f 77 20 6f 72 20 68 69 67 68 20 |ose low or high | 000016b0 6e 69 62 62 6c 65 0d 07 80 1b 20 20 20 20 20 20 |nibble.... | 000016c0 20 20 61 6e 64 65 71 20 20 30 2c 30 2c 23 26 66 | andeq 0,0,#&f| 000016d0 30 0d 07 8a 1b 20 20 20 20 20 20 20 20 61 6e 64 |0.... and| 000016e0 6e 65 20 20 30 2c 30 2c 23 26 30 66 0d 07 94 19 |ne 0,0,#&0f....| 000016f0 20 20 20 20 20 20 20 20 6f 72 72 65 71 20 20 30 | orreq 0| 00001700 2c 30 2c 31 34 0d 07 9e 1f 20 20 20 20 20 20 20 |,0,14.... | 00001710 20 6f 72 72 6e 65 20 20 30 2c 30 2c 31 34 2c 6c | orrne 0,0,14,l| 00001720 73 6c 23 34 0d 07 a8 2d 20 20 20 20 20 20 20 20 |sl#4...- | 00001730 73 74 72 62 20 20 20 30 2c 5b 35 2c 36 2c 61 73 |strb 0,[5,6,as| 00001740 72 23 31 5d 20 3b 20 70 6c 6f 74 20 70 6f 69 6e |r#1] ; plot poin| 00001750 74 0d 07 b2 1c 20 20 20 20 20 20 20 20 61 64 64 |t.... add| 00001760 20 20 20 20 31 31 2c 31 31 2c 23 31 32 0d 07 bc | 11,11,#12...| 00001770 27 20 20 20 20 20 20 20 20 73 75 62 73 20 20 20 |' subs | 00001780 31 32 2c 31 32 2c 23 31 20 20 20 20 20 20 3b 20 |12,12,#1 ; | 00001790 6c 6f 6f 70 0d 07 c6 17 20 20 20 20 20 20 20 20 |loop.... | 000017a0 62 67 65 20 20 20 20 6c 6f 6f 70 0d 07 d0 2a 20 |bge loop...* | 000017b0 3b 20 70 6c 6f 74 20 6c 61 73 74 20 70 6f 69 6e |; plot last poin| 000017c0 74 20 77 69 74 68 20 61 72 72 6f 77 20 61 62 6f |t with arrow abo| 000017d0 76 65 20 69 74 0d 07 da 17 20 20 20 20 20 20 20 |ve it.... | 000017e0 20 74 73 74 20 20 20 20 36 2c 23 31 0d 07 e4 17 | tst 6,#1....| 000017f0 20 20 20 20 20 20 20 20 62 6e 65 20 20 20 20 61 | bne a| 00001800 73 64 66 0d 07 ee 18 20 20 20 20 20 20 20 20 6d |sdf.... m| 00001810 6f 76 20 20 20 20 30 2c 23 31 35 0d 07 f8 1e 20 |ov 0,#15.... | 00001820 20 20 20 20 20 20 20 61 64 64 20 20 20 20 36 2c | add 6,| 00001830 35 2c 36 2c 61 73 72 23 31 0d 08 02 1b 20 20 20 |5,6,asr#1.... | 00001840 20 20 20 20 20 73 75 62 20 20 20 20 36 2c 36 2c | sub 6,6,| 00001850 23 36 34 30 0d 08 0c 18 20 20 20 20 20 20 20 20 |#640.... | 00001860 73 74 72 62 20 20 20 30 2c 5b 36 5d 0d 08 16 1b |strb 0,[6]....| 00001870 20 20 20 20 20 20 20 20 73 75 62 20 20 20 20 36 | sub 6| 00001880 2c 36 2c 23 33 32 30 0d 08 20 1d 20 20 20 20 20 |,6,#320.. . | 00001890 20 20 20 6f 72 72 20 20 20 20 30 2c 30 2c 23 31 | orr 0,0,#1| 000018a0 35 3c 3c 34 0d 08 2a 18 20 20 20 20 20 20 20 20 |5<<4..*. | 000018b0 73 74 72 62 20 20 20 30 2c 5b 36 5d 0d 08 34 1b |strb 0,[6]..4.| 000018c0 20 20 20 20 20 20 20 20 6d 6f 76 20 20 20 20 30 | mov 0| 000018d0 2c 23 31 35 3c 3c 34 0d 08 3e 1c 20 20 20 20 20 |,#15<<4..>. | 000018e0 20 20 20 73 74 72 62 20 20 20 30 2c 5b 36 2c 23 | strb 0,[6,#| 000018f0 2d 31 5d 0d 08 48 1b 20 20 20 20 20 20 20 20 73 |-1]..H. s| 00001900 75 62 20 20 20 20 36 2c 36 2c 23 33 32 30 0d 08 |ub 6,6,#320..| 00001910 52 18 20 20 20 20 20 20 20 20 6d 6f 76 20 20 20 |R. mov | 00001920 20 30 2c 23 31 35 0d 08 5c 18 20 20 20 20 20 20 | 0,#15..\. | 00001930 20 20 73 74 72 62 20 20 20 30 2c 5b 36 5d 0d 08 | strb 0,[6]..| 00001940 66 1c 20 20 20 20 20 20 20 20 73 74 72 62 20 20 |f. strb | 00001950 20 30 2c 5b 36 2c 23 2d 31 5d 0d 08 70 18 20 20 | 0,[6,#-1]..p. | 00001960 20 20 20 20 20 20 6d 6f 76 20 20 20 20 30 2c 23 | mov 0,#| 00001970 31 35 0d 08 7a 1b 20 20 20 20 20 20 20 20 73 74 |15..z. st| 00001980 72 62 20 20 20 30 2c 5b 36 2c 23 31 5d 0d 08 84 |rb 0,[6,#1]...| 00001990 1b 20 20 20 20 20 20 20 20 73 75 62 20 20 20 20 |. sub | 000019a0 36 2c 36 2c 23 33 32 30 0d 08 8e 18 20 20 20 20 |6,6,#320.... | 000019b0 20 20 20 20 6d 6f 76 20 20 20 20 30 2c 23 31 35 | mov 0,#15| 000019c0 0d 08 98 18 20 20 20 20 20 20 20 20 73 74 72 62 |.... strb| 000019d0 20 20 20 30 2c 5b 36 5d 0d 08 a2 1b 20 20 20 20 | 0,[6].... | 000019e0 20 20 20 20 73 75 62 20 20 20 20 36 2c 36 2c 23 | sub 6,6,#| 000019f0 33 32 30 0d 08 ac 18 20 20 20 20 20 20 20 20 73 |320.... s| 00001a00 74 72 62 20 20 20 30 2c 5b 36 5d 0d 08 b6 1b 20 |trb 0,[6].... | 00001a10 20 20 20 20 20 20 20 6c 64 6d 66 64 20 20 31 33 | ldmfd 13| 00001a20 21 2c 7b 31 35 7d 0d 08 c0 0a 20 2e 61 73 64 66 |!,{15}.... .asdf| 00001a30 0d 08 ca 1b 20 20 20 20 20 20 20 20 6d 6f 76 20 |.... mov | 00001a40 20 20 20 30 2c 23 31 35 3c 3c 34 0d 08 d4 1e 20 | 0,#15<<4.... | 00001a50 20 20 20 20 20 20 20 61 64 64 20 20 20 20 36 2c | add 6,| 00001a60 35 2c 36 2c 61 73 72 23 31 0d 08 de 1a 20 20 20 |5,6,asr#1.... | 00001a70 20 20 20 20 73 75 62 20 20 20 20 36 2c 36 2c 23 | sub 6,6,#| 00001a80 36 34 30 0d 08 e8 17 20 20 20 20 20 20 20 73 74 |640.... st| 00001a90 72 62 20 20 20 30 2c 5b 36 5d 0d 08 f2 1a 20 20 |rb 0,[6].... | 00001aa0 20 20 20 20 20 73 75 62 20 20 20 20 36 2c 36 2c | sub 6,6,| 00001ab0 23 33 32 30 0d 08 fc 19 20 20 20 20 20 20 20 6f |#320.... o| 00001ac0 72 72 20 20 20 20 30 2c 30 2c 23 31 35 0d 09 06 |rr 0,0,#15...| 00001ad0 17 20 20 20 20 20 20 20 73 74 72 62 20 20 20 30 |. strb 0| 00001ae0 2c 5b 36 5d 0d 09 10 17 20 20 20 20 20 20 20 6d |,[6].... m| 00001af0 6f 76 20 20 20 20 30 2c 23 31 35 0d 09 1a 1a 20 |ov 0,#15.... | 00001b00 20 20 20 20 20 20 73 74 72 62 20 20 20 30 2c 5b | strb 0,[| 00001b10 36 2c 23 31 5d 0d 09 24 1a 20 20 20 20 20 20 20 |6,#1]..$. | 00001b20 73 75 62 20 20 20 20 36 2c 36 2c 23 33 32 30 0d |sub 6,6,#320.| 00001b30 09 2e 1a 20 20 20 20 20 20 20 6d 6f 76 20 20 20 |... mov | 00001b40 20 30 2c 23 31 35 3c 3c 34 0d 09 38 17 20 20 20 | 0,#15<<4..8. | 00001b50 20 20 20 20 73 74 72 62 20 20 20 30 2c 5b 36 5d | strb 0,[6]| 00001b60 0d 09 42 1a 20 20 20 20 20 20 20 6d 6f 76 20 20 |..B. mov | 00001b70 20 20 30 2c 23 31 35 3c 3c 34 0d 09 4c 1b 20 20 | 0,#15<<4..L. | 00001b80 20 20 20 20 20 73 74 72 62 20 20 20 30 2c 5b 36 | strb 0,[6| 00001b90 2c 23 2d 31 5d 0d 09 56 1a 20 20 20 20 20 20 20 |,#-1]..V. | 00001ba0 6d 6f 76 20 20 20 20 30 2c 23 31 35 3c 3c 34 0d |mov 0,#15<<4.| 00001bb0 09 60 1a 20 20 20 20 20 20 20 73 74 72 62 20 20 |.`. strb | 00001bc0 20 30 2c 5b 36 2c 23 31 5d 0d 09 6a 1a 20 20 20 | 0,[6,#1]..j. | 00001bd0 20 20 20 20 73 75 62 20 20 20 20 36 2c 36 2c 23 | sub 6,6,#| 00001be0 33 32 30 0d 09 74 1a 20 20 20 20 20 20 20 6d 6f |320..t. mo| 00001bf0 76 20 20 20 20 30 2c 23 31 35 3c 3c 34 0d 09 7e |v 0,#15<<4..~| 00001c00 17 20 20 20 20 20 20 20 73 74 72 62 20 20 20 30 |. strb 0| 00001c10 2c 5b 36 5d 0d 09 88 1a 20 20 20 20 20 20 20 73 |,[6].... s| 00001c20 75 62 20 20 20 20 36 2c 36 2c 23 33 32 30 0d 09 |ub 6,6,#320..| 00001c30 92 17 20 20 20 20 20 20 20 73 74 72 62 20 20 20 |.. strb | 00001c40 30 2c 5b 36 5d 0d 09 9c 1a 20 20 20 20 20 20 20 |0,[6].... | 00001c50 6c 64 6d 66 64 20 20 31 33 21 2c 7b 31 35 7d 0d |ldmfd 13!,{15}.| 00001c60 09 a6 2d 20 3b 20 70 65 72 73 70 65 63 74 69 76 |..- ; perspectiv| 00001c70 65 2f 72 6f 74 61 74 69 6f 6e 20 74 61 62 6c 65 |e/rotation table| 00001c80 20 28 30 2e 2e 73 74 65 70 73 25 29 0d 09 b0 10 | (0..steps%)....| 00001c90 20 3b 20 20 2b 30 20 20 78 70 6f 73 0d 09 ba 10 | ; +0 xpos....| 00001ca0 20 3b 20 20 2b 34 20 20 79 70 6f 73 0d 09 c4 12 | ; +4 ypos....| 00001cb0 20 3b 20 20 2b 38 20 20 75 6e 75 73 65 64 0d 09 | ; +8 unused..| 00001cc0 ce 12 20 3b 20 20 2b 31 32 20 75 6e 75 73 65 64 |.. ; +12 unused| 00001cd0 0d 09 d8 1d 20 2e 74 61 62 6c 65 20 a4 73 70 61 |.... .table .spa| 00001ce0 63 65 28 31 36 2a 73 74 65 70 73 25 29 0d 09 e2 |ce(16*steps%)...| 00001cf0 25 20 3b 20 64 6f 74 73 20 28 67 61 6c 61 78 79 |% ; dots (galaxy| 00001d00 20 74 61 62 6c 65 29 20 28 30 2e 2e 64 6f 74 73 | table) (0..dots| 00001d10 25 29 0d 09 ec 1d 20 3b 20 20 2b 30 20 20 61 6e |%).... ; +0 an| 00001d20 67 6c 65 20 28 30 2e 2e 73 74 65 70 73 25 29 0d |gle (0..steps%).| 00001d30 09 f6 29 20 3b 20 20 2b 34 20 20 64 69 73 74 61 |..) ; +4 dista| 00001d40 6e 63 65 20 66 72 6f 6d 20 63 65 6e 74 72 65 20 |nce from centre | 00001d50 28 30 2e 2e 32 35 35 29 0d 0a 00 19 20 3b 20 20 |(0..255).... ; | 00001d60 2b 31 32 20 73 68 61 64 65 20 28 30 2e 2e 33 31 |+12 shade (0..31| 00001d70 29 0d 0a 0a 1c 20 2e 64 6f 74 73 20 20 a4 73 70 |).... .dots .sp| 00001d80 61 63 65 28 31 32 2a 64 6f 74 73 25 29 0d 0a 14 |ace(12*dots%)...| 00001d90 16 20 3b 20 73 74 61 72 66 69 65 6c 64 20 74 61 |. ; starfield ta| 00001da0 62 6c 65 0d 0a 1e 10 20 3b 20 20 2b 30 20 20 78 |ble.... ; +0 x| 00001db0 70 6f 73 0d 0a 28 10 20 3b 20 20 2b 34 20 20 79 |pos..(. ; +4 y| 00001dc0 70 6f 73 0d 0a 32 11 20 3b 20 20 2b 38 20 20 73 |pos..2. ; +8 s| 00001dd0 68 61 64 65 0d 0a 3c 15 20 3b 20 20 2b 31 32 20 |hade..<. ; +12 | 00001de0 64 69 72 65 63 74 69 6f 6e 0d 0a 46 1d 20 2e 73 |direction..F. .s| 00001df0 74 61 72 73 20 a4 73 70 61 63 65 28 31 36 2a 6e |tars .space(16*n| 00001e00 75 6d 73 74 25 29 0d 0a 50 06 20 5d 0d 0a 5a 06 |umst%)..P. ]..Z.| 00001e10 20 ed 0d 0a 64 06 20 e1 0d 0a 6e 10 20 dd a4 73 | ...d. ...n. ..s| 00001e20 70 61 63 65 28 6c 25 29 0d 0a 78 0b 20 50 25 2b |pace(l%)..x. P%+| 00001e30 3d 6c 25 0d 0a 82 07 20 3d 30 0d 0a 8c 04 0d ff |=l%.... =0......| 00001e40