Home » Archimedes archive » Acorn User » AU 1994-06.adf » !WriteDemo_WriteDemo » Modules/Stars/Source
Modules/Stars/Source
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 1994-06.adf » !WriteDemo_WriteDemo |
Filename: | Modules/Stars/Source |
Read OK: | ✔ |
File size: | 0B86 bytes |
Load address: | 0000 |
Exec address: | 0000 |
Duplicates
There is 1 duplicate copy of this file in the archive:
- Archimedes archive » Acorn User » AU 1994-06.adf » !WriteDemo_WriteDemo » Modules/Stars/Source
- Archimedes archive » Acorn User » AU 1994-05.adf » !WriteDemo_WriteDemo » Modules/Stars/Source
File contents
10REM >Stars 20 30ON ERROR SYS "Hourglass_Smash":ERROR 0,(REPORT$+" (internal error code "+STR$(ERL)+")") 40 50REM Fixed variables : 60 70 trigger$ = "y" 80 trigger% = TRUE 90 100 REM Number of stars 110 s% = 512 120 130 REM Top of bounding box in pixels 140 top% = 4 150 160 REM Bottom of bounding box in pixels 170 bot% = 170 180 190 REM Star colours in raw colour values 200 DATA 45, 47, 208, 208 210 DATA 209, 209, 210, 210 220 DATA 211, 211, 252, 252 230 DATA 253, 254, 254, 255 240 250 260 270module$ = "Stars" 280 290SYS "Hourglass_On" 300PROCassemble 310PROCinit 320 330OSCLI"SAVE <Modules$Dir>."+module$+".Module "+STR$~code%+" "+STR$~P% 340OSCLI"SETTYPE <Modules$Dir>."+module$+".Module Data" 350 360SYS "Hourglass_Off" 370END 380 390 400 410DEF PROCassemble 420 len% = (2 * 1024) + (s% * 12) 430 DIM code% len% 440 FOR pass% = 8 TO 10 STEP 2 450 P% = code% 460 L% = code% + len% 470 [ OPT pass% 480 490 500.init EQUD 0 510.frame EQUD stars - code% 520.end EQUD 0 530 540 550.stars STMFD R13!,{R0-R11,R14} 560 ] 570 IF trigger% THEN 580 [OPT pass% 590 TST R11,#( 1 << (ASC("z") - ASC(trigger$)) ) 600 BEQ stars_end 610 ] 620 ENDIF 630 [OPT pass% 640 650 LDR R0,var% 660 CMP R0,#s% 670 ADDLT R0,R0,#1 680 STR R0,var% 690 ADR R2,table% ; r2=star data table 700 LDR R8,max_scr% ; r8=maximum star pos 710 LDR R9,top_scr% ; r9=minimum star pos 720.stars_1 LDMIA R2,{R3-R5} ; r3=pos r4=colour r5=speed 730 ADD R3,R3,R5 ; pos=pos+speed 740 CMP R3,R8 ; is pos>=max_pos ? 750 MOVGE R3,R9 ; if so, pos=min_pos 760 STR R3,[R2],#12 ; store pos in star table 770 MOV R3,R3,LSR#10 ; pos=pos>>10 780 ADD R6,R3,R12 ; r6=pos+screen_address 790 LDRB R7,[R6] ; get byte at star position 800 CMP R7,#0 ; is it black ? 810 STREQB R4,[R6] ; if so, plot star 820 SUBS R0,R0,#1 ; are there more stars left ? 830 BNE stars_1 ; if so, go to 'stars_1' 840.stars_end LDMFD R13!,{R0-R11,PC}; exit 850 860 870.var% EQUD 0 880.max_scr% EQUD ((bot%*320)<<10) 890.top_scr% EQUD ((top%*320)<<10) 900.table% FNarray(s%*12) 910 920 930 940 ] 950 NEXT 960ENDPROC 970 980 990 1000DEF FNarray(size%) 1010 P% += size% 1020= 0 1030 1040 1050 1060DEF PROCinit 1070 LOCAL I%,t%,type% 1080 1090 DIM col%(15) 1100 FOR I% = 0 TO 15 1110 READ col%(I%) 1120 NEXT 1130 1140 FOR I% = 0 TO (s% - 1) 1150 t% = table% + (I% * 12) 1160 type% = ( I% / (s% / 12) ) + 1 1170 t%!0 = ((RND(bot%-top%) + top%) * (320<<10)) + (RND(319)<<10) 1180 t%!4 = col%(type%-1) 1190 t%!8 = (type%<<8) + RND(16<<8) 1200 NEXT 1210 1220ENDPROC
� >Stars G� � ș "Hourglass_Smash":� 0,(�$+" (internal error code "+�(�)+")") ( 2� Fixed variables : < F trigger$ = "y" P trigger% = � Z d � Number of stars n s% = 512 x �& � Top of bounding box in pixels � top% = 4 � �) � Bottom of bounding box in pixels � bot% = 170 � �* � Star colours in raw colour values � � 45, 47, 208, 208 � � 209, 209, 210, 210 � � 211, 211, 252, 252 � � 253, 254, 254, 255 � � module$ = "Stars" "ș "Hourglass_On" , �assemble 6 �init @ JA�"SAVE <Modules$Dir>."+module$+".Module "+�~code%+" "+�~P% T4�"SETTYPE <Modules$Dir>."+module$+".Module Data" ^ hș "Hourglass_Off" r� | � � �� �assemble �# len% = (2 * 1024) + (s% * 12) � � code% len% � � pass% = 8 � 10 � 2 � P% = code% � L% = code% + len% � [ OPT pass% � � �.init EQUD 0 �%.frame EQUD stars - code% .end EQUD 0 &).stars STMFD R13!,{R0-R11,R14} 0 ] : � trigger% � D [OPT pass% N> TST R11,#( 1 << (�("z") - �(trigger$)) ) X# BEQ stars_end b ] l � v [OPT pass% � � LDR R0,var% � CMP R0,#s% � ADDLT R0,R0,#1 � STR R0,var% �< ADR R2,table% ; r2=star data table �= LDR R8,max_scr% ; r8=maximum star pos �= LDR R9,top_scr% ; r9=minimum star pos �C.stars_1 LDMIA R2,{R3-R5} ; r3=pos r4=colour r5=speed �7 ADD R3,R3,R5 ; pos=pos+speed �; CMP R3,R8 ; is pos>=max_pos ? �< MOVGE R3,R9 ; if so, pos=min_pos �A STR R3,[R2],#12 ; store pos in star table 5 MOV R3,R3,LSR#10 ; pos=pos>>10 ? ADD R6,R3,R12 ; r6=pos+screen_address C LDRB R7,[R6] ; get byte at star position 7 CMP R7,#0 ; is it black ? *: STREQB R4,[R6] ; if so, plot star 4E SUBS R0,R0,#1 ; are there more stars left ? >@ BNE stars_1 ; if so, go to 'stars_1' H..stars_end LDMFD R13!,{R0-R11,PC}; exit R \ f.var% EQUD 0 p(.max_scr% EQUD ((bot%*320)<<10) z(.top_scr% EQUD ((top%*320)<<10) �.table% �array(s%*12) � � � � ] � � �� � � � �� �array(size%) � P% += size% �= 0 $� �init . � I%,t%,type% 8 B � col%(15) L � I% = 0 � 15 V � col%(I%) ` � j t � I% = 0 � (s% - 1) ~" t% = table% + (I% * 12) �& type% = ( I% / (s% / 12) ) + 1 �B t%!0 = ((�(bot%-top%) + top%) * (320<<10)) + (�(319)<<10) � t%!4 = col%(type%-1) �% t%!8 = (type%<<8) + �(16<<8) � � � �� �
00000000 0d 00 0a 0c f4 20 3e 53 74 61 72 73 0d 00 14 04 |..... >Stars....| 00000010 0d 00 1e 47 ee 20 85 20 c8 99 20 22 48 6f 75 72 |...G. . .. "Hour| 00000020 67 6c 61 73 73 5f 53 6d 61 73 68 22 3a 85 20 30 |glass_Smash":. 0| 00000030 2c 28 f6 24 2b 22 20 28 69 6e 74 65 72 6e 61 6c |,(.$+" (internal| 00000040 20 65 72 72 6f 72 20 63 6f 64 65 20 22 2b c3 28 | error code "+.(| 00000050 9e 29 2b 22 29 22 29 0d 00 28 04 0d 00 32 17 f4 |.)+")")..(...2..| 00000060 20 46 69 78 65 64 20 76 61 72 69 61 62 6c 65 73 | Fixed variables| 00000070 20 3a 0d 00 3c 04 0d 00 46 14 20 20 74 72 69 67 | :..<...F. trig| 00000080 67 65 72 24 20 3d 20 22 79 22 0d 00 50 12 20 20 |ger$ = "y"..P. | 00000090 74 72 69 67 67 65 72 25 20 3d 20 b9 0d 00 5a 04 |trigger% = ...Z.| 000000a0 0d 00 64 17 20 20 f4 20 4e 75 6d 62 65 72 20 6f |..d. . Number o| 000000b0 66 20 73 74 61 72 73 0d 00 6e 10 20 20 73 25 20 |f stars..n. s% | 000000c0 20 20 3d 20 35 31 32 0d 00 78 06 20 20 0d 00 82 | = 512..x. ...| 000000d0 26 20 20 f4 20 20 54 6f 70 20 6f 66 20 62 6f 75 |& . Top of bou| 000000e0 6e 64 69 6e 67 20 62 6f 78 20 69 6e 20 70 69 78 |nding box in pix| 000000f0 65 6c 73 0d 00 8c 0e 20 20 74 6f 70 25 20 3d 20 |els.... top% = | 00000100 34 0d 00 96 06 20 20 0d 00 a0 29 20 20 f4 20 20 |4.... ...) . | 00000110 42 6f 74 74 6f 6d 20 6f 66 20 62 6f 75 6e 64 69 |Bottom of boundi| 00000120 6e 67 20 62 6f 78 20 69 6e 20 70 69 78 65 6c 73 |ng box in pixels| 00000130 0d 00 aa 10 20 20 62 6f 74 25 20 3d 20 31 37 30 |.... bot% = 170| 00000140 0d 00 b4 04 0d 00 be 2a 20 20 f4 20 20 53 74 61 |.......* . Sta| 00000150 72 20 63 6f 6c 6f 75 72 73 20 69 6e 20 72 61 77 |r colours in raw| 00000160 20 63 6f 6c 6f 75 72 20 76 61 6c 75 65 73 0d 00 | colour values..| 00000170 c8 1a 20 20 dc 20 20 34 35 2c 20 20 34 37 2c 20 |.. . 45, 47, | 00000180 32 30 38 2c 20 32 30 38 0d 00 d2 1a 20 20 dc 20 |208, 208.... . | 00000190 32 30 39 2c 20 32 30 39 2c 20 32 31 30 2c 20 32 |209, 209, 210, 2| 000001a0 31 30 0d 00 dc 1a 20 20 dc 20 32 31 31 2c 20 32 |10.... . 211, 2| 000001b0 31 31 2c 20 32 35 32 2c 20 32 35 32 0d 00 e6 1a |11, 252, 252....| 000001c0 20 20 dc 20 32 35 33 2c 20 32 35 34 2c 20 32 35 | . 253, 254, 25| 000001d0 34 2c 20 32 35 35 0d 00 f0 04 0d 00 fa 04 0d 01 |4, 255..........| 000001e0 04 04 0d 01 0e 15 6d 6f 64 75 6c 65 24 20 3d 20 |......module$ = | 000001f0 22 53 74 61 72 73 22 0d 01 18 04 0d 01 22 15 c8 |"Stars"......"..| 00000200 99 20 22 48 6f 75 72 67 6c 61 73 73 5f 4f 6e 22 |. "Hourglass_On"| 00000210 0d 01 2c 0d f2 61 73 73 65 6d 62 6c 65 0d 01 36 |..,..assemble..6| 00000220 09 f2 69 6e 69 74 0d 01 40 04 0d 01 4a 41 ff 22 |..init..@...JA."| 00000230 53 41 56 45 20 20 20 20 3c 4d 6f 64 75 6c 65 73 |SAVE <Modules| 00000240 24 44 69 72 3e 2e 22 2b 6d 6f 64 75 6c 65 24 2b |$Dir>."+module$+| 00000250 22 2e 4d 6f 64 75 6c 65 20 22 2b c3 7e 63 6f 64 |".Module "+.~cod| 00000260 65 25 2b 22 20 22 2b c3 7e 50 25 0d 01 54 34 ff |e%+" "+.~P%..T4.| 00000270 22 53 45 54 54 59 50 45 20 3c 4d 6f 64 75 6c 65 |"SETTYPE <Module| 00000280 73 24 44 69 72 3e 2e 22 2b 6d 6f 64 75 6c 65 24 |s$Dir>."+module$| 00000290 2b 22 2e 4d 6f 64 75 6c 65 20 44 61 74 61 22 0d |+".Module Data".| 000002a0 01 5e 04 0d 01 68 16 c8 99 20 22 48 6f 75 72 67 |.^...h... "Hourg| 000002b0 6c 61 73 73 5f 4f 66 66 22 0d 01 72 05 e0 0d 01 |lass_Off"..r....| 000002c0 7c 04 0d 01 86 04 0d 01 90 04 0d 01 9a 0f dd 20 ||.............. | 000002d0 f2 61 73 73 65 6d 62 6c 65 0d 01 a4 23 20 20 6c |.assemble...# l| 000002e0 65 6e 25 20 3d 20 28 32 20 2a 20 31 30 32 34 29 |en% = (2 * 1024)| 000002f0 20 2b 20 28 73 25 20 2a 20 31 32 29 0d 01 ae 12 | + (s% * 12)....| 00000300 20 20 de 20 63 6f 64 65 25 20 6c 65 6e 25 0d 01 | . code% len%..| 00000310 b8 1a 20 20 e3 20 70 61 73 73 25 20 3d 20 38 20 |.. . pass% = 8 | 00000320 b8 20 31 30 20 88 20 32 0d 01 c2 12 20 20 20 20 |. 10 . 2.... | 00000330 50 25 20 3d 20 63 6f 64 65 25 0d 01 cc 19 20 20 |P% = code%.... | 00000340 20 20 4c 25 20 3d 20 63 6f 64 65 25 20 2b 20 6c | L% = code% + l| 00000350 65 6e 25 0d 01 d6 13 20 20 20 20 5b 20 4f 50 54 |en%.... [ OPT| 00000360 20 70 61 73 73 25 0d 01 e0 08 20 20 20 20 0d 01 | pass%.... ..| 00000370 ea 04 0d 01 f4 19 2e 69 6e 69 74 20 20 20 20 20 |.......init | 00000380 20 20 20 45 51 55 44 20 20 20 30 0d 01 fe 25 2e | EQUD 0...%.| 00000390 66 72 61 6d 65 20 20 20 20 20 20 20 45 51 55 44 |frame EQUD| 000003a0 20 20 20 73 74 61 72 73 20 2d 20 63 6f 64 65 25 | stars - code%| 000003b0 0d 02 08 19 2e 65 6e 64 20 20 20 20 20 20 20 20 |.....end | 000003c0 20 45 51 55 44 20 20 20 30 0d 02 12 04 0d 02 1c | EQUD 0.......| 000003d0 04 0d 02 26 29 2e 73 74 61 72 73 20 20 20 20 20 |...&).stars | 000003e0 20 20 53 54 4d 46 44 20 20 52 31 33 21 2c 7b 52 | STMFD R13!,{R| 000003f0 30 2d 52 31 31 2c 52 31 34 7d 0d 02 30 12 20 20 |0-R11,R14}..0. | 00000400 20 20 20 20 20 20 20 20 20 20 20 5d 0d 02 3a 1d | ]..:.| 00000410 20 20 20 20 20 20 20 20 20 20 20 20 20 e7 20 74 | . t| 00000420 72 69 67 67 65 72 25 20 8c 0d 02 44 1d 20 20 20 |rigger% ...D. | 00000430 20 20 20 20 20 20 20 20 20 20 20 20 5b 4f 50 54 | [OPT| 00000440 20 70 61 73 73 25 0d 02 4e 3e 20 20 20 20 20 20 | pass%..N> | 00000450 20 20 20 20 20 20 20 20 20 54 53 54 20 20 20 20 | TST | 00000460 52 31 31 2c 23 28 20 31 20 3c 3c 20 28 97 28 22 |R11,#( 1 << (.("| 00000470 7a 22 29 20 2d 20 97 28 74 72 69 67 67 65 72 24 |z") - .(trigger$| 00000480 29 29 20 29 0d 02 58 23 20 20 20 20 20 20 20 20 |)) )..X# | 00000490 20 20 20 20 20 20 20 42 45 51 20 20 20 20 73 74 | BEQ st| 000004a0 61 72 73 5f 65 6e 64 0d 02 62 14 20 20 20 20 20 |ars_end..b. | 000004b0 20 20 20 20 20 20 20 20 20 20 5d 0d 02 6c 12 20 | ]..l. | 000004c0 20 20 20 20 20 20 20 20 20 20 20 20 cd 0d 02 76 | ...v| 000004d0 1b 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 4f |. [O| 000004e0 50 54 20 70 61 73 73 25 0d 02 80 11 20 20 20 20 |PT pass%.... | 000004f0 20 20 20 20 20 20 20 20 20 0d 02 8a 1f 20 20 20 | .... | 00000500 20 20 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 | LDR | 00000510 20 52 30 2c 76 61 72 25 0d 02 94 1e 20 20 20 20 | R0,var%.... | 00000520 20 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 | CMP | 00000530 52 30 2c 23 73 25 0d 02 9e 20 20 20 20 20 20 20 |R0,#s%... | 00000540 20 20 20 20 20 20 20 41 44 44 4c 54 20 20 52 30 | ADDLT R0| 00000550 2c 52 30 2c 23 31 0d 02 a8 1f 20 20 20 20 20 20 |,R0,#1.... | 00000560 20 20 20 20 20 20 20 53 54 52 20 20 20 20 52 30 | STR R0| 00000570 2c 76 61 72 25 0d 02 b2 3c 20 20 20 20 20 20 20 |,var%...< | 00000580 20 20 20 20 20 20 41 44 52 20 20 20 20 52 32 2c | ADR R2,| 00000590 74 61 62 6c 65 25 20 20 20 20 20 20 20 3b 20 72 |table% ; r| 000005a0 32 3d 73 74 61 72 20 64 61 74 61 20 74 61 62 6c |2=star data tabl| 000005b0 65 0d 02 bc 3d 20 20 20 20 20 20 20 20 20 20 20 |e...= | 000005c0 20 20 4c 44 52 20 20 20 20 52 38 2c 6d 61 78 5f | LDR R8,max_| 000005d0 73 63 72 25 20 20 20 20 20 3b 20 72 38 3d 6d 61 |scr% ; r8=ma| 000005e0 78 69 6d 75 6d 20 73 74 61 72 20 70 6f 73 0d 02 |ximum star pos..| 000005f0 c6 3d 20 20 20 20 20 20 20 20 20 20 20 20 20 4c |.= L| 00000600 44 52 20 20 20 20 52 39 2c 74 6f 70 5f 73 63 72 |DR R9,top_scr| 00000610 25 20 20 20 20 20 3b 20 72 39 3d 6d 69 6e 69 6d |% ; r9=minim| 00000620 75 6d 20 73 74 61 72 20 70 6f 73 0d 02 d0 43 2e |um star pos...C.| 00000630 73 74 61 72 73 5f 31 20 20 20 20 20 4c 44 4d 49 |stars_1 LDMI| 00000640 41 20 20 52 32 2c 7b 52 33 2d 52 35 7d 20 20 20 |A R2,{R3-R5} | 00000650 20 20 20 3b 20 72 33 3d 70 6f 73 20 72 34 3d 63 | ; r3=pos r4=c| 00000660 6f 6c 6f 75 72 20 72 35 3d 73 70 65 65 64 0d 02 |olour r5=speed..| 00000670 da 37 20 20 20 20 20 20 20 20 20 20 20 20 20 41 |.7 A| 00000680 44 44 20 20 20 20 52 33 2c 52 33 2c 52 35 20 20 |DD R3,R3,R5 | 00000690 20 20 20 20 20 20 3b 20 70 6f 73 3d 70 6f 73 2b | ; pos=pos+| 000006a0 73 70 65 65 64 0d 02 e4 3b 20 20 20 20 20 20 20 |speed...; | 000006b0 20 20 20 20 20 20 43 4d 50 20 20 20 20 52 33 2c | CMP R3,| 000006c0 52 38 20 20 20 20 20 20 20 20 20 20 20 3b 20 69 |R8 ; i| 000006d0 73 20 70 6f 73 3e 3d 6d 61 78 5f 70 6f 73 20 3f |s pos>=max_pos ?| 000006e0 0d 02 ee 3c 20 20 20 20 20 20 20 20 20 20 20 20 |...< | 000006f0 20 4d 4f 56 47 45 20 20 52 33 2c 52 39 20 20 20 | MOVGE R3,R9 | 00000700 20 20 20 20 20 20 20 20 3b 20 69 66 20 73 6f 2c | ; if so,| 00000710 20 70 6f 73 3d 6d 69 6e 5f 70 6f 73 0d 02 f8 41 | pos=min_pos...A| 00000720 20 20 20 20 20 20 20 20 20 20 20 20 20 53 54 52 | STR| 00000730 20 20 20 20 52 33 2c 5b 52 32 5d 2c 23 31 32 20 | R3,[R2],#12 | 00000740 20 20 20 20 3b 20 73 74 6f 72 65 20 70 6f 73 20 | ; store pos | 00000750 69 6e 20 73 74 61 72 20 74 61 62 6c 65 0d 03 02 |in star table...| 00000760 35 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 4f |5 MO| 00000770 56 20 20 20 20 52 33 2c 52 33 2c 4c 53 52 23 31 |V R3,R3,LSR#1| 00000780 30 20 20 20 20 3b 20 70 6f 73 3d 70 6f 73 3e 3e |0 ; pos=pos>>| 00000790 31 30 0d 03 0c 3f 20 20 20 20 20 20 20 20 20 20 |10...? | 000007a0 20 20 20 41 44 44 20 20 20 20 52 36 2c 52 33 2c | ADD R6,R3,| 000007b0 52 31 32 20 20 20 20 20 20 20 3b 20 72 36 3d 70 |R12 ; r6=p| 000007c0 6f 73 2b 73 63 72 65 65 6e 5f 61 64 64 72 65 73 |os+screen_addres| 000007d0 73 0d 03 16 43 20 20 20 20 20 20 20 20 20 20 20 |s...C | 000007e0 20 20 4c 44 52 42 20 20 20 52 37 2c 5b 52 36 5d | LDRB R7,[R6]| 000007f0 20 20 20 20 20 20 20 20 20 3b 20 67 65 74 20 62 | ; get b| 00000800 79 74 65 20 61 74 20 73 74 61 72 20 70 6f 73 69 |yte at star posi| 00000810 74 69 6f 6e 0d 03 20 37 20 20 20 20 20 20 20 20 |tion.. 7 | 00000820 20 20 20 20 20 43 4d 50 20 20 20 20 52 37 2c 23 | CMP R7,#| 00000830 30 20 20 20 20 20 20 20 20 20 20 20 3b 20 69 73 |0 ; is| 00000840 20 69 74 20 62 6c 61 63 6b 20 3f 0d 03 2a 3a 20 | it black ?..*: | 00000850 20 20 20 20 20 20 20 20 20 20 20 20 53 54 52 45 | STRE| 00000860 51 42 20 52 34 2c 5b 52 36 5d 20 20 20 20 20 20 |QB R4,[R6] | 00000870 20 20 20 3b 20 69 66 20 73 6f 2c 20 70 6c 6f 74 | ; if so, plot| 00000880 20 73 74 61 72 0d 03 34 45 20 20 20 20 20 20 20 | star..4E | 00000890 20 20 20 20 20 20 53 55 42 53 20 20 20 52 30 2c | SUBS R0,| 000008a0 52 30 2c 23 31 20 20 20 20 20 20 20 20 3b 20 61 |R0,#1 ; a| 000008b0 72 65 20 74 68 65 72 65 20 6d 6f 72 65 20 73 74 |re there more st| 000008c0 61 72 73 20 6c 65 66 74 20 3f 0d 03 3e 40 20 20 |ars left ?..>@ | 000008d0 20 20 20 20 20 20 20 20 20 20 20 42 4e 45 20 20 | BNE | 000008e0 20 20 73 74 61 72 73 5f 31 20 20 20 20 20 20 20 | stars_1 | 000008f0 20 20 3b 20 69 66 20 73 6f 2c 20 67 6f 20 74 6f | ; if so, go to| 00000900 20 27 73 74 61 72 73 5f 31 27 0d 03 48 2e 2e 73 | 'stars_1'..H..s| 00000910 74 61 72 73 5f 65 6e 64 20 20 20 4c 44 4d 46 44 |tars_end LDMFD| 00000920 20 20 52 31 33 21 2c 7b 52 30 2d 52 31 31 2c 50 | R13!,{R0-R11,P| 00000930 43 7d 3b 20 65 78 69 74 0d 03 52 04 0d 03 5c 04 |C}; exit..R...\.| 00000940 0d 03 66 19 2e 76 61 72 25 20 20 20 20 20 20 20 |..f..var% | 00000950 20 45 51 55 44 20 20 20 30 0d 03 70 28 2e 6d 61 | EQUD 0..p(.ma| 00000960 78 5f 73 63 72 25 20 20 20 20 45 51 55 44 20 20 |x_scr% EQUD | 00000970 20 28 28 62 6f 74 25 2a 33 32 30 29 3c 3c 31 30 | ((bot%*320)<<10| 00000980 29 0d 03 7a 28 2e 74 6f 70 5f 73 63 72 25 20 20 |)..z(.top_scr% | 00000990 20 20 45 51 55 44 20 20 20 28 28 74 6f 70 25 2a | EQUD ((top%*| 000009a0 33 32 30 29 3c 3c 31 30 29 0d 03 84 1e 2e 74 61 |320)<<10).....ta| 000009b0 62 6c 65 25 20 20 20 20 20 20 a4 61 72 72 61 79 |ble% .array| 000009c0 28 73 25 2a 31 32 29 0d 03 8e 04 0d 03 98 04 0d |(s%*12).........| 000009d0 03 a2 04 0d 03 ac 09 20 20 20 20 5d 0d 03 b6 07 |....... ]....| 000009e0 20 20 ed 0d 03 c0 05 e1 0d 03 ca 04 0d 03 d4 04 | ..............| 000009f0 0d 03 de 04 0d 03 e8 13 dd 20 a4 61 72 72 61 79 |......... .array| 00000a00 28 73 69 7a 65 25 29 0d 03 f2 11 20 20 50 25 20 |(size%).... P% | 00000a10 2b 3d 20 73 69 7a 65 25 0d 03 fc 07 3d 20 30 0d |+= size%....= 0.| 00000a20 04 06 04 0d 04 10 04 0d 04 1a 04 0d 04 24 0b dd |.............$..| 00000a30 20 f2 69 6e 69 74 0d 04 2e 13 20 20 ea 20 49 25 | .init.... . I%| 00000a40 2c 74 25 2c 74 79 70 65 25 0d 04 38 04 0d 04 42 |,t%,type%..8...B| 00000a50 10 20 20 de 20 63 6f 6c 25 28 31 35 29 0d 04 4c |. . col%(15)..L| 00000a60 13 20 20 e3 20 49 25 20 3d 20 30 20 b8 20 31 35 |. . I% = 0 . 15| 00000a70 0d 04 56 12 20 20 20 20 f3 20 63 6f 6c 25 28 49 |..V. . col%(I| 00000a80 25 29 0d 04 60 07 20 20 ed 0d 04 6a 06 20 20 0d |%)..`. ...j. .| 00000a90 04 74 19 20 20 e3 20 49 25 20 3d 20 30 20 b8 20 |.t. . I% = 0 . | 00000aa0 28 73 25 20 2d 20 31 29 0d 04 7e 22 20 20 20 20 |(s% - 1)..~" | 00000ab0 74 25 20 20 20 20 3d 20 74 61 62 6c 65 25 20 2b |t% = table% +| 00000ac0 20 28 49 25 20 2a 20 31 32 29 0d 04 88 26 20 20 | (I% * 12)...& | 00000ad0 20 20 74 79 70 65 25 20 3d 20 28 20 49 25 20 2f | type% = ( I% /| 00000ae0 20 28 73 25 20 2f 20 31 32 29 20 29 20 2b 20 31 | (s% / 12) ) + 1| 00000af0 0d 04 92 42 20 20 20 20 74 25 21 30 20 20 3d 20 |...B t%!0 = | 00000b00 28 28 b3 28 62 6f 74 25 2d 74 6f 70 25 29 20 2b |((.(bot%-top%) +| 00000b10 20 74 6f 70 25 29 20 2a 20 28 33 32 30 3c 3c 31 | top%) * (320<<1| 00000b20 30 29 29 20 2b 20 28 b3 28 33 31 39 29 3c 3c 31 |0)) + (.(319)<<1| 00000b30 30 29 0d 04 9c 1d 20 20 20 20 74 25 21 34 20 20 |0).... t%!4 | 00000b40 3d 20 63 6f 6c 25 28 74 79 70 65 25 2d 31 29 0d |= col%(type%-1).| 00000b50 04 a6 25 20 20 20 20 74 25 21 38 20 20 3d 20 28 |..% t%!8 = (| 00000b60 74 79 70 65 25 3c 3c 38 29 20 2b 20 b3 28 31 36 |type%<<8) + .(16| 00000b70 3c 3c 38 29 0d 04 b0 07 20 20 ed 0d 04 ba 04 0d |<<8).... ......| 00000b80 04 c4 05 e1 0d ff |......| 00000b86