User Tools

Site Tools


en:aerial_antics

AERIAL ANTICS

Info

Author ???????
Computer Amstrad PCW 8256 / 8512 / 9512
Year ????
Gender Arcade
Controls Keyboard
Languages Spanish - English
Status Preserved

Screenshots

Description

Aerial Antics is an entertaining game in which we will spend a good time in front of the PCW screen. Its graphics are quite good and the handling through the keyboard is quite fast.

Our mission will be to install television antennas in homes. For this we will have to get on the roofs trying not to fall as we will lose a life. To begin, we must go through the store where the antennas are piled up, which can only be picked up one by one. By this, we mean that every time we mount an antenna in the house, we must return to the store for the next one.

But not everything is so easy, this is where our head comes into play, skill is essential to pass the phase, since we will have to move the stairs in the direction that suits us, remember that we have to install them in the houses and to get there To the roof we have to place the stairs strategically. If we place the stairs wrong, we will fall into the void losing a life, or falling from a certain height. The stairs can be mounted on top of each other to reach the top, but once they are mounted on top of each other they can no longer be moved, so think carefully about where you want to place them.

The game will change level, when we mount all the television antennas. If we place the stairs wrong, we will not be able to pass the phase and we will have to play again from the beginning. Try to conserve as many lives as possible since every time we change levels, it will be more difficult.

Listing

  • Listing - AERIALS.BAS
10 OPTION RUN:MEMORY &HCFFF:DEFINT a-z:e$=CHR$(27):cl$=e$+"E"+e$+"H
20 GOSUB 1120:play=-1:WHILE play:arl=0:IF del=0 THEN inst=-1
30 GOSUB 790:go=-1:WHILE go:GOSUB 170:WEND
40 IF del=hs THEN FOR a=1 TO 3000:NEXT:level=level+1:IF level=4 THEN level=1
50 IF del=hs THEN 150
60 POKE dbl,0:POKE ppr,85:x=20:a$=SPACE$(26)
70 FOR y=10 TO 20:CALL pr(x,y,a$):NEXT
80 a$="G A M E   O V E R !":x=26:y=12:CALL pr(x,y,a$)
90 IF lives=0 THEN a$="No lives left!"ELSE a$=MID$(STR$(del),2)+" aerials delivered"
100 y=15:CALL pr(x,y,a$):a$="Play again?  (Y/N)":y=18:CALL pr(x,y,a$)
110 i$=UPPER$(INKEY$):IF i$=""THEN 110
120 IF i$<>"Y"AND i$<>"N"THEN 110
130 IF i$="Y"THEN lives=11:del=0:hs=0:level=1
140 IF i$="N"THEN play=0
150 WEND:MEMORY 62981!:PRINT cl$e$"e"e$"1"
160 REM Play game
170 i$=UPPER$(INKEY$):IF i$="O"OR i$="P"THEN GOSUB 470
180 IF i$=CHR$(1)OR i$=CHR$(6)THEN GOSUB 250
190 IF i$=CHR$(31)OR i$=CHR$(30)THEN GOSUB 610
200 IF a(mx+j,my+1)=4 AND arl=0 AND lives>0 THEN GOSUB 670
210 IF a(mx+j,my+2)=6 AND arl=1 AND a(mx+j,my)=0 THEN GOSUB 720
220 IF i$=e$OR i$=CHR$(3)THEN go=0:GOSUB 410
230 i$="":RETURN
240 REM left and right
250 POKE dbl,1:IF i$=CHR$(6)AND m$=ml$THEN m$=mr$:CALL pr(mx,my,m$):j=2:RETURN
260 IF i$=CHR$(1)AND m$=mr$THEN m$=ml$:CALL pr(mx,my,m$):j=-2:RETURN
270 IF a(mx+j,my)>1 OR a(mx+j,my+1)>1 AND a(mx+j,my+1)<10 THEN RETURN
280 IF a(mx,my)=1 THEN s$=ld$ELSE s$=sp$
290 IF a(mx,my+1)=10 AND a(mx,my)<>1 THEN POKE dbl,0:CALL pr(mx,my,sp$):y=my+1:CALL pr(mx,y,arl$):POKE dbl,1 ELSE CALL pr(mx,my,s$)
300 mx=mx+j:CALL pr(mx,my,m$):IF a(mx,my+2)=0 THEN GOSUB 330
310 RETURN
320 REM Fall
330 WHILE a(mx,my+2)=0:CALL pr(mx,my,sp$):my=my+2:CALL pr(mx,my,dn$)
340 FOR a=1 TO 200:NEXT:WEND:CALL pr(mx,my,hp$):PRINT CHR$(7);
350 IF a(mx,my+1)=10 THEN x=mx:y=my+1:GOSUB 430
360 GOSUB 410:PRINT FNat$(2,29)"Oh dear!  You have fallen down!  Try to be more careful next time!
370 lives=lives-1:IF lives=0 THEN PRINT FNat$(2,30)"You have run out of lives.";ELSE PRINT FNat$(2,30)"Never mind.  You've got"lives"lives left.";
380 PRINT"  Press a key."e$"H":WHILE INKEY$="":WEND
390 GOSUB 410:IF lives>0 THEN GOSUB 1060:POKE dbl,1:CALL pr(mx,my,m$) ELSE go=0
400 arl=0:RETURN
410 FOR y=29 TO 30:PRINT FNat$(2,y)SPC(86):NEXT:PRINT e$"H":RETURN
420 REM Fall on top of aerial
430 del=del-1:a(x,y)=0:y=y+1:a(x,y)=6:POKE pen,85:PRINT CHR$(7);
440 CALL pr(x,y,htr$):x=x-2:CALL pr(x,y,htl$):y=y+2:CALL pr(x,y,hbl$)
450 x=x+2:CALL pr(x,y,hbr$):POKE pen,255:RETURN
460 REM Move ladder
470 IF i$="O"AND mx=2 OR i$="P"AND mx=86 THEN RETURN
480 IF i$="O"THEN k=-2:ELSE k=2
490 IF a(mx+k,my)=1 AND a(mx+k,my-2)=1 AND a(mx+k,my-4)<>1 AND a(mx+k*2,my)=0 AND a(mx+k*2,my-2)=0 THEN GOSUB 510
500 RETURN
510 IF i$="O"THEN m$=ml$:j=-2:ELSE m$=mr$:j=2
520 IF a(mx,my+1)=10 THEN POKE dbl,0:CALL pr(mx,my,sp$):y=my+1:CALL pr(mx,y,arl$):POKE dbl,1 ELSE IF a(mx,my)=1 THEN CALL pr(mx,my,ld$)ELSE CALL pr(mx,my,sp$)
530 mx=mx+j:CALL pr(mx,my,m$):a(mx,my)=0:ly=my-2:CALL pr(mx,ly,sp$):a(mx,ly)=0
540 lx=mx+j:CALL pr(lx,my,ld$):a(lx,my)=1:CALL pr(lx,ly,ld$):a(lx,ly)=1
550 ly1=my:WHILE a(lx,ly1+2)=0:CALL pr(lx,ly,sp$):a(lx,ly)=0
560 ly=ly+4:CALL pr(lx,ly,ld$):a(lx,ly)=1:CALL pr(lx,ly1,sp$)
570 a(lx,ly1)=0:ly1=ly1+4:CALL pr(lx,ly1,ld$):a(lx,ly1)=1
580 IF a(lx,ly1+1)=10 THEN x=lx:y=ly1+1:GOSUB 430
590 WEND:RETURN
600 REM Up and down
610 POKE dbl,1:IF a(mx,my)<>1 AND(a(mx,my+2)<>1 OR i$<>CHR$(30)) THEN RETURN
620 IF i$=CHR$(31)THEN i=-2:ii=-1 ELSE i=2:ii=1
630 IF a(mx,my)=0 THEN s$=sp$ELSE s$=ld$
640 IF a(mx,my+i)>1 OR a(mx,my+ii)>1 THEN RETURN ELSE CALL pr(mx,my,s$):my=my+i:IF a(mx,my)=1 THEN CALL pr(mx,my,mld$)ELSE CALL pr(mx,my,m$)
650 RETURN
660 REM Pick up aerial
670 arl=1:POKE dbl,0:ax=mx+j:ay=my+1:CALL pr(ax,ay,sp$):a(ax,ay)=0
680 PRINT CHR$(7);:CALL pr(arx,ary,arl$)
690 WHILE a(ax,ay-1)=4:CALL pr(ax,ay,arl$):a(ax,ay)=4:ay=ay-1:CALL pr(ax,ay,sp$):a(ax,ay)=0:WEND
700 RETURN
710 REM Deliver aerial
720 del=del+1:a(mx+j,my+2)=10:a(mx+j,my+1)=10:x=mx+j:y=my+1:POKE dbl,0
730 CALL pr(x,y,arl$):CALL pr(arx,ary,sp$):arl=0
740 PRINT CHR$(7);:POKE dbl,1:y=my+2:CALL pr(x,y,htr$)
750 x=x-2:CALL pr(x,y,htl$):y=y+2:CALL pr(x,y,hbl$)
760 x=x+2:CALL pr(x,y,hbr$):IF del=hs THEN go=0:GOSUB 410
770 RETURN
780 REM Draw screen
790 POKE dbl,0:POKE ppr,0:POKE pen,255
800 x=0:y=0:a$=CHR$(134)+STRING$(43,138)+CHR$(140):CALL pr(x,y,a$)
810 mx=88:a$=CHR$(133):FOR y=1 TO 2:CALL pr(x,y,a$):CALL pr(mx,y,a$):NEXT
820 a$=CHR$(135):y=3:CALL pr(x,y,a$):a(x,y)=2
830 a$=CHR$(138):FOR x=2 TO 86 STEP 2:CALL pr(x,y,a$):a(x,y)=2:NEXT
840 a$=CHR$(141):CALL pr(x,y,a$):a(x,y)=2
850 POKE dbl,1:POKE ppr,85:a$=SPACE$(43):x=2:y=1::CALL pr(x,y,a$)
860 a$="A E R I A L   A N T I C S":x=20:y=1:CALL pr(x,y,a$):POKE dbl,0:POKE ppr,0
870 x=0:a$=CHR$(133)+SPACE$(43)+CHR$(133):FOR y=4 TO 30:CALL pr(x,y,a$):a(x,y)=2:a(88,y)=2:NEXT
880 a$=CHR$(131)+STRING$(43,138)+CHR$(137):CALL pr(x,y,a$)
890 IF inst THEN GOSUB 1210:inst=0:GOTO 870
900 IF level=1 THEN RESTORE 1440
910 IF level=3 THEN RESTORE 1700
920 IF level=2 THEN RESTORE 1960
930 FOR a=1 TO 25:READ b$:y=a+3
940 FOR b=1 TO 43:c=VAL(MID$(b$,b,1))
950 IF c=1 THEN a$=ld$:POKE dbl,1:GOSUB 1100:POKE dbl,0:GOTO 1040
960 IF c=2 THEN a$=flr$:GOSUB 1100:GOTO 1040
970 IF c=3 THEN a$=wl$:GOSUB 1100:GOTO 1040
980 IF c=4 THEN a$=arl$:GOSUB 1100:GOTO 1040
990 IF c=5 THEN a$=htl$:POKE pen,85:POKE dbl,1:hs=hs+1:GOSUB 1100:POKE pen,255:POKE dbl,0:GOTO 1040
1000 IF c=6 THEN a$=htr$:POKE pen,85:POKE dbl,1:GOSUB 1100:POKE dbl,0:POKE pen,255:GOTO 1040
1010 IF c=7 THEN a$=hbl$:POKE pen,85:POKE dbl,1:GOSUB 1100:POKE dbl,0:POKE pen,255:GOTO 1040
1020 IF c=8 THEN a$=hbr$:POKE pen,85:POKE dbl,1:GOSUB 1100:POKE dbl,0:POKE pen,255:GOTO 1040
1030 GOSUB 1100
1040 NEXT b,a:GOSUB 1060
1050 POKE dbl,1:j=2:mx=2:my=26:m$=mr$:CALL pr(mx,my,m$):RETURN
1060 PRINT FNat$(2,29)"Use arrow keys for general movement.        Use O and P to move ladder left and right.
1070 y=30:PRINT FNat$(2,y)"Remaining lives:":x=19:a$=STRING$(lives-1,mr$)
1080 IF lives=1 THEN a$="ZERO
1090 POKE dbl,0:CALL pr(x,y,a$):PRINT FNat$(46,y)"Aerial:"FNat$(61,y)"Press EXIT or STOP to quit."e$"H":RETURN
1100 x=b*2:a(x,y)=c:IF c>0 THEN CALL pr(x,y,a$):RETURN ELSE RETURN
1110 REM Set up machine code, etc
1120 RESTORE 2220:add=&HE000:READ code:WHILE code<256
1130 POKE add,code:add=add+1:READ code:WEND
1140 scrn=&HE000:pr=&HE003:udgs=&HD100:pen=&HD001:ppr=&HD000:dbl=&HD006
1150 RESTORE 1290:b=0:READ a:WHILE a<256:POKE udgs+b,a:b=b+1:READ a:WEND
1160 sp$=" ":ml$=CHR$(0):mr$=CHR$(1):ld$=CHR$(2):htl$=CHR$(3):htr$=CHR$(4):hbl$=CHR$(5)
1170 hbr$=CHR$(6):arl$=CHR$(7):mld$=CHR$(8):flr$=CHR$(9):wl$=CHR$(10)
1180 dn$=CHR$(11):hp$=CHR$(12):box$=CHR$(13)
1190 PRINT cl$e$"0"e$"f":CALL scrn:DEF FNat$(x,y)=e$+"Y"+CHR$(32+y)+CHR$(32+x)
1200 arx=54:ary=30:DIM a(89,30):lives=11:level=1:RETURN
1210 x=27:PRINT FNat$(x,12)"In this game you must manoevre
1220 PRINT FNat$(x,13)"ladders so that you can get all
1230 PRINT FNat$(x,14)"around the screen.  You must also
1240 PRINT FNat$(x,15)"collect aerials from the store
1250 PRINT FNat$(x,16)"and fix them on the roofs.
1260 PRINT FNat$(x,18)"Be careful you don't fall off!
1270 PRINT FNat$(x,20)"Press a key.":WHILE INKEY$="":WEND:RETURN
1280 REM user-defined graphics
1290 DATA 24,24,8,28,58,24,20,52
1300 DATA 24,24,16,56,92,24,40,44
1310 DATA 66,126,66,66,66,126,66,66
1320 DATA 0,0,15,21,42,85,170,255
1330 DATA 192,192,240,88,172,86,171,255
1340 DATA 132,132,132,132,255,170,213,255
1350 DATA 33,33,33,45,225,161,97,255
1360 DATA 64,85,255,85,64,64,64,64
1370 DATA 90,126,126,90,90,126,102,66
1380 DATA 255,170,170,255,85,85,255,0
1390 DATA 254,138,138,138,254,162,162,162
1400 DATA 44,40,24,92,56,16,24,24
1410 DATA 0,0,3,4,56,248,62,57,256
1420 REM Screen data
1430 REM Level 1
1440 DATA 0111111001111000000000000000000000001010000
1450 DATA 0000000000000000000000000000000000000000000
1460 DATA 0111111001111000000000000000000000001010000
1470 DATA 0000000000000000000000000000000000000000000
1480 DATA 2222221022222356000000000111110000022222200
1490 DATA 0000000000000300000000000000000000000000300
1500 DATA 0000001000000378000000000111110000000000300
1510 DATA 0000000000000300000000000000000000000000300
1520 DATA 0156001000000222205603122222222220000000300
1530 DATA 0000000000000000300003000000000000000000300
1540 DATA 0178001000000000307803100000000000000000300
1550 DATA 0000000000000000300003000000000000000000300
1560 DATA 0122213015601000222222156561100000000156356
1570 DATA 0000003000000000000000000000000000000000300
1580 DATA 0100013017801000000000178781100000000178378
1590 DATA 0000003000000000000000000000000000000000300
1600 DATA 2201222022222000000312222222222222201222222
1610 DATA 0000000000000000000300000000000000000000000
1620 DATA 0001000000000000000310000000000000001000444
1630 DATA 0000000000000000000300000000000000000000444
1640 DATA 0102222222222222560356310000000000001310444
1650 DATA 0003000000000000000300300000000000000300444
1660 DATA 0103000000000000780378310000000000001310444
1670 DATA 0003000000000000000300300000000000000300444
1680 DATA 2222222222222222222222222222222222222222222
1690 REM Level 3
1700 DATA 4444440100001101101101101101101101101100011
1710 DATA 4444440000000000000000000000000000000000000
1720 DATA 4444440130001101101101101101101101101100011
1730 DATA 4444440030000000000000000000000000000000000
1740 DATA 2222222222005605635605635605635605635605631
1750 DATA 0000000000000000030000030000030000030000030
1760 DATA 0000000000007807837807837807837807837807831
1770 DATA 0000000000000000030000030000030000030000030
1780 DATA 1560000000002222222222222222222222222222231
1790 DATA 0000000000000000000000000000000000000000030
1800 DATA 1780000000000000000000000000000000000000031
1810 DATA 0000000000000000000000000000000000000000030
1820 DATA 1222222222000560011110000011000000005615631
1830 DATA 0000300000000000000000000000000000000000030
1840 DATA 1000300000000780011110000011000000007817831
1850 DATA 0000300000000000000000000000000000000000030
1860 DATA 2256356000000222222215603056302222222212231
1870 DATA 0000300000000000000000003000300000000000030
1880 DATA 0078378000000000000017803078300000000010031
1890 DATA 0000300000000000000000003000300000000000030
1900 DATA 0022222200001222222222222022356000000010031
1910 DATA 0000000000000000000000000000300000000000020
1920 DATA 0000000000001000000000000000378000000010001
1930 DATA 0000000000000000000000000000300000000000000
1940 DATA 2222222222222222222222222222222222222222222
1950 REM Level 2
1960 DATA 0010100101001111111110000000000000000000110
1970 DATA 0000000000000000000000000000000000000000000
1980 DATA 0013100131001111111110000000000000000000110
1990 DATA 0003000030000000000000000000000000000000000
2000 DATA 0122222222222222222223560225622563005600221
2010 DATA 0000000000000000000003000000000003000000000
2020 DATA 0100000000000000000003780007833783007800001
2030 DATA 0000000000000000000003000000033003000000000
2040 DATA 0111000563563111100002220222222223022300561
2050 DATA 0000000003003000000000000000000003000300000
2060 DATA 0111000783783111100000000000000003000300781
2070 DATA 0000000003003000000000000000000003000200000
2080 DATA 1222560222222222210000000325600002111012221
2090 DATA 0000000000000000300000000300000000000000000
2100 DATA 1000780000000000310000000307800000111010001
2110 DATA 0000000000000000300000000300000000000000000
2120 DATA 5600112001356356356056000222256222222022221
2130 DATA 0000000000300300300000000000000000000000000
2140 DATA 7800110001378378378078000000078000000000001
2150 DATA 0000000000300300300000000000000000000000000
2160 DATA 2210221322222222222022222222222222356000001
2170 DATA 0000000300000000000000000000000000300000000
2180 DATA 0010001300000000000000000000000000378000001
2190 DATA 0000000344444444440004444444444444300000000
2200 DATA 2222222222222222222222222222222222222222222
2210 REM Machine code
2220 DATA 195,6,224,195,91,224,205,41,224,17,152,44,33,0,182,1,104,1,62
2230 DATA 32,245,213,62,8,115,35,114,35,19,61,32,248,209,235,9,235,241,61
2240 DATA 32,236,201,193,205,90,252,233,0,201,102,26,111,34,2,208,10,50,16
2250 DATA 208,3,10,111,3,10,103,237,75,16,208,6,0,17,19,208,237,176,42
2260 DATA 2,208,205,252,224,34,4,208,33,19,208,34,17,208,201,205,48,224,205
2270 DATA 41,224,243,42,17,208,126,35,34,17,208,205,234,224,17,79,225,1,8
2280 DATA 0,237,176,221,42,4,208,14,8,253,33,79,225,42,0,208,125,6,8
2290 DATA 253,203,0,6,56,13,7,221,203,8,22,221,203,0,22,7,195,164,224
2300 DATA 203,4,221,203,8,22,221,203,0,22,203,4,221,203,8,22,221,203,0
2310 DATA 22,16,215,253,35,58,6,208,167,202,209,224,221,126,8,221,119,9,221
2320 DATA 126,0,221,119,1,221,35,121,254,5,194,209,224,1,200,2,221,9,79
2330 DATA 221,35,13,194,130,224,42,4,208,1,16,0,9,34,4,208,33,16,208
2340 DATA 53,194,98,224,251,201,17,0,184,254,32,48,3,17,0,209,111,38,0
2350 DATA 41,41,41,25,201,92,38,0,84,203,37,1,15,225,9,78,35,70,235
2360 DATA 41,41,41,9,201,48,89,0,92,208,94,160,97,112,100,64,103,16,106
2370 DATA 224,108,176,111,128,114,80,117,32,120,240,122,192,125,144,128,96,131,48
2380 DATA 134,0,137,208,139,160,142,112,145,64,148,16,151,224,153,176,156,128,159
2390 DATA 80,162,32,165,240,167,192,170,144,173,96,176,0,0,0,0,0,0,256

Controls

         ↑ = UP
         ↓ = DOWN
         → = RIGHT
         ← = LEFT
         O = MOVE LADDER LEFT
         P = MOVE LADDER TO THE RIGHT
 EXIT/STOP = EXIT THE GAME

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 Aerial Antics game
 4.- Type run "Aerials" and press the "ENTER" key

Download

en/aerial_antics.txt · Last modified: 2022/06/29 01:05 by jevicac