User Tools

Site Tools




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



Welcome to the car park, where the goal of the game is to drive to the 5th floor and park your car. Its handling is detailed in the “Controls” section of this same page.

Watch out for the ghost car that is patrolling the city. We can hide from it with the exhaust gases while you drive. While we circulate we will go through secret switches that will open the door of the garages on the floor. These will reveal the contents of the garage spaces. We must enter each square and collect the objects that they show us.

An up arrow “↑” is the one that takes us to the next floor, but as long as we have obtained the key first, but before collecting the key we will have to collect all the objects that appear inside the garages.

The other parking spaces look the same, but their content varies. Some will give you extra lives, some will give you limited shield against the ghost car, some will give you more points. Remember that we must collect all the objects found in the garages before collecting the key.


  • Listing - CAR.BAS
10 OPTION RUN:GOSUB 1470:yes=-1:WHILE yes:play=-1:lives=5:floor=1:score=0:PRINT cls$
30 PRINT e$"e"e$"1":MEMORY highmem!:RUN"menu
40 go=-1:key=0:sc=0:shield=0:cx=12:cy=4:CALL pr(cx,cy,caru$)
50 gx=72:gy=22:POKE pen,85:CALL pr(gx,gy,caru$):POKE pen,255
70 IF i$="o" THEN GOSUB 180
80 IF i$="p" THEN GOSUB 210
90 IF i$="s" THEN GOSUB 240
100 IF i$="x" THEN GOSUB 270
110 IF i$="q" THEN go=0:play=0:lives=0
120 GOSUB 340:IF shield=0 THEN IF cx=gx AND cy=gy THEN GOSUB 460
130 IF shield>0 THEN shield=shield-1:GOSUB 150
150 a$=STR$(shield):a$=RIGHT$(a$,LEN(a$)-1):a$=LEFT$("000",3-LEN(a$))+a$
160 POKE paper,85:x=62:y=25:CALL pr(x,y,a$):POKE paper,0:RETURN
170 REM Move car
180 IF a(cx-2,cy,0)=1 OR a(cx-1,cy,0)=1 THEN RETURN
190 POKE pen,85:CALL pr(cx,cy,b$):POKE pen,255
200 c=1:c$=carl$:cx=cx-2:CALL pr(cx,cy,c$):GOSUB 300:RETURN
210 IF a(cx+2,cy,0)=1 OR a(cx+1,cy,0)=1 THEN RETURN
220 POKE pen,85:CALL pr(cx,cy,b$):POKE pen,255
230 c=2:c$=carr$:cx=cx+2:CALL pr(cx,cy,c$):GOSUB 300:RETURN
240 IF a(cx,cy-1,0)=1 THEN RETURN
250 POKE pen,85:CALL pr(cx,cy,b$):POKE pen,255
260 c=3:c$=caru$:cy=cy-1:CALL pr(cx,cy,c$):GOSUB 300:RETURN
270 IF a(cx,cy+1,0)=1 THEN RETURN
280 POKE pen,85:CALL pr(cx,cy,b$):POKE pen,255
290 c=4:c$=card$:cy=cy+1:CALL pr(cx,cy,c$):GOSUB 300:RETURN
300 a=a(cx,cy,1):IF a>2 AND a<20 THEN GOSUB 590
310 IF a>20 THEN ON a-20 GOSUB 910,930,1000,1010,1020
320 a(cx,cy,1)=2:RETURN
330 REM Move ghost car
340 POKE pen,85:IF a(gx,gy,0)=2 THEN g=INT(RND*4)+1
350 IF a(gx,gy,1)=2 THEN g$=b$ELSE g$=sp$
360 ON g GOSUB 370,390,410,430:POKE pen,255:RETURN
370 IF a(gx,gy-1,0)=1 THEN RETURN
380 CALL pr(gx,gy,g$):gy=gy-1:CALL pr(gx,gy,caru$):RETURN
390 IF a(gx,gy+1,0)=1 THEN RETURN
400 CALL pr(gx,gy,g$):gy=gy+1:CALL pr(gx,gy,card$):RETURN
410 IF a(gx-1,gy,0)=1 OR a(gx-2,gy,0)=1 THEN RETURN
420 CALL pr(gx,gy,g$):gx=gx-2:CALL pr(gx,gy,carl$):RETURN
430 IF a(gx+1,gy,0)=1 OR a(gx+2,gy,0)=1 THEN RETURN
440 CALL pr(gx,gy,g$):gx=gx+2:CALL pr(gx,gy,carr$):RETURN
450 REM Car and ghost collide
460 PRINT bleep$;:lives=lives-1:cx=12:cy=4:CALL pr(cx,cy,caru$):GOSUB 480
470 IF lives=0 THEN go=0:play=0:GOSUB 1070:RETURN ELSE RETURN
480 x=64:y=27:a$=STR$(lives):a$=RIGHT$(a$,LEN(a$)-1):IF LEN(a$)<2 THEN a$="0"+a$
490 POKE paper,85:CALL pr(x,y,a$):POKE paper,0:RETURN
500 REM End-of-game messages
510 PRINT cls$:POKE double,1:IF floor=6 THEN a$="WELL DONE!"ELSE a$="Hard luck!
520 x=10:y=6:CALL pr(x,y,a$)
530 IF floor=6 THEN a$="You have parked your car!"ELSE a$="No lives left!
540 y=10:CALL pr(x,y,a$):y=14:a$="SCORE:"+STR$(score)+".":CALL pr(x,y,a$)
550 y=20:a$="Play again?  (Y/N)":CALL pr(x,y,a$)
560 WHILE i$<>"Y"AND i$<>"N":i$=UPPER$(INKEY$):WEND
580 REM Expose squares
590 PRINT bleep$;:POKE pen,0:POKE paper,255
600 z=INT(RND*15)+1:IF square(z)=1 THEN 600
610 IF z=1 THEN x=14:y=5
620 IF z=2 THEN x=26:y=5
630 IF z=3 THEN x=38:y=5
640 IF z=4 THEN x=50:y=5
650 IF z=5 THEN x=62:y=5
660 IF z=6 THEN x=14:y=11
670 IF z=7 THEN x=26:y=11
680 IF z=8 THEN x=38:y=11
690 IF z=9 THEN x=50:y=11
700 IF z=10 THEN x=62:y=11
710 IF z=11 THEN x=14:y=17
720 IF z=12 THEN x=26:y=17
730 IF z=13 THEN x=38:y=17
740 IF z=14 THEN x=50:y=17
750 IF z=15 THEN x=62:y=17
760 a=x+2:a$=SPACE$(3):FOR b=y+1 TO y+3:CALL pr(a,b,a$):NEXT:POKE pen,255:POKE paper,0
770 IF z MOD 4=0 THEN PRINT FNat$(x,y+2," "):FOR a=0 TO 4:a(x+a,y+2,0)=0:NEXT
780 IF z MOD 4=1 THEN PRINT FNat$(x+9,y+2," "):FOR a=3 TO 9:a(x+a,y+2,0)=0:NEXT
790 IF z MOD 4=2 THEN a=x+4:CALL pr(a,y,sp$):FOR b=0 TO 2:a(x+4,y+b,0)=0:NEXT
800 IF z MOD 4=3 THEN a=x+4:b=y+4:CALL pr(a,b,sp$):FOR b=2 TO 4:a(x+4,y+b,0)=0:NEXT
810 POKE pen,0:POKE paper,255:x=x+4:y=y+2
820 ON a(cx,cy,1)-2 GOSUB 840,860,870,870,880,890,890,890,890,890,890,890,890,890,890
830 square(z)=1:POKE pen,255:POKE paper,0:RETURN
840 IF floor<5 THEN u$="^"ELSE u$=p$
850 CALL pr(x,y,u$):a(x,y,1)=21:RETURN
860 CALL pr(x,y,key$):a(x,y,1)=22:RETURN
870 CALL pr(x,y,caru$):a(x,y,1)=23:RETURN
880 CALL pr(x,y,caru$):a(x,y,1)=24:RETURN
890 CALL pr(x,y,caru$):a(x,y,1)=25:RETURN
900 REM Car triggers squares
910 IF key THEN PRINT bleep$;:floor=floor+1:GOSUB 1030:go=0:GOSUB 1070:IF floor=6 THEN play=0:RETURN ELSE RETURN
920 POKE pen,0:POKE paper,255:CALL pr(cx,cy,u$):GOSUB 950:RETURN
930 IF sc=10 THEN PRINT bleep$;:key=-1:GOSUB 1030:score=score+250:GOSUB 1050:RETURN
940 POKE pen,0:POKE paper,255:CALL pr(cx,cy,key$)
950 POKE paper,0:POKE pen,255:PRINT bleep$;:ON c GOSUB 960,970,980,990:CALL pr(cx,cy,c$):RETURN
960 cx=cx+2:RETURN
970 cx=cx-2:RETURN
980 cy=cy+1:RETURN
990 cy=cy-1:RETURN
1000 PRINT bleep$:shield=shield+175:GOSUB 1030:RETURN
1010 PRINT bleep$:lives=lives+2:GOSUB 480:GOSUB 1030:RETURN
1020 PRINT bleep$;:sc=sc+1:score=score+100:GOSUB 1050:GOSUB 1030:RETURN
1030 a$=SPACE$(3):a=cx-2:FOR b=cy-1 TO cy+1:CALL pr(a,b,a$):NEXT
1040 CALL pr(cx,cy,c$):RETURN
1050 x=28:y=27:a$=STR$(score):a$=RIGHT$(a$,LEN(a$)-1):a$=LEFT$("0000",4-LEN(a$))+a$
1060 POKE paper,85:CALL pr(x,y,a$):POKE paper,0:RETURN
1070 FOR a=0 TO 2000:NEXT:RETURN
1080 REM Draw screen
1090 POKE paper,85:POKE double,0:POKE pen,255:IF floor=1 THEN GOSUB 1100:GOSUB 1190:RETURN ELSE GOSUB 1190:RETURN
1100 x=11:a$=STRING$(62,154)
1110 a1$=CHR$(150)+a$+CHR$(156):PRINT FNat$(x,0,a1$);FNat$(x,24,a1$);
1120 x1=74:a1$=CHR$(149):PRINT FNat$(x,1,a1$);FNat$(x1,1,a1$);
1130 FOR y=25 TO 27 STEP 2:PRINT FNat$(x,y,a1$);FNat$(x1,y,a1$);:NEXT
1140 a1$=CHR$(151)+a$+CHR$(157):PRINT FNat$(x,26,a1$);
1150 a1$=CHR$(147)+a$+CHR$(153):PRINT FNat$(x,2,a1$);FNat$(x,28,a1$);
1160 a$=SPACE$(4)+carr$+" "+carr$+" C A R   P A R K "+carl$+" "+carl$+SPACE$(4)
1170 x=12:y=1:CALL pr(x,y,a$):a$=" Score:"+SPACE$(12)+"Lives:"+SPACE$(6)
1180 y=27:CALL pr(x,y,a$):GOSUB 480:GOSUB 1050:POKE paper,85:RETURN
1190 a$=" Please wait..."+SPACE$(16):x=12:y=25:CALL pr(x,y,a$):POKE paper,0
1200 a$=CHR$(150):x=11:y=3:PRINT FNat$(x,y,a$);:a(x,y,0)=1
1210 a$=CHR$(154):FOR x=12 TO 73:PRINT FNat$(x,y,a$);:a(x,y,0)=1:NEXT
1220 a$=CHR$(156):PRINT FNat$(x,y,a$);:a(x,y,0)=1
1230 x=11:x1=74:a$=CHR$(149):a1$=SPACE$(62):FOR y=4 TO 22
1240 PRINT FNat$(x,y,a$);FNat$(x+1,y,a1$);FNat$(x1,y,a$);:a(x,y,0)=1:a(x1,y,0)=1:NEXT
1250 a$=CHR$(147):PRINT FNat$(x,y,a$);:a(x,y,0)=1
1260 a$=CHR$(154):FOR x=12 TO 73:PRINT FNat$(x,y,a$);:a(x,y,0)=1:NEXT
1270 a$=CHR$(153):PRINT FNat$(x,y,a$);:a(x,y,0)=1
1280 FOR x=14 TO 62 STEP 12:FOR y=5 TO 17 STEP 6
1290 a$=CHR$(150):PRINT FNat$(x,y,a$);:a(x,y,0)=1
1300 a$=CHR$(154):FOR a=1 TO 8:PRINT FNat$(x+a,y,a$);:a(x+a,y,0)=1:NEXT
1310 a$=CHR$(156):PRINT FNat$(x+a,y,a$);:a(x+a,y,0)=1
1320 a$=CHR$(149):FOR a=1 TO 3:PRINT FNat$(x,y+a,a$);FNat$(x+9,y+a,a$);
1330 FOR b=1 TO 8:a(x+b,y+a,0)=1:NEXT:a(x,y+a,0)=1:a(x+9,y+a,0)=1:NEXT 
1340 a$=CHR$(147):PRINT FNat$(x,y+a,a$);:a(x,y+a,0)=1
1350 a$=CHR$(154):FOR b=1 TO 8:PRINT FNat$(x+b,y+a,a$);:a(x+b,y+a,0)=1:NEXT
1360 a$=CHR$(153):PRINT FNat$(x+b,y+a,a$);:a(x+b,y+a,0)=1:NEXT y,x
1370 FOR x=12 TO 72 STEP 12:FOR y=4 TO 22:a(x,y,1)=1:NEXT y,x
1380 FOR x=12 TO 72 STEP 2:FOR y=4 TO 22 STEP 6:a(x,y,1)=1:NEXT y,x
1390 FOR x=12 TO 72 STEP 12:FOR y=4 TO 22 STEP 6:a(x,y,0)=2:NEXT y,x
1400 FOR a=3 TO 17
1410 x=INT(RND*31)*2+12:y=INT(RND*19)+4:IF a(x,y,1)<>1 THEN 1410
1420 a(x,y,1)=a:NEXT:POKE paper,85
1430 a$=" Floor:"+STR$(floor)+SPACE$(8)+"Shield: 000"+SPACE$(2)
1440 x=12:y=25:CALL pr(x,y,a$):POKE paper,0
1450 FOR a=1 TO 15:square(a)=0:NEXT:RETURN
1460 REM Set up
1470 DEFINT a-z:highmem!=HIMEM:MEMORY &HCFFF:e$=CHR$(27):cls$=e$+"E"+e$+"H"
1480 DEF FNat$(x,y,a$)=e$+"Y"+CHR$(32+y)+CHR$(32+x)+a$
1490 DIM a(74,23,1),square(15)
1500 PRINT cls$e$"f"e$"0";:title$=" * * * C A R   P A R K * * * ":a=LEN(title$)
1510 b=(90-a)/2:PRINT e$"p";FNat$(b,0,SPACE$(a));FNat$(b,1,title$);FNat$(b,2,SPACE$(a));e$"q
1520 PRINT:PRINT TAB(8)"Welcome to the Car Park, where the aim of the game is to drive up to the":PRINT TAB(8)"fifth floor and park your car.":PRINT
1530 PRINT TAB(8)"Steer your vehicle by pressing 'o' to move left":PRINT TAB(39)"'p' to move right":PRINT TAB(39)"'s' to move up and":PRINT TAB(39)"'x' to move down.":PRINT TAB(8)"Press 'q' to quit the game.":PRINT
1540 PRINT TAB(8)"Watch out for the ghost car on patrol.  He is easily hidden in your":PRINT TAB(8)"exhaust fumes!":PRINT
1550 PRINT TAB(8)"As you drive around you will pass over secret switches in the floor.  These":PRINT TAB(8)"will reveal the contents of the squares.  You must enter each square and":PRINT TAB(8)"collect the contents.":PRINT
1560 PRINT TAB(8)"An up arrow (^) takes you to the next floor, provided you have obtained a key.
1570 PRINT TAB(8)"The other squares all look the same, but their contents vary.  Some give you":PRINT TAB(8)"extra lives, others a limited shield against the ghost car, others more points.
1580 PRINT TAB(8)"All the points must be collected before you can get a key.":PRINT
1590 RESTORE 1750:address=&HE000
1600 READ code:WHILE code<256:POKE address,code:address=address+1:READ code:WEND
1610 screen=&HE000:pr=&HE003:UDGs=&HD100:pen=&HD001:paper=&HD000:double=&HD006
1620 RESTORE 1680:FOR i=0 TO 47:READ j:POKE udgs+i,j:NEXT
1630 caru$=CHR$(0):card$=CHR$(1):carr$=CHR$(2):carl$=CHR$(3):key$=CHR$(4):p$=CHR$(5)
1640 RANDOMIZE PEEK(64504!):b$=CHR$(187):sp$=" ":bleep$=CHR$(7)
1650 a$="p Press a key to play. ":PRINT:PRINT TAB((90-LEN(a$)+1)/2)e$a$e$"q":WHILE INKEY$="":WEND
1660 CALL screen:RETURN
1670 REM Graphics data
1680 DATA 20,62,34,62,62,62,34,28
1690 DATA 28,34,62,62,62,34,62,20
1700 DATA 0,0,126,187,186,187,126,0
1710 DATA 0,0,126,221,93,221,126,0
1720 DATA 0,224,191,191,167,229,0,0
1730 DATA 255,129,189,165,189,161,161,255
1740 REM Machine code
1750 DATA 195,6,224,195,91,224,205,41,224,17,152,44,33,0,182,1,104,1,62
1760 DATA 32,245,213,62,8,115,35,114,35,19,61,32,248,209,235,9,235,241,61
1770 DATA 32,236,201,193,205,90,252,233,0,201,102,26,111,34,2,208,10,50,16
1780 DATA 208,3,10,111,3,10,103,237,75,16,208,6,0,17,19,208,237,176,42
1790 DATA 2,208,205,252,224,34,4,208,33,19,208,34,17,208,201,205,48,224,205
1800 DATA 41,224,243,42,17,208,126,35,34,17,208,205,234,224,17,79,225,1,8
1810 DATA 0,237,176,221,42,4,208,14,8,253,33,79,225,42,0,208,125,6,8
1820 DATA 253,203,0,6,56,13,7,221,203,8,22,221,203,0,22,7,195,164,224
1830 DATA 203,4,221,203,8,22,221,203,0,22,203,4,221,203,8,22,221,203,0
1840 DATA 22,16,215,253,35,58,6,208,167,202,209,224,221,126,8,221,119,9,221
1850 DATA 126,0,221,119,1,221,35,121,254,5,194,209,224,1,200,2,221,9,79
1860 DATA 221,35,13,194,130,224,42,4,208,1,16,0,9,34,4,208,33,16,208
1870 DATA 53,194,98,224,251,201,17,0,184,254,32,48,3,17,0,209,111,38,0
1880 DATA 41,41,41,25,201,92,38,0,84,203,37,1,15,225,9,78,35,70,235
1890 DATA 41,41,41,9,201,48,89,0,92,208,94,160,97,112,100,64,103,16,106
1900 DATA 224,108,176,111,128,114,80,117,32,120,240,122,192,125,144,128,96,131,48
1910 DATA 134,0,137,208,139,160,142,112,145,64,148,16,151,224,153,176,156,128,159
1920 DATA 80,162,32,165,240,167,192,170,144,173,96,176,0,0,0,0,0,0,256


       OR = LEFT
       P = RIGHT
       S = UP
       X = DOWN
       Q = ABANDON

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 Car Park game
 4.- Type run "Car" and press the "ENTER" key


  • Car Park (game in dsk format, compressed with zip)
en/car_park.txt · Last modified: 2022/06/30 10:29 by jevicac