User Tools

Site Tools


en:santa_s_grotto

SANTA'S GROTTO

Info

Author Phil Lawson
Compatibility Amstrad PCW 8256 / 8512 / 9512
Year 1987
Gender Arcade
Controls Keyboard
Language English
Status Preserved

Screenshots

Description

It's Christmas Eve and poor Santa Claus can't remember where all the presents are. This means that you, as his most faithful helper, have to search for them in his network of underground caves.

In addition to finding and collecting 220 gifts, you also have to clear the place of 130 tons of snow that got in while the roof was under repair.

To make matters worse, the Society Against Enjoying Christmas is booby-trapped all over the place with kamikaze snowballs and puddles of water covered in thin ice.

Snowballs will do their best to crush you as they fall from above, while stepping on ice will mean you'll fall into the icy water below. Either way, you lose a life, and since you only have three to start with, you better watch out.

Just before you start your quest, Santa Claus appears and tells you that the magical snowmen that live in the cave will help you against the ice pools, but there is also an unpleasant side effect. He can't remember what that is, so you'll have to find out for yourself. He also mentions that snowballs can be pushed into an empty space allowing access to other areas.

At the start of the game, you will be prompted to enter the keys you want to use for left, right, up, down, and exit. The machine code and screen data are set and the game will start. If you find yourself in an impossible situation, the exit key will cause you to leave the game.

An arcade game with brilliant graphics. Let's have fun.

Listing

  • Listing - SANTA.BAS
10 'KERSTMAN.003 (SANTA'S GROTTO). Auteur: Phil Lawson. Computing with the Amstrad PCW
20 'Bewerkt en vertaald voor Utilities Disk 3
30 PRINT CHR$(27)+"E"+CHR$(27)+"H":PRINT "**************************************";CHR$(27)+"p";" KERSTMAN.003 ";CHR$(27)+"q";"************************************"
40 PRINT "****************************************************************************************"
50 PRINT:PRINT" Een arcade-game met schitterende grafische weergave. Zie voor spelregels de handleiding.":PRINT" ":PRINT:PRINT" Veel plezier...":PRINT" "; 
60 PRINT" ":PRINT" ":PRINT:PRINT" ":PRINT:PRINT" ";  
70 PRINT" ":PRINT:PRINT:PRINT CHR$(27)+"p";"Press SPACE BAR to start.";CHR$(27)+"q"
80 WHILE INKEY$ <>"":WEND:WHILE INKEY$ <>" ":WEND
90 REM        SANTA'S GROTTO
100 REM       by Phil Lawson
110 REM (c) Computing With The Amstrad
120 REM-------------- PCW ------------
130 esc$=CHR$(27):cl$=esc$+"E"+esc$+"H"
140 DEF FNat$(x%,y%,a$)=esc$+"Y"+CHR$(32+y%)+CHR$(32+x%)+a$
150 PRINT esc$+"f":PRINT cl$:RESTORE 1180
160 FOR a=1 TO 5:READ a$
170 PRINT"Your key for: ";a$,
180 d$(a)="":WHILE d$(a)="":d$(a)=INKEY$
190 WEND:d$(a)=UPPER$(d$(a)):t=0
200 IF a=1 THEN 230 ELSE FOR b=1 TO a-1
210 IF d$(a)=d$(b) THEN t=-1
220 NEXT b:IF t THEN 180
230 PRINT d$(a):NEXT a
240 PRINT "Laad data... geduld a.u.b."
250 MEMORY &HDFFF:RESTORE 1880
260 addr=&HE719:lin=1780:READ a$,c$
270 WHILE a$<>"END":lin=lin+10
280 chk=0:FOR a=1 TO 12
290 value=VAL("&H"+MID$(a$,a*2-1,2))
300 chk=chk+value
310 POKE addr,value:addr=addr+1:NEXT
320 IF HEX$(chk,3)<>c$ THEN PRINT"Fout in regel ";lin:END
330 READ a$,c$:WEND:addr=57350!
340 FOR a=1 TO 4
350 POKE addr+a,ASC(d$(a)):NEXT
360 lives=3:screen=&HE719
370 PRINT cl$:CALL screen:GOSUB 1060
380 PRINT FNat$(29,8,"Schermbewerking")
390 PRINT FNat$(30,12,"Even geduld..")
400 FOR a=&HE00B TO &HE5F2:POKE a,255
410 NEXT:RESTORE 1510:FOR a=1 TO 288
420 READ x:POKE &HE5F2+a,x:NEXT
430 addr=57487!:RESTORE 1200
440 PRINT esc$+"p":FOR a=1 TO 30
450 READ a$
460 FOR b=1 TO 30:v=0:t$=MID$(a$,b,1)
470 IF t$="W" THEN v=0:GOTO 560
480 IF t$="S" THEN v=7:GOTO 560
490 IF t$="B" THEN v=2:GOTO 560
500 IF t$="G" THEN v=4:GOTO 560
510 IF t$="I" THEN v=5:GOTO 560
520 IF t$="P" THEN v=1:GOTO 560
530 IF t$="M" THEN v=6:GOTO 560
540 IF t$="X" THEN v=8:maddr=addr
550 IF v=9 THEN PRINT"Fout in data":END
560 POKE addr,v:addr=addr+1:NEXT
570 addr=addr+12:NEXT
580 WHILE INKEY$<>"":dum$=INKEY$:WEND
590 t1=INT(maddr/256):t2=maddr-(t1*256)
600 POKE &HE004,t2:POKE &HE005,t1
610 POKE &HE718,3:GOSUB 1090
620 FOR a=&HE713 TO &HE715:POKE a,0:NEXT
630 PRINT FNat$(26,2,"PRESENTS  SNOW  ")
640 speedup=&HE74A:CALL speedup
650 game=&HE752:WHILE lives>0
660 WHILE PEEK(&HE713)=0
670 d$=UPPER$(INKEY$)
680 IF d$="" THEN d$=" "
690 IF d$=d$(5) THEN POKE &HE713,1
700 POKE &HE006,ASC(d$):CALL game
710 gi$=MID$(STR$(PEEK(&HE714)),2)
720 sn$=MID$(STR$(PEEK(&HE715)),2)
730 WHILE LEN(gi$)<3:gi$="0"+gi$:WEND
740 WHILE LEN(sn$)<3:sn$="0"+sn$:WEND
750 IF VAL(gi$)<>gi OR VAL(sn$)<>sn THEN PRINT FNat$(28,4,gi$+SPACE$(7)+sn$)
760 gi=PEEK(&HE714):sn=PEEK(&HE715)
770 IF gi>219 AND sn>129 THEN 880
780 WEND:IF d$=d$(5) THEN lives=1
790 lives=lives-1:POKE &HE713,0
800 WHILE inkeys$<>"":WEND
810 WEND:GOSUB 1060
820 PRINT FNat$(30,10," T O U G H ")
830 PRINT FNat$(30,16,"  LUCK  ")
840 PRINT FNat$(20,26," SPACE = again    : K = stop  ")
850 zz$="":WHILE zz$="":zz$=INKEY$:WEND
860 IF UPPER$(zz$)="K" THEN STOP
870 IF zz$=CHR$(32) THEN PRINT cls$:GOTO 360 ELSE GOTO 850
880 REM spel afgelopen
890 sprint=&HE813:a1=&HE004:a2=&HE005
900 FOR b=57534! TO 57555!
910 POKE a1,b-(INT(b/256))*256
920 POKE a2,INT(b/256):CALL sprint:NEXT
930 FOR b=57555! TO 58605! STEP 42
940 POKE a1,b-(INT(b/256))*256
950 POKE a2,INT(b/256):CALL sprint:NEXT
960 FOR b=58605! TO 58584! STEP -1
970 POKE a1,b-(INT(b/256))*256
980 POKE a2,INT(b/256):CALL sprint:NEXT
990 FOR b=58584! TO 57534! STEP -42
1000 POKE a1,b-(INT(b/256))*256
1010 POKE a2,INT(b/256):CALL sprint:NEXT
1020 GOSUB 1060
1030 PRINT FNat$(30,10," W E L L ")
1040 PRINT FNat$(30,16," D O N E ")
1050 GOTO 840
1060 PRINT CHR$(27)+"p":FOR a=6 TO 27
1070 PRINT FNat$(16,a,STRING$(39," "))
1080 NEXT:PRINT CHR$(27)+"q":RETURN
1090 GOSUB 1060
1100 RESTORE 1170:FOR a=1 TO 6:READ a$
1110 PRINT FNat$(72,(a*2)+5,a$):NEXT
1120 PRINT FNat$(66,4,CHR$(134)+STRING$(16,CHR$(138))+CHR$(140))
1130 FOR a=5 TO 19:PRINT FNat$(66,a,CHR$(133)):PRINT FNat$(83,a,CHR$(133)):NEXT
1140 PRINT FNat$(66,20,CHR$(131)+STRING$(16,CHR$(138))+CHR$(137))
1150 FOR a=1 TO 5:READ a$:PRINT FNat$(70,22+a,d$(a)+" - "+a$):NEXT
1160 key=&HE950:CALL key:RETURN
1170 DATA Wall, Snowball, Present,Snowman,Hole,Snow
1180 DATA Left,Right,Up,Down,Stop
1190 REM data voor display
1200 DATA WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
1210 DATA WBBWBMGWGMBPPWBIIGIBIBBBBBBSBW
1220 DATA WSSISWMWGGWIIWBBIGIMIBBBBBSBSW
1230 DATA WGGIIWIWWPWWIWSSIGISIBBBBSBSPW
1240 DATA WBIIWWMWWPBWIWSIIGISIBBBSBSPPW
1250 DATA WWIIIWGPWPGWIWISSGISIBBSBSPPGW
1260 DATA WBGGIWPPWWGWIWPSSGISIBSBSPPGGW
1270 DATA WSIIIWPGMWGWIWPSSGISISPSPPGGGW
1280 DATA WSGGGWSWSWGWIWBSSGGGWWWWWWWWWW
1290 DATA WSGGGWGWSWGWIWSSSPPPWIIBIBBIIW
1300 DATA WSSSIWGWSWGWSWPPPIIPWIPSPSSGIW
1310 DATA WGGGIWGWSWGWIWGWPIIPWIISIIIGGW
1320 DATA WSSSIWGWSSSWSWIWPPPPWBWSSMIIGW
1330 DATA WSGGGWGWSSSSSWIWGPPBBBWIIIIGPW
1340 DATA WSSSGWGWWWWWWWIWGGPGGGPPPPPPPW
1350 DATA WGGSSWGGGGGBBWIWWWWWPWWWWWWWWW
1360 DATA WBGGSWIBBBIBBWIWGPPBPPPPGBBBBW
1370 DATA WBIIBWIBBBIIIWIWGPSSWIIIPGBBBW
1380 DATA WISSSWIIIIIGGWGWGPBIWIGISSGBBW
1390 DATA WMWWWWPPPPPGGGGWGBIMWIIISSSGBW
1400 DATA WSWSSSSBBBPPPPWWGWWWWWWWWWSSGW
1410 DATA WSSBBBSSSSPPPBBWGSPBBBBBBWSSSW
1420 DATA WSGGGGGPPGGSGIIWWSBBBBBBBWBBSW
1430 DATA WWWWWWWWPWWWWWWWPPGGGGGGGWGGSW
1440 DATA WIBBBBPPPPPBBBBWPSSSXSSSSWPPSW
1450 DATA WIGGGGPWWWBGGGGWPSSSSSSSSWBPSW
1460 DATA WISSSSPSSSSPPPPWPPPPPPPPPWSPGW
1470 DATA WIGGGPPBBBPPGGPWGMBBBBBBBPPGGW
1480 DATA WIWMMWIIIIIWMMWWGISSSSSSSSGGGW
1490 DATA WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
1500 REM Data voor figuren
1510 DATA 223,223,223,0,253,253,253,0
1520 DATA 223,223,223,0,253,253,253,0
1530 DATA 223,223,223,0,253,253,253,0
1540 DATA 223,223,223,0,253,253,253,0
1550 DATA 0,0,0,0,0,0,0,0
1560 DATA 0,0,0,0,0,0,0,0
1570 DATA 0,0,0,0,0,0,0,0
1580 DATA 0,0,0,0,0,0,0,0
1590 DATA 0,7,31,62,117,106,213,234
1600 DATA 0,224,248,188,94,174,87,171
1610 DATA 213,234,117,122,61,31,7,0
1620 DATA 87,175,86,174,92,248,224,0
1630 DATA 0,7,31,62,117,106,213,234
1640 DATA 0,224,248,188,94,174,87,171
1650 DATA 213,234,117,122,61,31,7,0
1660 DATA 87,175,86,174,92,248,224,0
1670 DATA 0,0,0,6,9,8,4,3
1680 DATA 0,0,0,48,72,136,144,224
1690 DATA 63,48,48,63,48,48,63,0
1700 DATA 254,134,134,254,134,134,254,0
1710 DATA 0,60,127,127,127,63,63,31
1720 DATA 0,60,254,254,254,252,252,248
1730 DATA 31,63,63,127,127,127,60,0
1740 DATA 248,252,252,254,254,254,60,0
1750 DATA 7,8,18,16,8,7,15,6
1760 DATA 224,16,72,8,16,224,248,28
1770 DATA 33,64,65,64,65,64,32,31
1780 DATA 132,2,130,2,130,2,4,248
1790 DATA 170,85,170,85,170,85,170,85
1800 DATA 170,85,170,85,170,85,170,85
1810 DATA 170,85,170,85,170,85,170,85
1820 DATA 170,85,170,85,170,85,170,85
1830 DATA 3,12,18,16,12,3,1,127
1840 DATA 192,48,72,8,48,192,128,254
1850 DATA 7,7,7,7,6,6,6,31
1860 DATA 224,224,224,224,96,96,96,120
1870 REM Machinetaal
1880 DATA CD3CE711982C2100B6016801,406
1890 DATA 3E20F5D53E0873237223133D,3E9
1900 DATA 20F8D1EB09EBF13D20ECC9C1,78C
1910 DATA CD5AFCE900C9C1CD5AFCE000,799
1920 DATA C926062E08CD43E7C9CD13E8,5B3
1930 DATA CD5FE7CD82E7CD8FE8C93A06,796
1940 DATA E00100002107E0BE20020BC9,39D
1950 DATA 23BE200203C923BE200401D6,3AB
1960 DATA FFC923BEC0012A00C978B1C8,64E
1970 DATA 2A04E02202E0CD37E909FE00,506
1980 DATA C8FE012825FE072814FE0428,47F
1990 DATA 16FE022824FE032820FE0528,3D6
2000 DATA 2EFE062847DD2115E71804DD,494
2010 DATA 2114E7DD340036082204E0AF,420
2020 DATA ED423601C979FE2AC8FED6C8,734
2030 DATA 097EEE01C03602ED4218E3AF,547
2040 DATA ED423C77093213E7CD3DE921,52B
2050 DATA 18E73528092A02E02204E036,3AD
2060 DATA 08C9F1C9E53601218FE011EC,634
2070 DATA 047EFE042804FE052003EE01,3C5
2080 DATA 771B237AB320EEE118A8F3CD,651
2090 DATA 3CE7DD215070DDE52A04E001,5B2
2100 DATA AF00AFED4206090E0FE57EFE,51A
2110 DATA 082836FEFF20023E01878787,459
2120 DATA 8787FD21F3E55F1600FD19C5,654
2130 DATA CD72E81170FADD19C1E1230D,66A
2140 DATA 20D7111B0019DDE111A005DD,48D
2150 DATA 191002FBC9DDE518C2FD21F3,69C
2160 DATA E6C5CD72E8360818D6FDE506,6E6
2170 DATA 020E10FD7E00DD7700FD23DD,4EC
2180 DATA 230D20F311C002DD1910EAFD,503
2190 DATA E1C92175E511EC047E3D3D28,546
2200 DATA 2B3D280B2B1B7AB320F2C936,41F
2210 DATA 0318F5012A00CD37E9FE0828,456
2220 DATA 41FE012804360218E33E0309,2E9
2230 DATA 77EE02ED427718D8012A00CD,4F5
2240 DATA 37E93D28D63D20CCAF3217E7,563
2250 DATA 3A16E73D280CCD10E93A17E7,4A6
2260 DATA A7CC2CE918B6CD2CE93A17E7,670
2270 DATA A7CC10E918AA3E013213E777,510
2280 DATA 093602CD3DE92118E7352809,3BA
2290 DATA 2A02E02204E03608C9D1C923,4D6
2300 DATA 7E2B3DC0012B00CD37E9FE01,4BE
2310 DATA C03217E777093602AF3216E7,486
2320 DATA ED42C92B7E23FE01C0012900,4AD
2330 DATA 18E109AF7EED42C94E061036,4C1
2340 DATA 08D9CD13E8D971D9CD13E8D9,76D
2350 DATA 10F1C9CD3CE7FD21F3E5DD21,7AE
2360 DATA 306CCD72E8114000FD19CD72,569
2370 DATA E80604112000FD19FD19D5C5,4E9
2380 DATA CD72E8C1D110F5C900000000,587
2390 DATA END,END

Controls

               UP = USER DEFINED
             DOWN = USER DEFINED
            RIGHT = USER DEFINED
             LEFT = USER DEFINED
       LEAVE GAME = USER DEFINED

Loading the program

 1.- Insert the CP/M disc on side 2
 2.- Write BASIC and wait for it to load
 3.- Remove the CP/M disk and insert the disk containing the Santa's Grotto game
 4.- Type run "Santa" and press the "ENTER" key

Extras

  • Listing of the program in a large-circulation magazine of the time

santas_grotto_01.jpg santas_grotto_02.jpg

Download

Video

en/santa_s_grotto.txt · Last modified: 2022/06/29 15:28 by jevicac