La rivista "SUPERVIC & C64" aveva creato un sistema per aiutare gli utenti nella battitura dei listati.
L'idea era buona in quanto sfruttava una sistema di checksum per verificare ogni volta che veniva inviato un return.
Il listato al termine di ogni riga presentava un numero e se corrispondeva con quello uscito sullo schermo significava che l'inserimento della linea era corretto.
Il calcolo era una semplice somma dei codici ascii dei caratteri contenuti nella riga escludendo gli spazi.
Il programma quando attivato si "sistemava" nello spazio buffer dedicato al registratore a cassette ed era necessario disattivarlo prima di registrare o caricare un programma. Il programma non dava problemi invece se si utilizzava il floppy disk.
L'articolo della rivista era il seguente:
"Tutti i listati pubblicati da SUPER VIC sono ottenuti mediante un calcolatore ed una stampante direttamente da versioni perfettamente funzionanti e sottoposte a prove esaustive dei programmi, tuttavia qualche problema può sempre sorgere. Per evitare inutili frustrazioni, viene proposto l'OK-LIST, un modo rivoluzionario di introdurre i programmi che vi avverte all'istante se avete commesso un errore di battitura. Sappiamo tutti quanto sia difficile digitare correttamente un programma fin dalla prima volta. Errori di battitura apparentemente banali possono provocare i temuti messaggi ERROR, o provocare anche il blocco completo del sistema (la tastiera non reagisce alla pressione dei tasti RUN/STOP e RESTORE).
Generalmente l'unico modo di ovviare a simili blocchi totali consiste nel far ripartire il calcolatore mediante spegnimento e riaccensione, cancellando, però, la memoria e tutto il vostro lavoro di battitura. Anche quando riuscite a localizzare ed a correggere le righe errate, sembrano sempre esserci altri errori in agguato nelle centinaia di righe che compongono il programma. Talvolta viene la voglia di arrendersi.
Errori elusivi
Alcuni errori sono quasi impossibili da rilevare, specialmente per i principianti che sanno poco o nulla di programmazione. Ad esempio, sapete identificare l'errore presente in questa riga?
100 PRINTRIGHT$ ("00" + MIO$ (STR$ (V),2,3)
Ecco come dovrebbe essere:
100 PRINTRIGHT$ ("00" + MIO$ (STR$ (V),2),3)
Avete notato la differenza? Mancava una parentesi chiusa dopo il numero 2.
Una parentesi aperta deve avere sempre una parentesi chiusa corrispondente. Se sommate tutte le parentesi presenti in una istruzione, dovete ottenere un egual numero di parentesi aperte e chiuse. Un sogno irrealizzabile? Il punto di forza dei calcolatori è che essi eccellono nei compiti noiosi e che richiedono precisione. Quindi, perché non utilizzare il vostro calcolatore per controllare i testi da voi digitati?
È un sogno irrealizzabile?
Non con i'OK-LiSTi annidato all'interno del vostro VIC 20 o C 64, il programma controlla automaticamente ogni riga battuta. Mostra un numero in cima al vostro schermo. Questo numero, chiamato "checksum", corrisponde all'ultima riga da voi introdotta. Rappresenta la somma del valore ASCII di ogni carattere presente nella riga.
Un numero corrispondente nel listato del programma pubblicato vi permette di confrontare il valore numerico di controllo con il "checksum" mostrato da OK-LIST. Uno sguardo è sufficiente per avere la conferma di aver digitato la riga correttamente. OK·LIST è un breve programma in linguaggio macchina residente in un area di memoria relativamente sicura, il buffer del registratore. Rimarrà in tale zona finché non spegnete il calcolatore o manderete in esecuzione un altro programma che utilizza il buffer del registratore. Caricare o salvare programmi BASIC da e su disco, non avrà alcuna influenza sul programma in questione.
Come inserire l'OK-LIST
Battete il programma che vale sia per il VIC 20 sia per il C64. C'è una sola piccola trappola: il programma non può controllare sé stesso, quindi porre particolare attenzione nella sua battitura. Dato che si tratta di un programma in linguaggio macchina, siate estremamente attenti. Fate attenzione a non battere delle virgole in più, la lettera O invece di zero, e controllate ogni valore numerico accuratamente. Fortunatamente, OK-LIST è un programma breve, quindi non dovreste avere eccessivi problemi. Dopo aver introdotto OK-LIST, registratelo su disco o nastro per lo meno un paio di volte prima di mandarlo in esecuzione la prima volta.
Se avete commesso errori dii ortografia nel programma, ciò può provocare un blocco completo del sistema quando lo eseguite per la prima volta. Tenendone una copia registrata a portata di mano, avrete la possibilità di ricaricarlo ed andare a caccia dell'errore. Inoltre, avrete bisogno di una copia di OK-LIST poiché sarà utilizzato sempre più spesso, ogni volta che copierete un programma dalla nostra rivista. Quando manderete in esecuzione OK-LIST, il programma verrà copiato in memoria dove rimarrà al sicuro. Premete quindi il tasto RETURN sulla riga dove il cursore si trova, in modo da attivare il programma. Se occorresse riattivarlo, limitatevi a battere SYS886 seguito da RETURN.
Come si usa OK-LIST
Ora, vediamo come funziona. Listate il programma che state digitando, muovete il cursore in modo da sovrapporvi ad una delle righe, e premete RETURN. Se avete digitato OK-LIST in maniera precisa, in cima al vostro schermo apparirà un valore numerico.
10 A = 1 :B = 72:PRINT "SCORE= "; SC:rem 199
NON DIGITATE il commento dopo i due punti, rappresenta il valore di "checksum").
Provate a modifica re la riga, premete RETURN, e notate che il numero è cambiato. Tutti i listati per VIC 20 e C 64 che appariranno, sulla nostra rivista avranno un numero posto alla fine di ogni riga, ad esempio ":rem 123". Non inserite questo numero nella linea d'Istruzione! Serve solo per vostra conoscenza.
Il comando "rem" è utilizzato per rendere il valore numerico innocuo, nel caso in cui qualcuno lo inserisca comunque. Tuttavia, ciò occuperebbe inutile spazio in memoria e farebbe si che il numero di controllo in cima allo schermo risultasse differente, pur nel caso in cui la riga sia inserita correttamente. Limitatevi a battere ogni riga (senza il valore numerico di controllo stampato accanto), e controllate che il numero mostrato in cima, allo schermo coincida con il valore numerico di controllo del listato. Se coincidono, proseguite battendo immediatamente la riga successiva. Diversamente, c'è un errore. Potete correggere la linea invece di aspettare e trovare l'errore quando mandate in esecuzione il programma. OK-LIST non è pignolo per quel che riguarda gli spazi bianchi. Non farà caso a spazi in più o in meno. Ciò torna a vostro vantaggio, dal momento che la spaziatura non è generalmente importante. Ma occasionalmente una spaziatura appropriata è importante, quindi siate particolarmente accurati per quelche riguarda gli spazi, dal momento che il programma rileverà praticamente qualsiasi altro errore. C'è un'altra cosa cui dovete badare: se utilizzate i comandi abbreviati per digitare la riga, il valore numerico di controllo non coinciderà. Ma esiste un modo per far si che OK-LIST controlli la riga. Dopo averla digitata, listatela. Ciò elimina le forme abbreviate dei comandi. Muovete quindi il cursore fino a portarlo in corrispondenza della riga e premete RETURN. Ora il valore numerico deve corrispondere. Potete controllare in questo modo interi gruppi di righe.
Quando ne avete abbastanza potete disattivare OK-LIST premendo RUN/ STOP-RESTORE (tenete premuto il tasto RUN/STOP e premete RESTORE). Se ne avete ancora bisogno, battete SYS886. Sarà quindi ancora disponibile per operare come vostro supporto personale all'introduzione dei programmi,
Speriamo che OK-LIST renda l'introduzione dei programmi più veloce e più facile, e che non dobbiate affrontare più frustranti messaggi di errore.
Istruzioni speciali per il salvataggio su nastro
Quando avete terminato di copiare un listato, dovete disattivare OK-LIST prima di registrare (SAVE) il programma su nastro. Disattivate OK-LIST premendo RUN/STOP-RESTORE (tenete premuto il tasto RUN/STOP e premete rapidamente RESTORE). Questa serie di operazioni non è necessaria per salvataggi su disco, ma dovete disattivare assolutamente OK-LIST nel modo descritto prima di registrare su nastro.
Il salvataggio su nastro cancella OK-LIST dalla memoria, quindi è necessario caricarlo (LOAD) e mandarlo in esecuzione (RUN) nuovamente se volete copiare un altro listato. Registrazioni su disco non cancellano il programma."
La schermata che si presentava all'avvio del programma era semplice ed indicava appunto il programma in funzione:
ed ecco il risultato nelle due versioni. Notare. che il checksum è uguale, segno che viene calcolato sui dati inseriti e non su calcoli eseguiti da algoritmi propri dell'hardware della macchina:
Per chi vuole provarlo questo è il listato:
100 PRINT"{clear}attendere prego..." |
per i più lazzaroni qui sono presenti i file da scaricare
Versione Commodore Vic20 | Versione Commodore 64 |