Balloon Fun – Commodore 64 – Basic V2

Best of Personal Computer World – Software for the Commodore 64 – Anno 1984

Continua il nostro viaggio alla scoperta di listati che hanno fatto la storia dell’informatica in collaborazione con i nostri amici del DumpClub 64. Questa volta si sono decisamente superati, recuperando Best of Personal Computer World – Software for the Commodore 64.

Sviluppato e commercializzato da Personal Computer Word – Century Communication, Best of PCW è una raccolta di software per Commodore 64 scritto in Basic V2. La confezione originale consisteva in un nastro contenente 22 programmi registrati su entrambi i lati ed un libro in inglese di 215 pagine, contenente descrizioni generali, dettagli e listati di ogni programma pubblicato.

Titolo: Balloon Fun
Piattaforma: Commodore 64
Linguaggio: Basic V2
Versione originale BBC: A. Roe
Porting per C64: Dave Ponting
Pubblicazione: Best of Personal Computer World – Software for the Commodore 64
Anno: 1983
Trascrizione listatoFrancesco Fiorentini
Anno: 2023
Recupero software: DumpClub 64
Download: Best of PCW Software per C64

Istruzioni
Guidate la mongolfiera dentro la caverna. Attenzione a non toccarne i lati o a scontrarvi con la roccia, sarete morti!
Potete controllare la mongolfiera con i seguenti tasti:
Su = F5
Giù = F7
Destra = <SHIFT>
Sinistra = <CBM>

In alternativa, è possibile utilizzare il joystick nella porta 2, consigliatissimo!

La seconda caverna
Game Over…

Istruzioni: In questo emozionante gioco dovrete guidare una mongolfiera attraverso una caverna rocciosa. Se la mongolfiera tocca i lati della caverna o si scontra con la roccia, sarete morti!
Potete controllare la mongolfiera con i seguenti tasti:
Su = f5; Giù = f7; Destra =<SHIFT> ; Sinistra =<CBM> .
In alternativa, è possibile utilizzare il joystick nella porta 2.

Ci sono due labirinti separati. Quando si completa anche il secondo labirinto, viene introdotto un effetto terremoto che rende il gioco ancora più difficile. Se lo desiderate, potete sostituire uno dei labirinti con uno vostro e sfidare un amico a completarlo. Buon viaggio e spero che non vi ci vogliano 80 giorni per completare questo programma!

Nota bene: Il listato é stato recuperato estraendo il codice dal file TAP e correggendo manualmente i key code per essere utilizzati all’interno del CBM prg Studio. Il risultato protrebbe essere quindi leggermente diverso dalla versione originale.

Attenzione – Ci siamo resi conto che nel listato i caratteri ‘>’ e ‘<‘ potrebbero venir sostituiti dai rispettivi encoding html ‘&gt’ e ‘&lt’. Nel caso, sostituite questi valori direttamente su CBM prg Studio.

Listato: Balloon Fun – Commodore 64 – Basic V2


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
1 rem  ********************************
2 rem  *                              *
3 rem  *   balloon                    *
4 rem  *                              *
5 rem  * computer   : commodore 64    *
6 rem  * language   : basic 2         *
7 rem  *  author    : a.roe           *
8 rem  * conversion : dave ponting    *
9 rem  *   from     : bbc b           *
10 rem * prog.type  : maze game       *
11 rem *  date      : 6-11-83         *
14 rem *                              *
15 rem ********************************
17 gosub2000
20 poke53280,6:poke53281,6:print"{white}";:hs=0:bal=3:qq=1
30 sc=1000
40 restore:onqqgosub10000,11000
50 sw(1)=14:sw(2)=13:sw(3)=15:sw(4)=13:dx=1:dy=2:n=2
1062 print"{home}{down*2}{green}{right}{reverse on}{space*4}{reverse off}"
1063 print"{home}{down*3}{green}{right}{reverse on}1000{reverse off}"
1064 print"{home}{down*4}{green}{right}{reverse on}{space*4}{reverse off}"
1070 goto7000
2000 rem title
2010 poke53280,13:poke53281,13
2020 print"{clear}{blue}";
2030 print"        b a l l o o n   f u n"
2040 print"{down*3}  guide your balloon through the mazes{down}    using:-"
2050 print"                f 5"
2052 print"                 B"
2055 print"                 B"
2060 print"          cbm {C*3}{sh +}{C*3} shift"
2062 print"                 B"
2065 print"                 B"
2070 print"                f 7"
2080 print"{down}you can also move diagonally.for example press f5 and cbm ";
2085 print"at the same time"
2090 print"{down}     {reverse on} or use a joystick in port 2 {reverse off}"
2100 print"{down}      bonus balloon for 5000 pts"
2110 print"{down}  choose keyboard or joystick control"
2120 input"   (k - j)      {left*5}";k$
2130 ifk$<>"j" and k$<>"k"thenprint"{down}{down}":goto2120
2140 ifk$="j"thenk=1
2150 ifk$="k"thenk=2
2200 return
2500 goto2500
4000 rem game over
4010 print"{clear}{white}":pokesp+21,0
4015 poke53280,2:poke53281,2
4020 print"{down*9}"tab(11)"g a m e   o v e r"
4025 print"{down*3}"tab(11)"your score was"hi
4027 wait197,64:fordl=1to2000:nextdl:wait197,64
4030 print"{down*3}"tab(5)"{down} press any key to play again "
4035 fori=0to50:geta$:next
4040 geta$:ifa$=""then4040
4050 run
5999 :
6000 rem *** joystick ***
6005 rem ***   control port 2  ***
6010 onkgoto6015,6040
6015 jv=peek(56320)
6020 if(jvand1)=0thensy=sy+2*(sy>1)
6025 if(jvand2)=0thensy=sy-2*(sy<255)
6030 if(jvand4)=0thensx=sx+2*(sx>1)
6035 if(jvand8)=0thensx=sx-2*(sx<350)
6037 goto6062
6040 k1=peek(197):k2=peek(653)
6042 if(k1=6)thensy=sy+2*(sy>1)
6044 if(k1=3)thensy=sy-2*(sy<255)
6046 if(k2=2)thensx=sx+2*(sx>1)
6048 if(k2=1)thensx=sx-2*(sx<350)
6062 onfl gosub9000
6070 pokesp,sx+256*(sx>255):pokesp+16,(peek(sp+16)and254)or-(sx>255):pokesp+1,sy
6073 ifsw=5thensw=0:poke2040,sw(n):n=n+1:ifn=5thenn=1
6074 sw=sw+1:sc=sc-1:gosub10230:ifsc<0 then 4000
6075 ifpeek(sp+31)<>0then8000
6080 goto6010
6999 :
7000 rem define sprites
7010 sp=53248
7020 fort=0to191:reada:poke832+t,a:nextt
7030 poke2040,13
7040 pokesp+21,1:pokesp+39,7
7045 sx=310:sy=218
7050 pokesp,sx+256*(sx>255):pokesp+16,(peek(sp+16)and254)or-(sx>255):pokesp+1,sy
7060 pp=peek(sp+31)
7499 :
7500 rem set up sid
7510 so=54272
7520 fort=0to28:pokeso+t,0:next
7530 pokeso+5,9:pokeso+6,240:pokeso+24,15:pokeso,200
7599 goto6000
7600 :
7610 :
8000 rem hit
8002 ifsx<68 and sy<70then9500
8005 pokeso+4,33
8010 fort=10to35:pokeso+1,t:poke53280,t:nextt:poke53280,6
8015 pokeso+4,32
8020 sx=310:sy=220:bal=bal-1:hi=hi+(250-sy):sc=1000:gosub10220
8025 ifbal<1then4000
8027 pokesp,sx+256*(sx>255):pokesp+16,(peek(sp+16)and254)or-(sx>255):pokesp+1,sy
8030 pp=peek(sp+31)
8050 goto6080
8999 :
9000 rem earthquake
9010 poke53270,(peek(53270)and248)+x:x=x+dx:ifx=7 or x=0 then dx=-dx
9100 return
9499 :
9500 rem bonus !  start new game
9510 ifsx>40 and sy>56then6080
9512 sx=310:sy=220:hi=hi+(1000-sc):sc=1000
9513 ifbal<1then4000
9515 pp=peek(sp+31)
9520 hi=hi+1000:qq=qq+1
9530 ifhi>5000 and ih=0then bal=bal+1:ih=1
9540 ifqq>2thenqq=1:fl=1
9550 gosub10220
9555 pokeso+4,17:fornn=1to10
9560 fort=20to40step2:pokeso+1,t:nextt
9570 fort=40to20step-2:pokeso+1,t:nextt
9580 nextnn:pokeso+4,16
9614 pokesp,sx+256*(sx>255):pokesp+16,(peek(sp+16)and254)or-(sx>255):pokesp+1,sy
9615 pp=peek(sp+31)
9620 goto40
9999 :
10000 print"{home}{down}****************************************";
10002 print"**          ***************         ****";
10004 print"**                ********         *****";
10006 print"**                 ***           *******";
10008 print"********            *                 **";
10010 print"******                                **";
10012 print"******      **                      ****";
10014 print"*****      *****        ******      ****";
10016 print"**        ********     *********     ***";
10018 print"***     *************************     **";
10020 print"**     ***********************        **";
10022 print"****      ********************        **";
10025 print"*****      *******************        **";
10027 print"******   *************    ****        **";
10030 print"*******    ******            **       **";
10035 print"**                                    **";
10040 print"**                     **             **";
10045 print"**                    ****            **";
10050 print"**    **********************************";
10060 print"**                                    **";
10070 print"**                                     *";
10080 print"****                                   *";
10090 print"********************                   *";
10095 print"***************************************";
10199 :
10200 rem score up-date
10210 print"{home} time          balloons    score"
10220 print"{home}"tab(23)bal"{left} ";tab(32)hi"{left} "
10225 pokesp+21,1
10230 print"{home}"tab(6)sc"{left} "
10290 return
10999 :
11000 print"{home}{white}{down}****************************************";
11002 print"*         *        *****        ********";
11004 print"*                 *****           ******";
11006 print"*                 ****             *****";
11008 print"*********   ***    **    *****    ******";
11010 print"****************        *******    *****";
11012 print"****************       *********   *****";
11014 print"*******    *******    **********    ****";
11016 print"******       ***********    ****     ***";
11018 print"*****         ********        *      ***";
11020 print"****    **    *****               ******";
11022 print"***     ***    ****      **         ****";
11025 print"***    *****    **     ******    *******";
11027 print"**    ******          *********     ****";
11030 print"**     ******        *********    ******";
11035 print"****     ******    ************       **";
11040 print"**    ************************    ******";
11045 print"***     **********************   *******";
11050 print"**     **********     ********    ******";
11060 print"*      *******          ********    ****";
11070 print"***                                    *";
11080 print"*****             ***                  *";
11090 print"******         ********                *";
11095 print"**************************************{home}";
11100 gosub10200:return
19999 :
20000 rem *** sprite balloon 1 ***
20002 data0,254,0,3,255,128,7,255,192,15,255,224
20003 data15,255,224,15,255,224,7,255,192,3,255,128
20004 data0,254,0,0,56,0,0,56,0,0,16,0
20005 data0,16,0,0,16,0,0,16,0,0,16,0
20006 data0,124,0,0,124,0,0,124,0,0,0,0
20007 data0,0,0,0
20020 rem *** sprite balloon 2 ***
20022 data0,254,0,3,255,128,7,255,192,15,255,224
20023 data15,255,224,15,255,224,7,255,192,3,255,128
20024 data0,254,0,0,56,0,0,56,0,0,16,0
20025 data 0, 60, 0, 0, 16, 0, 0, 32, 0, 0, 64, 0
20026 data 12, 128, 0, 63, 0, 0, 31, 128, 0, 15, 192, 0
20027 data 7, 128, 0, 0
20100 rem *** sprite balloon 3 ***
20102 data0,254,0,3,255,128,7,255,192,15,255,224
20103 data15,255,224,15,255,224,7,255,192,3,255,128
20104 data0,254,0,0,56,0,0,56,0,0,16,0
20105 data 0, 60, 0, 0, 8, 0, 0, 4, 0, 0, 2, 0
20106 data 0, 1, 96, 0, 0, 240, 0, 3, 248, 0, 3, 240
20107 data 0, 1, 224, 0

Share

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.