LEZIONE 25 – GESTIONE ERRORI, TASTI FUNZIONE E INTERRUZIONE PROGRAMMI

da | Mar 12, 2024 | MSX BASIC | 0 commenti

Buongiorno a tutti.
Come avevo accennato nella puntata scorsa, parlerò della gestione degli errori, come poter lavorare con i tasti funzione e controllare il tasto STOP.
L’errore che si commette spesso è il cosiddetto errore di battitura, vedremo apparire sullo schermo il classico SYNTAX ERROR. Fortunatamente il nostro MSX ci riporta la riga dove è avvenuto e possiamo controllarla per fare le correzioni. Il problema è quando si verificano errori più gravi, cioè un errore dovuto ad una funzione o dato impostato errato. Per fare un esempio banale, quando una matrice va sotto lo zero, perché nei nostri calcoli non abbiamo messo un controllo che questo avvenga. In questo caso, L’MSX ha segnalato l’errore in quella linea, ma effettivamente l’errore è stato commesso prima. Questo per farvi capire che non sempre risolveremo i nostri problemi con la gestione errori. Per poter avviare la routine metteremo all’inizio del programma: ON ERROR GOTO Numero di linea. Nel momento che si verifica un qualsiasi errore l’esecuzione verrà mandata al linea indicata nel comando. Alla fine della routine usiamo la funzione RESUME per far ritornare l’esecuzione al punto dove è stato interrotto. Ci sono 3 diversi modi per usare RESUME; RESUME Numero linea, rimanderà il programma alla linea specificata. RESUME NEXT, che lo sposterà alla linea successiva dove è avvenuto l’errore ed infine RESUME [0] che farà rieseguire la linea dove è stato commesso l’errore. Possiamo anche sapere in quale linea è avvenuto l’errore e il suo codice con le funzioni ERL e ERR. ERL ci dice la linea ed ERR il codice (I codici errore li potete vedere in qualsiasi manuale o libro che parla di MSX Basic). C’è anche la possibilità di simulare un errore con la funzione ERROR Codice Errore. Come codice errore prenderemo un errore non contemplato nella tabella, che vanno dal 72 al 255. Per disattivare l’intercettamento errori, scriveremo: ON ERROR GOTO 0. Di seguito inserisco un piccolo programma per far capire meglio.

10 ON ERROR GOTO 1000

……..

100 INPUT “Inserire IL nome del file”; N$ : OPEN N$ FOR INPUT AS #1

…….

500 IF LEN(f$) > 30 THEN ERROR 100

…………

1000 IF ERR=66 THEN PRINT “Disco pieno. Cambiare il disco e premere spazio per continuare”: GOTO 1040

1010 IF ERR=53 THEN PRINT” Il file non esiste. Inserire il nome corretto”: RESUME

1020 IF ERR=100 THEN PRINT “Frase troppo lunga”: RESUME NEXT

1030 PRINT “Errore N°; ERR; “alla linea”; ERL; “programma terminato”: ON ERROR GOTO 0: END

1040 IF INKEY$<>CHR$(32) THEN 1030 ELSE RESUME 0

Faccio il caso che il nostro programma gestisca tanti files. Nella prima linea della subroutine intercettamento errori cioè la 1000, quando il disco sarà pieno ci darà la possibilità di cambiarlo, ripetendo l’operazione. RESUME o RESUME 0 sono la stessa cosa. Nella Linea 1010, intercetta l’errore alla linea 100 o simili e ci da la possibilità di reinserire il nome del file. La Linea 1020 sarà processata con l’errore codice 100 creato alla linea 500, al verificarsi di una frase più lunga del dovuto. Il programma rientra alla linea successiva (RESUME NEXT), ma potevo benissimo rimandarlo alla linea d’inserimento: RESUME Numero Linea. L’ultima linea, la 1030 entra in esecuzione solo quando ha riscontrato un errore non previsto dal programma, a questo punto ci dice dove è avvenuto e il suo codice, disattivata la routine ed esce.

Il comando KEY può essere usato per disabilitare la visualizzazione della linea in fondo allo schermo, scrivendo KEY OFF. Se vogliamo farla riapparire scriveremo KEY ON, se invece vogliamo visualizzare tutta la lista sullo schermo scriveremo KEY LIST. I 10 tasti funzione sono programmabili, per cambiare la descrizione di uno dei tasti scriveremo: KEY Numero Tasto, “Testo”. Il numero tasto va da 1 a 10, il testo potrà essere lungo al massimo 15 caratteri, ma nella linea inferiore dello schermo vedremo solo 7 caratteri per tasto, per problemi di spazio. Possiamo usare anche i caratteri speciali. Esempio: KEY 1,”PRINT” + CHR$(34) + “CIAO” + CHR$(34) + CHR$(13) . Per attivare l’intercettamento dei tasti funzione useremo il comando ON KEY GOSUB Numero Linea, Numero linea, eccetera. Possiamo inserire fino a 10 numeri di linea per quanto sono i tasti funzione. Possiamo anche saltarne uno lasciando un spazio vuoto. Ad esempio, vogliamo utilizzare i tasti F1, F2 e F4, la nostra linea sarà così scritta: ON KEY GOSUB 1000,2000,,3000. Come tutti gli interrupt che ho spiegato in precedenza, per attivarli hanno bisogno di un altro comando: KEY (Numero Tasto) ON, se vogliamo disattivarli metteremo OFF o STOP per sospenderli.

100 ON KEY GOSUB 1000,2000,,3000: KEY(1)ON: KEY(2)ON: KEY(4)ON

Se vogliamo che un programma non venga bloccato con il tasto STOP, all’inizio inseriremo la seguente linea: ON STOP GOSUB Numero Linea e subito dopo lo attiveremo, aggiungendo STOP ON. Con STOP OFF lo disattiviamo, mentre con STOP STOP lo sospendiamo. Nella subroutine possiamo inserire una frase oppure solo la funzione RETURN. Il comando STOP può essere usato anche per fare i controlli nei programmi. Per fare un esempio, vogliamo vedere cosa succede ad un determinato punto del suddetto, inseriremo il comando a tale punto per stopparlo così potremo fare i nostri controlli. C’è la possibilità di fare partire il programma dal punto interrotto usando il comando CONT. Quest’ultimo lo possiamo usare anche se l’interruzione è stata fatta con il tasto STOP, ma per portelo usare ci devo essere i presupposti giusti, altrimenti l’MSX segnalerà un messaggio d’errore : “Can’t continue”.

Anche questa puntata è giunta al termine. Ringrazio ancora tutte le persone che stanno seguendo questa lunga rubrica. Alla prossima 🙂

 

 

 

 

 

 

0 commenti

Invia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

LEZIONE 26 – INTERVAL ON, RND ED ALTRI

LEZIONE 26 – INTERVAL ON, RND ED ALTRI

Buongiorno a tutti, In questa puntata parlerò di un interrupt importante, specialmente per i giochi, quando vogliamo far apparire un nemico all'improvviso o un oggetto utile, ma anche per creare un cronometro o un orologio e tante altre cose. Il COMANDO sfrutta il...

LEZIONE 26 – INTERVAL ON, RND ED ALTRI

LEZIONE 21 – MSX e la musica

L'MSX ha un ottimo chip sonoro che può 'suonare' tre voci contemporaneamente. Iniziamo con il commando classico che sentiamo spesso in vari programmi o quando avviene un errore. Il suo nome è BEEP, cioè scrivendo il nome di questo comando riproduciamo questo suono. E'...

it_ITIT_IT