Astrostorm
Peter Lear
Try to guide your spaceship, carrying emergency medical supplies, through a dangerous asteroid storm. A great deal depends on your skills as a navigator. Many times the success or failure of your mission will depend on your ability to make split-second decisions under pressure. Versions for the VIC, Atari, TI-9914A, and Apple.
The mission: you are Captain Bosdiger of the interstellar tug The
Viccard. While orbiting the fifth planet in the Benard system, you receive a
distress call. The call comes from the Solarian system, in need of vital medical
supplies. You are to pick them up from the sixth planet in the Benard system and
then take them to the third planet in the Solarian system.
There is a time
factor. The drugs have a short life. Your calculations indicate that it will be
necessary to drop out of hyperspace between the fourth and fifth planets'
orbits. There you will be in an asteroid field. You must cross this field in
less than two minutes.
Looking At Astrostorm
How does the VIC version work? Let's take a
look.
The player's spaceship (upper right) successfully
negotiates the moving asteroids in "Astrostorm," VIC-20 version.
(Apple and TI versions similar.)
A player's spaceship dodges space debris in the Atari version of "Astrostorm."
In lines 5-230 the screen border is chosen and several variables for the
joystick are defined. The player is given the choice of using a joystick or the
keyboard. If you choose to use the keyboard, control the movement of the ship
with the "Z" (left) or "C" (right) keys. The VIC Programmers'
Reference Guide helped provide the joystick information necessary to use
the first data statement.
Then we are sent zooming up to line 5000 to make a
bit of noise. Some more data is used here. Now we are off to line 910 to ask for
the "asteroid depth" that is required. This simply determines where the ship is
to be located on the screen. It can be placed between the fifth and eighteenth
rows (always starting on the left side).
Line 1030 makes the program
versatile enough to use with any VIC-20. For example, initially the VIC starts
its screen memory at location 7680. When an extra 8K or more is added, the start
of screen memory changes to location 4096. Since 3K cartridges do not change
this location, any cartridges can remain inserted.
The game's main playing
loop is in lines 20002240. It is enclosed in a FOR/NEXT loop and timed for two
minutes. All it does is decide on a random color and column for the asteroid.
The galactic or solarian credits are based on the position and color of the
asteroid. The alarm sound is created by turning voice 36875 on and off with the
variable CK. The first two IFs in the game loop check to see if the screen has
been crossed. When the ship is moving forward, you gain points; going backward
(left), you lose points. And if there is no movement, there is no loss or gain.
The movement of the asteroids is created by scrolling them off the screen.
The ship is POKED on the screen. To prevent the ship from scrolling off every
move, the program jumps to line 520. Here, with the variable OP (for old
position), the would-be scrolled ships are erased.
A check is made for every
move to see if the ship has been hit. When this occurs, the program goes to 8170
to explode the ship. This is where the rest of the data is utilized. It then
returns and offers a change in asteroid depth (this option is available for only
seven seconds). Then an asteroid field is displayed in motion until either the
fire button on the joystick or the keyboard's "H" key is pressed. To add to the
excitement, you can think of this as dropping out of hyperspace.
Atari, TI-99/4A, And Apple Version Notes
Patrick Parrish, Programming Assistant
Atari Notes
The object of the Atari version of
Astrostorm is to move your spaceship to the right across the asteroid field six
times. The game is played with the keyboard or the joystick (in controller jack
#1). In either case, movement of the spaceship is strictly horizontal. Once you
start the spaceship moving left or right on the screen, it will continue until
you cause a direction change.
With the joystick, left and right movement of
the stick causes the spaceship to fly across the screen in the corresponding
direction. Shifting the joystick position up or down will halt
the
spaceship. Under keyboard control, the "<" and ">" keys are used for left
and right movement, and again, movement is continuous. If you choose the
keyboard option, the spaceship's flight can be halted by pressing any key other
than the "<" or ">" keys.
To achieve a high score on Astrostorm, avoid
moving the spaceship to the left whenever possible, since penalty points are
then deducted from your total. But bonus points are given for spaceship movement
to the right. As an added incentive, you are awarded a thousand points each time
you successfully maneuver the spaceship across the asteroid field.
TI-9/4A Notes
The object of Astrostorm on the TI-99/4A
is to advance your spaceship across the asteroid field twelve times. Asteroids
scroll from the bottom of the screen. Spaceship movement is horizontal. Control
the movement of the ship by pressing the "<" and ">" keys.
This
version of the game can be quite challenging since there are several skill
levels. As the game begins, the vertical position of the spaceship can be set
nearer the bottom of the screen by specifying a greater "asteroid depth." A
greater asteroid depth, of course, requires a faster reaction time. The
difficulty of the game can be further increased by requesting a higher asteroid
density (difficulty level).
The game loop (lines 500-830) is set to execute
1000 times. This means that you must finish your journey across the asteroid
field before this loop is completed. You may find that this time limit is either
too easy or too difficult, depending on the skill levels you choose. If so, vary
the limit in line 500 as you see fit.
To achieve a high score on Astrostorm,
avoid moving your spaceship backwards since points are deducted from your total.
Apple Notes
With the Apple version of
Astrostorm, you must move the spaceship across the astrofield six times to win.
There is no time limit, and the game loop (lines 120-250) will execute until a
crash is detected (line 230).
Asteroids scroll from the bottom of the
screen. Only horizontal movement of the spaceship is allowed by the program.
Movement, which is continuous, is accomplished with the SPACE bar while
direction is controlled with the left and right arrow keys.
There are
several skill levels. You can make the game more difficult by specifying a
higher asteroid depth. This will place the spaceship closer to the bottom of the
screen, and consequently, require a quicker reaction on your part to avoid a
collision.
Scoring is based on the direction of spaceship movement and
difficulty level. Of course, more points are given at greater asteroid depths.
Points are awarded for movement of the spaceship to the right and deducted for
movement to the left.
Program 1: VIC Version
5 POKE36879,8
10
PRINT"{CLEAR}{PUR}":POKE37139,0:DD=37154:PA=37137:PB=37152
45 IFLF=lTHEN1000
47 PRINT"{05 RIGHT}{04 DOWN}ASTROSTORM"
50 PRINT"{DOWN}{05
RIGHT}JOYSTICK(1)":PRINT"{05 RIGHT}KEYBOARD(2)"
55 GETR$
60
IFR$="1"THENR=l:GOTO70
65 IFR$="2"THENR=2:GOTO70
68 GOTO55
70
FORJ=0TO2:READJS(J):NEXTJ:GOSUB5000
80 GOTO900
100
POKEDD,127:S3W=-((PEEK(PB)AND128)=0):POKEDD,255
110
P=PEEK(PA):S2=((PAND16)=0)
130 DN=JS(X+l):RETURN
200
IFPEEK(197)=33THENDN=-l:RETURN
210 IFPEEK(197)=34THENDN=l:RETURN
220
IFPEEK(197)=64THENDN=0:RETURN
230 RETURN
500
IFDN<>0ANDPEEK(S-DN)<>42THENPOKES-DN,32
505 FORII=lTO2
510
POKEOP,32:POKEOP-DN,32
520 OP=OP-22
530 NEXTII:RETURN
900
IFLF=lTHEN1000
910 PRINT"THE A.D. [ASTEROID DEPTH] DESIRED (5-18)":INPUTL
920 IFL<5THENPRINT"TOO EASY":GOTO900
930 IFL>18THENPRINT"TOO
RISKY":GOTO910
940 LF=l:PRINT"{CLEAR}":GOSUB2200
1000 PRINT"{CLEAR}{18
DOWN}"
1020 POKE36878,15
1030
S=4*(PEEK(36866)AND128)+64*(PEEK(36869)AND120):
C=37888+4*(PEEK(36866)AND128)
1040 CK=I:S=S+22*(L+l):OP=S:SB=S-l:SE=S+23
2000 FORG=lTO418
2010 NA=INT(RND(Tl)*22):CC=INT(RND(TI)*7)+l
2040
POKE646,CC:PRINTTAB(NA) "*";
2055 PT=PT+DN*(NA*CC*INT((L^.5)+.5))
2060
IFS=SBTHENPOKES,32:S=S+22:W=W-1
2065 IFS=SETHENPOKES,32:S=S-22:W=W+l
2070 IFPEEK(S)=42ORPEEK(S+22)=42THENPOKE646,1:GOSUB8000:GOSUB7000:GOTO2200
2085 ONRGOSUB100,200:OP=S-22:S=S+DN
2090
CK=CK*-l:POKE36875,127+CK:GOSUB500:POKES,61+DN:POKES+C,l:PRINT
2100 NEXTG
2110 PRINT"{YEL}":POKE36875,0:GOSUB6000
2200
PT=0:IFPEEK(197)=43THENRESTORE:LF=l:GOTO70
2210
POKE37139,0:IF(PEEK(PA)AND32)=0THENRESTORE:LF=l:POKE37139,128:GOTO70
2215
NA=INT(RND(TI)*22):CC=INT(RND(TI)*7)+l
2220 POKE646,CC:PRINTTAB(NA)"*"
2240 POKE37139,128:GOTO2200
5000 A=20:POKE36878,15
5010
READC,T,Z:T=T*A:Z=Z*A
5030
POKE36875,C:FORI=ITOZ:NEXTI:POKE36875,0:FORI=lTOZ:NEXTI
5050
IFZ>0THEN5010
5100 RETURN
6000 POKE36875,0
6005
IFW<6THENPRINT"YOU DID NOT COMPLETE YOUR MISSION.":GOTO62006010
PRINT:PRINT"YOU COMPLETED YOUR MISSION.";
6020 PRINT"THE SOLARIAN SYSTEM
MINISTER HAS AWARDED YOU";PT
6030 PRINT"SOLARIAN CREDITS FOR YOUR
SERVICES.",
6040 PRINT"DO YOU WISH TO MAKE ANOTHER DELIVERY?"
6060
GETR$:IFR$="Y"ORR$="N"THEN6070
6065 GOTO6060
6070 IFR$="N"THENCLR:END
6080 PRINT"SAME ASTEROID DEPTH?"
6100 GETR$:IFR$="Y"ORR$="N"THEN6110
6105 GOTO6100
6110 IFR$="N"THENRUN
6120 RETURN
6200 PRINT"THE
SOLARIAN GOVERNMENT HAS F INED YOU";PT;" GALACTIC CREDITS"
6210 PRINT"THEY
ARE ALSO HAVE ANOTHER MISSION FOR YOU!":FORI=lTO7000:NEXT:RETURN
7000
POKE36875,0:PRINT"{CLEAR}YOU DIDN'T MAKE IT.THE SOLARIAN GOVERNMENT HAS SENT";
7020 PRINT" YOUR FAMILY":PRINTPT;"GALACTIC CREDITS"
7025 PRINT"HIT 'C'
TO CHANGE A.D."
7030
FORI=lTO700:IFPEEK(197)=34THENFORJ=lTO10:GETR$:NEXTJ:RUN
7040 NEXTI:RETURN
8000 PRINT"{YEL}":POKE36875,0
8060
E(1)=S-23:E(2)=S-22:E(3)=S-l:E(4)=S:E(5)=S+23:E(6)=S+22:E(7)=S+l:E(B)=S
8090
FORI=lTO8:READA(I):POKEE(I),A(I):POKEE(I)+C,2:NEXTI
8110
A(4)=A(1).:A(8)=A(5)
8130 A=2:IFL>17THENA=l
8150
FORI=lTOA:FORJ=lTO8:POKEE(J),32:POKEE(J)+C,0:NEXTJ:PRINT
8160
E(1)=E(l)-23-22*(I-1):E(2)=E(2)-22-22*(I-1):E(3)=E(3)-l-22*(I-1)
8165
E(4)=E(4)-23-22*(I-1):E(5)=E(1)+23+22*(I-1):E(6)=E(6)+22+22*(I-1)
8168
E(7)=E(7)+1+22*(I-1):E(8)=E(8)+23+22*( I-1)
8170
FORJ=lTO8:POKEE(J),A(J):POKEE(J)+C,2:NEXTJ
8180
FORJ=lTO100:POKE36877,220:NEXTJ:POKE36877,0:NEXTI
8200
FORI=lTO6:READA(I):NEXTI:POKE36877,220
8220 FORI=14TO0STEP-2
8235
POKE36878,I
8237 FORJ=lTO6:POKE36879,A(J):FORG=lTO25:NEXTG,J
8240
POKE36879,8:NEXTI:POKE36877,0:RETURN
9100
DATA-1,0,1,237,10,1,237,5,1,177,20,5,177,20,5,237,10,1,177,5,1,140,20,5
9105
DATA237,10,1,177,5,1,140,15,2,237,10,1,177,5,1,140,20,5,237,10,1,177,5,1,140,25,5
9110
DATA177,10,1,140,5,1,118,25,1,140,20,177,15,1,237,25,1,237,20,1,237,10,1,177,25,0
9200 DATA77,66,64,42,77,66,64,42,25,42,127,143,159,255
Program 2: Atari Version
5 POKE 53248,0:GOSUB 3000:DIM
N$(10):N$= "'{T}$. {{,}}X{REV T}{REV ,"}"
7 GRAPHICS
0:POKE 752,l:? :DL=PEEK(560)+256*PEEK(561)+4:POKE DL-1,68:FOR I=2 TO 24:POKE
DL+I,4:NEXT I
10 X=60:Y=50:W=0
20 A=PEEK(106)-8:POKE
54279,A:PMBASE=256*A
30 POKE 559,46:POKE 53277,3
40 FOR I=PMBASE+512 TO
PMBASE+640:POKE I,0:NEXT I
50 POKE 53248,X
60 POKE
704,216:P0=PMBASE+512+Y
70 FOR I=PMBASE+512+Y TO PMBASE+517+Y:READ A:POKE
I,A:NEXT 1
80 DATA 224,112,254,127,112,224
95 POKE 53278,0
97 IF R=2
THEN 500
104 B=STICK(0):IF B<>15 THEN A=B
110
X=X-4*(A=11)+4*(A=7):POKE 53248, X:PT=PT+10-25*(A=11)
130 IF PEEK(53252)
THEN POKE 764,255 :GOTO 2000
140 IF X>200 THEN POKE 53248,60:W
=W+1:PT=PT+1000:X=60
145 IF X<60 THEN POKE 53248,200:X=200:PT=PT-1000
150 IF W=6 THEN 1000
190
POSITION17*(RND(0)*2)+4,23:Z=INT(LEN(N$)*RND(0)+1):?N$(Z,Z):
POKE710,PEEK(53770)
260 GOTO 97
500 I=PEEK(764)
520 IF I=54 THEN
X=X-4:POKE 53248,X: PT=PT-15:GOTO 130
530 IF I=55 THEN X=X+4:POKE 53248,X:
PT=PT+10:GOTO 130
540 GOTO 190
1000 POKE 764,255:GOSUB 2100:GRAPHICS
0:ON W GOTO 2000,1200,1005,
1005,1005,1020,1010
1005 IF W<6 THEN
GRAPHICS 0:? "You did not complete your mission. " GOTO 1020
1010 ? :?
CHR$(125);"You completed your mission."
1020 ? "The Solarian System Minister
has":? "awarded you ";PT;' Solarian"
1025 ? "credits for your services.":
GOTO 2010
1200 ? CHR$(125);"The Solarian Government has fined":? "you
";PT;"galactic credits."
1210 ? :? "but, they also have another mission":?
"for you!":GOTO 2 010
2000 FOR W=15 TO 0 STEP -0.3:SOUND 0
,20*RND(0),0,W:POKE 704,PEEK(53770):POKE
P0+6*RND(0),PEEK(53770):NEXT W
2005 GRAPHICS 0:? "You didn't make it. The Solarian":? "government has sent
your family":? PT;" galactic credits."
2010 GOSUB 2100:POKE 764,255:?
"Play again? (Y/N):";:GET #1,A:IF A< >ASC("N")THEN
RUN
2020
GRAPHICS 0:GOSUB 2100:END
2100 POKE 53277,0:POKE 53248,0:RETURN
3000
GRAPHICS 0:SETCOLOR 2,6,6
3010 ? "{2 TAN}{REV ASTROSTORM}"
3030 ?
:? "{REV 1}.Joystick}":? :? "(REV 2}. Key board":? "(3
SPACES)Use < and > for move"
3040OPEN #1,4,0,"K:":? :? "Select:"
3050GET #1,A:R=A-48:IF R<l OR R>2 T HEN 3050
30BORETURN
3100END
Program 3: TI-99/4A Version
100RANDOMIZE
110CALL CLEAR
120FOR I=5 TO 8
130CALL
COLOR(1,16,1)
140NEXT 1
150CALL CLEAR
160 PRINT " A S T R 0 S T 0 R
M "
170 PRINT
180 PRINT
190 PRINT "POWER SHIP WITH < & >
KEYS"
200 FOR I=l TO 9
210 PRINT
220 NEXT I
230 FOR 1=14 TO 3
STEP -1
240 FOR J=1 TO 20
250 NEXT J
260 CALL SCREEN(I)
270 NEXT
I
280 FOR I=1 TO 400
290 NEXT I
300 S=3
310 PT=0
320
RSHIP=10
330 CSHIP=1
340 SHIP=62
350 COL=2
360 RLSHIP=RSHIP
370 CLSHIP=CSHIP
380 CALL CLEAR
390 PRINT"WHAT ASTEROID DEPTH
(1-10)";
400 INPUT X
410 IF (X>10)+(X<I)THEN 380
420 PRINT
430 PRINT "WHAT DIFFICULTY LEVEL (1-10)"
440 INPUT DCULT
450 IF
(DCULT>10)+(DCULT<I)THEN 380
460 CALL CLEAR
470 CALL SCREEN(S)
480 CALL COLOR(2,16,I)
490 REM VARY LIMIT OF LOOP IN THE NEXT LINE IF
THE GAME IS TOO HARD OR TOO EASY
500 FOR LOOP=L TO 1000
510 FOR I=l TO
INT(RND*X)+l
520 COL=INT(RND*30)+2
530 CALL HCHAR(23,COL,42)
540
NEXT I
550 PRINT
560 CALL SCHAR(RSHIP+DCULT,CSHIP,LOC)
570 CALL
HCHAR(RLSHIP+DCULT-I,CLSHIP,32)
580 IF LOC=42 THEN 1190
590 CALL
SCREEN(S)
600 CALL HCHAR(RSHIP+DCULT,CSHIP,SH IP)
610 CLSHIP= CSHIP
620 RLSHIP=RSHIP
630 CALL KEY(3,A,STATUS)
640 IF
A<>ASC(".")THEN 730
650 CALL SOUND(-700,-5,3)
660 PT=PT+5*DCULT*X
670 CSHIP=CSHIP+L
680 IF CSHIP<>32 THEN 720
690 CSHIP=L
700 S=S+l
710 IF S=15 THEN 1030
720 SHIP=62
730 IF
A<>ASC(",")THEN 820
740 CALL SOUND(-700,-6,4)
750 SHIP=60
760
PT=PT-8*DCULT*X
770 CSHIP=CSHIP-1
780 IF CSHIP<>L THEN 810
790
CSHIP=32
800 S=S-SGN(S-3)
810 SHIP=60
B20 REM
830 NEXT LOOP
840 CALL CLEAR
850 PRINT " YOU DID NOT COMPLETE YOUR"
860 PRINT
870 PRINT "MISSION. THE SOLARIAN"
880 PRINT
890 PRINT "GOVERNMENT
HAS FINED YOU"
900 PRINT
910 PRINT PT;"GALACTIC CREDITS."
920 PRINT
930 PRINT
940 PRINT
950 PRINT " BUT, THEY ALSO HAVE "
960 PRINT
970 PRINT "ANOTHER MISSION FOR YOU!!!"
980 PRINT
990 PRINT
1000
INPUT "ARE YOU GAME (Y OR N)?" :G$
1010 IF G$="Y" THEN 300
1020 GOTO
1500
1030 REM YOU WIN!!
1040 CALL CLEAR
1050 PRINT "YOU COMPLETED
YOUR "
1060 PRINT
1070 PRINT "MISSION. THE SOLARIAN MINI-"
1080
PRINT
1090 PRINT "STER HAS AWARDED YOU";PT
1100 PRINT
1110 PRINT
"SOLARIAN CREDITS FOR YOUR "
1120 PRINT
1130 PRINT "SERVICES AND WISHES
YOU "
1140 PRINT
1150 PRINT "TO MAKE ANOTHER DELIVERY! "
1160 PRINT
1170 PRINT
1180 GOTO 980
1190 CALL SCREEN(12)
1200 FOR I=l TO 50
1210 NEXT 1
1220 CALL SCREEN(9)
1230 FOR VOL=24 TO 1 STEP 4
1240
CALL SOUND(200,-7,VOL)
1250 NEXT VOL
1260 FOR VOL=1 TO 24 STEP 4
1270 CALL SOUND(200,-7,VOL)
1280 NEXT VOL
1290 CALL SCREEN(12)
1300 FOR I=1 TO 10
1310 NEXT I
1320 CALL SCREEN(8)
1330 CALL
CLEAR
1340 CALL SCREEN(6)
1350 PRINT "{4 SPACES}TOO BAD! THE SOLARIAN"
1360 PRINT " GOVERNMENT HAS SENT YOUR"
1370 PRINT " FAMILY ";PT;"
GALACTIC"
1380 PRINT " CREDITS."
1390 FOR 1=1 T 5
1400 PRINT
1410 NEXT I
1420 PRINT "{3 SPACES}HIT -P- TO PLAY AGAIN"
1430 PRINT
" OR -S- TO STOP."
1440 FOR I=1 TO 5
1450 PRINT
1460 NEXT I
1470
CALL KEY(3,K,ST)
1480 IF ST=0 THEN 1470
1490 IF
(K=ASC("C"))+(K=ASC("P"))THEN 300
1500 END
Program 4:
Apple Version
10 REM ASTEROID FIELD - APPLE II VERSION
20 FOR I =
770 TO 795: READ M: POKE I,M: NEXT I
25 DATA
172,01,03,174,01,03,169,04,32,168,252,173,48,192,232,
208,253,13,6,208,239,206,0,03,208,231,96
30 GOTO 1000
100 TEXT :HOME
: VTAB 1: PRINT "SCORE : ": POKE 34,2
110 FOR I = 1 TO 15:SP = INT ( RND
(1)*39) + 2: VTAB 24: HTAB (SP): PRINT "*": NEXT I
115 FOR I = 10 TO 50 STEP
40: POKE 768,10: POKE 769,I: CALL 770; NEXT I
120 POKE OP,160: VTAB 24:SP =
INT ( RND (1) * 39) + 2
130 HTAB (SP); PRINT
140 IF PEEK (CP) = 170 THEN
GOTO 800
145 POKE CP,CC:OP = CP
146 FOR I = 1 TO 25: NEXT
149 VTAB
1: HTAB 7: CALL - 868: VTAB 1: HTAB 7: PRINT PT
170 M = PEEK (16384): ON M
< 128 GOTO 120
180 IF M - 28 = 8 THEN CC = 188:MV = - 1: GOTO 120
190
IF M - 128 = 21 THEN CC = 190:MV = + 1: GOTO 120
200 IF M - 128 < > 32
THEN GOTO 120
210 IF CP < > BP OR MV > 0 THEN GOTO 215
212 ON
SF GOTO 120
213 CP = BP + 39:SF = SF - 1: GOTO 230
215 CP = CP + MV
220 IF CP < > BP + 39 THEN GOTO 230
222 ON SF = 6 GOTO 600
225
CP = BP:SF = SF + 1
230 IF PEEK (CP) = 170 THEN GOTO 800
240 IF NOT MV
THEN PT = PT + INT ((MV * INT(DL * 2) * ((CP - BP) *SF))) / 2):
GOTO 250
245 PT = PT + (MV * ( INT (DL * .3) * (CP - BP) * SF)))
250 GOTO 120
600 REM WIN
610 TEXT: HOME : VTAB 2: HTAB 15: PRINT "SCORE: ";PT
620
VTAB 8: HTAB 13: FLASH : PRINT "CONGRATULATIONS": NORMAL : VTAB 12: HTAB 14:
PRINT "YOU MADE IT!"
640 POKE 68,15: POKE 769,50: CALL 770: POKE 768,10:
POKE 769,10: CALL 770: POKE 768, 15: POKE 769, 50: CALL 770
650 FOR I I TO
500: NEXT 1
660 POKE 16368,0: GOTO 910
800 REM CRASH
810 V = DL +
2:H = CP - BP
820 IF H < I THEN VTAB V - 1: HTAB H: PRINT " /": VTAB V:
HTAB H: PRINT " -":
VTAB V + 1: HTAB H: PRINT" "; CHR$ (92): GOTO 850
830 IF H > = 39 THEN VTAB V - 1: HTAB H: PRINT CHR$ (92);" ": VTAB V:
HTAB H: PRINT VTAB V + 1: HTAB H: PRINT "/ ":G0TO 850
840 VTAB V 1; HTAB H:
PRINT CHR$ (92);" /": VTAB V: HTAB H: PRINT "--";: VTAB V + 1: HTAB H: PRINT "
/"; CHR$ (92);
850 FOR I = 1 TO 200:X=PEEK(-16336):NEXTI
890 POKE
16368,0
900 TEXT HOME : VTAB 2: HTAB 15: PRINT"SCORE: ";PT
905 VTAB 10:
HTAB 11: PRINT "YOU LOST YOUR SHIP!"
910 VTAB 21: HTAB 6: PRINT "SAME GAME ?
Y)ES, N)O, E)ND ";: GET A$
915 IF A$ = "E" THEN END
920 IF A$ = "Y" OR
A$ = CHR$ (13) THEN GOTO 1130
1000 TEXT : HOME
1010 VTAB 5: HTAB 15:
PRINT "ASTROSTORM"
1050 VTAB 10: HTAB 1: INPUT "ENTER DIFFICULTY LEVEL
(5-16) ";DL$
1055 IF LEN (DL$) < 1 OR LEN (DL$) > 2 THEN GOTO 1050
1060 E = 0: FOR I = 1 TO LEN (DL$):CH$ = MID$ (DL$,I,I): IF ASC (CH$) <48
OR
ASC (CH$) > 57 THEN E = 1
1070 NEXT I: ON E GOTO 1050
1080 DL
= VAL (DL$)
1090 IF DL < 5 THEN VTAB l8: PRINT "TOO EASY": FOR I = 1 TO
1000: NEXT I:
VTAB 18: CALL - 868: GOTO 1050
1100 IF DL > 18 THEN
VTAB 18: PRINT "TOO HARD": FOR I = I TO 1000: NEXT I:
VTAB 18: CALL - 868:
GOTO 1050
1110 VTAB 15: HTAB 10. INPUT "INSTRUCTIONS (Y/N) ";A$: IF A$ = "Y"
THEN
GOTO 1200
1130 J = 0: FOR I = 1024 TO 1920 STEP 128
1140 J =
J + 1
1150 IF J = DL + 2 THEN CP = I:I = 1921: GOTO 1180
1160
IF J + 8 = DL + 2 THEN CP = I + 40:I = 1921: GOTO 1180
1170 IF J + 16 = DL +
2 THEN CP = I + 80:I = 1921
1180 NEXT I
1190 BP = CP:SF = 1:CC = 190:MV
= + 1: PT = 0: GOTO 100
1200 TEXT : HOME
1210 VTAB 3: HTAB 14: PRINT
"INSTRUCTIONS:":
1220 VIAB 6: PRINT "THE LEFT AND RIGHT ARROW KEYS CONTROL
": PRINT
"THE DIRECTION OF MOVEMENT OF THE ROCKET.";: PRINT "PRESS THE
SPACE BAR TO MOVE THE ROCKET."
1230 PRINT : PRINT : HTAB 4: PRINT "PRESS
SPACE BAR TO BEGIN THE GAME"
1240 VTAB 20: HTAB 8: PRINT "PRESS ANY KEY WHEN
READY": WAIT - 16384,128
1250 GOTO 1130