Trace for the PET – Commodore PET – Basic

Rivista: Compute! – Numero: 1 – Anno 1979 – Trascrizione: Francesco Fiorentini

Nell’attesa dell’uscita del numero 38 di RetroMagazine World ITA ed approfittando di un periodo di relativa calma (almeno apparente), mi sono messo a trascrivere po’ di listati.

Ho trovato questo interessante listato a pagina 84 del Nr. 1 della rivista americana Compute!
L’originale é opera di Brett Butler, che scrive:
Avrei voluto avere un programma TRACE quando ho avuto il mio PET. Alla fine l’ho scritto io stesso.
TRACE consente di vedere effettivamente l’esecuzione del Basic.
Risiede nella parte alta della memoria, occupando meno di 340 byte e visualizza ogni riga mentre viene interpretata, il che significa che mostra i comandi Basic effettivamente eseguiti, anziché limitarsi a elencare la riga. Ad esempio, se si dispone di un’istruzione condizionale come:
100 ON A GOTO 200,300,400 e la variabile A è uguale a 2, si vedrà: 100 ON A GOTO 200,300,
oppure con un’istruzione IF come:
100 IF A > 5 THEN B = B + 2
con A inferiore a 5 si vedrà: 100 IF A > 5 THEN B
con A superiore a 5 si vedrà: 100 IF A > 5 THEN B = B + 2
Un’altra caratteristica di TRACE è che mostra anche i valori valori che vengono immessi.
TRACE viene fornito come programma Basic, che POKE le istruzioni del linguaggio macchina. Trova la parte alta della memoria, ovunque si trovi, e costruisce il linguaggio macchina fino a di memoria, ovunque si trovi, e quindi costruisce il linguaggio macchina da lì. Quindi non importa se il PET è dotato di 4K,
8K, 16K o più: TRACE si troverà nel posto giusto.

Questo listato é stato pubblicato sulla rivista americana Compute! Nr. 1 dell’Autunno 1979.

Titolo: Trace for PET
Piattaforma: Commodore PET 2001-8N (8K)
Linguaggio: Basic
Versione originale: Brett Butler
Pubblicazione: Compute! – Nr. 1
Anno: Autunno 1979
Trascrizione: Francesco Fiorentini
Anno: 2022
Download: N/A
Note: Nella rivista esistono 2 versioni del programma. Una per i PET con ROM originale (questa) ed una per i PET con ROM upgrade a 32K.

Istruzioni
Copiate il programma sul vostro PET o sull’emulatore (personalmente ho utilizzato VICE con la seguente configurazione: Commodore PET 2001-8N (8K)) ed eseguite il programma con un classico RUN.
Il programma stesso vi indicherá le istruzioni:
– per allocare il programma in memoria: SYS 7866
– per attivarlo: SYS 7905
– per disabilitarlo: SYS 7851
Allocate il programma in memoria con SYS 7866, pulite la memoria BASIC con NEW e dopo aver digitato il vostro programma, attivate il Trace con SYS 7905 e lanciate il vosto programmma con RUN.

Come sempre, qui di seguito trovate il codice ottimizzato per essere copiato direttamente sul PET o su un emulatore. Suggerisco VICE con la seguente configurazione: Commodore PET 2001-8N (8K).

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:  Trace per PET – Commodore PET – 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
1 print"this program locates trace in"
2 print"any size memory that is fitted..."
3 print"this version works only with"
4 print"original r o m pets - use another"
5 print"version for the new (16k,32k) machines"
10 data -343,162,5,189,181,224,149,194,202,16,248,169,239,133,210,96
11 data 173,-343,133,134,173,-342,133,135,169,255,133,124,160,0,162
12 data 3,134,125,162,3,32,-272,208,249,202,208,248,32,-272,32,-272
13 data 76,106,197,162,5,189,-6,149,194,202,16,248,169,242,133,210,96
14 data 230,124,208,2,230,125,177,124,96,230,201,208,2,230,202,96,32
15 data 197,0,8,72,133,79,138,72,152,72,166,137,165,136,197,77,208,4
16 data 228,78,240,107,133,77,133,82,134,78,134,83,173,4,2,208,14,169
17 data 3,133,74,202,208,253,136,208,250,198,74,16,246,32,-54,169,160
18 data 160,80,153,255,127,136,208,250,132,76,132,84,132,85,132,86,120
19 data 248,160,15,6,82,38,83,162,253,181,87,117,87,149,87,232,48,247
20 data 136,16,238,216,88,162,2,169,48,133,89,134,88,181,84,72,74,74
21 data 74,74,32,-44,104,44,15,32,-44,166,88,202,16,233,32,-38,32,-38
22 data 165,75,197,201,240,55,165,79,208,4,133,77,240,47,16,42,201,255
23 data 208,8,169,94,32,-30,24,144,33,41,127,170,160,0,185,145,192,48
24 data 3,200,208,248,200,202,16,244,185,145,192,48,6,32,-32,200,208
25 data 245,41,127,32,-32,165,201,133,75,104,168,104,170,104,40,96,168
26 data 173,64,232,41,32,208,249,152,96,9,48,197,89,208,4,169,32,208
27 data 2,198,89,41,63,9,128,132,81,32,-54,164,76,153,0,128,192,79,208
28 data 2,160,7,200,132,76,164,81,96,76,-256,32,-263
1000 s2=peek(134)+peek(135)*256: s1=s2-343
1010 for j=s1 to s2-1
1020 read x:if x>=0 goto 1050
1030 y=x+s2:x=int(y/256):z=y-x*256
1040 poke j,z:j=j+1
1050 poke j,x
1060 next j
1070 print" === trace ==="
1080 rem by brett butler, toronto
1090 print"to initialize after load: sys";s1+17
1100 print"to enable trace: sys";s1+56
1110 print"to disable:  sys"; s1+2
1120 print"change speed with: poke"; s1+124;",x"
1130 print"==make a note of above commands=="
1140 print"save using machine language monitor:"
1150 print" .s 01,trace";
1160 s=int(s1/256):t=s1-s*256
1170 poke134,t: poke 135,s
1180 poke130,t: poke 131,s
1190 s=s1:gosub1400
1200 s=s2:gosub1400
1210 print:end
1400 print",";:s=s/4096
1410 gosub1420
1420 gosub1430
1430 t=int(s):if t>9 then t=t+7
1440 print chr$(t+48);: s=(s-int(s))*16:return

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.