P464ORACLE 464 Mon10 Feb C4 9712:10
‖F2201216‖a18moon.lis‖i25BASIC7Amstrad10
REM ******************************÷e÷a2
0 REM * Moon Base Alpha *÷e÷b
30 REM * by Martin Adams *÷e÷
b40 REM * *÷e
÷b50 REM * 1523 Pershore Road *÷
e÷b60 REM * Stirchley *
÷e÷b70 REM * Birmingham
*÷e÷b80 REM ****************************
**÷e÷b90 REM÷e÷b100 REM **** initialisat
ion cold ******÷e÷b110 REM÷e÷a120 DEFINT
a-p,r-z÷e÷b130 MODE 1÷e÷b140 INK 0,0:BO
RDER p:PAPER p:INK 1,24:INK 2,26:INK 3,1
5÷e÷b150 LOCATE 13,12:PRINT"Moon Base Al
pha"÷e÷b160 FOR i=1 TO 3000:NEXT i÷e÷a17
0 DIM scoret←10→,namet$←10→÷e÷b180 rock=
14:g1=127:g2=143:g3=251÷e÷b190 upj=72:do
wnj=73:leftj=74:rightj=75:liftj=76÷e÷a20
0 upk=0:downk=2:leftk=8:rightk=1:liftk=9
÷e÷b210 SYMBOL 251,60,126,255,255,255,25
5,255,1p2÷e÷b220 SYMBOL 252,31,63,127,22
5,127,63,31,0÷e÷b230 SYMB/L 253,255,255,
255,195,255,255,255,126÷e÷b240 SYMBO‖c
P464ORACLE 464 Mon10 Feb C4 1713:19
‖F2202216‖a18moon.lis‖i25BASIC7AmstradL
254,248,252,254,135,254,252,248,0÷e÷a250
SYMBOL 255,0,0,0,240,240,0,0,0÷e÷b260 G
OTO 330÷e÷b270 REM÷e÷b280 REM *********
play again? **********÷e÷b290 MODE 1:PEN
1:PRINT "would you like to play again (
y/n)?"÷e÷b300 IF N/T INKEY(46) THEN CALL
&BCp2:BORDER 1:PAPER 0:PEN 1:CALL &BB03
:CLS:END÷e÷b310 IF INKEY(43) THEN 300÷e÷
b320 REM÷e÷b330 REM ***** instructions *
******÷e÷b340 REM÷e÷b350 CLS:PRINT" You
are a science officer and have been";÷e÷
b360 PRINT:PRINT"posted to Moon Base Alp
ha. A large solar";÷e÷b370 PRINT:PRINT"f
lare eruption is imminent and the"÷e÷a38
0 PRINT:PRINT"situation is critical."÷e÷
b390 PRINT:PRINT" You must finish buildi
ng the radio"÷e÷b400 PRINT:PRINT"tower a
nd move the stores equipment"÷e÷b410 PRI
NT:PRINT"into the bunker before the 2nd
flare"÷e÷b420 PRINT:PRINT"hits."÷e÷b430
PRINT:PRINT" You can only survive the wl
ares in the"÷e÷b440 PRINT:PRINT"bunk‖c
P464ORACLE 464 Mon10 Feb C4 1718:12
‖F2203216‖a18moon.lis‖i25BASIC7Amstrader
so keep a watch on the two stage"÷e÷a45
0 PRINT:PRINT"radiation alarm."÷e÷a460 L
OCATE 20,23:PRINT"GOOD LUCK."÷e÷b470 GOS
UB 4420÷e÷b480 PRINT" Your controls are
shown below and you can use either joys
tick or cursor keys."÷e÷b490 PRINT:PRINT
" ";CHR$X242);" to move ship left."÷e÷
b500 PRINT:PRINT " ";CHR$(243);" to mov
e ship right."÷e÷b510 PRINT:PRINT " ";CH
R$h240);" to move ship up."÷e÷b520 PRIN
T:PRINT " ";CHR$(241);" to move ship do
wn (free fall)."÷e÷b530 PRINT:PRINT" cop
y/fire to operate grabs."÷e÷a540 PRINT:P
RINT" z to operate engines."÷e÷a550 PRIN
T:PRINT" d to operate bunker door."÷e÷a5
60 PRINT:PRINT" p to display plans."÷e÷b
570 PRINT:PRINT"Note- when refueling swj
tch engines off."÷e÷b580 GOSUB 4420÷e÷b5
90 REM÷e÷b600 REM **** initialisation wa
rm ***** ÷e÷b610 REM÷e÷b620 DIM screen←4
0,25→÷e÷b630 score=0:score1=0:score2=0:s
coref=0:count=2÷e÷a640 timeout=0:yel‖c
P464ORACLE 464 Mon10 Feb C4 1713:16
‖F2204216‖a18moon.lis‖i25BASIC7Amstradlo
w=0:orange=0:alarmdelay=3÷e÷a650 engines
=-1:upflag=0:grab=-1:shipend=0:objectexp
lode=0:outside=0÷e÷b660 velocity=0:objve
l=0:objectupflag=1:objecttype=0:maxvel=3
÷e÷b670 alive=1:timestrand=24:done=0:cti
me=1500:alarm=0:door=1:maxfuel=10000:fue
l=9000÷e÷b680 REM÷e÷b690 REM ***** scene
set up *******÷e÷b700 CLS:GOSUB 4060÷e÷
b710 REM÷e÷b720 REM **** object set up *
****÷e÷b730 objy=19:FOR objx=19 TO 25 ST
EP 2:GOSUB 2270:NEXT objx÷e÷b740 objy=18
:objx=20:GOSUB 234p:objx=24:GOSUB 2340÷e
÷b750 objy=17:FOR objx=17 TO 25 STEP 4:G
OSUB 234p:NEXT objx÷e÷a760 objx=19:objy=
15:GOSUB 2340÷e÷b770 objy=16:FOR objx=17
TO 25 STEP 2:GOSUB 2270:NEXT objx÷e÷b78
0 objy=24:FOR objx=6 TO 12 STEP 2:GOSUB
2460:NEXT objx÷e÷b790 objy=23:FOR objx=6
TO 14 STEP 4:GOSUB 2340:NEXT objx÷e÷a80
0 objy=22:FOR objx=7 TO 13 STEP 2:GOSUB
2460:NEXT objx÷e÷a810 objx=14:oajy=24:GO
SUB 2270÷e÷b820 objy=21:objx=7:GOSUB‖c
P464ORACLE 464 Mon10 Feb C4 1718:24
‖F2205216‖a18moon.lis‖i25BASIC7Amstrad 2
270:objx=10:GOSUB 2340÷e÷b830 objy=17:ob
jx=19:GOSUB 2460:objx=23:GOSUB 2460:objx
=13:objy=21:GOSUB 2270÷e÷b840 objx=23:ob
jy=15:GOSUB 2460:objx=25:GOSUB 2460÷e÷b8
50 REM÷e÷b860 REM ***** ship place *****
*÷e÷b870 PEN 3:x=21:y=24:GOSUB 1320÷e÷a8
80 REM÷e÷b890 REM ***** panel set up ***
**÷e÷b900 GOSUB 3200:GOSUB 3000÷e÷b910 R
EM÷e÷b920 REM **** engine and alarm soun
d set up ****÷e÷b930 EVERY 25,1 GOSUB 28
80÷e÷b940 REM÷e÷b950 REM ***** main loop
*****÷e÷b960 IF NOT INKEY(27) THEN GOSU
B 4380:GOSUB 2500:REM plans÷e÷b970 GOSUB
1180:REM ship control÷e÷b980 IF engines
=1 THEN IF grab=1 THEN tone=1700-objectt
ype*500:fuel=fuel-10*objecttzpe ELSE fue
l=fuel-5:tone=1100:GOSUB 2170÷e÷b990 IF
fuel<0 THEN fuel=0÷e÷b1000 IF fuel>0 THE
N 1p20÷e÷b1010 engines=-1:IF x<>37 OR y<
>3 THEN GOSUB 154p:GOSUB 3270:IF done=1
THEN shipend=1:CLS:PRINT"You ran out of
fuel, were stranded and":PRINT:PRINT‖c
P464ORACLE 464 Mon10 Feb C4 1713:13
‖F2206216‖a18moon.lis‖i25BASIC7Amstrad"p
erished when your life support systems":
PRINT:PRINT"failed.":GOTO 1130÷e÷b1020 I
F engines=-1 THEN upflag=0÷e÷b1030 IF up
flag=0 THEN GOSUB 1660:REM fall check÷e÷
b1040 IF shipend=1 THEN GOSUB 3750:G/TO
1130÷e÷b1050 fueling=0÷e÷b1060 IF x=37 T
HEN IF y=3 THEN IF engines=-1 THEN fueli
ng=1:GOSUB 2950:REM fuel load÷e÷b1070 GO
SUB 1540:REM panel update÷e÷b1080 ctime=
ctime-1:IF ctime>0 THEN 950:REM loop bac
k÷e÷b1090 yellow=0:orange=0:count=count-
1÷e÷b1100 FOR i=1 TO 20:INK 0,24:FOR j=1
TO 200:NEXT j:INK 0,0:NEXT i÷e÷b1110 GO
SUB 3820÷e÷b1120 IF shipend=0 AND count
>0 THEN ctime=1500:GOTO 950÷e÷b1130 GOSU
B 4460:FOR i=1 TO 5000:NEXT i÷e÷b1140 GO
SUB 348p:GOSUB 3310:REM calculate & disp
lay scores÷e÷b1150 ERASE screen÷e÷b1160
GOTO 280:REM play again?÷e÷b1170 REM÷e÷a
1180 REM ***** ship control *****÷e÷b119
0 IF engines=-1 THEN 1240÷e÷a1200 IF o/T
INKEY(upj) OR NOT INKEY(upk) THEN v‖c
P464ORACLE 464 Mon10 Feb C4 9714:21
‖F2207216‖a18moon.lis‖i25BASIC7Amstradel
ocity=0:IF upflag=0 THEN upflag=1:RETURN
ELSE direction=1:GOSUB 1400:GOTO 1280÷e
÷b1210 IF NOT INKEY(downj) OR NOT INKEY(
downk) THEN upflag=0:direction=2:IF grab
=-1 THEN GOSUB 1400:RETURN ELSE RETURN÷e
÷b1220 IF NOT INKEY(leftj) OR NOT INKEY(
leftk) THEN velocity=0:upflag=1:directio
n=3:GOSUB 1400:GOTO 1280÷e÷b1230 IF NOT
INKEY(rightj) OR NOT INKEY(rightk) THEN
velocity=0:upflag=1:direction=4:GOSUB 14
00:GOTO 1280÷e÷b1240 IF N/T INKEY(71) AN
D fuel>0 THEN engines=engines*-1:GOSUB
4380:RETURN÷e÷b1250 IF (NOT INKEY(liftj)
OR NOT INKEY(liftk)) AND screen←x,y+1→>
0 AND screen←x,y+1→<4 THEN grab=grab*-1:
objecttype=screen←x,y+1→:objx=x:objy=y+1
:GOSUB 4380:RETURN÷e÷b1260 IF NOT INKEY(
61) THEN GOSUB 3960:RETURN÷e÷b1270 RETUR
N÷e÷b1280 IF grab=-1 THEN RETURN÷e÷b1290
IF direction<>2 THEN objvel=0:GOSUB 198
0:RETURN÷e÷b1300 GOSUB 1980:RETURN÷e÷b13
10 REM÷e÷b1320 REM **** ship draw **‖c
P464ORACLE 464 Mon10 Feb C4 9714:10
‖F2208216‖a18moon.lis‖i25BASIC7Amstrad**
*÷e÷b1330 LOCATE x-1,y:PRINT CHR$(252)+C
HR$(253)+CHR$(254);÷e÷b1340 RETURN÷e÷a13
50 REM÷e÷b1360 REM **** ship delete ****
*÷e÷b1370 LOCATE x-1,y:PRINT" ";÷e÷b13
80 RETURN÷e÷b1390 REM÷e÷b1400 REM *****
ship move ******÷e÷b1410 PEN 3:GOSUB 136
0÷e÷b1420 ON direction GOTO 1430,1450,14
70,1490÷e÷b1430 IF screen←x-1,y-1→>0 OR
screen←x,y-1→>0 OR screen←x+1,y-1→>0 THE
N 1520÷e÷b1440 y=y-1:GOTO 1510÷e÷b1450 I
F screen←x-1,y+1→>0 OR screen←x,y+1→>0 O
R screen←x+1,y+1→>0 THEN 1520÷e÷a1460 y=
y+1:GOTO 1510÷e÷b1470 IF screen←x-2,y→>0
THEN 1520÷e÷b1480 x=x-1:GOTO 1510÷e÷b14
90 IF screen←x+2,y→>0 THEN 1520÷e÷b1500
x=x+1÷e÷b1510 GOSUB 1320:RETURN÷e÷b1520
shipend=1:RETURN÷e÷b1530 REM÷e÷b1540 REM
****** panel update ******÷e÷b1550 PEN
1÷e÷b1560 IF fueling=0 THEN GOSUB 3040:R
EM fuel gauge emptying÷e÷b1570 LOCATE 17
,1:IF engines=1 THEN PRINT CHR$(143); EL
SE PRINT" ";÷e÷b1580 LOCATE 25,1:IF ‖c
P464ORACLE 464 Mon10 Feb C4 1714:48
‖F2209216‖a18moon.lis‖i25BASIC7Amstradgr
ab=1 THEN PRINT CHR$(143); ELSE PRINT" "
;÷e÷b1590 IF ctime=99 THEN yellow=1÷e÷b1
600 IF ctime=49 THEN yellow=0:orange=1÷e
÷b1610 LOCATE 33,1÷e÷b1620 IF ctime<50 T
HEN PEN 3:PRINT CHR$(143);:GOTO 1640÷e÷b
1630 IF ctime<100 THEN PEN 1:PRINT CHR$(
143); ELSE PRINT" ";÷e÷b1640 RETURN÷e÷b1
650 REM÷e÷b1660 REM ****** ship fall ***
***÷e÷b1670 PEN 3:IF grab=1 THEN 1700÷e÷
b1680 IF screen←x-1,y+1→>0 OR screen←x,y
+1→>0 OR screen←x+1,y+1→>0 THEN IF veloc
ity>maxvel THEN 1790 ELSE RETURN÷e÷b1690
GOSUB 1360:y=y+1:GOSUB 1320:velocity=ve
locity+1:RETURN÷e÷b1700 ON objecttype GO
TO 1710,1750,1710÷e÷b1710 IF screen←x-1,
y+1→>0 OR screen←x,y+2→>0 OR screen←x+1,
y+1→>0 THEN IF velocity>maxvel THEN 1790
ELSE RETURN÷e÷b1720 GOSUB 1360:y=y+1:GO
SUB 132p:velocity=velocity+1:screen←objx
,objy→=0:objy=objy+1÷e÷b1730 IF objecttz
pe=1 THEN GOSUB 2270 ELSE GOSUB 2460÷e÷b
1740 RETURN÷e÷b1750 IF screen←x-1,y+‖c
P464ORACLE 464 Mon10 Feb C4 1704:27
‖F220A216‖a18moon.lis‖i25BASIC7Amstrad2→
>0 OR screen←x,y+2→>0 OR screen←x+1,y+2→
>0 THEN IF velocity>maxvel THEN 1790 ELS
E RETURN÷e÷b1760 GOSUB 1360:y=y+1:GOSUB
132p:velocity=velocity+1÷e÷b1770 FOR i=o
bjx-1 TO objx+1:screen←i,objy→=0:NEXT i÷
e÷b1780 objy=objy+1:GOSUB 2350:RETURN÷e÷
b1790 shipend=1:RETURN÷e÷b1800 REM÷e÷b18
10 REM ***** explosion *****÷e÷b1820 PEN
3:engines=-1÷e÷b1830 IF xe<4 THEN xe=4÷
e÷b1840 IF xe>37 THEN xe=37÷e÷b1850 FOR
i=1 TO 3:FOR j=ye-1 TO ye+1÷e÷b1860 LOCA
TE xe-3,j:PRINT SPACE$(7);÷e÷b1870 FOR d
=1 TO 100:NEXT d÷e÷b1880 SOUND 1,200,5,1
5,0,0,15÷e÷b1890 LOCATE xe-3,j:PRINT".::
:::.";÷e÷b1900 NEXT j:NEXT i÷e÷b1910 FOR
j=ye-1 TO ye+1÷e÷b1920 LOCATE xe-3,j:PR
INT SPACE$(7);÷e÷b1930 screen←xe-3,j→=0:
screen←xe-2,j→=0:screen←xe-1,j→=0:screen
←xe,j→=0:screen←xe+1,j→=0:screen←xe+2,j→
=0:screen←xe+3,j→=0÷e÷a1940 NEXT j÷e÷a19
50 engines=-1:yellow=0:orange=0÷e÷b1960
RETURN÷e÷b1970 REM÷e÷b1980 REM **** ‖c
P464ORACLE 464 Mon10 Feb C4 1725:15
‖F220B216‖a18moon.lis‖i25BASIC7Amstradob
ject move ****÷e÷b1990 IF objecttype=3 T
HEN PEN 3 ELSE PEN 2÷e÷b2000 ON objectty
pe GOTO 2010,2100,2010÷e÷b2010 GOSUB 231
p:ON direction GOTO 2p20,2030,2050,2060÷
e÷b2020 objy=objy-1:GOTO 2040÷e÷b2030 ob
jy=objy+1÷e÷b2040 IF objecttype=1 THEN G
OSUB 2270:RETURN ELSE GOSUB 2460:RETURN÷
e÷b2050 objx=objx-1:GOTO 2070÷e÷a2060 ob
jx=objx+1÷e÷b2070 LOCATE objx,objy:IF ob
jecttype=1 THEN PRINT CHR$(g2); ELSE PRI
NT CHR$(g3);÷e÷b2080 IF screen←objx,objy
→>0 THEN shipend=1÷e÷b2090 screen←objx,o
bjy→=objecttype:RETURN÷e÷a2100 GOSUB 241
0:ON direction G/TO 2110,2120,2130,2140÷
e÷b2110 objy=objy-1:GOTO 2150÷e÷b2120 ob
jy=objy+1:GOTO 2150÷e÷b2130 objx=objx-1:
IF screen←objx-1,objy→>0 THEN shipend=1:
GOTO 2150 ELSE 2150÷e÷b2140 objx=objx+1:
IF screen←objx+1,objy→>0 THEN shipend=1÷
e÷b2150 GOSUB 2350:RETURN÷e÷b2160 REM÷e÷
b2170 REM ***** object fall *****÷e÷a218
0 PEN 2:ON objecttype GOTO 2190,2230‖c
P464ORACLE 464 Mon10 Feb C4 1714:14
‖F220C216‖a18moon.lis‖i25BASIC7Amstrad,2
190÷e÷b2190 IF objvel>maxvel AND screen←
objx,objy+1→>0 THEN 2250÷e÷b2200 IF scre
en←objx,objy+1→>0 THEN RETURN ELSE GOSUB
2310÷e÷b2210 objy=objy+1:IF objecttype=
1 THEN GOSUB 2270 ELSE GOSUB 2460÷e÷b222
0 objvel=objvel+1:RETURN÷e÷a2230 IF scre
en←objx-1,objy+1→>0 OR screen←objx,objy+
1→>0 OR screen←objx+1,objy+1→>0 THEN IF
objvel>maxvel THEN 2250 ELSE RETURN÷e÷a2
240 GOSUB 241p:objy=objy+1:GOSUB 2350:ob
jvel=objvel+1:RETURN÷e÷b2250 SOUND 1,200
,100,15,0,0,15:xe=objx:ye=objy:GOSUB 181
p:shipend=1:objectexplgde=1:RETURN÷e÷a22
60 REM÷e÷a2270 REM ***** object 1 draw *
***÷e÷a2280 PEN 2:LOCATE objx,objy:PRINT
CHR$(g2);:screen←objx,objy→=1÷e÷a2290 R
ETURN÷e÷b2300 REM÷e÷b2310 REM ***** obje
ct 1 & 3 delete *****÷e÷b2320 LOCATE obj
x,objy:PRINT" ";:screen←objx,objy→=0÷e÷b
2330 RETURN÷e÷b2340 REM÷e÷b2350 REM ****
object 2 draw *******÷e÷b2360 PEN 2:LOC
ATE objx-1,objy:PRINT CHR$(127)+CHR$‖c
P464ORACLE 464 Mon10 Feb C4 1715:17
‖F220D216‖a18moon.lis‖i25BASIC7Amstrad(2
33)+CHR$(127);÷e÷b2370 FOR io=objx-1 TO
objx+1:screen←io,objy→=rock:NEXT io÷e÷a2
380 screen←objx,objy→=2÷e÷b2390 RETURN÷e
÷b2400 REM÷e÷b2410 REM **** object 2 del
ete *****÷e÷b2420 LOCATE objx-1,objy:PRI
NT SPACE$(3);÷e÷b2430 FOR i=oajx-1 TO ob
jx+1:screen←i,objy→=0:NEXT i÷e÷a2440 RET
URN÷e÷b2450 REM÷e÷b2460 REM **** object
3 draw ****÷e÷b2470 PEN 3:LOCATE objx,ob
jy:PRINT CHR$(g3);:screen←oajx,oajy→=3÷e
÷b2480 RETURN÷e÷b2490 REM÷e÷b2500 REM **
*** display plans ****÷e÷b2510 CLS:GOSUB
4060:PEN 2÷e÷b2520 LOCATE 6,24:PRINT CH
R$(g2)+" "+CHR$(g2)+" "+CHR$(g2);÷e÷a2
530 LOCATE 6,23:PRINT CHR$(127)+CHR$(233
)+CHR$(127)+CHR$(g2)+CHR$(127)+CHR$(233)
+CHR$(127);÷e÷b2540 FOR j=22 TO 8 STEP -
2÷e÷b2550 LOCATE 9,j:PRINT CHR$(g2);÷e÷a
2560 LOCATE 8,j-1:PRINT CHR$(127)+CHR$h2
33)+CHR$(127);÷e÷b2570 NEXT j÷e÷a2580 LO
CATE 20,16:PRINT CHR$(127)+CHR$(233)+CHR
$(127);÷e÷a2590 PEN 3÷e÷b2600 FOR i=‖c
P464ORACLE 464 Mon10 Feb C4 1715:41
‖F220E216‖a18moon.lis‖i25BASIC7Amstrad20
TO 28 STEP 2:LOCATE i,24:PRINT CHR$(g3)
;:NEXT i÷e÷b2610 LOCATE 28,23:PRINT CHR$
(g3);÷e÷b2620 LOCATE 20,15:PRINT CHR$h25
2)+CHR$h253)+CHR$(254);÷e÷b2630 PEN 1÷e÷
b2640 LOCATE 30,22:PRINT" ";÷e÷b2650 LOC
ATE 1,1:PRINT"press space bar to continu
e"÷e÷b2660 LOCATE 20,4:PRINT"FUEL BASE--
-----";÷e÷b2670 LOCATE 21,22:PRINT"BUNKE
R";÷e÷b2680 LOCATE 29,23:PRINT"----STORE
S";÷e÷b2690 LOCATE 11,11:PRINT"------TOW
ER";÷e÷b2700 IF INKEY(47) THEN 2700÷e÷b2
710 GOSUB 2740÷e÷b2720 RETURN÷e÷b2730 RE
M÷e÷b2740 REM ***** regenerate screen **
****÷e÷b2750 CLS:GOSUB 4060:REM scene se
t up÷e÷b2760 GOSUB 3200:REM panel set up
÷e÷b2770 GOSUB 154p:REM panel display÷e÷
b2780 FOR i=1 TO 40:FOR j=2 TO 25÷e÷b279
0 ON screen←i,j→ GOTO 2810,2820,2830÷e÷b
2800 GOTO 2840÷e÷b2810 PEN 2:LOCATE i,j:
PRINT CHR$(g2);:GOTO 2840÷e÷a2820 oxt=oa
jx:oyt=objy:objx=i:objy=j:GOSUB 2350:obj
x=oxt:objy=oyt:GOTO 2840÷e÷b2830 PEN‖c
P464ORACLE 464 Mon10 Feb C4 1710:44
‖F220F216‖a18moon.lis‖i25BASIC7Amstrad 3
:LOCATE i,j:PRINT CHR$(g3);÷e÷a2840 NEXT
j:NEXT i÷e÷b2850 PEN 3:GOSUB 1320÷e÷b28
60 RETURN÷e÷b2870 REM÷e÷b2880 REM *** en
gine sound sub ******÷e÷b2890 IF engines
=1 THEN SOUND 2,tone,50,4÷e÷b2900 IF yel
low=0 AND orange=0 THEN RETURN÷e÷a2910 I
F alarmdelay>0 THEN alarmdelay=alarmdela
y-1:RETURN ELSE alarmdelay=3÷e÷b2920 IF
yellow=1 THEN SOUND 4,400,50,12:SOUND 4,
300,50,12 ELSE SOUND 4,200,50,13:SOUND 4
,100,50,12÷e÷b2930 RETURN÷e÷b2940 REM÷e÷
b2950 REM ***** refueling *****÷e÷b2960
IF fuel<maxfuel THEN fuel=fuel+100 ELSE
SOUND 1,150,5,13÷e÷b2970 GOSUB 3000÷e÷a2
980 RETURN÷e÷b2990 REM÷e÷b3000 REM ****
fuel gauge filling *****÷e÷b3010 PEN 1:L
OCATE 7,1:PRINT STRING$(INT(fuel*5/maxfu
el),CHR$(154));÷e÷b3020 RETURN÷e÷b3030 R
EM÷e÷b3040 REM **** fuel gauge emptying
*****÷e÷b3050 PEN 1:LOCATE 7,1÷e÷b3060 I
F fuel=0 THEN PRINT SPACE$(5);:G/TO 3180
÷e÷b3070 ON fuel/maxfuel*10 GOTO 308‖c
P464ORACLE 464 Mon10 Feb C4 1710:18
‖F221p216‖a18moon.lis‖i25BASIC7Amstrad0,
3090,3100,3110,3120,3130,3140,3150,3160,
3170÷e÷b3080 PRINT CHR$(255)+SPACE$(4);:
GOTO 3180÷e÷b3090 PRINT CHR$(154)+SPACE$
(4);:GOTO 3180÷e÷b3100 PRINT CHR$(154)+C
HR$(255)+SPACE$(3);:GOTO 3180÷e÷b3110 PR
INT STRING$(2,CHR$(154))+SPACE$(3);:GOTO
3180÷e÷b3120 PRINT STRING$(2,CHR$(154))
+CHR$(255)+SPACE$(2);:GOTO 3180÷e÷b3130
PRINT STRING$(3,CHR$(154))+SPACE$(2);:GO
TO 3180÷e÷b3140 PRINT STRING$(3,CHR$(154
))+CHR$(255)+SPACE$(1);:GOTO 3180÷e÷b315
0 PRINT STRING$(4,CHR$(154))+SPACE$(1);:
GOTO 3180÷e÷b3160 PRINT STRING$(4,CHR$(1
54))+CHR$(255);:GOTO 3180÷e÷b3170 PRINT
STRING$(5,CHR$(154));÷e÷b3180 RETURN÷e÷a
3190 REM÷e÷b3200 REM ***** panel set up
*****÷e÷b3210 PEN 2:LOCATE 2,1:PRINT"FUE
L";÷e÷b3220 LOCATE 13,1:PRINT"ENG";÷e÷b3
230 LOCATE 19,1:PRINT"GRABS";÷e÷b3240 LO
CATE 27,1:PRINT"ALARM";÷e÷b3250 RETURN÷e
÷b3260 REM÷e÷b3270 REM *** stranded dela
y ****÷e÷b3280 IF timestrand>0 THEN ‖c
P464ORACLE 464 Mon10 Feb C4 1711:11
‖F2211216‖a18moon.lis‖i25BASIC7Amstradtj
mestrand=timestrand-1 ELSE done=1÷e÷b329
0 RETURN÷e÷b3300 REM÷e÷b3310 REM ***** d
isplay scores ********÷e÷b3320 CLS:CALL
&BB03÷e÷b3330 INPUT "what is your name "
;name$:name$=LEFT$(name$,9):CLS÷e÷b3340
FOR i=10 TO 1 STEP -1÷e÷b3350 IF scoret←
i→ > score THEN NEXT i:G/TO 3410÷e÷b3360
FOR j=i TO 1 STEP -1÷e÷b3370 tempscore=
scoret←j→:tempname$=namet$←j→÷e÷a3380 sc
oret←j→=score:namet$←j→=name$÷e÷b3390 sc
ore=tempscore:name$=tempname$÷e÷b3400 NE
XT j÷e÷b3410 PRINT" name"SPACE$(7);"scor
e":PRINT÷e÷b3420 FOR i=10 TO 1 STEP -1÷e
÷b3430 PRINT " ";namet$←i→,scoret←i→÷e÷a
3440 NEXT i÷e÷b3450 GOSUB 4420÷e÷b3460 R
ETURN÷e÷b3470 REM÷e÷b3480 REM ******* sc
oring *********÷e÷b3490 PEN 1:FOR i=19 T
O 29:FOR j=21 TO 24÷e÷b3500 IF screen←i,
j→=3 THEN score=score+10÷e÷b3510 NEXT j:
NEXT i÷e÷b3520 CLS:PRINT"For moving stor
es you scored ";score:PRINT÷e÷a3530 'O
R i=6 TO 12 STEP 3÷e÷b3540 IF screen‖c
P464ORACLE 464 Mon10 Feb C4 1701:05
‖F2212216‖a18moon.lis‖i25BASIC7Amstrad←i
,24→=1 THEN score2=score2+2÷e÷b3550 NEXT
i÷e÷b3560 IF score2<6 THEN score1=score
2:GOTO 3670 ELSE score1=score1+score2:sc
ore2=0÷e÷b3570 FOR i=6 TO 10 STEP 4÷e÷b3
580 IF screen←i,23→=14 AND screen←i+1,23
→=2 AND screen←i+2,23→=14 THEN score2=sc
ore2+6÷e÷b3590 NEXT i÷e÷b3600 score1=sco
re1+score2:IF score2<12 THEN 3670 ELSE s
coref=1÷e÷b3610 IF screen←9,23→=1 THEN s
core1=score1+2 ELSE 3670÷e÷b3620 IF scor
ef=0 THEN 3670÷e÷b3630 FOR j=22 TO 8 STE
P -2÷e÷b3640 IF screen←9,j→=1 THEN score
1=score1+2 ELSE 3670÷e÷b3650 IF screen←8
,j-1→=14 AND screen←9,j-1→=2 AND screen←
10,j-1→=14 THEN score1=score1+6 ELSE 367
0÷e÷b3660 NEXT j÷e÷b3670 score=score+sco
re1÷e÷b3680 PRINT"For work on tower you
scored ";score1:PRINT÷e÷b3690 IF score
1=84 THEN PRINT"For finishing tower you
scored 300":PRINT:score=score+300÷e÷b37
00 IF shipend=1 THEN PRINT"For destroyin
g ship you scored 0" ELSE score=sco‖c
P464ORACLE 464 Mon10 Feb C4 1711:18
‖F2213216‖a18moon.lis‖i25BASIC7Amstradre
+100:PRINT"For saving ship you scored";S
PACE$(6);"100" ÷e÷b3710 PRINT:PRINT:PRIN
T"Your total score is";SPACE$(12);score÷
e÷b3720 GOSUB 4420÷e÷b3730 RETURN÷e÷b374
0 REM÷e÷b3750 REM ******* ship destroyed
******÷e÷b3760 xe=x:ye=y:GOSUB 1810:GOS
UB 4460:CLS:PEN 1÷e÷b3770 IF fuel=0 THEN
PRINT" Your ship ran out of fuel and th
en":PRINT:PRINT"crashed.":RETURN÷e÷b3780
IF objectexplode=1 THEN PRINT"You dropp
ed an object, it exploded and":PRINT:PRI
NT"the radiation destroyed your ship.":R
ETURN÷e÷b3790 PRINT"You crashed your shi
p."÷e÷b3800 RETURN÷e÷b3810 REM÷e÷a3820 R
EM ****** ship safe ******÷e÷b3830 PEN 1
:IF x<19 OR x>28 OR y<21 THEN outside=1:
GOTO 3910÷e÷b3840 FOR i=17 TO 30÷e÷b3850
IF screen←i,20→<rock OR screen←i,25→<ro
ck THEN 3910÷e÷b3860 NEXT i÷e÷b3870 FOR
j=20 TO 25÷e÷b3880 IF screen←17,j→<rock
OR screen←30,j→<rock THEN 3910÷e÷b3890 N
EXT j÷e÷b3900 IF count=0 THEN CLS:PR‖c
P464ORACLE 464 Mon10 Feb C4 1711:11
‖F2214216‖a18moon.lis‖i25BASIC7AmstradIN
T"Congratulations your ship survived the
":PRINT:PRINT"solar flares.":RETURN ELSE
RETURN÷e÷b3910 shipend=1:xe=x:ye=y:GOSU
B 1810:CLS:PEN 1÷e÷b3920 IF outside=1 TH
EN PRINT "Your ship was caught outside t
he bunker":PRINT:PRINT"when the solar fl
are occurred and so was":PRINT"destroyed
.":RETURN÷e÷b3930 PRINT"The bunker door
was open when the solar":PRINT:PRINT"fla
re occurred and so your ship was":PRINT:
PRINT"destroyed."÷e÷b3940 RETURN÷e÷b3950
REM÷e÷b3960 REM ***** door ******÷e÷b39
70 IF door=1 THEN 4000÷e÷b3980 IF y<22 O
R y>23 OR x<29 OR x>31 THEN IF screen←30
,22→=0 AND screen←30,23→=0 THEN 4000÷e÷b
3990 RETURN÷e÷b4000 GOSUB 4380:door=door
*-1÷e÷b4010 IF door=1 THEN fills=143:fil
la=14 ELSE fills=32:filla=0÷e÷b4p20 scre
en←30,22→=filla:screen←30,23→=filla÷e÷b4
030 PEN 1:LOCATE 30,22:PRINT CHR$(fills)
;:LOCATE 30,23:PRINT CHR$(fills);÷e÷a404
0 RETURN÷e÷b4050 REM÷e÷b4060 REM ***‖c
P464ORACLE 464 Mon10 Feb C4 1712:15
‖F2215216‖a18moon.lis‖i25BASIC7Amstrad**
scene set up ******* ÷e÷b4070 PEN 1÷e÷b
4080 FOR i=1 TO 40:screen←i,1→=rock:scre
en←i,25→=rock:LOCATE i,25:PRINT CHR$(g1)
;:NEXT i÷e÷b4090 FOR j=15 TO 25:screen←1
,j→=rock:LOCATE 1,j:PRINT CHR$(g1);:NEXT
j÷e÷b4100 FOR i=2 TO 25:screen←1,i→=roc
k:screen←40,i→=rock:LOCATE 40,i:PRINT CH
R$(g1);:NEXT i÷e÷b4110 FOR i=36 TO 39:FO
R j=2 TO 15:screen←i,j→=rock:LOCATE i,j:
PRINT CHR$(g1);:NEXT j:NEXT i÷e÷b4120 FO
R i=27 TO 32:FOR j=6 TO 2p:screen←i,j→=r
ock:LOCATE i,j:PRINT CHR$(g1);:NEXT j:NE
XT i÷e÷b4130 FOR j=16 TO 18:LOCATE 32,j:
PRINT CHR$(32);:screen←32,j→=0:NEXT j÷e÷
b4140 LOCATE 33,19:PRINT CHR$(g1)+CHR$(g
1)+CHR$(g1);:screen←33,19→=rock:screen←3
4,19→=rock:screen←35,19→=rock:screen←30,
22→=0:screen←30,23→=0÷e÷b4150 FOR j=8 TO
24:LOCATE 2,j:PRINT CHR$(g1);:screen←2,
j→=rock:NEXT j÷e÷a4160 LOCATE 16,24:PRIN
T CHR$(g1);:screen←16,24→=rock÷e÷b4170 F
OR j=19 TO 24:LOCATE 17,j:PRINT CHR$‖c
P464ORACLE 464 Mon10 Feb C4 1712:18
‖F2216216‖a18moon.lis‖i25BASIC7Amstrad(g
1);:screen←17,j→=rock:NEXT j÷e÷b4180 LOC
ATE 17,18:PRINT CHR$(223);:screen←17,18→
=rock÷e÷b4190 FOR i=18 TO 26:LOCATE i,20
:PRINT CHR$(g1);:screen←i,20→=rock:NEXT
i÷e÷b4200 LOCATE 18,21:PRINT CHR$(220);:
screen←18,21→=rock÷e÷b4210 LOCATE 18,19:
PRINT CHR$(223);:screen←18,19→=rock÷e÷a4
220 LOCATE 26,19:PRINT CHR$(222);:screen
←26,19→=rock÷e÷b4230 LOCATE 15,24:PRINT
CHR$(222);:screen←15,24→=rock÷e÷a4240 LO
CATE 16,23:PRINT CHR$(222);:screen←16,23
→=rock÷e÷b4250 LOCATE 18,24:PRINT CHR$h2
23);:screen←18,24→=rock÷e÷b4260 LOCATE 3
0,21:PRINT CHR$(g1);:screen←30,21→=rock÷
e÷b4270 LOCATE 29,21:PRINT CHR$(221);:sc
reen←29,21→=rock÷e÷b4280 LOCATE 29,24:PR
INT CHR$(222);:screen←29,24→=rock÷e÷b429
0 LOCATE 30,24:PRINT CHR$(g1);:screen←30
,24→=rock÷e÷b4300 LOCATE 6,25:PRINT CHR$
(143);:LOCATE 9,25:PRINT CHR$(143);:LOCA
TE 12,25:PRINT CHR$(143);÷e÷a4310 IF doo
r=1 THEN PEN 1:door=-1:GOSUB 3960÷e÷a‖c
P464ORACLE 464 Mon10 Feb C4 1712:12
‖F2217217‖a18moon.lis‖i25BASIC7Amstrad43
20 PEN 3÷e÷b4330 FOR i=36 TO 39:LOCATE i
,3:PRINT" ";:screen←i,3→=0:NEXT i÷e÷a434
0 LOCATE 36,4:PRINT CHR$(143)+CHR$(233)+
CHR$(143);÷e÷b4350 FOR i=36 TO 38:screen
←i,4→=13:NEXT i:screen ←37,4→=12:LOCATE
39,4:PRINT" ";:screen←39,4→=12÷e÷b4360 R
ETURN÷e÷b4370 REM÷e÷b4380 REM ******* de
lay *******÷e÷b4390 FOR del=1 TO 50:NEXT
del:SOUND 1,200,10,13÷e÷b4400 RETURN÷e÷
b4410 REM÷e÷b4420 REM **** space bar ***
*÷e÷b4430 LOCATE 1,25:PRINT"Press space
bar to continue"÷e÷b4440 IF INKEY(47) TH
EN 4440 ELSE CLS:RETURN÷e÷b4450 REM÷e÷a4
460 REM ***** shut down *****÷e÷a4470 en
gines=-1:yellow=0:orange=0÷e÷a4480 RETUR
N÷e÷b÷r‖d