Solar System – 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: Solar System
Piattaforma: Commodore 64
Linguaggio: Basic V2
Versione originale: Scott Talling
Pubblicazione: Best of Personal Computer World – Software for the Commodore 64
Anno: 1984
Trascrizione listatoFrancesco Fiorentini
Anno: 2023
Recupero software: DumpClub 64
Download: Best of PCW Software per C64

Istruzioni
Se si sceglie uno dei pianeti, si ottiene una visualizzazione tabellare che è una vera e propria enciclopedia, che fornisce distanza, massa, dimensioni, velocità e così via per quel pianeta. Premendo <spazio> si cambia la visualizzazione per mostrare tutti questi elementi in relazione alla Terra. Premendo <e> si torna al menu principale.

Il menú generale
Numero di satelliti
Informazioni sulla Terra
Informazioni su Saturno
Informazioni su Giove
Informazioni su Marte

Istruzioni: Questo interessante programma fornisce agli astronomi in erba tutte le informazioni necessarie sui pianeti del sistema solare. È anche un’introduzione educativa ai sistemi esperti su microcomputer. All’avvio del programma si verifica un breve ritardo durante il caricamento dei dati negli array. Quindi, dopo aver letto le istruzioni visualizzate, vengono presentate due opzioni principali: informazioni sui singoli pianeti o attributi individuali come le dimensioni, numero di satelliti, diametro… Se si sceglie uno dei pianeti, si ottiene una visualizzazione tabellare, quasi una vera e propria enciclopedia, che fornisce distanza, massa, dimensioni, velocità e così via per quel pianeta. Premendo <spazio> si cambia la visualizzazione per mostrare tutti questi elementi in relazione alla Terra. Premendo <e> si torna al menu principale.
Se si sceglie uno degli attributi, si ottiene un’altra visualizzazione tabellare che mostra i dati di ciascuno dei nove pianeti in ordine. Premendo si cambia l’ordine in classifica: il più grande per primo, il più piccolo per ultimo. Vi accorgerete che non potrete più fare a meno di dire alle persone: “Lo sapevi che…?”.

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: Solar System – 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
205
206
207
208
209
210
211
212
213
214
215
216
10 poke53280,6:poke53281,0
20 print"{clear}"tab(12)"{down*6}{pink}- solar system -"
30 printtab(14)"{cm y*12}"
40 print"{down*2}           {light blue}by:- {yellow}scott talling"
50 fori=1to50:a=int(rnd(1)*1000+1):ifpeek(1024+a)<>32then70
60 poke1024+a,46:poke55296+a,1
70 forj=1to30:nextj:next
80 rem * dim and load arrays
90 dimsp%(7,63),c%(9,3),ws%(9),pn$(9),dn$(10),du$(10),d(9,10),do%(9)
100 fori=1to7:forj=1to63:readsp%(i,j):nextj,i
110 fori=1to9:forj=1to3:readc%(i,j):nextj,i
120 fori=1to9:readws%(i):next
130 fori=1to9:readpn$(i):next
140 fori=1to10:readdn$(i):next
150 fori=1to10:readdu$(i):next
160 fori=1to9:forj=1to10:readd(i,j):nextj,i:gosub900
200 print"{clear}"tab(18)"{purple}{down}menu":printtab(18)"{cm y*4}"
220 fori=1to9:print"{yellow}";i;"{green} ";pn$(i);"   {yellow}","{left*8}";i+9;"{green} ";dn$(i)
230 print:next
240 printtab(13)"{yellow}19";"{green}  ";dn$(10)
250 input"{purple}{down}        enter option {right*2}{left*3}";op$
260 ifop$="{up*3}"orval(op$)<=0orval(op$)>19thenprint"{up}{up}{up}":goto250
270 ifval(op$)<10thenn=val(op$):goto500
280 n=val(op$)-9:goto1000
500 print"{clear}{green}press space bar to change display"
510 print"{down}to show information as a ratio of that"
520 print"{down}of the earth and visa versa."
525 print"{down}press 'e' to return to menu."
530 fori=1to1500:geta$:ifa$=""thennext
535 v=53248:pokev+28,0:poke2040,13:fori=0to62:poke832+i,sp%(ws%(n),i+1):next
540 print"{clear}{down*10}{blue}{reverse on}          {up}{left} {up}{left} {up}{left} {up}{left} {up}{left} {up}{left} {up}{left} {up}{left} {up}{left} {up}{left} {up}{left} {f3}"
550 print"{home}{down*5}{right*12}{green}the planet {light gray}";pn$(n)
555 print"{down}";tab(12)"{green}planet no. {light gray}";n
565 pokev+23,1:pokev+29,1
570 pokev+1,70:pokev,35:pokev+21,1:pokev+39,c%(n,1)
580 ifc%(n,2)<>100thenpokev+37,c%(n,2):pokev+38,c%(n,3):pokev+28,1
600 print"{down*5}"
610 fori=1to10
620 print"{green}";dn$(i);:forz=1to21-len(dn$(i)):print".";:nextz:print
630 print"{light blue}{up}";tab(20);d(n,i)
640 print"{yellow}{up}";tab(32);du$(i)
650 next
660 geta$:ifa$=""then660
670 ifa$=" "then700
680 ifa$="e"thenpokev+21,0:goto200
690 goto660
700 print"{clear}{down*10}{blue}{reverse on}          {up}{left} {up}{left} {up}{left} {up}{left} {up}{left} {up}{left} {up}{left} {up}{left} {up}{left} {up}{left} {up}{left} {f3}"
710 print"{down*4}"tab(12)"{green}the planet {light gray}";pn$(n)
720 print"{down}"tab(12)"{green}planet no. {light gray}";n
730 print"{down*5}"
740 fori=1to10
750 print"{green}";dn$(i);:forz=1to21-len(dn$(i)):print".";:nextz:print
760 print"{light blue}{up}";tab(20);d(n,i)/d(3,i)
770 nexti
780 geta$:ifa$=""then780
790 ifa$=" "then540
800 ifa$="e"thenpokev+21,0:goto200
900 print"{clear}{down*12}{green}   do you require instructions [y/n]"
910 geta$:ifa$=""then910
920 ifa$<>"y"thenreturn
930 poke53272,22:print"{clear}"tab(14)"{purple}SOLAR SYSTEM":printtab(14)"{cm y*12}"
931 print"{down}{green}  This program gives data on the nine"
932 print"planets of our solar system. There are"
933 print"two options :-"
934 print"{down}{yellow}1{green} Choose one of the planets and have"
935 print"various pieces of data concerning the"
936 print"chosen planet displayed together with"
937 print"a graphical representation of the"
938 print"planet in the top left of the display."
939 print"Pressing the space bar changes the"
940 print"display to show the data as a fraction"
941 print"of the same data item of the Earth thus"
942 print"making it easier to visualize the value."
943 print"{yellow}2{green} Choose one of the pieces of data and"
944 print"have it displayed for each planet. By"
945 print"pressing the space bar it is possible"
946 print"to change the order from planet order"
947 print"to RANK order(i.e. largest first etc)."
948 print"{down}{purple}{space*5}Press any key for main menu."
949 geta$:ifa$=""then949
950 poke53272,21:goto200
1000 print"{clear}{down}{purple} to change display order from planet"
1010 print"{down}order to rank order, and "
1020 print"{down}visa versa - press space bar."
1030 print"{down}press 'e' for menu"
1040 fori=1to1500:geta$:ifa$=""thennext
1050 print"{clear}{down}{light gray}"tab((40-len(dn$(n)))/2);dn$(n)
1060 print"{down*5}"
1070 fori=1to9
1080 print"{green}";pn$(i);:forz=1to21-len(pn$(i)):print".";:nextz:print
1090 print"{light blue}{up}";tab(20);d(i,n)
1100 print"{yellow}{up}";tab(32);du$(n)
1110 nexti
1120 geta$:ifa$=""then1120
1130 ifa$="e"then200
1140 ifa$<>" "then1120
1150 print"{clear}{down}{light gray}"tab((40-len(dn$(n)))/2);dn$(n)
1160 print"{down*5}"
1170 fori=1to9:do%(i)=0:next:q=0
1180 fori=1to9:forj=1to9:ifdo%(j)=1then1200
1190 ifd(j,n)=>qthenq=d(j,n):z=j
1200 nextj:gosub1210:q=0:do%(z)=1:z=0:nexti:goto1250
1210 print"{green}";pn$(z);:forr=1to21-len(pn$(z)):print".";:nextr:print
1220 print"{light blue}{up}";tab(20);d(z,n)
1230 print"{yellow}{up}";tab(32);du$(n)
1240 return
1250 geta$:ifa$=""then1250
1260 ifa$="e"then200
1270 ifa$<>" "then1250
1280 goto1050
5000 rem sprite - mercury/pluto/venus
5010 data0,0,0,0,252,0,3,255,0
5020 data7,255,128,15,255,192
5030 data31,255,224,63,255,240
5040 data63,255,240,127,255,248
5050 data127,255,248,127,255,248
5060 data127,255,248,63,255,240
5070 data63,255,240,31,255,224
5080 data15,255,192,7,255,128,3,255,0
5090 data0,252,0,0,0,0,0,0,0
5100 rem * sprite data - earth
5110 data0,0,0,0,0,3,0,0,0,0,168,0
5120 data2,170,0,6,169,64,21,170,64
5130 data21,105,80,85,170,80
5140 data149,105,104,165,105,168
5150 data169,165,168,42,170,160
5160 data42,169,96,42,106,80,6,170,64
5170 data5,170,64,2,170,0,0,168,0
5180 data0,0,0,0,0,0
5200 rem * sprite data - mars
5210 data128,0,0,0,0,0,0,0,0,0,62,24
5220 data0,255,152,1,255,192,3,127,224
5230 data2,254,224,7,253,240,7,249,240
5240 data7,251,240,7,247,240,7,255,240
5250 data3,255,224,3,191,224,1,223,192
5260 data0,255,128,0,62,0,0,0,0,0,0,0
5270 data0,0,0
5300 rem * sprite data - jupiter
5310 data0,0,0,0,40,0,68,170,16
5320 data2,170,128,5,85,81,5,85,80
5330 data21,85,84,47,170,168
5340 data47,170,168,21,85,84,21,85,84
5350 data10,170,160,69,85,80,1,85,64
5360 data16,170,1,0,40,4,0,0,0,0,0,16
5370 data0,0,0,64,0,1,0,1,0
5400 rem * sprite data -  saturn
5410 data128,0,0,16,0,128,0,0,8
5420 data0,126,32,32,255,0,1,255,128
5430 data3,255,240,31,255,200
5440 data39,255,228,79,255,242
5450 data151,255,234,167,255,234
5460 data163,255,210,147,255,228
5470 data79,255,200,32,124,16,31,1,224
5480 data0,254,5,0,124,0,4,0,8,0,0,0
5500 rem * sprite data - uranus
5510 data130,0,0,0,252,0,3,255,8
5520 data7,255,130,15,255,192
5530 data31,255,224,63,255,240
5540 data63,255,240,127,255,248
5550 data127,255,248,127,255,248
5560 data127,255,248,63,255,240
5570 data63,255,240,31,255,224
5580 data15,255,192,7,255,128,3,255,8
5590 data0,252,0,0,0,0,0,0,0
5600 rem * sprite data - neptune
5610 data128,0,0,0,252,0,3,255,0
5620 data7,255,128,15,255,192
5630 data31,255,224,63,255,240
5640 data63,255,240,127,255,248
5650 data127,255,248,127,255,248
5660 data127,255,248,63,255,240
5670 data63,255,240,31,255,224
5680 data15,255,192,7,255,128,3,255,0
5690 data0,252,0,0,0,8,0,0,0
5700 rem * sprite colours
5710 data1,100,0,1,100,0,6,5,1,2,100,0
5720 data11,12,2,7,100,0,13,100,0
5730 data14,100,0,1,100,0
5800 rem * which sprite data
5810 data1,1,2,3,4,5,6,7,1
5900 rem * planet name data
5910 datamercury,venus,earth,mars
5920 datajupiter,saturn,uranus,neptune
5930 datapluto
6000 rem * data name
6010 datano. of satellites
6020 datadistance from sun
6030 dataorbital velocity
6040 datalength of year,length of day
6050 datamass,diameter,density
6060 datasurface gravity
6070 dataescape velocity
6100 rem * data units
6110 data ,km,km/sec.,days,hours,kg,km
6120 datakg/m^3,m/s^2,km/sec
6200 rem * actual planet data
6210 data0,57900000,47.89,87.97,1416
6220 data3.312e23,4850,5.4,3.63,4.2
6230 data0,108200000,35.03,224.7,5863
6240 data4.872e24,12140,5.2,8.59,10.3
6250 data1,149598000,29.79,365.26,23.9
6260 data5.978e24,12756,5.52,9.81,11.2
6270 data2,227900000,24.13,686.98,24.6
6280 data6.43e23,6790,3.95,3.74,5.0
6290 data12,778300000,13.06,4333,9.83
6300 data1.9e27,142600,1.34,25.9,61
6310 data10,1427000000,9.64,10759.22
6320 data10.23,5.688e26,120200,0.7
6330 data11.29,37
6340 data5,2869600000,6.81,30685.4
6350 data10.82,8.686e+25,49000,1.58
6360 data10.39,22
6370 data2,4496600000,5.43,60189,15.8
6380 data1.03e26,50200,2.3,13.99,25
6390 data0,5900000000,4.74,90465,6.15
6400 data1.02e24,6400,4.5,4.22,4

Share

One thought on “Solar System – Commodore 64 – Basic V2

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.