Planet Raith – ZX81 – Basic

Rivista: Popular Computing Weekly – Numero: 2 Vol. 1 – Anno 1982 – Trascrizione: Francesco Fiorentini

E’ la volta di un nuovo computer, lo ZX81, ad entrare a far parte del club di RetroLiPS.

Lo ZX81 fu presentato nel Marzo del 1981; il design portava ancora la firma di Rick Dickinson. L’hardware si basava sempre sul microprocessore Z80 e rappresentava una ottimizzazione dello ZX80. Se volete approfondire la storia di questa macchina, vi invito a leggere l’articolo “I purosangue Sinclair della serie ZX” scritto da Alberto Apostolo che potete trovare nel Numero 11 di RetroMagazine.

Il listato che andiamo a presentarvi é un semplice gestionale scritto in Basic che utilizza solo testo.

Il listato é stato pubblicato sulla rivista inglese Popular Computing Weekly del 29 Aprile 1982 Vol. 1 Nr. 2.
Interessante notare il costo della rivista all’epoca, solo 30 penny.

Titolo: Planet Raith
Piattaforma: ZX81
Linguaggio: Basic
Versione originale: Dave Middleton
Pubblicazione: Popular Computing Weekly nr. 2
Anno: 1982
Trascrizione: Francesco Fiorentini
Anno: 2021
Download: Planet.p
Note: Il titolo del gioco sulla rivista é Planet Ruler, ma ho preferito intitolarlo Planet Raith dal nome usato per identificare il pianeta all’interno del gioco.

Istruzioni
Sei il comandante del pianeta Raith ed il tuo compito é assicurare il perfetto funzionamento delle miniere. La popolazione iniziale é di soli 100 abitanti ma, essendo le 1000 miniere operate roboticamente, ogni uomo puó controllare 10 miniere per volta. Durante il ciclo annuale devi decidere quante miniere costruire e vendere. Devi inoltre gestire la vendita di minerali per sfamare la popolazione. Se sei generoso altri immigranti verranno a lavorare per te, ma se sei tirchio la popolazione potrebbe assassinarti. Devi inoltre difenderti dagli attacchi Klingon e dalla tua stessa corruzione. Troppo denaro accumulato e sarai tentato di scappare…
Buon divertimento!

Qui di seguito trovate il codice da copiare sul vostro copiare sul vostro ZX81, oppure su un emulatore, noi suggeriamo EightyOne.

Di seguito le istruzioni per caricare il listato sull’emulatore EightyOne:
– Copiate il listato di cui sotto in un file .txt
– Scaricate il programma zxtext2p
– Da riga di comando trasformate il vosto file .txt in un .p (caricabile dall’emulatore)
zxtext2p <nomefile>.txt
– Il programma genererá un file out.p che potrete caricare sull’emulatore
– Avviate l’emulatore e trascinate il file out.p sull’emulatore
– L’emulatore caricherá automaticamente il file
– Premete R per eseguire il codice
– Buon divertimento!!!

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 nel listato prima di copiarlo sull’emulatore.

Listato:  Planet Raith – ZX81 – 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
1000 LET P=100
1010 LET I=5
1020 LET D=0
1030 LET S=3650
1040 LET K=350
1050 LET M=4000
1060 LET L=1000
1070 LET Y=1   
1080 LET C=4   
1090 LET N=2576
1100 LET D=0
2000 CLS   
2010 PRINT "ANNUAL CONTROLLERS REPORT FOR" 
2020 PRINT "YEAR ";N   
2025 LET N=N+1 
2030 PRINT 
2040 PRINT "SIR, DURING THE LAST YEAR:"
2050 PRINT 
2060 PRINT D;" WORKERS DIED FROM STARVATION"   
2070 PRINT "AND ";I;" IMMIGRANTS ";
2080 PRINT "CAME TO RAITH."
2090 IF Y>0 THEN GOTO 2200
2100 LET P=INT(P/2)
2110 PRINT 
2120 PRINT "THE KLINGONS ATTACKED AND HALF OF THE PEOPLE ARE DEAD"  
2200 PRINT
2210 PRINT "THE POPULATION  IS NOW ";P 
2220 PRINT "THERE ARE ";L;" MINE SHAFTS"   
2230 PRINT "THE MINES PRODUCED ";M;" TONNES"   
2240 PRINT "OF MINERALS AT ";C;" TONNE/MINE"   
2250 PRINT "BUT KLINGONS PIRATED ";K;" TONNES"
2255 PRINT "LEAVING ";S; " TONNES IN STORAGE"  
2260 PRINT 
2270 PRINT "PRESS C TO CONTINUE"
2280 LET A$=INKEY
2290 IF A$<>"C" THEN GOTO 2280 
2300 CLS   
2310 PRINT "THERE ARE ";S;" TONNES OF"
2315 PRINT "MINERALS IN STOCK" 
2320 LET C=INT RND*10  
2330 LET V=C+17
2340 PRINT 
2350 PRINT "IT CURRENTLY COSTS ";
2360 PRINT V;" TONNES "
2365 PRINT "TO OPEN A MINE"
2370 PRINT 
2380 PRINT "HOW MANY MINES DO YOU WANT TO" 
2390 PRINT "BUILD THIS YEAR?"  
2400 INPUT X
2410 LET X=INT ABS X   
2420 IF X=0 THEN GOTO 2050 
2430 IF V*X<=S THEN GOTO 2480  
2440 PRINT "THERE IS ONLY ENOUIGH STOCK TO "
2450 PRINT "BUY HATERIALS FOR "
2455 PRINT INT (S/V);" MINES "
2460 GOTO 2370 
2480 LET L=L+X
2485 LET S=S-V*X
2500 PAUSE 20  
2510 CLS
2515 PRINT "RAITH CURRENTLY HAS "
2516 PRINT L;" MINE SHAFTS"
2517 PRINT
2520 PRINT "HOW MANY MINES WILL YOU SELL?"
2530 INPUT X
2560 LET X=INT ABS X
2570 IF X=0 THEN GOTO 2670
2580 IF X<L THEN GOTO 2640
2590 PRINT "CONTROLLER, YOU ONLY HAVE";L
2600 PRINT "MINES... TRY SELLING A FEW LESS"
2610 GOTO 2520
2640 LET L=L-X
2650 LET S=S+V*X
2660 PAUSE 20
2670 CLS
2675 PRINT "THERE ARE ";S;" TONNES OF "
2676 PRINT "MINERALS IN STOCK"
2677 PRINT 
2680 PRINT "HOW MUCH STOCK WILL YOU SELL TO"   
2690 PRINT "FEED THE HORK FORCE?"
2700 INPUT F
2710 LET F=INT ABS F
2720 IF F<=S THEN GOTO 2770
2725 PRINT 
2730 PRINT "SUCH GENEROSITY COMMANDER BUT"
2740 PRINT "THERE ARE ONLY";S;" TONNES OF"
2750 PRINT "MINERALS IN STOCK" 
2755 PRINT 
2760 GOTO 2680 
2770 LET S=S-F
2780 LET D=P-INT (F/20)
2790 LET I=0
2800 IF D>=0 THEN GOTO 2830
2810 LET I=-D/2
2820 LET D=0   
2830 PAUSE 20  
2835 CLS   
2850 PRINT "RAITH HAS ";L;" MINE SHAFTS"   
2860 PRINT
2900 PRINT "HOW MAN MINES WILL BE WORKED?"
2910 INPUT G   
2920 LET G=INT ABS G   
2930 IF G=0 THEN GOTO 3100 
2940 IF G<=L THEN GOTO 2990
2950 PRINT "IMAGINATIVE THINKING SIR BUT"
2960 PRINT "WE ONLY HAVE ";L;" MINE SHAFTS"
2965 PRINT 
2970 GOTO 2900
2990 IF INT (G/2)<=S THEN GOTO 3050
2995 PRINT 
3000 PRINT "0.5 TONNE OF STOCK HAS TO BE"
3010 PRINT "SOLD TO PURCHASE EQUIPMENT FOR"
3020 PRINT "EACH ACTIVE MINE. WE HAVE ENOUGH"  
3030 PRINT "STOCK TO OPERATE ";INT (S/2); " MINES" 
3035 PRINT 
3040 GOTO 2900 
3050 IF G<=10*P THEN GOTO 3100
3055 PRINT 
3060 PRINT "COMMANDER, ONE WORKER CAN "
3070 PRINT "SUPERVISE ONLY 10 MINES. WE CAN"   
3080 PRINT "ONLY HAVE A MAXIMUM OF "; INT (10*P)   
3090 PRINT "MINES OPERATING AT PRESENT"
3094 PRINT 
3095 GOTO 2900
3100 LET C=INT (RND*5+1)
3110 LET M=G*
3115 LET K=0
3120 LET Q=RND*5+1
3130 IF INT (Q/2)<>Q/2 THEN GOTO 3150
3140 LET K=INT (S/Q)   
3150 LET S=S-K+M   
3160 LET Q=5*RND
3170 LET I=INT (C*(20*L+S)/P/100+1)
3180 LET P=P+
3190 LET Q=INT (F/20)  
3200 LET Y=INT (10*(3*RND-.3))
3210 IF P<Q THEN GOTO 1100 
3220 LET D=P-
3230 IF D>.5*P THEN GOTO 6000
3240 IF D>.35*P THEN GOTO 6100
3250 IF D>.2*P THEN GOTO 6200
3260 LET P=Q   
3290 IF S>=100*P THEN GOTO 6300
3300 GOTO 2000
6000 CLS
6005 PRINT "YOU HAVE BEEN ASSASSINATED..."
6020 PAUSE 1000
6030 PRINT "WOULD VOU LIKE TO TRY AGAIN Y/N"   
6040 INPUT A$  
6050 IF A$="Y" THEN RUN
6060 GOTO 9999
6100 CLS
6110 GOTO 3260
6200 CLS
6205 PRINT "THE WORKERS ARE HUNGRY AND"
6210 PRINT "THERE IS TALK OF REBELLION"
6220 GOTO 3260 
6300 PRINT "YOU HAVE GONE TO ANOTHER PLANET"   
6310 PRINT "WITH THE CONTENTS OF THE"  
6320 PRINT "TREASURY..."   
6330 GOTO 6030 
9999 PRINT "GOOD BYE..."

Share

One thought on “Planet Raith – ZX81 – Basic

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.