lunedì 17 agosto 2020

Giochi della rivista SUPER COMMODORE n. 7 1985 per Commodore VIC-20


Istruzioni di NO ZAP

Questa breve ed utile routine salva automaticamente e periodicamente su disco le versioni aggiornate del programma BASIC sul quale state lavorando, costituendo un aiuto prezioso per chi abita in zone in cui si verificano frequenti black-out elettrici. La versione per VIC 20 funziona sia con che senza espansioni di memoria. Se vi siete già imbattuti, lavorando sul calcolatore, in un black-out elettrico, in un grosso sbalzo di tensione, o se soltanto qualcuno è inciampato nel cavo di alimentazione del computer, provocando la perdita irreparabile del programma su cui stavate lavorando da quattro ore filate, apprezzerete senz'altro l'utilità di questo programma. È facile infatti raccomandare a tutti di effettuare periodici salvataggi del programmi su cui si sta lavorando: in realtà, quando le idee scorrono veloci in mente è altrettanto facile dimenticarsene o rimandare progressivamente il salvataggio. NO ZAP non solo vi ricorda questa incombenza, ma se ne fa addirittura carico, automaticamente e periodicamente. Una volta mandato in esecuzione NO ZAP, ed inserito un nome di file, il programma salverà ogni dieci minuti la versione del programma che avete in memoria, aggiornandone il nome. Non dovrete compiere alcuna operazione particolare: tutto avverrà automaticamente. Ogni dieci minuti NO ZAP attende che abbiate finito di digitare la linea su cui state lavorando e appena premete RETURN, per inserirla in memoria, salva tutto il programma su disco. NO ZAP funziona anche con alcune utility o programmi di aiuto per la digitazione dei listati: funziona ad esempio insieme a OK-LIST, ma non con SPEEDSCRIPT o MLX (dal momento che MLX è un programma BASIC, NO ZAP farebbe un back-up di MLX stesso, invece che del programma in linguaggio macchina che state digitando...). NO ZAP funziona anche insieme al DOS 5.1 ed a molti tipi di Wedge. NO ZAP tiene conto delle dimensioni del programma sul quale state lavorando ed aggiunge automaticamente un numero progressivo di versione all'inizio del nome del file usato per il salvataggio. Sono disponibili fino a 100 versioni diverse (100 versioni * 10 minuti = 17 ore di lavoro continuato) numerate da 01 a 100, mentre al raggiungimento della 101-nesima il conteggio riparte da 00. Esistono solo due limiti non valicabili da NO ZAP: lo spazio libero sul disco e lo spazio libero sulla directory; se non ci sono blocchi liberi a sufficienza, il programma non verrà salvato e si ricordi che la directory può contenere al massimo 144 nomi di file.

Come usare NO ZAP
Il programma, una volta caricato e mandato in esecuzione, inserisce tramite istruzioni POKE una routine in linguaggio macchina a partire dalla cima corrente della memoria BASIC e la protegge dalle variabili BASIC. NO ZAP usa inoltre le locazioni di memoria da 739 a 767, che naturalmente non dovranno essere usate da altri programmi. Dopo avere dato il RUN a NO ZAP vi verrà chiesto:
FILENAME?
Digitate un nome di file senza virgolette, composto da un numero di caratteri compreso tra zero e quattordici, e premete RETURN (non cercate di usare un nome di file più lungo di quattordici caratteri, perché ciò provocherebbe il blocco del computer!). Non dovete aggiungere al nome il numero della versione, perché NO ZAP provvede automaticamente ad aggiungerlo per conto vostro. Infine digitate NEW e premete RETURN. Da questo punto in poi dimenticatevi pure di NO ZAP: esso agirà autonomamente e voi potrete tranquillamente salvare, caricare, eseguire e verifkare, come sempre, i programmi sui quali state lavorando. La prima volta che NO ZAP esegue un salvataggio usa un numero di versione 01; per esempio, se usate come nome di file PIPPO, la prima versione sarà 01PIPPO, la seconda 02PIPPO e così via. NO ZAP visualizza lo stato del disco dopo il salvataggio, ma non ripete l'operazione in caso di errore.

Salvataggi forzati ed interruttore
Occasionalmente, potreste voler salvare una nuova versione prima del prossimo salvataggio effettuato da NO ZAP. Oppure potreste voler disattivare temporaneamente NO ZAP, perché andate a colazione o comunque interrompete il lavoro per riprenderlo dopo un certo tempo. Per ottenere questi scopi usate rispettivamente le istruzioni (in modo diretto):
SYS 739 (salvataggio forzato)
SYS 745 (interruttore acceso/spento)
La SYS 739 incrementa il numero di versione e salva il programma: NO ZAP ripristina a zero il suo timer ed il salvataggio successivo avverrà dopo dieci minuti dalla SYS. La SYS 745 funziona come un interruttore: se NO ZAP è attivo, con questa SYS viene disattivato, mentre se è disattivato, questa SYS provvede a riattivarlo (come se gli fosse stato dato il RUN per la prima volta).

Alcuni trucchetti
NO ZAP è stato scritto in modo da non interferire con la vostra programmazione: RUN/STOP+RESTORE quindi non lo disattiva. L'unico modo per cancellare NO ZAP dalla memoria del computer è spegnere quest'ultimo, oppure eseguire una SYS64738 sul C64, o una SYS64802 sul VIC 20. Se, una sera, lavorando ad un programma decidete di andare a dormire una volta giunti alla versione 04PIPPO, il giorno dopo potrete utilizzare ancora PIPPO come nome del file, togliere il disco dal drive e dare quattro volte la SYS 739; quindi spegnete e riaccendete il drive: così facendo, NO ZAP continuerà a salvare, partendo dalla versione 05PIPPO. Dal momento che i numeri di versione sono posti all'inizio del nome del file, potete listare sullo schermo tutte le versioni fino ad ora salvate, usando:
LOAD"$:??PIPPO",8 [RETURN]
LIST [RETURN]
oppure, se usate il DOS, con
@$:??PIPPO
Una volta finito di lavorare sul programma potreste voler cancellare dal disco tutte le versioni intermedie registrate da NO ZAP. Ciò si ottiene con:
OPEN16,8,15,"S:??PIPPO":CLOSE15
oppure, se usate il DOS, con:
@S:??PIPPO
Assicuratevi di aver prima salvato la versione definitiva su un altro disco, oppure sullo stesso disco, ma con un altro nome.

Come lavora NO ZAP
NO ZAP trae vantaggio dal fatto che molte delle routine dell'interprete BASIC e del sistema operativo sono vettorizzate. Un vettore è una specie di tavola che dice al computer la locazione di una routine. Dal momento che il vettore è in RAM, esso può essere modificato per puntare ad un'altra routine appositamente approntata. Un programma che usa questa tecnica è chiamato "Wedge". NO ZAP costruisce una "deviazione" nel ciclo principale dell'interprete BASIC, in modo che il controllo venga passato a NO ZAP stesso ad ogni pressione del tasto RETURN, Quando si dà il RUN a NO ZAP, e si inserisce il nome del file, quest'ultimo viene memorizzato in un apposito buffer, subito dopo il numero di versione corrente. Il vettore nelle locazioni $302 e $303, che punta al ciclo principale BASIC, viene alterato ed uno dei timer interni al computer è posto a zero. NO ZAP legge il valore di questo timer ogni volta che viene premuto il tasto RETURN (e quindi inserita una linea BASIC): la versione per C64 utilizza uno dei due TOD (Time Of Day) disponibili nel computer nelle locazioni $DC08-$DCOA, mentre la versione per VIC 20 legge il "jilly clock" nelle locazioni $A0-$A1. Le operazioni di input/output su nastro possono quindi falsare gli intervalli di tempo tra un salvataggio e l'altro nella versione per VIC 20. Se il timer non ha ancora contato l'equivalente di dieci minuti, NO ZAP ripassa il controllo all'interprete BASIC (in $A483 nel C64, $C483 nel VIC 20). Dal momento che NO ZAP modifica il vettore principale nelle locazioni $302 e $303, non è compatibile con altri "Wedge" che utilizzano le stesse locazioni. A parte viene riportato il disassemblato di NO ZAP versione per C64, ottenuto tramite il SUPERMONITOR.


Giochi:

1) NO ZAP: un programma anti black-out
2) Apple Hunt
3) Pool
4) Number Quest
5) Heat seeker
6) ADSR: con il VIC il suono del C64

super_1985_7_vic20.rar

Nessun commento:

Posta un commento