Rivista: Home Computer – Anno: 1984, Maggio – Numero 1 – Trascrizione: Francesco Fiorentini
Torna il TI99/4A e lo fa in grande stiel con un gioco realizzato nel 1983 da Marco Gallo. Teatro dell’azione e’ il cielo che cambiera’ colore all’inizio di ogni nuova missione; alla base dello schermo una solitaria minuscola isola rappresenta l’obiettivo su cui deve arrivare il paracadutista evitando le insidie che aumentano, missione dopo missione, sino alla inesorabile fine. I pericoli all’inizio sono due: i teschietti (corrispondenti ai palloni frenati che nell’ultima guerra mondiale venivano alzati sopra le città per difenderle, appunto, dai parà) e le raffiche di vento che arrivano ogni tanto, casualmente, spostando il paracadutista dalla sua traiettoria versso l’obiettivo.
L’avanzamento verticale è automatico, di una riga alla volta, mentre due tasti (il “.” e la “,”) controllano il movimento orizzontale. Se anche per un solo istante non si preme uno dei due comandi o se ne aziona uno sbagliato il parà si sposta di due caselle per ogni riga verticale, rendendo problematico riprendere la rotta e facendovi non di rado finire su un teschio.
Ogni missione è composta da tre lanci successivi: i teschi partono da un minimo di 6 ed aumentano di due in due sino alla 21ª missione, quando ne avrete ben 46 sullo schermo. Da qui in poi il numero resterà costante. Il vento, grande nemico delle paratrooper, aumenta di frequenza (non di forza) sino alla nona missione.
Ogni 9 lanci abbiamo un bonus stage dove il cielo si riempie di teschi: ora il compito non è quello di atterrare ma di raccogliere il maggior numero di nemici. Dopo due bonus stages incontriamo il challenger stage: 5 navi da affondare e cinque bombe a disposizione; se fate cinque centri vi spetta un bonus. Anche dalla 4ª missione in poi compare, ad ogni lancio, una nave. Se questa viene affondata con l’unica bomba disponibile si guadagnano 100 punti. Il tasto che comanda i proiettili è “X” ma attenzione: se continuate a premerlo dopo aver esaurito le munizioni vi allontanate di due spazi dalla rotta.
Attenzione: una volta avviato l’emulatore utilizzare il linguaggio TI Basic. Il programma infatti genera un errore se utilizziamo il linguaggio TI Extended Basic perche’ vengono ridefiniti dei caratteri non disponibili in questo dialetto.
Questo listato é stato pubblicato sulla rivista Home Computer No. 1 di Maggio 1984, ad opera di Marco Gallo. La rivista era pubblicata dal Gruppo Editoriale Jackson.

Titolo: Paratrooper
Piattaforma: TI99/4A
Linguaggio: TI Basic
Versione originale: Marco Gallo
Pubblicazione: Home Computer
Anno: 1984 – Maggio
Trascrizione: Francesco Fiorentini
Anno: 2025
Download: N/A
Note: Usare il TI Basic.

Istruzioni
Usate i tasti:
, (virgola) per spostarsi a sinistra
. (punto) per spostarsi a destra
X per rilasciare la bomba nel bonus stage
Qui di seguito trovate il codice da copiare sul vostro TI99/4A oppure su un emulatore, noi suggeriamo Classic99.
Di seguito le istruzioni per caricare il listato sull’emulatore Classic99:
– Copiare il listato di cui sotto
– Avviare l’emulatore
– Da Cartridge -> Apps, selezionare Extended Basic
– Premere un tasto qualsiasi
– Dopodiché premere 1 per avviare il TI Basic
– Dal comando Edit, selezionare Paste XB per incollare il listato
– Digitare RUN per eseguire il codice
Buon divertimento!
Attenzione – Ci siamo resi conto che nel listato i caratteri ‘>’ e ‘<‘ potrebbero venir sostituiti dai rispettivi encoding html ‘>’ e ‘<’. Nel caso, sostituite questi valori nel listato prima di copiarlo sull’emulatore.
Listato: Dogfight – TI99/4A – TI Extended Basic
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
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359 1000 CALL CLEAR
1010 PRINT "HI-SCORE AGGIORNATI AL 24 SETTEMBRE 1983. PER EVENTUALI MODIFICHE FERMARE IL PROGRAMMA ED ANDARE ALLE LINEE 1010,1330,1340"
1020 FOR Y=1 TO 2000
1030 NEXT Y
1040 CALL CLEAR
1050 RANDOMIZE
1060 OPTION BASE 1
1070 DIM SCORE(51),NOME$(11),IMM$(11),SCIM(11),SCI$(11),SCOR$(11),VEN(30)
1080 CALL CHAR(129,"7CAAFE4428101038")
1090 CALL CHAR(136,"815A3C5A7E245A81")
1100 CALL CHAR(150,"000000007EFFFFFF")
1110 CALL CHAR(152,"00000000FF6D3F1F")
1120 CALL CHAR(153,"18183A24FFB6FAF8")
1130 CALL CHAR(154,"0000236424242473")
1140 CALL CHAR(155,"00000C929292920C")
1150 CALL COLOR(15,13,1)
1270 VITA=1
1290 FOR I=1 TO 10
1300 READ SCIM(I),IMM$(I)
1310 SCI$(I)=STR$(SCIM(I))
1320 NEXT I
1330 DATA 7220,MGR052,6650,SDR020,6440,MGR059,5850,MGR047,5290,MGR054
1340 DATA 5010,MGR055,4670,MGR058,4670,MGR061,4640,MGR049,4350,MGR060
1350 BV=500
1600 CALL SCREEN(12)
1610 CALL COLOR(13,16,1)
1650 REM ==== INIZIO GIOCO
1660 X=X+1
1670 XX=X
1680 L=L+1
1690 CALL CLEAR
1700 PRINT " MISSIONE";X::" STAI PRONTO"
1710 GOSUB 4940
1720 IF XX<22 THEN 1740
1730 XX=21
1740 Y=XX*2+4
1750 IF XX<10 THEN 1770
1760 XX=9
1770 K=0
1780 REM ==== SCELTA DEL COLORE DELLA MISSIONE
1790 CC=(X/2.99999-INT(X/3))*3+1
1800 ON CC GOTO 1870,1810,1840
1810 CALL SCREEN(10)
1820 CALL COLOR(14,2,1)
1830 GOTO 1900
1840 CALL SCREEN(8)
1850 CALL COLOR(14,14,1)
1860 GOTO 1900
1870 CALL SCREEN(5)
1880 CALL COLOR(14,11,1)
1890 REM ==== DISEGNO MISSIONE DA ESEGUIRE
1900 CALL CLEAR
1910 BOMBA=1
1920 VITRIM=VITA-1
1930 IF VITRIM<6 THEN 1950
1940 VITRIM=5
1950 CALL HCHAR(24,3,129,VITRIM)
1960 IF BSF=0 THEN 1980
1970 Y=70
1980 FOR I=1 TO Y
1990 PALO=INT(RND*32+1)
2000 PALV=INT(RND*18+4)
2010 CALL HCHAR(PALV,PALO,136)
2020 NEXT I
2030 XVEC=INT(RND*16+9)
2040 IF CSF=1 THEN 2090
2050 IF BSF=1 THEN 2090
2060 RNO=4+INT(RND*19)
2070 RNL=8+INT(RND*16)
2080 IF XX>3 THEN 2110
2090 RNO=0
2100 IF CSF=1 THEN 2200 ELSE 2180
2110 PN=7+INT(22*RND)
2120 IF PN=XVEC THEN 2110
2130 IF PN=XVEC+1 THEN 2110
2140 IF PN=XVEC+2 THEN 2110
2150 IF PN=XVEC+3 THEN 2110
2160 CALL HCHAR(24,PN,153)
2170 CALL HCHAR(24,PN-1,152)
2180 CALL HCHAR(24,XVEC,150,3)
2190 K=K+1
2200 YNUO=1
2210 CALL HCHAR(YNUO,XVEC,129)
2220 X1=XVEC
2230 X2=XVEC+1
2240 X3=XVEC+2
2250 REM ==== FASE OPERATIVA
2260 CALL KEY(0,KEY,ST)
2270 IF ST=0 THEN 3170
2280 AUX=RND*50/XX
2290 IF AUX>1 THEN 2310
2300 VENTO=INT(3*RND)-1
2310 IF KEY=88 THEN 4140
2320 IF KEY=44 THEN 2500
2330 IF KEY<>46 THEN 3170
2340 XNUO=XVEC+1+VENTO
2350 YNUO=YNUO+1
2360 VENTO=0
2370 IF XNUO<33 THEN 2390
2380 XNUO=32
2390 CALL GCHAR(YNUO,XNUO,P)
2400 IF P=136 THEN 2810
2410 CALL HCHAR(YNUO-1,XVEC,32)
2420 CALL HCHAR(YNUO,XNUO,129)
2430 IF YNUO<>RNO THEN 2480
2440 CALL VCHAR(24-RNL,PN,73,RNL)
2450 CALL GCHAR(YNUO,XNUO,P)
2460 IF P=73 THEN 2840
2470 CALL VCHAR(24-RNL,PN,32,RNL)
2480 XVEC=XNUO
2490 GOTO 2650
2500 XNUO=XVEC-1+VENTO
2510 YNUO=YNUO+1
2520 VENTO=0
2530 IF XNUO>0 THEN 2550
2540 XNUO=1
2550 CALL GCHAR(YNUO,XNUO,P)
2560 IF P=136 THEN 2810
2570 CALL HCHAR(YNUO-1,XVEC,32)
2580 CALL HCHAR(YNUO,XNUO,129)
2590 IF YNUO<>RNO THEN 2640
2600 CALL VCHAR(24-RNL,PN,73,RNL)
2610 CALL GCHAR(YNUO,XNUO,P)
2620 IF P=73 THEN 2840
2630 CALL VCHAR(24-RNL,PN,32,RNL)
2640 XVEC=XNUO
2650 IF YNUO<24 THEN 2260
2660 REM ===FINE FASE OPERATIVA ===
2670 REM ===VERIFCA ATTERRAGGIO ===
2680 IF BSF=1 THEN 3350
2690 IF CSF=1 THEN 4790
2700 CALL GCHAR(24,X1,C)
2710 IF C=129 THEN 3040
2720 CALL GCHAR(24,X2,C)
2730 IF C=129 THEN 3040
2740 CALL GCHAR(24,X3,C)
2750 IF C=129 THEN 3040
2760 REM ===SEGNALAZIONE VARIE MISSIONE NEGATIVA===
2770 CALL CLEAR
2780 PRINT " ATTERRAGGIO NON RIUSCITO SEI ANNEGATO"
2790 PRINT ::" PUNTI TOTALIZZATI =";SCO
2800 GOTO 2860
2810 IF BSF=0 THEN 2840
2820 TR=TR+1
2830 GOTO 2570
2840 CALL CLEAR
2850 PRINT " SEI STATO ABBATTUTO"::" PUNTI TOTALIZZATI =";SCO
2860 K=K-1
2870 VITA=VITA-1
2880 IF VITA=0 THEN 2920
2890 PRINT :::" R E A D Y"
2900 GOSUB 4940
2910 GOTO 1900
2920 PRINT " G A M E O V E R"
2930 GOSUB 4940
2940 GOSUB 3530
2950 REM ===INIZIALIZZAZIOEN NUOVA PARTITA ===
2960 X=0
2970 K=0
2980 L=0
2990 SCO=0
3000 VITA=1
3010 BV=500
3020 GOTO 1660
3030 REM ==== CALCOLO PUNTEGGIO
3040 CALL CLEAR
3050 IF X<22 THEN 3080
3060 SCO=SCO+210
3070 GOTO 3090
3080 SCO=SCO+10*X
3090 PRINT " ATTERRAGGIO RIUSCITO":::" PUNTEGGIO ATTUALE =";SCO
3100 GOSUB 4070
3110 GOSUB 4940
3120 REM ==== VERIFICA BONUS
3130 IF K<3 THEN 1900
3140 IF X/9-INT(X/9)=0 THEN 4340
3150 IF L=3 THEN 3270 ELSE 1660
3160 REM ==== AVANZAMENTO AUTOMATICO
3170 YNUO=YNUO+1
3180 XNUO=XVEC+2
3190 IF XNUO<33 THEN 3210
3200 XNUO=32
3210 CALL GCHAR(YNUO,XNUO,P)
3220 IF P=136 THEN 2810
3230 CALL GCHAR(YNUO,XNUO-1,P)
3240 IF P=136 THEN 2810
3250 GOTO 2410
3260 REM ==== SEGNALAZIONE BONUS STAGE
3270 L=0
3280 CALL CLEAR
3290 CALL SCREEN(12)
3300 CALL COLOR(14,5,1)
3310 PRINT " B O N U S S T A G E"::::::::
3320 GOSUB 4940
3330 BSF=1
3340 GOTO 1900
3350 K=0
3360 CALL CLEAR
3370 IF TR<8 THEN 3410
3380 TRP=500
3390 PRINT " P E R F E C T !"::::" SPECIAL BONUS":::;TAB(10);TRP;"POINTS"::
3400 GOTO 3440
3410 PRINT "NUMERO TESCHIETTI RACCOLTI ";TR
3420 TRP=TR*30
3430 PRINT :TAB(10);TRP;"PUNTI"
3440 SCO=SCO+TRP
3450 TR=0
3460 BSF=0
3470 PRINT " PUNTEGGIO ATTUALE =";SCO
3480 GOSUB 4070
3490 GOSUB 4940
3500 GOTO 1660
3510 STOP
3520 REM ===== SUBROUTINE CLASSIFICHE
3530 FOR I=1 TO 50
3540 IF SCORE(I)<SCO THEN 3590
3550 NEXT I
3560 CALL CLEAR
3570 PRINT "**** SORRY OUT OF RANK ****"
3580 GOTO 3960
3590 FOR J=49 TO I STEP -1
3600 M=J+1
3610 SCORE(M)=SCORE(J)
3620 NEXT J
3630 SCORE(I)=SCO
3640 N=I
3650 IF I>10 THEN 3930
3660 CALL CLEAR
3670 PRINT "HI-SCORE: ENTER YOUR NAME":::
3680 INPUT MES$
3690 IF LEN(MES$)<8 THEN 3720
3700 PRINT ::::"NAME TOO LONG"
3710 GOTO 3670
3720 FOR J=9 TO I STEP -1
3730 M=J+1
3740 SCOR$(M)=STR$(SCORE(M))
3750 NOME$(M)=NOME$(J)
3760 NEXT J
3770 SCORE(I)=SCO
3780 SCOR$(I)=STR$(SCO)
3790 NOME$(I)=MES$
3800 FOR I=1 TO 10
3810 IF SCIM(I)<SCO THEN 3840
3820 NEXT I
3830 GOTO 3930
3840 FOR J=9 TO I STEP -1
3850 M=J+1
3860 SCIM(M)=SCIM(J)
3870 SCI$(M)=STR$(SCIM(M))
3880 IMM$(M)=IMM$(J)
3890 NEXT J
3900 SCIM(I)=SCO
3910 SCI$(I)=STR$(SCO)
3920 IMM$(I)=MES$
3930 CALL CLEAR
3940 CALL SCREEN(16)
3950 PRINT "**** YOUR RANK IS";N;"****"
3960 PRINT " ALL TIME TODAYS GREATEST GREATEST"::
3970 FOR I=1 TO 10
3980 PRINT TAB(5-LEN(SCI$(I)));SCIM(I);TAB(7);IMM$(I);TAB(20-LEN(SCOR$(I)));SCORE(I);TAB(22);NOME$(I)
3990 NEXT I
4000 PRINT :::"PRESS - ANY KEY TO PLAY AGAIN - CONTROL Z TO EXIT"
4010 CALL KEY(0,KEY,ST)
4020 IF ST=0 THEN 4010
4030 IF KEY=154 THEN 4050
4040 RETURN
4050 STOP
4060 REM ===== SUBROUTINE BONUS VITA
4070 IF SCO<BV THEN 4110
4080 VITA=VITA+1
4090 BV=BV+1500
4100 CALL SOUND(200,700,0)
4110 RETURN
4120 STOP
4130 REM ===== VERIFICA NAVE COLPITA
4140 IF CSF=1 THEN 4610
4150 IF BOMBA=0 THEN 3170
4160 IF X<4 THEN 3170
4170 BOMBA=0
4180 CALL VCHAR(YNUO+1,XVEC,89,23-YNUO)
4190 CALL GCHAR(23,PN,P)
4200 IF P=89 THEN 4240
4210 CALL GCHAR(23,PN-1,P)
4220 IF P=89 THEN 4240
4230 GOTO 4310
4240 SCO=SCO+100
4250 RNO=0
4260 CALL VCHAR(YNUO+1,XVEC,32,23-YNUO)
4270 CALL HCHAR(24,PN-1,154)
4280 CALL HCHAR(24,PN,155)
4290 GOSUB 4070
4300 GOTO 2260
4310 CALL VCHAR(YNUO+1,XVEC,32,23-YNUO)
4320 GOTO 2260
4330 REM ==== CHALLENGER STAGE ====
4340 CALL CLEAR
4350 CALL SCREEN(4)
4360 PRINT " C H A L L E N G E R"::" S T A G E"::::
4370 GOSUB 4940
4380 CALL CLEAR
4390 FOR J=1 TO 30
4400 VEN(J)=0
4410 NEXT J
4420 CSF=1
4430 FOR J=1 TO 5
4440 AUX1=INT(RND*29)+1
4450 AUX2=AUX1+1
4460 IF VEN(AUX1)<>0 THEN 4440
4470 IF VEN(AUX2)<>0 THEN 4440
4480 SP(J)=AUX1
4490 VEN(AUX1)=1
4500 VEN(AUX2)=1
4510 NEXT J
4520 BOMBA=6
4530 NA=0
4540 L=0
4550 CALL SCREEN(14)
4560 FOR J=1 TO 5
4570 CALL HCHAR(24,SP(J),152)
4580 CALL HCHAR(24,SP(J)+1,153)
4590 NEXT J
4600 GOTO 2030
4610 BOMBA=BOMBA-1
4620 IF BOMBA<=0 THEN 3170
4630 CALL VCHAR(YNUO+1,XNUO,89,24-YNUO)
4640 FOR J=1 TO 5
4650 IF SP(J)=31 THEN 4700
4660 CALL GCHAR(24,SP(J),P)
4670 IF P=89 THEN 4730
4680 CALL GCHAR(24,SP(J)+1,P)
4690 IF P=89 THEN 4730
4700 NEXT J
4710 CALL VCHAR(YNUO+1,XNUO,32,24-YNUO)
4720 GOTO 2260
4730 NA=NA+1
4740 CALL VCHAR(YNUO+1,XNUO,32,24-YNUO)
4750 CALL HCHAR(24,SP(J),154)
4760 CALL HCHAR(24,SP(J)+1,155)
4770 SP(J)=31
4780 GOTO 2260
4790 CALL CLEAR
4800 CSF=0
4810 IF NA=5 THEN 4880
4820 PNA=NA*100
4830 SCO=SCO+PNA
4840 PRINT " NAVI AFFONDATE ";NA::" PUNTI TOTALIZZATI ";PNA::::" PUNTEGGIO ATTUALE =";SCO
4850 GOSUB 4940
4860 GOSUB 4070
4870 GOTO 1660
4880 SCO=SCO+1000
4890 PRINT " PERFECT !"::" SPECIAL BONUS 1000 POINTS"
4900 PRINT ::::" PUNTEGGIO ATTUALE =";SCO
4910 GOSUB 4940
4920 GOSUB 4070
4930 GOTO 1660
4940 FOR I=1 TO 300
4950 NEXT I
4960 RETURN
4970 END
