Home

Manuale GBASIC 7.40

image

Contents

1. i HEADER HEADER DB 1BH INDICA DRIVER PRESENTE DW DRVEND HEADER DB 0 DEFINIZIONE DEL TIPO VALORI AMMESSI 7 O CHAR ORIENTED 7 1 BLOCK ORIENTED 7 2 SPECIAL DEVICE DB VCONS poss NOME DEL DRIVER SEMPRE 8 CARATTERI H INIZIO PARTE ESEGUIBILE XCONS DRIVER LD A B DECIDI QUALE OPERAZIONE ESEGUIRE GE 2 JP Z INISIO CE 4 JP Z SIOTX GP 3 JP Z DRV_CLO GP 5 JP Z RDCHAR CE 6 JP Z STATUS EE 7 JP Z INFO CP 8 JP Z GETCH GE 9 JP Z FLUSH CP 10 JP Z CHCNT CE 88H JP Z AUTO LD A 1 ERRORE CODICE RICHIESTA NON AMMESSO RET FUNZIONE N 2 INIT INIZIALIZZA IL DRIVER INISIO DI LD A 7 IL REG E E GIA SETTATO DA CHI HA FATTO CALL DRIVER LD DANS ASPETTATI UNA SIO CALL SYSTEM TRIPLEX ANALIZZA LA STRINGA DI CONFIG Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale CHE DEVE ESSERE PRESENTE E RITORNA D DATA C CONTROLLO V VETTORE B TABELLA LD HL CTLP CONTROL PORT LD HL C INC HL LD HL
2. 109 Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale 3 PRINT CH lt drv gt lt lista di espr num o stringa gt lt P1EX gt Descrizione La frase PRINT serve per determinare l emissione verso il dispositivo logico CON di quantit numeriche od alfanumeriche Le espressioni sono valutate prima di essere emesse La seconda forma utilizzata per scrivere nello pseudofile RAM ATTENZIONE SONO STATE INTRODOTTE VARIANTI CHE RICHIEDONO LA MODIFICA DEI PROGRAMMI ESISTENTI E stato variato l uso della parola chiave CH nelle frasi PRINT ed INPUT Questa modifica si resa necessaria per una doverosa riarmonizzazione logica Infatti la parola CH era usata impropriamente ed era ormai limitata solo ad alcuni casi specifici La nuova logica la seguente la parola CH viene usata per la redirezione dell input o dell output su un driver L espressione che segue d il numero del driver cos come dichiarato nella OPEN CH la vecchia parola CH viene sostituita da LDEV e serve per redirigere il dispositivo logico che normalmente CON Le possibilit sono quindi adesso due a redirigere temporaneamente il dispositivo logico CON normalmente usato da PRINT ed INPUT su un qualunque driver b redirigere temporaneamente le frasi PRINT ed INPUT su un diverso dispositivo logico Vedere nel seguito ulteriori spiegazioni Esempio di PRINT 5 LET A6 3 678 Libera ripro
3. Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale NUM LIN Numero di linea inesistente MODO Si tentato di eseguirte in modo diretto un comando ammesso solo per il modo differito LN LUNGA Una frase input ha ricevuto un numero eccessivo di caratteri vedi nota alla frase INPUT LDEV 5 CH Errore nel canale specificato nella frase INPUT CH o PRINT CH nella vecchia forma Da non confondere con i canali dei drivers ARITM Superamento capacit aritmetica DEV INES Dispositivo fisico inesistente Es DISPLAY 3 CLOSE 9 ecc DIV PER 0 Tentativo di eseguire una divisione per 0 Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale GIA OPEN Tentativo di aprire un driver gi aperto NON OPEN Tentativo di utilizzare un driver non aperto NOME Nome del driver maggiore di 8 caratteri DRV Errore correlato ad un driver VETT INT La funzione dos INSTVEC stata chiamata con un parametro E 2 o lt 0 ossia stato richiesto di installare un vettore che non appartiene n ad una SIO n ad una PIO n ad un CTC BUG Errore interno Segnalare C STG Errore in una stringa di configurazione MMT Errore del Mini Multi Task Si tentato di installare pi task del numero massimo previsto 4 sulla versione attuale Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale I STK OV
4. Sistema tipo Un tipico sistema di sviluppo costituito da un generico target Z 80 connesso ad un PC attraverso un canale seriale RS 232 Attraverso il PC possibile dialogare direttamente con il GBASIC presente sulla scheda compilare dei programmi scritti in GBASIC esteso ed inviarli al target Target Z 80 GBASIC Ciclo di sviluppo Il normale ciclo di sviluppo il seguente 1 editazione del programma GBASIC esteso sorgente tramite GBT o altro editor fi proprio gradimento 2 precompilazione tramite PREGB 3 invio del programma al target in formato ASCII precompilato TXT o in formato memory image HEX Per quanto possa essere utilizzato un qualunque programma di emulazione terminale GBT svolge questa funzione in modo ottimale consentendo inoltre molte altre funzioni 4 prova del programma con possibilit di ispezione dei simboli In questa fase si trae il massimo beneficio dalla implementazione ad interprete potendo interagire direttamente con il programma Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale L interfaccia utente GBT consente di eseguire tutte le fasi del ciclo restando sempre nel medesimo ambiente Lo Z 80 L immortale Z 80 il cuore dei sistemi GBASIC Le pi recenti versioni di Zilog e Toshiba gli consentono tuttavia prestazioni di tutto rispetto anche a velocit di 10 MHz ed oltre Il GBASIC stato collaudato su sistemi Z 80
5. Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Vettori e stringhe Differenza con BASIC standard I vettori possono avere solo una dimensione Se non dimensionati da programma assumono automaticamente dimensione 10 Le stringhe devono essere dimensionate come i vettori indicandone la dimensione massima Il tentativo di utilizzare stringhe non dimensionate determina un ERR STG Nel dimensionamento prevedere un carattere in pi del necessario per il terminatore In generale costanti e variabili stringa non possono essere combinate per formare espressioni anche se in taluni casi espressioni stringa possono operare correttamente Se ne sconsiglia tuttavia l impiego Esempio dim a 20 Nelle IF possono adesso essere utilizzati gli operatori di relazione uguale diverso maggiore e minore E stato eliminato il bug relativo alle stringhe nulle della precedente versione stringa nulla ad esempio A E inoltre possibile adesso il costrutto let a concat as XXX in precedenza non operava correttamente Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Editing Uso pratico Il programma GBASIC viene di regola scritto utlizzando un buon text editor modo non documento Quando si collegati con il sistema target sono possibili ulteriori operazioni di editing inserimento linea semplicemente battendola eliminazioni lin
6. Quando il GBASIC parte in autostart non vengono emessi messaggi sulla console Fino alla versione 7 4x il controllo dell autostart era demandato al driver di console che forniva anche l indirizzo di partenza Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Adesso tutto funziona come prima ma l utente ha la possibilit registrare nello storage sys vedi frase STORAGE una frase da eseguire all accensione ad esempio RUN 23000 o altro Basta inserire dopo le altre voci gi indicate al punto 3 la frase AUTO RUN 23000 Poich la linea deve essere terminata da CR si puy ad esempio scrivere PRINT LDEV 5 SYS STOR 05K BRG 1 AUTO RUN 23000 CHRS 13 Si pu inserire qualunque comando tenendo per presente che lo storage sys contiene solo 50 caratteri ad esempio LIST Ricordarsi di inserire una linea REM all inizio del programma o si avr la cancellazione automatica del programma in memoria Pi precisamente se selezionato l autostart si controlla se esiste un setup AUTO nello storage SYS se vi viene utilizzato Diversamente si usa la stringa del driver di console I comandi LOAD ABS e RUN sono concatenabili separandoli con i Se il sistema non dispone di ram non volatile o se si teme una sua insufficiente affidabilit possibile registrare il contenuto dello storage SYS in ROM a partire dalla locazio CO hex Se il sistema trova alla locazione COH qualco
7. endif gt LogMore display 1 Measuring display 2 gosub WindSpeed storage MAXSAMPLE 1 gt NextRec let Logging 1 display 1 Recording sample S I4DOFO NextRec display 2 Wind speed S I3D1F Wind STOP LOG storage NextRec let j info STORPTR poke j Tmed if NextRec MAXSAMPLE then MemFull let NextRec NextRec 1 storage MAXSAMPLE 1 lt NextRec Logging for i l to 100 gosub AnyKey if key ANYKEY then QLog next display 1 Switching off display 2 storage MAXSAMPLE REC2 gt TimerSet write ch CCAL SETTIMER TimerSet gt Self goto Self gt MemFull display 1 Memory full gosub WaitKey return gt QLog let Logging 0 storage MAXSAMPLE 1 lt NextRec Logging return T FASES stampa memoria gt Dump if NextRec 0 then return storage MAXSAMPLE REC1 Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale input ldev RAMFILE a print print D a for i 0 to NextRec 1 storage i let j info STORPTR let Tmed peek 3 gosub Convert print S S I4DOFO i S I3D1F Wind next return AS same della memoria gt ExamMem if NextRec 0 then return memoria vuota storage MAXSAMPLE RECI input ldev RAMFILE a display 1 Logging started on a gosub WaitKey let i 0 gosub WaitNoKey display 2 19 storage 1
8. nessuno Funz system 3 INSTVEC Significato mnemonico INSTall a VECtor into the low level interrupt table Descrizione Installa uno o pi vettori nella tabella degli interrupts a basso livello Il vettore HL l indirizzo fisico della routine cui si deve saltare al momento dell interruzione La tabella dispone di spazio per 3 SIO B da 0 a 5 per 3 CTC B da 0 a 11 e per 3 PIO B da 0 a 5 La posizione 0 della tabella SIO normalmente occupata dal driver di console Il tipo dei vettori e la posizione sono ricavati dalla stringa di configurazione Vedi esempi e par 3 7 Parametri in ingresso ACC codice funzione 3 HL tavola dei vettori da installare B numero di posizione dove installare i vett E tipo dei vettori da installare O SIO quattro vettori da installare 1 CTC un vettore 2 PIO un vettore Parametri in uscita ACC esito 0 OK 1 errore C 8 bit meno significativi del vettore di Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale interrupt da programmare nella porta relativa Funz system 4 PARSEP Significato mnemonico PARSE a pair keyletter value in the config string Descrizione Aiuta a decodificare una stringa di configurazione Viene chiamata di solito nella funzione driver INIT vedi La chiamata alla INIT lascia gi posizionato il puntatore alla stringa TXA_CS rendendo possibile l immediata chiama
9. notare il segno di uguale in pi rispetto alla STORAGE lt exp gt Il suo valore massimo 256 Il numero massimo di storages disponibili dipende dalla loro lunghezza e dal sistema target vedi sezione 3 ma non pu in ogni caso essere maggiore di 65536 E ammesso lo storage di numero 0 Qualora si tenti di accedere ad uno storage che vada oltre i limiti della memoria disponibile si otterr un errore di ERR FUORI MEMORIA Le operazioni di scrittura e lettura non alterano il puntatore interno per cui non necessario provvedere ad un nuovo posizionamento con STORAGE quando si desidera riscrivere un dato appena letto Esempio ASCII STORAGE 60 DIM AS 60 STORAGE 0 PRINT LDEV 5 MARIO ROSSI VIA VERDI 128 LOGNA STORAGE 1 PRINT LDEV 5 GIUSEPPE BIANCHI lt S lt UO SUHOWNKEWY H O OOG O OUTO ecc 1000 INPUT Codice N 1010 STORAGE N 1020 INPUT LDEV 5 A 1030 PRINT AS Uso del formato fast Le frasi PRINT ed INPUT hanno delle notevoli capacit operative valutano espressioni controllano i formati ecc ma proprio per questo risultano piuttosto lente Per conseguire una maggiore velocit operativa ed una migliore Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale x compattezza di codice stato introdotto il modo fast veloce che consente di registrare o rileggere una serie di variabili numeriche con una sola frase I for
10. per CTC CTC lt m gt DATA per PIO PIO lt m gt DATA Si osservi che PIO e CTC non viene di solito fornita l indicazione della porta vettore in quanto comunque ricavabile autonomamente dal driver nel caso della SIO il vettore presente solo nella porta B Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Le parole chiave DATA CONTR VECT sono identificate solo dalla prima lettera e possono pertanto essere abbreviate In certi casi pu essere opportuno fornire stringhe combinate come ad esempio open ch PRINTER TKTSPL SIO 0 D 161 C 163 V 0 CTC 4 D 144 Si noti che la parola PRINTER non una parola chiave bens una costante definita dall utente per migliorare la leggibilit del programma e viene poi rimpiazzata da un numero dopo la precompilazione Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Periferiche autogestite Alcune unit logiche se supportate dall hardware possono essere gestite senza la necessit di scrivere alcun driver Queste autogestite Le unit logiche autogestite sono a i contatori b i timers unit c gli oscillatori logiche sono dette pertanto Tutte le unit logiche autogestite della presente versione usano dei CTC Per utilizzarle basta eseguire delle frasi open accompagnate da una opportuna stringa di configurazione per indicare al GBASIC gli indirizzi delle port
11. NOT lt exp gt Descrizione ritorna il complemento a 16 bit del valore risultante da lt exp gt convertito in intero OR x y Forma generale OR lt exp1 gt lt exp2 gt Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Descrizione ritorna l OR logico a 16 bit dei valori risultanti da lt exp1 gt ed lt exp2 gt convertiti in interi PEEK x Forma generale PEEK lt exp gt Descrizione PEEK ritorna il contenuto della cella di memoria all indirizzo lt exp gt lt Exp gt deve essere compreso tra 0 e 65535 e deve ovviamente corrispondere a memoria realmente installata Esempio 10 IF PEEK 21234 0 THEN A 89 RND x Forma generale RND lt exp gt Descrizione RND ritorna un valore casuale compreso tra 0 ed 1 Esempi PRINT RND 0 098723 PRINT RND 0 075670 Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale SECS x Forma generale SECS lt exp gt Descrizione Ritorna il numero di secondi trascorsi dall avvio del timer lt exp1 gt compreso tra 1 e 3 Il valore continua ad x incrementarsi anche dopo lo scatto del timer se prevista l opzione FREERUN e fino ad una RESET TIMER Esempi PRINT SECS 1 SGN x Forma generale SGN lt exp gt Descrizione SGN ritorna la funzione segno di lt exp gt cio 0 se lt exp gt 0 1 se lt exp gt gt 0 1 se lt exp gt lt 0 Esempi PRINT
12. SON sai een A te A ti 139 SHUTDON OJ irean aa td tte be ei ta btt 140 SIN A A AA IE a A te A a tia 140 SORR ai ai leslie li iti td ee 140 STROO Sid ET RL Lon ilaele 141 SUBSTRI RIA e e ea AE eo la ed ad E 141 TANG Lic Le n ALLE sn LN Ancona eo AA tie 142 TIMES css nea ELL es Achei Mea lierna aaa 142 TIMSECO titi ALIA ALI ao ae IO RA a 143 VALI aes AN 143 AOR O a rA 144 CAM A os 145 ERASE tutelati te O di a A E 145 A A OR 145 PESTO a te e O di do A E 146 LOAD iii iodio e dire e io O 146 RUN stoici natia nia 147 A riore Oo a eo a I 148 COME CANO rta lla Ra rata 149 e aaacasa 149 Drivers block o char oriented ire 151 Posizione fisica del drivers oe rttterereeeeerreerene venire ie eeereves ice rieenenevisice nio neeeenisice rin eeenicee ine vieeeeeenicezenie 151 Struttura fisica di un driver e 152 Uso della RAM da parte del de comio ea ai 153 Funzi ont escgulte dal dro lead 153 Funz driver 0 Block Writ8 ooccccnonnconananoconnnanananonccnononaananonocnononnonononconononnonenonconononnonenenccnononanancncnnos 153 Funz driver 1 Block Read occccconnconanonocononanananonicnononnananonccnononnnnononconononnnononconononnonenenonnononaonancnnonos 154 FEUDO 154 Funz driver 3 Close oa 155 Funz driver 4 Write Char oooooncccccnncnoonnanunononnnnonnanenonononoonoanonc non rononon nene a a a a a nene no cn onononnanenonoos 155 Funz driver 5 Read C
13. consistenti e si suggerisce di non prendere nemmeno in considerazione l ipotesi di sviluppare il programma direttamente sul target Altri files generati PREGB genera vari tipi di files GBA sopra descritto HEX il file GBA convertito in formato Intel hex Viene usato normalmente per il trasferimento al target comando LOAD HEX Questo file viene ottenuto con un utility dal GBA TXT con una opzione di compilazione 1 possibile generare assieme al file GBA anche un file TXT che contiene il programma scritto in ASCII puro nella sintassi ristretta propria del target insomma un listato sorgente identico a quello che otterrebbe eseguendo un LIST sull unit target Questo file pu essere usato per eseguire il caricamento sul target in modo alternativo attraverso un programma di emulazione terminale anzich attraverso la eprom L interprete ricevendo le linee dal canale di console non sar infatti in grado di distinguerle da quelle che avrebbe ricevuto se le avesse direttamente digitate l operatore E tuttavia preferibile usare il trasferimento HEX Con una diversa opzione s il file TXT conterr anche tutte le linee di commento ed altre informazioni ausiliarie come la tavola dei simboli Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale SYM tavola dei simboli letta automaticamente da GBT GBX il GBASIC prevede la possibilit di suddividere programmi GBA
14. di una costante di tempo lt exp2 gt uguale alla precedente La sezione 3 riporta una dettagliata spiegazione della logica di funzionamento dei timers Vedi anche le frasi ON TIMER RETURN TIMER RESET TIMER OPEN TIMER Esempio 10 ON TIMER 1 GOSUB 100 20 LOAD TIMER 1 WITH 5 FREERUN 30 PRINT AAAAA 40 GOTO 30 100 PRINT di 120 RETURN TIMER 1 LPRINT Forma generale 1 LPRINT stringa var varl 2 LPRINT stringa var stringal varl Descrizione la frase LPRINT e identica alla frase PRINT ma dirige l uscita sul dispositivo logico LST anzich su CON out Vedi la frase PRINT Esempio 10 LPRINT Raggio A B C 20 LPRINT Lunghezza L metri Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale NOVRAM Forma generale NOVRAM lt exp gt Descrizione Le frasi SAVE STORAGE PRINT LDEV 5 sono usate di solito per eseguire la scrittura di informazioni in aree di memoria non volatili In alcuni sistemi queste aree possono corrispondere a memoria di tipo EEPROM caratterizzata in genere da un tempo di scrittura assai maggiore della normale RAM Con la frase NOVRAM possibile aggiungere un ritardo tra la scrittura di un byte ed il successivo tempo proporzionale ad lt exp gt All inizializzazione lt exp gt posta a zero eliminando il ritardo Il valore ottimale deve essere ottenuto per tentativi Su sistemi a 2 5 MHz per
15. esistente per un altra porta Il modo corretto risultare il seguente a resettare la porta controllo con 18h questo sicuramente non da inconvenienti b programmare il valore desiderato nel registro 1 della porta vettore Questo valore potrebbe essere sempre 14h Se questo fosse gia scritto una riscrittura non dovrebbe fare danno c programmare la tabella nella porta controllo d programmare il vettore nella porta vettore Questo in ogni caso ossia per porte A o B dovrebbe avere un identico valore e non dovrebbe dar luogo a problemi Autostart da RAM E possibile che l autostart avvii il programma in RAM alle seguenti condizioni Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale a la RAM deve prevedere caratteristiche di non volatilit b la stringa di avviamento funzione 88 deve essere semplicemente RUN c la prima frase del programma deve essere una REM Un driver block oriented In appendice C riportato sempre a titolo di esempio il listato di un driver block oriented Si tratta di un driver per il clock calendario realizzato con un chip Mariner M3003 Drivers per dispositivo logico AUX Il dispositivo logico AUX richiede un driver di tipo character oriented usare quindi DISPLAY o PRINT e non WRITE Per poter eseguire correttamente la frase NGET il driver riconoscere i caratteri di controllo descritti nella tabella seguente Mnemo Dec Funz
16. let j info STORPTR let Tmed peek 3 let dir peek 3 1 let t peek 3 2 gosub Convert display 1 Sample S I4DOFO i S I3D1F amp Wind PALO dir ALTO t display 1 Sample S I4DOFO i gt ExamMem2 let key bios KEYPAD INKEY if key Fl then if i gt 0 then let i i 1 goto ExamMeml if key F2 then if i lt NextRec 1 then let i i 1 goto ExamMeml if key F3 then if i lt NextRec 10 then let i i 10 goto amp ExamMeml gt ExamMeml l st LAST DON El do 1I3D1F Wind m sec if key F4 then let i 0 goto ExamMeml if key F5 then let i NextRec 1 goto ExamMeml if key F6 then return goto ExamMem2 sea setup macchina gt Setup display 1 display 2 TIME DATE INTV ABOUT DON gosub WaitNoKey gt Loopl let key bios KEYPAD INKEY if key F1 then gosub SetTime goto Setup if key F2 then gosub SetDate goto Setup if key F3 then gosub SetInterval goto Setup if key F5 then gosub About goto Setup if key F6 then return goto Loopl gt About display 1 Cite spa Eolo v 1 0 GBI v 7 4 display 2 Compiled on VERSIONE gosub WaitKeyl return gt SetInterval El Libera riproduzione e libero uso display 2 lmin 5min 15mi 30 m 45min 60min di gosub WaitNoKey gt Loop2 let key bios KEYPAD INKEY if
17. lt minore od uguale L operatore usato per identificare le frasi non interrompibili ed descritto tra le frasi Lo stesso simbolo usato nell introduzione di valori in notazione esponenziale Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale I comandi procedurali Nelle pagine seguenti sono riportate in ordine alfabetico le descrizioni dei comandi procedurali usati per costruire le frasi GBASIC Seguono qiuindi le funzioni ed i comandi I termini comandi frasi ed istruzioni sono anche se impropriamente usati in modo intercambiabile Segue la descrizione di ogni singola frase Operatore PRIVILEGED Forma generale lt linnum gt lt frase gt Descrizione inibisce l accettazione delle interruzioni all inizio della linea successiva Normalmente le interruzioni provenienti dai timers o da dispositivi periferici esterni sono riconosciute all inizio di una linea In certe circostanze pur essere desiderabile inibire questo riconoscimento Esempio 10 PRINT A Le frasi FOR CH n TO INTERRUPT OPEN non richiedono l operatore poich gi inibiscono le interruzioni successive ed sono per questo dette frasi privilegiate AUTOSTART Forma generale AUTOSTART lt exp gt Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Descrizione Quando si usa il modo di autostart l esecuzione del programma pu essere interrotta con ESC o da
18. lt exp3 gt In questo caso lt exp2 gt potr valere solo 0 od 1 Questa opzione di uscita di bit singoli pu avvenire solo su porte PIO o in modo bufferizzato come sotto illustrato lt Exp3 gt 0 indica il bit meno significativo lt exp3 gt 7 il pi significativo Gli indirizzi delle porte dipendono dalla struttura e dalla implementazione dello specifico sistema target Limiti Sia lt exp1 gt che lt exp2 gt devono essere compresi tra 0 e 255 o ne risulter un ERR DI LIMITE Si noti che sotto GBASIC l uso della porta di indirizzo 00 inibito Scrivere sulla porta 00 ha infatti un significato particolare che varia in funzione del parametro lt exp2 gt come segue lt exp2 gt 0 normale funzionamento delle porte di uscita lt exp2 gt 1 le porte di uscita sono delle PIO lt exp2 gt 2 usa il modo bufferizzato In questo modo possibile l out per bit a patto di avere assegnato un buffer di 256 bytes per detto uso Il buffer si assegna con la frase Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale OUT specificando un indirizzo assoluto Un buffer di memoria pu essere facilmente ottenuto come mostrato nell esempio sottostante Esempi 10 OUT 128 124 20 OUT 1 40 6 10 REM ricava dim di un elemento di matrice 20 LET A INFO 18 30 REM crea un buffer di 256 bytes 40 REM allocando una matrice 50 DIM B INT 255 A 1 60 REM usa buffer mode per
19. Il tasto ESC attivo solo se non disattivato con la frase vedi BREAK 0 La funzione di backspace viene attivata dal tasto omonimo salvo diversa riasse4gnazione eseguita con la frase vedi BACKSP IS lt exp gt INPUT usata in modo diretto provoca la segnalazione di un ERRORE DI LINGUAGGIO e non di MODO DIRETTO Inserimento in notazione esponenziale Il carattere da usarsi per l introduzione di quantit in notazione esponenziale Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Esempio 123 4 7 INTERRUPT Forma generale INTERRUPT lt exp gt Descrizione Se lt exp gt 0 INTERRUPT disabilita l accettazione degli interrupts ad alto livello Le richieste di interruzione vengono comunque accumulate nel FIFO fino al limite di capacit cui si ha un messaggio di ERR INT STK OVERFLOW Con lt exp gt 1 il riconoscimento delle interruzioni viene riabilitato e vengono servite tutte quelle eventualmente pervenute durante la disattivazione Con lt exp gt 2 le interruzioni vengono semplicemente ignorate senza procedere al loro accumulo nel FIFO Esempio 1000 INTERRUPT 0 LET Forma generale LET var lt exp gt Descrizione la frase LET serve per assegnare ad una variabile un certo valore risultante da una espressione aritmetica Si noti che in GBASIC la frase LET non pur essere sottintesa come nel BASIC tradizionale Libera riproduzione e libero uso Gia
20. Le parole SIO DATA CONTR e VECT possono essere abbreviate e vengono di solito ridotte alla sola iniziale La stringa di configurazione della console viene registrata in ROM nell apposito spazio previsto all indirizzo 10H Deve essere terminata con il doppio apice e pu essere lunga fino a 32 caratteri terminatore incluso Esempio S 0 Di I20 C I2 V 123 Anche per il BRG prevista una stringa di configurazione simile alla precedente Il suo formato CTC lt m gt DATA lt n gt dove lt m gt il numero della tabella vettori da utilizzare Per adesso non si forniscono ulteriori spiegazioni su questo punto Utilizzare il valore 0 lt n gt l indirizzo della porta dati espresso come stringa di caratteri ASCII in decimale La stringa di configurazione della console viene registrata in ROM nell apposito spazio previsto all indirizzo 40H Deve essere terminata con il doppio apice e pu essere lunga fino a 16 caratteri terminatore incluso Esempio E 4 Nel caso che alla locazione assoluta 41H non sia presente una C il BRG non viene inizializzato Se viceversa la stringa di configurazione presente il contenuto della locazione assoluta 40H viene interpretata come la costante da programmare nel divisore del CTC Il suo valore funzione del clock di sistema secondo la formula Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale baud rate freq clock 256 costant
21. NXT RET 2 Errore di FOR NEXT o RETURN Probabilmente FOR senza NEXT o viceversa FOR NXT Frrore di FOR NEXT RET Return senza GOSUB CTL STK OF Overflow dello stack di controllo Dovuto di solito ad un eccessivo numero di subroutine o a frasi FOR NEXT annindiate una dentro l altra IDX Un indice di una variabile ha superato il proprio valore massimo ammesso Pu derivare anche da un indice scorretto in una ON GOTO od ON GOSUB DIM Variabile ad indice non dimensionata o fine dello spazio riservato alle matrici MEM Superamento della capacit di memoria Si verifica aggiungendo linee al programma o scrivendo su storages oltre la massima capacit dello pseudofile Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale INT NON PREDIS E pervenuta una richiesta di interruzione senza che sia stata eseguita la frase ON INTERRUPT INT E pervenuta una richiesta di interruzione ad un livello non ammesso ossia minore di 0 o maggiore di 3 STG Errore in una variabile o costante stringa Stringa prevista e non trovata Stringa non prevista READ Errore nella esecuzione della frase READ DATA per tentativo di leggere oltre la fine dei DATA INPUT Errore nella esecuzione di una frase INPUT STK Superamento della capacit dello stack aritmetico interno Espressione numerica troppo complessa RAD NEG Tentativo di eseguire una SQR con argomento lt 0
22. SGN 12 PRINT SGN 12 i PRINT SGN 0 0 Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale SHUTDN 0 Forma generale SHUTDN 0 Descrizione SHUTDN 0 deve essere usata solo all interno di un segmento critico e ritorna 0 quando non scattato l allarme per mancanza di alimentazione e viceversa Vedi par 3 18 Esempio 10 CRITSEG 70 IF SHUTDN 0 1 THEN 130 80 ENCRIT SIN x Forma generale SIN lt exp gt Descrizione SIN ritorna il seno di lt exp gt lt Exp gt deve essere espressa in radianti Esempio 10 LET A 123 SIN X SQR x Forma generale SOR lt exp gt Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Descrizione SQR ritorna la radice quadrata di lt exp gt lt Exp gt deve essere maggiore od uguale a zero Esempio PRINT SQR 25 5 STR x Forma generale STR lt exp gt Descrizione STR ritorna come stringa il valore numerico di lt exp gt STR opera con le stesse routines di PRINT per cui possibile variare il formato di conversione mediante l uso dei comandi di formato Esempio 10 LET A STR 100 SUBSTR x x y Forma generale SUBSTR lt string gt lt exp1 gt lt exp2 gt Descrizione ritorna la sottostringa di lt string gt che inizia al carattere lt exp1 gt di lunghezza lt exp2 gt lt Exp1 gt 1 corrisponde al primo carattere E ammess
23. Vedi paragrafo 5 13 Esempio 10 LET A 10 20 CLEAR 30 PRINT A RUN Esempio 10 CLEAR IS CH CLOSE Forma generale CLOSE CH lt exp gt Descrizione Chiude il driver di numero lt exp gt La posizione corrispondente nel direttorio viene liberata Il driver pu essere riaperto senza generare messaggi di errore La CLOSE determina inoltre una chiamata alla funzione Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale driver 3 CLOSE CON Forma generale CON lt exp1 gt IS CH lt exp2 gt Descrizione assegna al dispositivo logico console CON la periferica fisica gestita dal driver lt exp2 gt lt Exp1 gt vale 0 per la funzione di uscita e 1 per quella di ingresso 0 Out 1 In All accensione al dispositivo logico CON viene assegnato tanto in ingresso quanto in uscita il driver con che viene automaticamente aperto con il n 0 e deve essere fisicamente contiguo al kernel Utilizzano il dispositivo logico CON PRINT INPUT le segnalazioni di errore il tasto break ESC per la sola parte di ingresso La frase CON viene utilizzata per riassegnare il dispositivo logico di console ad un altro driver Esempio TO OPEN CH 27 LED aa 20 CON 0 IS CH 2 riassegna tutte le uscite dirette al dispositivo logico CON al driver LCD Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale COUNTER Forma gene
24. a E A Zi E AR ER E E E a PEN A NS A y inizializzazione e A e E EN DT A i EEE A pe n LT i ti EI el a id n id ARE A o a ci gt IniSys reset interrupt clear dim a 50 TimerSet 20 open ch KEYPAD KPAD con FORINP is ch KEYPAD open ch LCD LCD1 apre Canale display lcd aux 0 is ch LCD open ch CCAL CCAL D 188 apre canale rtc timdat is ch CCAL i open timer 1 C 2 D 130 1 prescale 75 interrupt ogni secondo s on timer 1 gosub Second load timer 1 with 1 freerun open ch PWMES PWMES C 2 D 130 write ch PWMES 0 256 9 storage 1 dimensione di ogni campione accum storage MAXSAMPLE 1 gt NextRec Logging let a Y1 Y2 X1 X2 let b Y1 a X1 interrupt SI return Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Indice Introduzione isla alri an naacal oa d Descrzione generale rss nali ciao ia a aaa 5 I FUSI ON 7 Giclo di sviluppo ss iaia bf o ii ARI O ALA aa 7 E ONO 8 E 8 O 8 Precompilatore PREGB ciconecontccotolapscootiniiicossnoriondintcsins ion ia rE s orase ARENA IRE IIa 10 Generalit ali Are i AIA NI ERRO RITO SVAGO AIAR E S 10 Altrefiles generation ona alien id 11 Contenuto del disc a E Aa E E coca 12 Installazione ed USO riale 12 La siIntassi estesa ciano nina Ala I LO id 13 File SOrgente i iii RE ala ORA Rella 14 A A a A ORI 14 Campo di Valid cintia 15 Struttura di un programma GBE i 16 Procede AR
25. arrestare anche il baud rate generator del canale seriale di console Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Esempi 10 OPEN CH 3 LANDR D 123 C 123 V 123 20 OPEN OSC 3 C 2 D 145 30 OPEN TIMER 1 C 3 D 147 OSC Forma generale 1 OSC lt exp1 gt lt exp2 gt 2 OSC lt exp1 gt lt exp2 gt FOR SWITCH Descrizione Determina la costante di tempo lt exp2 gt di un oscillatore lt exp1 gt La frequenza di oscillazione e data da f 1 Telock X 256 x lt exp2 gt con Telockuguale al periodo del clock di sistema OSC non puo essere impartita in modo diretto La forma 2 usata per avviare il Mini Multi Task un task switcher interno usabile dai drivers OSC 1 di solito utilizzato come baud rate generator per la console Esempio 10 OPEN OSC 2 C 1 D 145 20 OSC 2 40 FOR SWITCH 10 OPEN OSC 2 OC I D 145 20 OSE 2 33 Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale OUT Forma generale 1 OUT lt exp1 gt lt exp2 gt 2 OUT lt exp1 gt lt exp2 gt lt exp3 gt 3 OUT lt exp1 gt Descrizione OUT serve per eseguire l emissione di singoli valori su una porta di uscita lt Exp2 gt e il valore da far uscire ed lt exp1 gt il numero della porta Se specificato lt exp3 gt indica che si deve eseguire l operazione di uscita relativa ad un solo bit indicato appunto da
26. ba fa i a Le parole chiave devono essere scritte in maiuscolo La semplice introduzione di linee precedute dal relativo numero provoca automaticamente l ordinamento delle stesse in senso crescente E opportuno prevedere numeri debitamente intervallati per facilitare successive inserzioni Una linea viene cancellata battendone il numero subito seguito da RETURN Ctrl D attiva o disattiva la conversione automatica minuscole M AIUSCOLE si no ogni volta Il tasto ESC attivo solo se non disattivato con la frase vedi BREAK 0 La funzione di backspace viene attivata dal tasto omonimo salvo diversa riassegnazione eseguita con la frase vedi BACKSP IS lt exp gt Convenzioni e notazioni Nel corso delle descrizioni si preferito rinunciare ad un rigoroso formalismo a vantaggio di una migliore comprensibilit Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale I comandi procedurali del GBASIC sono stati suddivisi in due categorie frasi e comandi Le frasi sono quelle strutture composte con comandi procedurali usati per lo pi in esecuzione differita ossia all interno di un programma es PRINT A 3 I comandi sono invece usati per lo pi in modo immediato es RUN Alcuni comandi procedurali sono tuttavia usabili come frasi o come comandi ad esempio LOAD In caso di uso improprio compare un messaggio di errore ERR MODO DIRETTO Non previsto un errore di modo dif
27. comunicazione ad esempio sincrono e la necessit di eseguire particolari inizializzazioni di uno specifico hardware al momento del reset f l apprendimento dei fondamenti basilari per accingersi alla scrittura di un nuovo driver Una personalizzazione opzionale del kernel prevista per la funzione di gestione della mancanza di alimentazione come descritto nel seguito di questa sezione NOTA i listati riportati nelle pagine seguenti sono Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale esemplificativi e possono risultare non aggiornati Riferirsi sempre alle versioni aggiornate presenti sul dischetto di distribuzione Drivers block o char oriented I drivers sono classificabili in due categorie principali in funzione del fatto che i trasferimenti dati da e verso di essi avvenga per singoli caratteri o per interi blocchi Il driver di console ad esempio opera su singoli caratteri ogni carattere proveniente dal la tastiera del terminale deve essere reinviato al video del medesimo di volta in volta Il driver di una stampante opera invece di solito in modo block le linee sono inviate una alla volta via via che sono disponibili Un driver pu prevedere un modo di operazione multiplo ossia consentire il trasferimento tanto per singoli caratteri quanto per blocchi Posizione fisica dei drivers I drivers risiedono fisicamente in memoria nelle locazioni subito conseguenti a
28. conservare la corrispondenza si usa la frase prescale lt n gt dove lt n gt una espressione il cui risultato deve essere compreso tra 0 e 255 Il valore di default 56 valori pi grandi rallentano i timers e viceversa vedi PRESCALE La clausola opzionale freerun determina l automatico ricaricarsi del timer allo scatto Un timer pu essere arrestato con la frase reset timer Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Il valore corrente di un timer pu essere letto con la funzione timcnt lt exp gt con lt exp gt numero del timer mentre la funzione secs lt exp gt ritorna il numero dei secondi trascorsi dall avvio del timer stesso Oltre che come timers i CTC possono essere usati come contatori di impulsi totalizzatori Esempio Il programma che segue attiva un contatore e ne mostra via via il valore open counter 1 CTC 0 DATA 128 counter 1 0K gt Loop print count 1 goto Loop OK non una parola GBASIC ma una costante definita dall utente che vale 1 che sta per attiva Se la medesima avesse avuto il valore 0 avrebbe inteso significare disattiva Si noti che la parola OK non avrebbe potuto essere sostituita con la pi ovvia ON in quanto ON una parola chiave GBASIC ON TIMER ecc Un contatore quando disattivato conserva il proprio valore accumulato fino all esecuzione di una frase reset counter lt n gt Il GBASIC gestisce a
29. dati introdotti possono poi essere riletti dal programma GBASIC mediante la frase POP Il blocco non deve avere particolari caratteri di terminazione Parametri in ingresso ACC codice funzione 0 HL indirizzo del blocco BC numero dei caratteri che compongono il blocco Parametri in uscita nessuno Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Funz system 1 ASK_MY_LEV Significato mnemonico ASK MY interrupt LEVel Descrizione Ritorna il livello di interrupt associato al presente driver indicando il proprio numero di canale che viene comunicato al driver dalla funzione driver INIT vedi L utente associa il livello al driver con la frase CH lt m gt TO INTERRUPT lt n gt Parametri in ingresso ACC codice funzione 1 E numero di canale Parametri in uscita ACC numero del livello di interrupt Funz system 2 HIRQ Significato mnemonico High Level Interrupt Request Descrizione Inserisce nel FIFO degli interrupt una richiesta di interruzione al GBASIC Deve essere chiamata indicando il livello richiesto che deve corrispondere con quello assegnato al driver vedi funzione precedente Nelle precedenti versioni questa funzione era denominata ISRX2 Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Parametri in ingresso ACC codice funzione 2 E livello di interrupt Parametri in uscita
30. detta apertura Nelle forme 1 e 2 svolge le seguenti funzioni 1 comanda la ricerca del driver di nome indicato con lt string1 gt tra quelli in coda al kernel Se non lo trova ritorna un messaggio di errore lt Exp1 gt deve essere compresa tra 0 e 7 La posizione 0 riservata al driver di console ma pu comunque essere usata quando la console non serva La stringa lt string1 gt deve essere non pi lunga di 8 caratteri 2 crea una voce di direttorio corrispondente al driver richiesto nella posizione lt exp gt 3 esegue una chiamata al driver stesso con richiesta della funzione 2 INIT per inizializzarlo Nel caso della forma 2 la lt string2 gt detta stringa di configurazione viene passata al driver che la sfrutta secondo propri criteri Vedi par 3 8 Le forme 3 4 e 5 sono relative alle periferiche autogestite da drivers interni al kernel rispettivamente timers oscillatori e contatori In questo caso lt exp gt deve essere compresa tra 1 e 3 tranne nel caso degli OSC che possono essere 4 Vedere il paragrafo Periferiche autogestite per ulteriori informazioni Si noti che un OSC non utilizza interrupt Un driver pu essere aperto una volta sola Tentando la riapertura si ha un messaggio di errore ERR GIA OPEN LN Un driver aperto pu essere chiuso con la frase CLOSE CH vedi o con la reinizializzazione del sistema BOOT vedi che chiude tutti i driver ad esclusione di quelli interni OSC per evitare di
31. di solito e impiegato come baud rate generator per la SIO di console Esempio open osc 2 C 1 D 145 b specificare con l apposita frase che l oscillatore in questione e usato come clock per il task switching La frase e osc 2 40 for switch dove 40 e la costante che verr programmata nel CTC tenuto presente da parte di quest ultimo il massimo fattore di prescaler 256 Con 40 a 3 6864 MHz si avrebbe quindi 270 ns x 256 x 40 2 77 msec Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Ad ogni tic nell esempio precedente ogni 2 77 msec l esecuzione del GBASIC viene interrotta ed inizia quella del prossimo lavoro in coda di attesa che termina con una semplice RET La routine chiamata pu alterare ogni registro tranne IX IY ed SP La coda di attesa opera al momento secondo una semplice logica round robin Il concetto non e tanto quello di un alternarsi di task diversi quanto quello di interrompere periodicamente l esecuzione del GBASIC per eseguire un task secondario Il GBASIC non e quindi inserito nella coda di attesa e si presuppone pertanto che il tempo di esecuzione dei singoli task sia assai inferiore al periodo di tic questi concetti sono destinati pero ad evolversi in futuro Un driver pu installare un task nella coda di attesa una volta per tutte usando la funzione system 10 vedi Power down Questa sezione variata con l introduzione dei segme
32. essere terminata da CR 0Dh lt Addr gt l indirizzo fisico espresso in decimale della prima locazione ove ubicato il programma in formato GBA Esempio AUTOCOM DB RUN 20000 0dh Parametri in ingresso B codice funzione 88h Parametri in uscita ACC codice esito 0 OK 1 ERRORE E flag richiesta autostart 0 si 1 no HL indirizzo stringa con comando Esistono varie operazioni che non potrebbero essere eseguite direttamente dal driver senza l ausilio o la supervisione del kernel ed altre ancora che per la loro ripetitivit non conviene duplicare in ogni driver Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Per questo motivo il kernel offre la possibilit con una procedura detta system di eseguire particolari funzioni richieste dall utente Il system una innovazione introdotta con la versione 7 xx del GBASIC ed il numero e la variet delle funzioni offerte tende a crescere Riferirsi eventualmente a note tecniche di aggiornamento La tecnica di chiamata di una funzione system simile a quella delle funzioni driver un parametro viene passato per richiedere una delle varie funzioni numerate progressivamente x Il punto di ingresso del system alla locazione di indirizzo assoluto 0005 Funz system 0 PSH_USTK Significato mnemonico PuSH a record into the User STacK fifo Descrizione Introduce un blocco di dati nel fifo dati I
33. generale XOR lt exp1 gt lt exp2 gt Descrizione ritorna lo XOR logico a 16 bit dei valori risultanti da lt exp1 gt ed lt exp2 gt Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Comandi ERASE Forma generale ERASE Descrizione cancella il programma in memoria e tutte le variabili Esempio LIST 10 FOR I 1 TO 100 20 PRINT I 30 NEXT 40 END ERASE LIST nessun effetto LIST Forma generale 1 LIST 2 LIST lt linnum gt 3 LIST lt linnuml gt lt linnum2 gt Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Descrizione LIST serve per ottenere la lista del programma attualmente in memoria verso il dispositivo logico CON out La lista pu iniziare da una linea differente dalla prima specificando lt linnum gt La lista si arresta dopo 24 linee o se specificato lt linnum2 gt dopo lt linnum gt linee Se lt linnum gt 0 viene listato tutto il programma che si trova in memoria Esempio LIST 1000 1000 PRINT Valore finale T2 1010 END LLIST Forma generale LLIST stesse opzioni di LIST Descrizione come LIST ma con uscita verso LST LOAD Forma generale LOAD ABS lt exp gt NOTA esiste anche una frase LOAD vedi Descrizione provoca il caricamento nell area di lavoro RAM di un programma registrato in memoria all indirizzo fisico lt exp gt Tipicamente il programma viene genera
34. interattivit costano infatti un impiego non trascurabile del tempo della CPU in particolare per il processo di traduzione E stato forse questo finora il principale ostacolo al loro impiego che pur presenta tanti vantaggi Il GBASIC conservando le caratteristiche positive e negative degli interpreti possiede per degli strumenti per una gestione veloce delle interruzioni che ne estendono l uso ben oltre i limiti di un comune interprete Questo stato ottenuto introducendo la possibilit di gestire interruzioni ad alto livello Le interruzioni a basso livello vengono gestite come accennato in precedenza dallo stesso driver E quindi il driver che predispone tutte le condizioni per l interruzione e che contiene la routine di servizio Si hanno due casi a la gestione dell interruzione pu essere integralmente affidata al driver Questo ad esempio il caso dell accumulo caratteri in un buffer Ogni volta che un carattere pervenuto genera una interruzione la ISR lo preleva dalla periferica e lo inserisce in un buffer b l interruzione determina delle condizioni che richiedono una interruzione ad alto livello all interprete GBASIC Ad esempio l arrivo di un carattere di fine messaggio che deve determinare in qualche modo una segnalazione al programma GBASIC per informarlo che il buffer pronto per essere letto Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale In questo ult
35. n gt lt stringa gt write ch lt m gt lt n gt lt stringa gt lt m gt il numero del driver lt n gt e il numero del record che il driver pu o meno gestire a seconda dei casi lt stringa gt e una stringa di caratteri trasferita da o verso il driver Ogni driver ha di solito una variabile di stato Nel caso di un driver per terminale ad esempio la variabile di stato indica se sono arrivati caratteri Anche in questo caso ogni driver ha un proprio comportamento La funzione drvst lt exp gt ritorna la variabile di stato del driver lt exp gt Drvst pu avere due parametri anzich uno per meglio sfruttare le caratteristiche di alcuni drivers Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Organizzazione della memoria Concetti Il sistema target pu essere configurato in due maniere fondamentali a EPROM da 0 a 32K RAM da 32 a 40K 8K RAM b EPROM da 0 a 32K RAM da 32 a 64K 16K RAM Il GBASIC all accensione provvede automaticamente a determinare quale delle due possibili configurazioni quella effettivamente usata ed aggiusta i vari puntatori interni di conseguenza L area RAM viene suddivisa in tre sottoaree principali a variabili e tabelle interne del GBASIC b area di lavoro programma e variabili utente c area pseudo file RAM All inizializzazione la parte residua di memoria sottratta la parte a viene equamente suddivisa tra b e c in
36. sistema simile ma diverso nell indirizzamento Ogni driver identificato da un nome che deve necessariamente essere di 8 caratteri che non contiene spazi n altri simboli ed inizia per lettera I drivers vengono posti fisicamente contigui al GBASIC immediatamente dopo la sua ultima locazione Il GBASIC non a conoscenza della presenza dei drivers fintanto che non gli venga richiesto di ricercarne uno specifico con la frase open Per mezzo di essa si ricerca il driver di nome indicato e gli si assegna un numero di canale scelto dall utente Successivamente nel corso del programma ci si riferir al driver sempre attraverso il numero di canale e non pi attraverso il nome Esempio di una frase open il seguente Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale open ch 1 CCAL Almeno un driver sempre e comunque presente il driver di console identificato sempre dal numero 0 e dal nome CONS Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Concetti Il GBASIC prevede una serie di dispositivi logici standard per l I O che possono essere diversamente ed anche dinamicamente associati con drivers differenti purch ovviamente compatibili e sensati non avrebbe ad esempio alcun senso associare il dispositivo logico orologio calendario ad una stampante I dispositivi logici principali sono con console ingresso ed uscita Ist
37. troppo lunghi in due pagine di memoria attivabili con un meccanismo di bank switching vedi direttiva PAGE Il file GBX contiene in questo caso il GBA da registrare nella pagina estesa Contenuto del dischetto Il dischetto fornito registrato nel formato MS DOS 360K e contiene i seguenti files PREGB EXE pre processore PREGB HEX EXE file ausiliario PREGB OVL file ausiliario DEMO GBE file sorgente dimostrativo GBT EXE ambiente integrato descritto nel relativo manuale Installazione ed uso Per installare PREGB basta copiaretutti i suddetti files in un qualunque direttorio di solito chiamato IDE Se XYZ GBE il file sorgente lo si pre processa con pregb xyz Si noti l omissione del suffisso dopo XYZ esso viene automaticamente assunto come GBE da PREGB Eventuali errori sono listati sul video assieme alla loro spiegazione vedi paragrafi seguenti Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Come molti compilatori PREGB possiede limitate capacit di rientro e pu in certi casi dar luogo dopo il primo alla segnalazione di errori inesistenti In questo caso ritentare la compilazione dopo aver eliminato il primo errore Desiderando anche la generazione del file TXT si deve aggiungere uno switch 1 come segue pregb xyz 1l Usando s invece di l nel file TXT verr inserita alla fine anche la tavola dei simboli in modo da poter risalire
38. unitaria LDEV 5 input da storage lt exp gt 5 per eseguire l input da uno storage dello pseudofile RAM in congiunzione con la frase STORAGE vedi Per eseguire la lettura di uno storage si deve prima posizionare il puntatore interno con la frase STORAGE lt exp gt e quindi eseguire una INPUT LDEV 5 lt var1 gt lt var2 gt I valori presenti nello storage scritti in precedenza con una frase PRINT LDEV 5 vengono cos rispettivamente assegnati alle variabili lt var1 gt lt var2 gt ecc E compito del programmatore assicurare la corrispondenza di tipi e dimensioni tra la fase di scrittura e quella di lettura Notare che un errore LINEA LUNGA dovuto spesso al ricoprimento in fase di scrittura con la PRINT LDEV5 dei vari storage uno con l altro In questo modo accade quanto segue 1 lo storage n troppo lungo e sconfina nello n 1 2 lo storage n 1 se scritto dopo copre il CR di fine dello storage precedente 3 cosl di seguito l ultimo CR quello dell ultimo storage La INPUT tenta cosl di leggere fino al successivo CR e trova una linea esageratamente lunga LDEV 6 filtro L opzione LDEV 6 determina il filtraggio di tutti i caratteri non numerici esclusi il punto decimale ed il CR Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale LDEV 7 redirezioni su AUX L opzione LDEV 7 redirige l ingresso dal dispositivo logico AUX Uscita da INPUT Oltre
39. 1 WRITE usata per trasmettere blocchi di dati ad un driver lt Exp1 gt il numero del driver di destinazione che deve essere aperto e deve prevedere la comunicazione di tipo BLOCK I dati vengono da passare sono contenuti nella stringa lt string gt Il parametro lt exp2 gt viene passato senza modifiche al driver ed il suo uso differisce a seconda dei casi Frequentemente usato quando abbia senso come numero del record L operazione richiesta al driver la 0 BLOCK Libera riproduzione e libero uso Funzioni Gianni Becattini GBASIC 7 40 Manuale Generale WRITE Esempio 10 OPEN CH 3 CARD D 100 20 WRITE CH 3 0 Q Forma 2 Vedi frase READ Forma generale WRITEC lt expl1 gt lt exp2 gt Descrizione Invia il carattere lt exp2 gt al driver lt exp1 gt direttamente la funzione driver n 4 WRITEC Forma generale amp H lt string gt Descrizione WRITE chiamando amp H x ritorna un numero convertendo la stringa esadecimale lt string gt che deve essere composta solo da cifre esadecimali Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Esempio 10 PRINT amp H 3A ADDROF n Forma generale ADDROF lt var gt Descrizione ritorna l indirizzo fisico della variabile numerica di nome lt var gt Non opera su variabili stringa Esempio 10 LET N1 2 45 20 PRINT ADDROF N1 AND m n Forma generale AND lt ex
40. 2 RESET TIMER lt exp gt 3 RESET COUNTER lt exp gt 4 RESET INTERRUPT 5 RESET INTERRUPT CLEAR Descrizione Forme 1 2e3 La frase RESET usata per arrestare il funzionamento di un timer o di un oscillatore o per azzerare il valore di un contatore lt Exp gt indica il numero dell unit interessata RESET OSC non pu essere impartita in modo diretto Vedi anche ON TIMER LOAD TIMER PRESCALE RETURN TIMER OPEN COUNTER OSC COUNT Esempi 100 RESET OSC 1 110 RESET TIMER 2 120 RESET COUNTER 1 Forma 4e 5 Nella forma 4 azzera il contenuto dei FIFO dell interrupt FIFO delle richieste e FIFO dei messaggi Tutti gli interrupts pendenti sono cancellati Nella forma 5 provoca il reset di tutto il sistema di interruzione Ogni inizializzazione deve essere ripetuta dopo questa operazione Leggere attentamente il paragrafo 3 10 RESTORE Forma generale RESTORE Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Descrizione la frase RESTORE serve per riposizionare il puntatore della frase READ all inizio dell insieme DATA Vedi anche frase DATA Esempio 10 DATA 12 34 45 67 20 FOR I 1 TO 4 30 READ A I 40 NEXT 50 RESTORE 60 READ X Y Z W 70 PRINT A 1 A 2 A 3 A 4 X Y Z W RUN 12 34 45 67 12 34 45 67 RETURN Forma generale 1 RETURN 2 RETURN TIMER lt exp gt 3 RETURN INTERRUPT lt exp gt Descrizione serve per ritornare a
41. 52 SESMEN CAC a taa IEA Sen 54 MMT di A lf e io 56 Alcun tempi di esecuzione spa eat isa ala lisi alal ila 57 RIFErIMENTO rit e ERE A NERA TA Ra ROTA RN RR ARI i toni 61 CONTENUTO A A RS RR OR ir 61 Generalit ife REANO Rn a NEO SA RI rr 61 ACCENSIONE ETESEL stia e A IA RI Re IRSA cedo 61 Caratteristiche generali del GBASIC caia adele Rai 62 CONVENZIONI EMO taz lead 64 Abbreviazioni ada 65 O O NO 66 comandi procedurali tte 67 Operatore PRIVILEGED ios ao AN EA RAR 67 AUTOSTART penean en narri E R oie 67 OD EET O 68 BACKS Poisson soi KEE E EAE E E E EaR 69 BEEP seoran iaae e E T bi olona eran E E E E la ea 69 BOO Diurno 69 BREAK contaran noe 70 CLEAR 0 A AAA 71 CLOSE ima A nh sola 71 CON causing Lala aaa osa 72 COUNTER cui Aaa 73 CRITSE O curia a 73 DATA cis A A ASE 73 A NN 74 DiMicinin a A A SAS 75 DISPLA Vii oi 76 END A A ASA 76 ENDER Tui 71 PRR sicilia EE EA TEE E EEA N ERAR E EEEE E e 77 FOR illa ia 78 DOS UB leda 79 GOTO TORNO 79 a 80 MN ERA Lane islale 82 INTERRUPT aLaaa ian adi 90 LEFT ili ec 90 LOAD TIMER ar E a a SE laica daa 91 J EA BA Sa DA E E E E E E EA 92 Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale NOVRAM cnr lele SEL ANO a RL Ai 93 NEXT cs e e nd e O a A 93 ON A e e a O ao 94 OPEN Lct a E OA E id ia Ae 96 OC Leona ia Eee nasale dai ea 98 QU alinea ieri sella Re ARA Ararat 99 OVERPRINT lt risiedi Ae Lei ad luna 100 POP E ELE RIA enel a
42. AA E E E RS E A EN E A ENT E ER AR RR ERAN iaia ici O NDA WindSpeed misura e ritorna la velocit del vento gt WindSpeed A A A A EAEN EAE E A E PENE ETEN E E S E E E E E E E EE E E ENEE E ENES EEN a E E EEE PEE EE t rimessa orologio AI O AS A IERI RS A O LIRE O a a a OMA NI a SION CO A NR LIRA gt SetTime Gianni Becattini GBASIC 7 40 Manuale Generale display 1 Set sampling interval to display 1 Ora attuale time display 2 RESH EDIT DONI let key bios KEYPAD INKEY if key F6 then return El gt SetTimel Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale if key F4 then SetTim if key lt gt F5 then SetTimel display 2 lt gt DON display 1 let a time let a nget a if cktim a lt gt 0 then time a gosub WaitNoKey goto SetTime El gt SetDate display 1 Data attuale date display 2 RESH EDIT DONE gt SetDatel let key bios KEYPAD INKEY if key F6 then return if key F4 then SetDat if key lt gt F5 then SetDatel display 2 lt gt DONE n display 1 let a date let a nget a if ckdat a lt gt 0 then dateS a gosub WaitNoKey goto SetTime A IS IA RE E E E E RR AN
43. D DATA PORT INC HL LD HL E VECTOR PORT B N TABELLA LD A 3 CHIAMA INSTVEC LD HL TABVECS VETTORI DA INSTALLARE D E 0 SIO CALL SYSTEM PUSH BC VETTORE ADESSO RESETTO ENTRAMBI I CANALI CTLP E VECP QUESTO E CONSENTITO IN QUANTO IL CANALE DI CONSOLE E SEMPRE IL PRIMO AD ESSERE PROGRAMMATO DALLO STESSO BASIC DURANTE L INIZIALIZZAZIONE SE IL REGISTRO VETTORE FOSSE LO STESSO DI CTLP NON CI SAREBBERO PROBLEMI IN QUANTO IL RESET E FATTO ANCHE DALLA PROGRAMMAZIONE OTIR VEDI TESTO LD A CTLP LD C A LD A 18H RESETTA CANALE CTLP OUT C A LD A VECP LD C A LD A 18H RESETTA CANALE VECP UT CIRA LD A 1 PROGRAMMA REGISTRO 1 UT C A LD A 4 CON SOLO STATUS AFFECTS VECTOR UT C A CALL FLUSH LD HL TABSIOA LD A CTLP LD C A LD B 9 TIR LD A VECP LD C A LD A 2 SELEZIONA REGISTRO VETTORE OUT C A POP DE VETTORE PUSHATO COME BC LD A E PROGRAMMA VETTORE Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale OUT C A LD E XON CALL SIOTX XOR A LD XOFSNT A EI RET FUNZIONE 3 CLOSE DRV CLO XOR A RET FUNZIONE N 4 WRITE CHAR TRASMISSIONE DI UN CARATTERE SULLA LINEA SIOTX LD A E PUSH AF LD A CTLP LD C A SIOTI IN A C BIT 2 A TX VUOTO JR Z SI
44. D B A CP HL BUFFER VUOTO CONTATORE 0 JR Z RDCH2 RITORNA 0 JR RDCH1 O IL CARATTERE SE C E a FUNZIONE N 9 FLUSH AZZERA BUFFER DI RICEZIONE E SIO FLUSH XOR A LD CHR_CNT A LD HL RX_BUF LD RD_PO HL LD RX_PO HL RET ACC GIA 0 FUNZIONE N 10 CHCNT RITORNA N CARATTERI NEL BUFFER CHCNT LD A CHR_CNT LD E A XOR A RET A FUNZIONE N 88H AUTOSTART SISTEMA AUTO ESEGUIRE QUI LA LETTURA DELLO SWITCH E SETTARE FLAG OGNI HW LO FA A MODO SUO SIOBC EQU 0A3H FMD USA BIT CTS DELLA SIO B IN A SIOBC BIT 5 A CTS SW1 2 ON AUTOSTART LD A 10H QUANDO SI LEGGE DA BIT SIO POI SI DEVE OUT SIOBC A IMPARTIRE UN RESET EXTERNAL JR Z AUTOST READ DATA 0 SW ON NOAUTO XOR A JR AUTANY AUTOST LD HL STUPSTG STARTUP STRING LD A 1 AUTANY D E A XOR A RET SERVIZIO INTERRUPT RICEZIONE CARATTERE Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale SIORXA EX AF AF SCAMBIA I REGISTRI EXX LD A DTAP LEGGI IL DATO LD C A IN A C AND 7FH VIA MSB CP ESC PREMUTO ESC JR NZ NOESC CALL FLUSH AZZERA BUF
45. EAD LDEV 5 nel solito modo Lo storage sys viene allocato in una area apposita e non ruba quindi spazio ai normali storages Il sistema verifica quando necessario il contenuto dello storage sys se vi trova un contenuto valido lo utilizza viceversa lo ignora In questo modo possibile conservare il modo di funzionamento standard anche nei sistemi senza batteria Si osservi per che registrando dei parametri errati potrebbe diventare impossibile la loro modifica se non staccando la batteria Lo storage sys si ritiene valido quando contiene all inizio la stringa SYS I parametri utilizzabili sono al momento STOR xxK dove xx un numero obbligatoriamente di 2 cifre che indica il numero di k bytes da riservare per gli storages Questo parametro considerato solo al momento della inizializzazione ed quindi influente solo dal successivo BOOT o reset BRG n dove n un numero compreso tra 1 e 255 che esprime la costante da programmare nel CTC Con clock a 4 916 MHz si ha 1 19200 baud 2 9600 4 4800 ecc Questo parametro considerato solo al momento della inizializzazione ed quindi influente solo dal successivo BOOT o reset Non indispensabile indicare entrambi i parametri ma se indicati devono essere riportati nell ordine Esempio 10 STORAGE SYS 20 PRINT LDEV 5 SYS STORO5K BRG 2 Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale TIMDAT Forma generale
46. ERR Significato mnemonico Configuration String ERRor Descrizione Genera un ERR CS errore di stringa di configurazione Parametri in ingresso ACC codice funzione 6 B 1 non usato al momento ma da prevedere E per futura compatibilita Parametri in uscita nessuno la funzione non ritorna ma il GBASIC passa a livello comandi Funz system 7 TRIPLEX Significato mnemonico parse a common config string SIO PIO CTC Descrizione Analizza una stringa di configurazione di tipo comune SIO PIO o CTC La PIO non supportata dalla corrente versione E la routine pi usata per decodificare stringhe di configurazione per la sua maggiore semplict di uso Il numero dei parametri richiesti nella stringa varia in funzione del tipo per la SIO sono richiesti 3 indirizzi dati controllo e vettore mentre per il CTC solo uno dati potendo il kernel ricavare gli altri in modo automatico Esempio Se la stringa e Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale SIO 2 DATA 145 CONT 146 VECT 146 ritorna B 2 D 145 C 146 E 146 Parametri in ingresso ACC codice funzione 7 D lettera chiave prevista S SIO C CTC P PIO E 1 se stringa presente E 0 viceversa puntatore TXA CS alla stringa di configurazione posizionato automaticamente dal sistema alla chiamata della funzione driver INIT Parametri in uscita zero flag esito set
47. FER LD A ESC E INSERISCICI ESC NOESC CP XON IGNORA XON XOFF JR Z QSIORX CP XOFF JR Z OSIORX LD B A SALVA CARATTERE RICVUTO LD A CHR_CNT INCREMENTA CONTA CARATTERI INC A MA SENZA RISALVARLO LD D A SALVALO INVECE IN D CP BUFLEN 10 PIU DI BUFLEN 10 CARATTERI OSSIA 9 JR C SANTFLL NO SALTA A SIO A NOT FULL IL BUFFER CONTIENE PIU DI BUFLEN 10 CARATT CP BUFLEN 1 SE IL TERMINALE INSISTE MALGRADO GLI XOFF JP Z OSIORX A BUFFER PIENO IGNORA TUTTO CIO CHE ARRIVA D E XOFF INVIA XOFF SE DOVESSERO ARRIVARE ALTRI CALL SIOTX CARATTERI SI RINVIA ANCORA XOFF LD Api SETTA FLAG CHE DICE CHE HAI SPEDITO XOFF LD XOFSNT A SANTFLL LD A D RIPRENDI D LD CHR_CNT A ED AGGIORNA CONTACARATTERI LD HL RX_PO PRENDI IL PUNTATORE LD HL B SALVA CARATTERE CALL INCPOIN INCREMENTA PUNTATORE LD RX_PO HL E SALVALO QSIORX EXX EX AF AF EI RETI RICEZIONE CARATTERE IN CASO DI ERRORE SERVIZIO INTERRUPT Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale SIOSPA EX AF AF IN CASO DI ERRORE LD A CTLP LD C A LD A 30H ERROR RESET OUT C A EX AF AF EI RETI VETTORI SIO NON UTILIZZATI SIOTXA SIOSTA EI RETI ROUTINES AUSILIARIE INCPOIN INC HL ROUTINE PER INCREMENTARE PUNTATORE LD A H TES
48. FL Un FIFO degli interrupts dati o richieste ha superato la massima capacit ammessa Pu accadere se gli interrupt arrivano a velocit assai maggiore di quella massima con cui possono essere processati o se l interrupt rimasto disabilitato vedi frase INTERRUPT Notare che la versione corrente a differenza delle precedenti si inizializza con l interrupt disabilitato e che pertanto esso deve essere riabilitato da programma con INTERRUPT 1 Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Listato di CONS DRV Si riporta a titolo di esempio il listato di un possibile driver per la console Detto listato coincide solo a grandi linee con quello effettivamente fornito con il GBASIC VERS 1 20 18 10 90 COPYRIGHT ING G BECATTINI FIRENZE DRIVER P ER CONSOLL E SERIALE GBASIC COMPATIBIL El CSEG SYSTEM EQU 5 GBASIC SYSTEM ENTRY POINT BUFLEN EQU 20 BUFFER DI RICEZIONE CR EQU ODH F EQU OAH XON EQU 11H XOFF EQU 13H ESC EQU 27 INCLUDE B7 CNF SEZIONE DI PUBBLICO ACCESSO Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale
49. Funz system 23 POPTASK cocida dies ios adl ctas audaci An adi 173 Mii Multi Task MMT conose badia AGE lid dido aisi 174 Power down niiagi nia GAS EA aaa dii palo iaia iii 175 ll driver di console i ici ao A SIA AOL aio oo 177 Tnizializzazione porte lara ELIO I in 177 Autostartida RAM siii rielabora ail ciali 178 Un dni ver blockonented ia rave til ili Ai SEER 179 Drivers per dispositivo logico AUX 1 0 ieri ila lena aaa 179 Richiesta interruptad alto vell is ioni 180 Drivers associatital dispositivo AUX sii ieri iaia osi alari aaa 180 Messassi dierrore a uri A A nai Si 182 Message dE ela ona lla alal dia 182 SINL ili a e ln LOR 182 VAL ili Ro E 182 FINXT RET1 0 FINXT RET2 nni iaia si 183 FOR NX Toalla litio 183 RET icpinli caian 183 lE D D arrollo 183 DIM serer a er E E E EE E EEEE AE T a A EE EE E A ansi 183 MEM reir allenano una A EEA ETE E E E E A E E 183 INET NON PREDIS r pra a E EEEE AE T E E EEE E A anne 184 INT lip E A a E E A EEA ETE EE E E E AAE E S 184 STO NEE E T S 184 READ usais liso 184 INPU Lota sra rta 184 STR cine elia rncanioislooaoaiis dico ci 184 RAD NEG sumo aii too 184 NUM LIN ou A hi 185 MODO maa a assiali nali ahaha 185 EN EUNGA cuna oa 185 Chia A aL A 185 ARITM e pai oa 185 DEVINES coi A A o 185 DIV PER Oiioniaira io 185 GIA OPEN outs loa 186 NON OPEN concurrir ao 186 NOME coi A A 186 VETT IN Tinta 186 BUG r E NE EN E EEE E E E RENA N a o E EE EERE 186 EST A o 186 MM to 186 SIE O
50. GBASIC 7 40 Sistema operativo interprete GBASIC per microntrollori basati su processori ad 8 bit Z 80 e derivati Manuale Generale am R GBASIC Pst Rev A 1993 Gianni Becattini GBASIC 7 40 Manuale Generale Presentazione della precedente edizione La presente edizione del manuale del GBASIC v 7 35 soprassiede alla precedente della versione 7 30 Le differenze tra il GBASIC versione 7 e le precedenti sono molto consistenti mai nella storia del GBASIC una nuova versione risultata cos differente dalle precedenti Le variazioni introdotte non sono tanto relative a nuovi comandi quanto all impostazione generale dell interprete che finisce sempre pi per assomigliare ad un sistema operativo Si introduce un concetto fondamentali la netta separazione tra un nucleo standard kernel ed i programmi adesso modulari che gestiscono le periferiche drivers Il concetto del driver presente nel GBASIC fino da tempi remoti ma la linea di demarcazione con il nucleo dell interprete era quanto mai sfumata ed in pratica i due costituivano un tutt uno indissolubile risultando le relative interconnessioni complesse irregolari e molteplici La nuova filosofia consente una significativa evoluzione del modus operandi qualunque utente pu adattare il kernel al proprio hardware e scrivere propri drivers senza dover disporre del sorgente GBASIC e senza necessit di entrare nei suoi meandri Risulter evid
51. GBASIC 7 40 Manuale Generale se presente il driver CCAL ed il relativo hardware Parametri in ingresso ACC codice funzione 21 Parametri in uscita ACC valore richiesto Funz system 22 DRADDR Significato mnemonico DRiver ADDress Descrizione Ritorna l indirizzo fisico del driver richiesto che deve essere aperto Parametri in ingresso ACC codice funzione 22 Parametri in uscita DE ed IY indirizzo del driver richiesto Funz system 23 POPTASK Significato mnemonico POP TASK Descrizione Elimina l ultimo driver installato nell MMT Parametri in ingresso ACC codice funzione 23 Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Parametri in uscita nessuno Mini Multi Task MMT MMT e un semplice esecutore multitask che ha principalmente la funzione essere utilizzato dai drivers E infatti piuttosto frequente che un driver piuttosto complesso abbia necessita di usare un processo parallelo ad esempio per un driver di stampa con spooler pu essere utile realizzare un processo che ad intervalli verifica la presenza di caratteri da stampare Per evitare che ogni driver operi a modo proprio e stato realizzato questo MMT Al momento opera a livello minimo ma e gia previsto per una pi estesa funzionalit All accensione MMT e inattivo Per renderlo si deve a attivare un oscillatore usando un CTC che non sia usato per altro evitare OSC 0 che
52. Generale Funz driver 5 Read Char Descrizione Invia un carattere al driver Chiamata dall input di console dalle frasi INPUT ecc Parametri in ingresso B codice funzione 5 Parametri in uscita ACC codice esito 0 OK 1 ERRORE E carattere ritornato Funz driver 6 Status Descrizione Ritorna un codice corrispondente allo stato del driver quando viene richiamata la funzione DRVST vedi Il driver di console usa questa funzione anche in altre circostanze ad esempio per riconoscere la pressione del ESC Vedi sezione 5 ed appendice B La funzione DRVSIT pu avere opzionalmente due parametri In questo caso il secondo parametro pu assumere qualsiasi valore compreso tra 0 e 65535 Parametri in ingresso sa B codice funzione 6 DE parametro opzionale se utilizzato Parametri in uscita ACC codice esito O OK 1 ERRORE Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Funz driver 7 Info Descrizione Richiesta di informazioni selezionate in funzione di un indice dato dal registro E Nella versione corrente le informazioni possibili sono le seguenti E 0 porta di controllo della principale SIO usata dal driver E 1 idem porta dati E 2 idem porta vettore Nella corrente versione solo la frase SIOSET vedi usa questa funzione Parametri in ingresso B codice funzione 7 E indice richiesta funzione Parametri in uscit
53. IA is 17 Dichiarazione delle variabili isicrenno nica iaia 18 Dichiarazione delle costanti irlanda 19 Costanti numeriche NUOVO tipo i 20 STAMP da 21 TL PLOSTAMMMA PRIORE RES FRA CORRE PROPRI RR RN RIONE dea ind deci 21 Compllazione condizionale cirivazia lie hi LAO a iaia ai 22 Inclusione di f1l s criari iaia alia aeneon 22 Tim e staMipilgz caiano Rial Re RI a La i ea 23 DIASNostica s isa aaa Alea li Rao ia ea aa ila a 23 ConclusIonex s ci ati e BR RARO A daa 24 Guida dell tetas aa Lai AO Ae dee air 25 Generalities na e Aa aE lil AMOR O ea E AORTAE DIESE 25 Fe strimghe di confisurazione cid an ai ion ado E A e 26 Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Stringa di configurazione della SIO i 26 A ee E I E RI e EA RANE PERI SERI ACE CR a e EGA 29 Vettore stiniohe cpiosssgae li ballad ie bo ia pi de e 30 Edit caca ae da leido da clas deis 31 L ingresso uscita FO aiii ii iL da ero LO i 32 dispositiva logic ins da reido died dea cas lidia 34 Preliminar sull imtertupti s assai lana o AA enon dido e a e lis do iba 37 L stringhe di confipuraziohe coda reido id cs diia 39 Periferiche autores locali ii AE a ao Lia 41 Tnterruzi netad alto velo aiii ds ii o a E E it teo 43 TIMETS E COMA id ib e da o DOO I ie 47 Oslo A I I ia 49 Complemento sul drivers gneiss a 50 Organizzazione della Memorando diari SI AUTOSTAIO SAE E AAE LN RA e
54. IF pu contenere sono le etichette di programma Le linee di commento contenute in un blocco IF non sono riportate nel TXT in caso di espressione falsa Inclusione di files Il file contenente il programma GBASIC pu includere altri files con la direttiva INCLUDE nonfile Il file incluso deve terminare con ENDINCLUDE Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Un file incluso non pu includere altri files Time stamping Diagnostica Ogni file generato GBA con PREGB marcato con il time stamp ossia una stringa ASCII di 26 caratteri che indica esattamente giorno mese anno ora minuto e secondo della sua pre processazione Questo rende possibile la sua esatta identificazione anche sulla eprom Il time stamp si trova in coda al programma dopo la sequenza 1 0 0 La lettura del time stamp pur avvenire in vari modi pc tools debug eproml ecc Il time stamp accessibile anche al programma definendo una costante alfanumerica uguale alla parola riservata STAMP Esempio VERSIONE STAMP In questo modo la costante VERSIONE assume il valore del time stamp PREGB non un compilatore inteso in senso tradizionale in quanto si limita ad eseguire una semplice pre elaborazione del testo in ingresso GBE Non vengono quindi effettuati controlli di alcun tipo sulla sintassi del GBASIC per cui ad esempio la frase THEN 12 PRINT risulta perfettamente legale
55. L ASCII 8 sull attuale dispositivo di console La sua funzionalit quindi legata al comportamento del driver di console BOOT Forma generale BOOT Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Descrizione Provoca il riavviamento del sistema software reset Compare il messaggio iniziale di hello Utile di solito per riavviare il sistema dei driver dopo avere arrestato il programma senza eseguire le frasi CLOSE per evitare l errore ERR GIA OPEN BREAK Forma generale BREAK lt exp gt Descrizione L esecuzione del programma pu essere arrestata in qualsiasi momento premendo il tasto ESC sull unit di console qualora questa ne disponga Il controllo del ESC pu dover essere sospeso per i seguenti motivi 1 perch si desidera impedire all utente di uscire volontariamente o meno dal programma di gestione 2 per accelerare la velocit di funzionamento in particolare nella INPUT LDEV 4 vedi BREAK serve per disabilitare se lt exp gt vale 0 o riabilitare se lt exp gt vale 1 la funzione di ESC Esempio BREAK 0 Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale CLEAR Forma generale 1 CLEAR 2 CLEAR IS lt string gt Descrizione Nella forma 1 CLEAR cancella tutte le variabili ponendo il loro valore a zero Nella forma 2 definisce il carattere di pulizia display da usarsi nella frase NGET
56. Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale x Ciononostante e prevista una diagnostica abbastanza accurata ed estesa degli errori che possono essere rilevati nei limiti sopra indicati Si riportano i principali messaggi di errore che possono comparire previsto identificatore identificatore non dichiarato bug interno file sorgente non trovato troppi argomenti ignorati impossibile creare file di uscita del file delle parole chiave PREGB OVL non pi simboli GBASIC disponibili direttiva sconosciuta simbolo definito pi volte previsto END costante stringa non terminata da virgolette previsto prevista costante stringa costante troppo lunga max 40 car prevista ENDIF prevista costante IF dentro blocco IF ENDIF espression rrata usare davanti alle costanti numeriche di compilazione I messaggi di errore sono inclusi nel file TXT ma se nessun errore viene riscontrato non viene aggiunto in esse alcun messaggio tipo nessun errore Si noti che caratteri anomali possono provocare lo sfasamento dei numeri di linea nei files prodotti Conclusione PREGB estende notevolmente la facilit di impiego del GBASIC I programmi diventano pi leggibili e di conseguenza assai pi facili da scrivere e da manutenere specie se l utente ha l accortezza di scriverli in modo opportuno con r
57. OK reset non trovato D porta dati C porta controllo E porta vettore B numero della posizione in tabella Funz system 8 REPLDRV Significato mnemonico REPlace a DRiVer with a new one Descrizione Il GBASIC conserva gli indirizzi dei drivers in una tabella interna chiamata DIRTAB La funzione REPLDRV rimpiazza l indirizzo presente in tabella con uno nuovo fornito dal driver L unico controllo fatto che il canale sia stato effettivamente aperto Si consiglia di usare solo a ragion veduta Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Parametri in ingresso ACC codice funzione 8 E numero del canale HL indirizzo fisico del nuovo driver Parametri in uscita nessuno Funz system 9 RPLBKSP Significato mnemonico RePLace BacKSPace key Descrizione Normalmente la funzione backspace cancellazione ultimo carattere affidata al codice 08 Con questa funzione essa pu essere riassegnata ad un codice diverso Parametri in ingresso ACC codice funzione 9 E codice del nuovo tasto backspace Parametri in uscita nessuno Funz system 10 NEWTASK Significato mnemonico Install NEW TASK Descrizione Installa un nuovo task nel MMT Mini Multi Task La Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale versione attuale supporta solo in parte MMT Vedi nei paragrafo 5 8 Para
58. OT1 LD A DTAP LD C A POP AF OUT C A XOR A TUTTO OK RET FUNZIONE N 5 READ CHAR LETTURA CAR DA BUFFER DI RICEZ O ATTESA RDCHAR PUSH HL PUSH BC LD HL CHR_CNT INDIRIZZO DEL CONTACARATTERI LD A 6 CP HL JR C SIOANF PIU DI 6 CARATTERI NEL BUFFER SALTA LD A XOFSNT MENO DI 6 CARATTERI NEL BUFFER OR A E STATO SPEDITO PER ULTIMO UNO XOFF JR Z SIOANF NO SALTA D E XON INVITA A TRASMETTERE CALL SIOTX XOR A ATTIVA PROSSIMA TRASMISSIONE DI XOFF LD XOFSNT A QUANDO NECESSARIA SIOANF XOR A SAWAIT CP EL BUFFER VUOTO CONTATORE 0 JR Z SAWAIT ATTENDI UN CARATTERE Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale RDCH1 DEC HL CARATTERE ARRIVATO DECREMENTA CONTATORE LD HL RD_PO PRENDI PUNTATORE DI LETTURA LD B HL CARATTERE IN B CALL INCPOIN INCREMENTA POINTER LD RD_PO HL RDCH2 LD A B CARATTERE IN ACC AND 7FH VIA BIT 7 POP BC POP HL D E A METTI CARATTERE IN E XOR A TUTTO OK RET FUNZIONE N 6 RITORNA LO STATO DELLA PERIFERICA
59. RICHIEDI IL NOSTRO LIVELLO LD A 14 FINE SEGMENTO CRITICO SOLO SE POW FAULT CALL SYS D E A E CONTIENE ORA IL NOSTRO LIVELLO LD A 1 CODICE FUNZIONE SYSTEM 1 HIRO CALL SYSTEM RICHIEDI INTERRUPT A BASIC EXX EX AF AF EI RETI Drivers associati al dispositivo AUX Il dispositivo logico AUX utilizzato dalle frasi DISPLAY e dalla funzione NGETS Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale I drivers ad esso associati devono essere di tipo orientati al carattere Per operare correttamente con la NGET deve eseguire particolari funzioni quando riceve i seguenti caratteri di controllo Dec Funzione svolta 2 8 Passoindietro cursore Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Messaggi di errore Messaggi di errore Sono elencati nel seguito i messaggi di errore emessi dal GBASIC I messaggi di errore del precompilatore PREGB sono descritti nella sezione relativa I messaggi di errore sono emessi nella forma ERR lt tipo errore gt LN lt linnum gt dove lt tipo errore una sigla che identifica il tipo di errore e LN il numero della linea dove si verificato l errore SINT Errore di sintassi L interprete non comprende un comando o la costruzione di una frase VAL Parametro con valore errato Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale F NXT RET 1 o F
60. RITORNA E 0 SE NON CI SONO CARATTERI IN ATTESA RITORNA E CARATTERE SE CI SONO CARATTERI IN ATTESA NON MODIFICA IL BUFFER STATUS LD A CHR_CNT D E 0 OR A CARATTERI NEL BUFFER RET Z NO RET CON E 00 LD HL RD_PO D E HL SI RET CON E CARATTERE XOR A RET FUNZIONE N 7 INFO QUESTA E UNA FUNZIONE OPZIONALE IN QUESTO CASO SERVE PER RITORNARE IL NUMERO DELLE PORTE FISICHE UTILIZZATE DALLA MAIN SIO DI QUESTO DRV 0 CTL 1 DTA 2 VEC CHIAMATA DA SIOSET INFO LD D 0 USA E COME INDICE ALLE TRE LOC DATI LD HL CTLP TANTO SAPPIAMO CHE SONO CONTIGUE ADD HL DE LD A HL D E A RITORNA IL VALORE IN E XOR A RET FUNZIONE N 8 GETCH RITORNA 0 OD IL CAR PRELEVANDOLO DA BUFF GETCH PUSH HL PUSH BC LD HL CHR_CNT INDIRIZZO DEL CONTACARATTERI LD A 6 CP HL JR C SIOANF1 PIU DI 6 CARATTERI NEL BUFFER SALTA LD A XOFSNT MENO DI 6 CARATTERI NEL BUFFER OR A E STATO SPEDITO PER ULTIMO UNO XOFF Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale JR Z SIOANF1 NO SALTA LD E XON INVITA A TRASMETTERE CALL SIOTX XOR A ATTIVA PROSSIMA TRASMISSIONE DI XOFF LD XOFSNT A QUANDO NECESSARIA SIOANF1 XOR A L
61. T H1 H1 40 NEXT Spiegazione le frasi 20 e 30 vengono eseguite per H1 che va Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale da 20 a 18 5 all indietro perch STEP negativo H1 vale 20 al primo giro 19 5 al secondo e cos via GOSUB Forma generale GOSUB lt linnum gt Descrizione Quando durante l esecuzione viene incontrata la frase GOSUB viene eseguito un salto alla linea indicata da lt linnum gt Non appena poi viene incontrata una istruzione RETURN si ritorna alla linea che segue la GOSUB lt Linnum gt deve corrispondere ad un numero di linea esistente o risulter un ERRORE DI NUMERO DI LINEA Esempio 10 GOSUB 1000 20 PRINT H 30 STOP 1000 LET H1 45 7 1010 RETURN Spiegazione dalla frase 10 si salta alla 1000 Ll si esegue la LET ed alla frase RETURN si torna alla 20 GOTO Forma generale GOTO lt linnum gt Descrizione la frase GOTO serve per saltare alla linea di numero lt linnum gt Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale lt Linnum gt deve essere il numero di una linea esistente o si avr una segnalazione ERRORE DI NUMERO DI LINEA Esempio 10 GOTO 300 300 PRINT A IF Forma generale 1 IF lt explog gt THEN lt frase gt 2 IF lt explog gt THEN lt linnum gt 3 IF lt explog gt THEN blocco di istruzioni ENDIF 4 IF lt explog gt THEN blocco di istruzi
62. T MSBYTE CP HIGH ENDBUF FINE BUFFER RET NZ LD A L CP LOW ENDBUF RET NZ LD HL RX_BUF RICOMINCIA CIRCOLARMENTE RET TABELLE E VETTORI TABSIOA DB 4 44H CLOCK X 16 NO SYNC 1 STOP BIT NO PARITY DB 3 0C1H RX ENABLE BIT CHAR DB 5 6AH 8 BIT CHAR TX ENABLE RTS DB 10H RESET EXT STATUS INT DB 1 1CH INT ON ALL RX CHARS PARITY DOES NOT AFFECT VECTOR NO INT ON TX TABVECS DW SIOTXA DW SIOSTA DW SIORXA DW SIOSPA STUPSTG DB RUN 19000 CR DRVEND Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale i AREA RAM DSEG RD PO DS 2 PUNTATORE DI LETTURA BUFFER RX_PO DS 2 PUNTATORE DI SCRITTURA BUFFER ATTENZIONE LE TRE LOC CHE SEGUONO DEVONO STARE CONTIGUE CTLP DS 1 SIO PORTA CONTROLLO DTAP DS di SIO PORTA DATI VECP DS 1 SIO PORTA VETTORE RX BUF DS BUFLEN ENDBUF FINE BUFFER CHR_CNT DS 1 CONTA CARATTERI RICEVUTI XOFSNT DS 1 FLAG DI XOFF GIA SPEDITO SE 1 Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Un programma esempio Si riporta a titolo di esempio un listato parziale di un programma GBASIC Si tratta di un data logger per accumulare i dati provenienti da una centralina anemometrica Il sistema reale dispone di un display LCD 2x40 e di 6 p
63. TIMDAT lt exp1 gt IS CH lt exp2 gt Descrizione assegna al dispositivo logico TIMDAT la periferica fisica gestita dal driver lt exp2 gt TIMDAT utilizzato per le frasi e funzioni TIME e DATES La frase AUX viene utilizzata anche per riassegnare il dispositivo logico TIMDAT ad un altro driver Esempio 10 OPEN CH 2 TIMDAT D 45 20 TIMDAT IS CH 2 30 PRINT DATES TIMES TIMER Forma generale TIMER lt expl gt lt exp2 gt Descrizione attende un tempo prefissato pari ad lt exp2 gt espresso in 10 msec unit Prima di usarla deve essere stato aperto un timer di numero lt exp1 gt Esempio 10 OPEN TIMER 1 C 120 100 TIMER 1 100 Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale TIMES x Forma generale TIMES lt string gt Descrizione regola l ora dell orologio dispositivo logico TIMDAT sul valore di lt string gt che deve avere il formato oo mm ss Non vengono eseguiti controlli sulla stringa tranne che per la sua lunghezza I caratteri usati come separatori possono essere sostituiti con altri caratteri Non confondere con la funzione TIME L operazione viene eseguita mediante la funzione 0 del driver WRITE BLOCK sul record 1 Esempio TIME 18 55 00 WRITE Forma generale 1 WRITE CH lt expl gt lt exp2 gt lt string gt 2 WRITE CH lt exp1 gt lt exp2 gt lt var gt Descrizione Forma
64. UB 200 NEXT 200 RETURN Tempo totale 27 4 sec Differenza con loop vuoto 15 7 sec Tempo singolo frase esaminata 2 6 msec Programma di prova IF FOR IF A 3 THEN LET A A 2 NEXT Tempo totale 30 6 sec Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Differenza con loop vuoto 18 9 sec Tempo singolo frase esaminata 3 2 msec Programma di prova LET CON DIVISIONE F P FOR LET A A 100 NEXT Tempo totale 26 8 sec Differenza con loop vuoto 15 1 sec Tempo singolo frase esaminata 2 5 msec Programma di prova LET CON DIVISIONE DA VARIABILE LET B 100 FOR LET A A B NEXT Tempo totale 22 4 sec Differenza con loop vuoto 10 7 sec Tempo singolo frase esaminata 1 7 msec Programma di prova LET CON VARIABILI MATRICIALI DIM B 50 LET C 25 LET B 25 100 FOR LET A A B C NEXT Tempo totale 30 9 sec Differenza con loop vuoto 19 2 sec Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Tempo singolo frase esaminata 3 2 msec Programma di prova DISPLAY lcd modello EMD FOR DISPLAY 1 12345678901234567890 NEXT Tempo totale 68 5 sec Differenza con loop vuoto 56 8 sec Tempo singolo frase esaminata 95 0 msec Programma di prova REM FOR REM PIPPO PAPPO NEXT Tempo totale 15 7 sec Differenza con loop vuoto 4 0 sec Tempo singolo frase esaminata 0 7 msec Program
65. UTINE ORG 69H CUSTOM FMD ROUTINE TO EXECUTE POWER DOWN KILPORT EQU 60H KILL PORT KILBIT EQU 4 KILL BIT NMI DI LD SP STACK1 USA LO STACK RISERVATO ALLA LOC 8010H NON SFRUTTARE PIU DI 4 LIVELLI queste due istr sono sempre presenti possono essere lasciate intatte XOR A OUT 70H A OUT 0EH A LD A 12 CALCOLA E SALVA CHECKSUM RAM PER CALL SYS CONTROLLARLO ALLA RIPARTENZA XOR A OUT KILPORT A AUTOKILL LD B 10 ATTENDI MANCANZA ALIMENTAZIONE LD DE O0 SIP2 DEC DE LD A D OR E JR NZ SIP2 DINZ SIP2 JP 0 EVENTUALMENTE RIPARTI DA 0000H CUSTOM ROUTINE TO INIT POWER DOWN SYSTEM Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale LO STACK E GIA INIZIALIZZATO NON USARE PIU DI 3 LIVELLI T INIPOW1 XOR A RES KILBIT A SUPERFLUA OUT KILPORT A AUTOKILL OUT 70H A CPL OUT 0EH A SPEGNE LEDS LD HL 0 LUPSTA DEC HL RITARDO LD A H OR L JR NZ LUPSTA XOR A SET KILBIT A OUT KILPORT A NO AUTOKILL RET E GARANTITA LA DISPONIBILITA DELL AREA CHE SEGUE FINO A OBFH ANCHE NELLE VERSIONI FUTURE PER LE ROUTINES UTENTE ORG OCOH Il driver di console Nella appendice B e riportato il listato del driver di console fornito come standard Si tratta come accennato di un driver di tipo character che governa una SIO Il list
66. V PE r E EER EAE LIL 187 Eistato diCONSDRV ccal ail iene aaa 188 Un progr mm A ias 197 Libera riproduzione e libero uso
67. a ACC codice esito 0 OK 1 ERRORE E valore ritornato Funz driver 8 Getch Descrizione Ritorna il prossimo carattere dal buffer di ingresso di un driver character oriented Se non ci sono caratteri ritorna 0 Parametri in ingresso B codice funzione 8 Parametri in uscita ACC codice esito Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale 0 OK 1 ERRORE E carattere letto o 0 Funz driver 9 Flush Descrizione Azzera il buffer di ingresso del driver specificato Parametri in ingresso B codice funzione 9 Parametri in uscita ACC codice esito O OK 1 ERRORE Funz driver 10 Chnum Descrizione Ritorna il numero dei caratteri presenti nel buffer di ingresso di un driver Parametri in ingresso B codice funzione 10 Parametri in uscita ACC codice esito 0 OK 1 ERRORE E num dei caratteri presenti nel buffer Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Il System Funz driver 88h Autostart Descrizione Funzione speciale usata solo dal driver di console Viene chiamata al momento del reset generale per stabilire se entrare nel normale modo operativo di console o se avviare automaticamente l esecuzione di un programma In caso di autostart il driver deve ritornare anche l indirizzo di una stringa che contiene il comando da eseguire tipicamente un RUN lt addr gt che deve
68. abili lt var gt lt var1 gt ecc Opzionalmente pu essere specificata una stringa lt string gt racchiusa tra doppi apici Se lt string gt non presente quando la frase INPUT viene incontrata l elaborazione si arresta e compare un punto interrogativo L operatore pu cos introdurre i dati richiesti se essi sono pi di uno li separer con una virgola ed infine premer RETURN per far ripartire il programma Se lt string gt presente invece del punto interrogativo comparir la lt string gt Punto interrogativo e stringa interrogativa sono emessi sul dispositivo logico CON out mentre l ingresso avviene attraverso CON in Si noti che battendo in risposta alle interrogazioni della frase INPUT il tasto RETURN a vuoto non risulta una condizione di errore Se le variabili in ingresso sono numeriche assegna loro il valore 0 Alle alfanumeriche ritorna invece una stringa nulla di lunghezza 0 Se si batte RETURN prima di avere introdotto tutti i dati compaiono due punti interrogativi ed possibile continuare l introduzione Le clausole PICTURE LDEV CH e NOCLEAR modificano la funzione della frase INPUT come sotto descritto e possono essere inserite in qualsiasi ordine ATTENZIONE SONO STATE INTRODOTTE VARIANTI CHE RICHIEDONO LA MODIFICA DEI PROGRAMMI ESISTENTI E stato variato l uso della parola chiave CH nelle frasi PRINT ed INPUT Questa modifica si resa necessaria per una doverosa riarmonizzazione lo
69. al normale CR altri due caratteri provocano l uscita dalla frase INPUT Essi sono denominati convenzionalmente NBESC e CONFIRM La funzione EXIT 0 ritorna il codice del carattere utilizzato per l uscita L uscita con un carattere o con l altro non modifica il comportamento di INPUT Per default NBESC vale e CONFIRM vale E possibile modificare dette assegnazioni con l opzione PICTURE vedi sotto I caratteri correntemente usati per NBESC e CONFIRM non possono ovviamente formare oggetto di normale input Opzione PICTURE La clausola opzionale PICTURE fissa il formato di ingresso La stringa lt string gt definisce il formato con le seguenti regole 1 un 9 corrisponde ad un carattere numerico altri caratteri sono ignorati 2 una A corrisponde ad un carattere alfabetico altri caratteri sono ignorati 3 una X corrisponde a qualsiasi carattere nessun carattere viene ignorato 4 sono accettati solo tanti caratteri quanti ce ne sono nella stringa lt string gt altri eccedenti sono ignorati x Nella stringa di formato lt string gt ammesso uno o pi prefissi che possono essere non eseguire eco dei caratteri introdotti esegui eco con asterischi Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale gt esegui un auto CR quando si arriva alla lunghezza massima della stringa di formato fissa il carattere NBESC vedi sopra che deve subito segui
70. appartiene il nome della procedura costruito con le stesse regole degli altri simboli I simboli della procedura Main il programma principale che contiene le procedure sono globali ed accessibili a tutte le procedure Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale I simboli definiti nelle procedure vedi dopo hanno validit solo all interno della procedura Ci si riferisce ad un simbolo di una procedura con l operatore procedure seguito dal nome della procedura desiderata Es gosub procedure Prova Prova significa vai alla etichetta Prova della procedura Prova idem per variabili e costanti Una procedura pu ridichiarare come propri gli stessi simboli usati nella procedura Main o in altre procedure I simboli vengono ricercati prima tra quelli locali e poi se non trovati tra quelli globali Le variabili pur se locali sono allocate dal GBASIC in modo tradizionale Non sono quindi possibili chiamate ricorsive o simultanee da parte di pi task Pregb v 2 produce sempre il file SYM contenente l elenco ed i valori di tutti i simboli utilizzati dal programma e detto file viene caricato automaticamente da GBT e reso accessibile al programmatore Struttura di un programma GBE Un programma GBE ha la seguente struttura DECLVAR dichiarazione delle variabili END DECLCONST dichiarazione delle costanti END CODE programma END Libera riproduz
71. ata viene inserita nei loop di attesa come ad esempio quello che aspetta un carattere da tastiera Si osservi che INTMON quando serve un interrupt preserva tutti i registri tranne acc e TXA il puntatore interno al programma in esecuzione e che i programmi di interrupt non possono richiamare ancora INTMON Ad esempio una routine di interrupt servita durante una INPUT da tastiera non pu contenere un altra INPUT da tastiera Viceversa si ottiene un errore di segmento critico In sintesi grazie ad INTMON la INPUT da operatore non Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale blocca pi il servizio degli interrupts Il driver di console CONS DRV gi stato modificato per sfruttare questa nuova possibilit Parametri in ingresso ACC codice funzione 19 Parametri in uscita nessuno Funz system 20 QRYMMT Significato mnemonico QuerY MMT Descrizione Ritorna il valore utilizzato dall utente per programmare il timer dell MMT o zero se MMT non attivo non usare 0 come costante del CTC Parametri in ingresso ACC codice funzione 20 Parametri in uscita ACC valore della costante di MMT Funz system 21 QRYFREQ Significato mnemonico QueRY Frequency Descrizione Ritorna la frequenza del clock di sistema divisa per 10000 o 0 se il dato non disponibile La frequenza viene calcolata solo Libera riproduzione e libero uso Gianni Becattini
72. ata del dispositivo logico TIMDAT La stringa lt string gt che deve avere il formato gg mm aa Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale viene passata al driver in quel momento associato con TIMDAT con una operazione di scrittura blocco sul record n 2 il numero 1 usato per l ora Non vengono eseguiti controlli sulla stringa tranne che per la sua lunghezza L operazione viene eseguita mediante la funzione 0 del driver WRITE BLOCK sul record 2 Esempio 10 DIM AS 8 20 OPEN CH 3 CCAL D 20 30 TIMDAT IS CH 3 40 LET AS 14 05 89 50 DATES AS DIM Forma generale DIM lt var gt lt exp gt lt varl gt lt expl gt Descrizione La frase DIM serve per riservare in memoria lo spazio per una o pi variabili ad indice o di tipo stringa di nome lt var gt lt var1 gt ecc In caso di variabili numeriche la variabile lt var gt avr lt exp gt 1 elementi la variabile lt var1 gt ne avr lt exp1 gt 1 e cos via essendo presente anche l elemento di indice 0 Nel caso di variabili stringa lt exp gt ne determina la lunghezza massima Variabili numeriche con indici compresi tra 0 e 10 vengono dimensionate automaticamente e non quindi richiesto l uso della frase DIM Le stringhe devono sempre essere dimensionate ad un valore maggiore di una unit della lunghezza massima prevista Esempio 10 REM NON RICHIEDE DIM 20 LET A 8 12 Lib
73. ato abbondantemente commentato e ci soffermeremo pertanto solo sui punti pi critici Solo nella inizializzazione il driver CONS esegue delle particolari operazioni che possono non risultare ben chiare Inizializzazione porte Le operazioni svolte sono le seguenti 1 resetta con 18h il ctlp channel reset disabilita tutto interrupts compresi per un singolo canale 2 resetta con 18h il vecp Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale 3 programma il registro 1 di vecp con 4 solo status affects vector condizione normale per usare la tabella dei vettori invece del vettore singolo NOTA BENE che questo bit e attivo solo sul canale B ossia sulla porta vettore 4 programma da tabella il ctlp compreso un 10h reset ext status interrups ed un 1Ch in reg 1 che significa status affects vector e int on all rx chars parity does NOT affect vector La necessita di compiere queste macchinose operazioni deriva dal bisogno di avere certamente programmato lo status affects vector nel registro 1 della porta vettore Questo pero ancora non spiega come mai si debba resettare con 18h la porta controllo questo avviene solo perche la medesima operazione non compresa nella tabella di programmazione standard In linea generale ossia per altri drivers le operazioni da fare non possono essere quelle sopra descritte poich in questo modo si rischia di cancellare una programmazione gia
74. blatore in modo da linkare con il proprio linker i tutti driver assieme Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Uso della RAM da parte dei drivers Spesso un driver potr necessitare l uso di RAM L area a disposizione inizia dalla locazione F800h Ogni driver occuper l area immediatamente seguente a quella utilizzata dal driver precedente Funzioni eseguite dal driver Il kernel richiama il driver dopo avere identificato l indirizzo fisico del suo entry point al momento dell operazione di OPEN richiedendo l esecuzione di una certa funzione a mezzo di un codice Le funzioni eseguibili dal driver sono descritte nelle pagine seguenti Funz driver 0 Block Write Descrizione Invia un record di dati al driver passandogli l indirizzo del blocco ed il numero del record Il blocco terminato dal carattere NULL Viene chiamata alla esecuzione delle frasi WRITE DISPLAY TIME e DATE Parametri in ingresso B codice funzione 0 HL indirizzo del blocco DE numero del record Parametri in uscita ACC codice esito 0 OK 1 ERRORE Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Funz driver 1 Block Read Descrizione Legge un record di dati dal driver passandogli l indirizzo dell area di destinazione ed il numero del record Il blocco deve essere terminato dal carattere CR Viene chiamata alla esecuzione della
75. cazione del programma Parametri in ingresso ACC codice funzione 15 Parametri in uscita HL indirizzo della locazione BOF Funz system 16 amp EOF Significato mnemonico address of End Of File pointer Descrizione Ritorna l indirizzo della locazione ove contenuto l indirizzo della ultima locazione del programma Parametri in ingresso ACC codice funzione 16 Parametri in uscita HL indirizzo della locazione EOF Funz system 18 CNS Significato mnemonico CoNvert integer to String Descrizione Converte un intero in una stringa Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Parametri in ingresso ACC codice funzione 18 HL valore da convertire DE punta al buffer dove porre la stringa Parametri in uscita DE punta alla stringa convertita Funz system 19 INTMON Significato mnemonico INTerrupt MONitor Descrizione Dalla v 7 4x stata aggiunta la funzione INTMON per aumentare l arco di riconoscibilit delle interruzione GBASIC In precedenza le interruzioni erano riconosciute solo all inizio dell esecuzione di ogni frase In certi casi questa situazione risultava molto penalizzante In particolare la frase INPUT da operatore bloccava il servizio degli interrupt con un inevitabile overflow dello stack delle richieste La nuova chiamata consente di monitorizzare lo stato degli interrupts e nel caso di accettarli e servirli Questa chiam
76. complesso abbia necessita di usare un processo parallelo ad esempio per un driver di stampa con spooler pu essere utile realizzare un processo che ad intervalli verifica la presenza di caratteri da stampare Il nome multi task improprio poich attualmente MMT opera a livello minimo anche se previsto per una futura eventuale pi estesa funzionalit L utilizzo di MMT pu essere richiesto da particolari drivers Riferirsi ai relativi manuali Vedi il paragrafo 5 13 per ulteriori dettagli All accensione MMT e inattivo Per renderlo si deve a attivare un oscillatore usando un CTC che non sia usato per altre cose evitare OSC 0 che di solito e impiegato come brg per la sio di console Esempio open osc 2 C 1 D 145 b specificare con l apposita frase che l oscillatore in questione e usato come clock per il task switching La frase e osc 2 40 for switch dove 403 19 MMT Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Alcuni tempi di esecuzione Uso pratico Provati su hardware PDTF clock a 3 6864 MHz Per la misurazione le frasi interessate sono state inserite in un loop di prova ed stata rilevata la differenza con il loop vuoto L avvio stato controllato con una frase INPUT in modo da evitare l overhead di avviamento che non trascurabile Loop di prova FOR I 1 to 6000 NEXT Tempo globale 11 7 sec Programma di prova GOSUB RETURN FOR GOS
77. de anche a ritornare il vettore parte bassa dell indirizzo della tabella che deve essere programmato nella periferica Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Le stringhe di configurazione Concetti Un driver pu utilizzare nell accesso alle periferiche indirizzi assoluti delle porte definiti nel driver stesso E per evidente che un driver cosiffatto deve essere modificato ogni qualvolta si esegua una variazione dell hardware E quindi consigliabile utilizzare uno strumento posto a disposizione dal GBASIC che consente di fornire una serie di parametri ausiliari alla frase open che nel loro insieme prendono il nome di stringa di configurazione Il meccanismo molto simile a quello indicato al paragrafo 2 2 per la configurazione iniziale della console Ad esempio open ch 4 CCAL D 12 orologio calendario La stringa di configurazione non viene in alcun modo interpretata dal GBASIC che si limita a passarla inalterata al driver Tuttavia il GBASIC mette a disposizione delle funzioni ausiliarie per analizzare la stringa stessa e per ricavarne i parametri in modo semplice e veloce diversamente ogni driver verrebbe inutilmente appesantito se queste funzioni dovessero essere realizzate internamente Le funzioni ora dette sono utilizzabili per stringhe di configurazione che seguono uno schema convenzionale ossia per SIO SIO lt m gt DATA lt n gt CONTR lt o gt VECT
78. devono essere indicati anche gli zeri es 04 e non 4 Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale CONCAT x y Forma generale CONCAT lt stringl gt lt string2 gt Descrizione concatena due stringhe lt string1 gt e lt string2 gt per formarne una nuova Esempio LET A CONCAT B PIPPO Nominalmente accetta come argomenti solo costanti e o variabili tuttavia stata provata con esito positivo in varie circostanze anche in combinazioni pi complesse Si consiglia di provare caso per caso Gli esempi sotto riportati sono stati collaudati con esito positivo 10 PRINT SUBSTRS 123456789 3 4 20 PRINT CONCATS ABC 123 10 DIM AS 20 BS 20 20 LET AS ABC 30 LET BS 123 40 PRINT CONCATS A B 50 PRINT CONCATS AS ZZZ 60 PRINT HEXS 100 70 PRINT CONCATS AS HEXS 100 80 LET BS CONCATS AS HEX 100 85 PRINT BS 90 LET BS CONCATS BS BS 100 PRINT BS 05 LET AS CONCATS BS SUBSTRS BS 2 3 06 PRINT AS 10 PRINT SUBSTRS 1234567890 3 3 5 Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale COUNT x Forma generale COUNT lt exp gt Descrizione Ritorna il valore attuale del contatore lt exp gt lt Exp gt deve essere compreso tra 1 e 3 Il valore del conteggio accumulato non viene inizializzato all accensione in modo da consentire la sua lettura anche dopo una perd
79. duzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale 10 PRINT Il risultato A6 3 Separatori La stessa frase PRINT pu essere impiegata per stampare il risultato di pi espressioni separando queste ultime con uno dei seguenti separatori virgola salta alla prossima tabulazione 8 caratteri punto e virgola non inserire spazi esclamativo esegui un ritorno a capo interlinea Esempio 10 PRINT A A 4 A 8 BS CONCATS A Z 20 PRINT Peso K1 chilogrammi 30 PRINT AAAAA BBBBB Funzione TAB lt exp gt La frase PRINT pu utilizzare la funzione TAB vedi per inserire spazi Esempio 10 PRINT TAB 30 VALORE V1 per scrivere VALORE alla colonna 30 La funzione TAB utile anche per generare diagrammi Esempio 10 FOR I 1 TO 24 20 PRINT TAB I 30 NEXT Il GBASIC conserva una sola locazione di memoria per memorizzare la posizione corrente di stampa Per questo motivo se si commuta il dispositivo logico di uscita opportuno eseguire un ritorno alla posizione di stampa 0 prima di eseguire una TAB Controllo del formato di uscita Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale La frase PRINT consente anche di variare il formato dei dati in uscita Per fare ci si usano dei codici preceduti e seguiti dall operatore Formattazione dell uscita Dalla versione 7 35 stato integralmente rivisto il modo di f
80. e Ad esempio con un clock a 3 686 400 Hz si ottengono 2400 baud con una costante pari a 6 Pur essendo derivato dal BASIC standard Dartmouth il GBASIC presenta delle notevoli differenze rispetto ad esso e rispetto ai BASIC di solito utilizzati per programmazione gestionale In questa sezione sono indicate alcune delle pi significative differenze e sono illustrate quelle particolarit utili per la realizzazione di sistemi di controllo Si rimanda il lettore alla sezione di riferimento per la spiegazione dettagliata dei vari comandi Attenzione la sezione che segue stata organizzata a schede per una migliore comprensibilit da leggere tutta con attenzione perch contiene concetti importanti Si suppone che ogni utente utilizzi il precompilatore per scrivere i propri programmi Per questo motivo in questo manuale riporteremo spesso esempi che si suppongono essere precompilati prima dell uso In questi esempi le parole chiave PRINT LET ecc sono scritte in caratteri minuscoli Nella sezione di riferimento invece per una migliore comprensione si riportano esempi scritti per essere digitati direttamente dal terminale di console In questo caso le parole chiave sono scritte in caratteri maiuscoli Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Frase let Differenza con BASIC standard A differenza del BASIC standard la frase let sempre obbligatoria Esempio let a 3
81. e Le parole chiave vengono comunque riconosciute mentre come detto sopra per gli identificatori vengono eseguite le necessarie distinzioni Possono essere usati liberamente spazi tab e linee vuote Il carattere apice indica l inizio di un commento Tutto ci che segue fino a fine linea viene ignorato d quando necessario identificare un punto del programma si ricorre alla direttiva label con il simbolo gt seguito da un identificatore creato con le regole gi espresse Esempio gt Loop print sono in loop goto Loop Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale e durante la conversione vengono generati automaticamente i numeri di linea di 10 in 10 ed i riferimenti sono opportunamente aggiustati Ad esempio il programma precedente potrebbe diventare 10 PRINT sono in loop 20 GOTO 10 Compilazione condizionale E possibile determinare la compilazione condizionale di uno o pi blocchi di istruzioni in funzione del valore di una certa costante mediante l uso della direttiva IF Il blocco di istruzioni viene racchiuso tra una IF ed una F ENDIF La IF viene seguita dalla costante di comando Se questa vale 0 il blocco non viene compilato viceversa se vale 1 Esempio IF DEBUG print a b c ENDIF In un programma possono essere contenute tante direttive IF quante si vuole ma non possono venire nidificate Le uniche direttive che un blocco
82. e della mancanza di alimentazione fino alla fine della esecuzione del segmento critico I condensatori di filtro dell alimentatore devono ovviamente essere dimensionati in modo tale da consentire l esecuzione dell intero segmento critico pi lungo e della routine di gestione della mancanza di alimentazione Durante il segmento critico sono disabilitate tutte le interruzioni hardware e GBASIC Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Il segmento critico si definisce con le frasi CRITSEG ENDCRIT che non devono essere annidiate tra loro ossia un segmento critico non deve contenere un segmento critico La funzione SHUTDN consente di conoscere durante l esecuzione di un segmento critico se prossima o meno la mancanza di alimentazione ed utile ad esempio per evitare di iniziare operazioni lunghe La funzione DIAG vedi ritorna un codice di errore nel caso in cui la tensione cade dopo l inizio di un segmento critico e prima della sua fine In questo caso comunque si possono avere perdite di dati e la funzione DIAG riporter quasi certamente alla riaccensione anche un un errore di dati perduti Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale MMT Uso pratico E presente un mini multi task denominato MMT che ha principalmente la funzione essere utilizzato dai drivers E infatti piuttosto frequente che un driver piuttosto
83. e 84C015 Non pu invece operare completamente su Z 280 che ha alcuni bugs incompatibili con il sistema di interruzione I drivers Sono stati scritti molti drivers per GBASIC ma non tutti sono ancora documentati molto interessanti per esempio il mini file system per RAM paginata il driver per orologio calendario ecc Completamente documentati sono invece i drivers della rete locale G LAN ed i drivers del controllo motore National LM 628 Contattate la AEP per ogni informazione prima di iniziare a scrivere un driver probabile che gi esista L interprete GBASIC malgrado le notevoli potenzialit contenuto in 18 32K di eprom a seconda dell implementazione Molti sforzi sono stati fatti per contenere la dimensione dei programmi anche in vista della limitazione di indirizzabilit dello Z 80 Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Questo ha implicato alcune rinunce in particolare alla diagnostica che risulta piuttosto limitata Esistono poi come nel C condizioni di programma che possono portare a crash di sistema anzich all emissione di messaggi di errore Malgrado tutto con un minimo di attenzione il GBASIC risulta perfettamente stabile anche in fase di sviluppo Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Precompilatore PREGB Generalit Programmi GBASIC possono essere scritti direttamente sul sistema targ
84. e Generale b una procedura pu contenere sottoprogrammi c ad esclusione della procedura Main una procedura non pu contenere una procedura Dichiarazione delle variabili Tutte le variabili utilizzate nel programma devono essere dichiarate nella sezione DECLVAR Si riporta un esempio della dichiarazione delle variabili a b c Radice e Delta DECLVAR a b c coefficienti Radice Delta END Il pre processore assegner a ciascuna delle variabili simboliche di cui sopra una variabile GBASIC iniziando da AQ per la prima A1 per la seconda ecc e convertir di conseguenza tutte le loro occorrenze nel corso del programma Si noti che di conseguenza a non viene dichiarato il tipo nel corso del programma avremo la libert di usare l identificatore seguito da come stringa o da parentesi come vettore Per il GBASIC Radice Radice e Radice n sono tre variabili differenti Difatti se Radice viene convertita in A3 avremo che Radice viene convertita in A3 e Radice n viene convertita in A3 n b non possono essere dichiarate pi di 260 variabili poich possono essere convertite solo in A0 Z9 non una grande limitazione anche tenuto conto di quanto espresso sopra e comunque della limitazione della memoria effettivamente a disposizione Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale c le variabili stringa o vettore devono essere dimensionate con DIM co
85. e di console una scritta di hello con il copyright Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Se il sistema non mai stato inizializzato fin a quel momento avviene automaticamente una inizializzazione e compare quindi la scritta OK che indica che il sistema pronto ad accettare comandi Se il sistema gi stato inizializzato compare una domanda N per iniz gt premendo N o n il sistema viene reinizializzato ed eventuali programmi presenti in memoria RAM sono perduti Se presente l opzione autostart e se sono verificate le condizioni per l esecuzione dell autostart di solito la posizione di un deviatore il sistema inizia automaticamente ad eseguire il programma prefissato L autostart una delle funzioni modificabili dall utente vedere la sezione 3 per ulteriori chiarimenti Caratteristiche generali del GBASIC Il GBASIC tratta numeri in virgola mobile con 10 cifre significative e campo dinamico compreso tra 10 alla 127 e 10 alla 128 Questo vuol dire che si possono trattare numeri grandi con 127 zeri o numeri piccoli preceduti dalla virgola e da 127 zeri I numeri delle linee di programma devono essere compresi tra 1 e 65535 Sono disponibili compatibilmente con lo spazio di memoria le seguenti quantit e tipi di variabili 1 286 di tipo scalare cio senza indici 2 286 di tipo vettoriale con un indice compreso tra 0 e 255 3 286 d
86. e e le posizioni da utilizzare in tabella vettori Nell esempio che segue si illustra una possibile configurazione Non ci soffermiamo invece sull uso di timers contatori e contasecondi che sar illustrato a parte Esempio CTC U28 ch ch ch ch GTO U33 1 ch ch ch j ch WNRo MD NRO 0 3 usato 1 usato 1 1 1 1 1 1 1 28 29 30 31 44 45 46 47 come segue counter 1 counter 2 baud rate counter 3 come segue in parentesi sono fisici tabella CTCO tabella CTC1 tabella CTC2 tabella CTC3 non usato tabella CTC4 timer 1 tabella CTC5 timer 2 tabella CTC6 timer 3 tabella CTC7 indicati gli indirizzi Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale open open open open open open co co co timer 1 CTC 5 DATA timer 2 CTC 6 DATA timer 3 CTC 7 DATA 146 un un un ter 1 CTC O DATA ter 2 CTC 1 DATA ter 3 CTC 3 DATA on timer 1 gosub Timerl on timer 2 gosub Timer2 on timer 3 gosub Timer3 145 146 128 129 129 Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Interruzione ad alto livello Concetti Un problema tipico legato all uso di un interprete residente quello della velocit di esecuzione La facilit di impiego e l elevata
87. e si rispetti l ordine di rilettura anche usando variabili di nome diverso Per ogni quantit numerica registrata si dovr usare una variabile numerica per la rilettura e cosl per quelle alfanumeriche Ad esempio 10 PRINT LDEV 5 1 23 4567 ABCDEF 20 INPUT LDEV 5 J K FS Il separatore usato nella frase PRINT LDEV 5 deve necessariamente essere la virgola Sono attivi i controlli di formato come per la frase PRINT vedi Come accennato a differenza di quanto avviene in molti linguaggi per i records la struttura dello storage non rigida in ogni storage possono essere immagazzinate quantit eterogenee purch ovviamente si tenga conto al momento della rilettura della loro tipologia L accesso al singolo storage diretto basta far precedere la frase PRINT o INPUT dalla frase STORAGE lt exp gt per posizionarsi sullo storage di numero pari alla espressione lt exp gt Come default gli storage hanno lunghezza di 32 bytes ma accettano informazioni di lunghezza anche superiore in questo caso ovviamente viene utilizzato anche lo storage o gli storages successivi e deve essere cura del programmatore evitare letture da questi ultimi Dimensione degli storages La dimensione degli storages di tutti quanti pur essere Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale modificata con la frase STORAGE lt exp gt dove lt exp gt fornisce il numero da assumere come lunghezza
88. ea digitare il numero di linea seguito da return cancellazione ultimo carattere digitato tasto backspace od altro ridefinito con la frase BACKSP IS vedi L esecuzione del programma pu essere arrestata con ESC a meno che questa funzione non sia stata soppressa con BREAK 0 vedi E disponibile un programma denominato GBT destinato ad operare su PC che consente di eseguire le funzioni di editor a pieno schermo e di trasmissione dei programmi TXT Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale L ingresso uscita l O Concetti A differenza dei sistemi gestionali i sistemi di controllo dispongono in genere di periferiche di tipo non standard In considerazione di ci il GBASIC offre una consistente variet di strumenti per adattarsi alle particolari esigenze delle reali applicazioni Tutte le operazioni di ingresso uscita con la sola esclusione delle periferiche autogestite che descriveremo sotto avviene attraverso l impiego di opportuni programmi denominati drivers esterni al nucleo centrale del GBASIC detto kernel In questo modo diventa pi facile scrivere applicazioni destinate a funzionare su hardwares diversi Il programma GBASIC infatti pu rimanere invariato previa la riscrittura dei soli drivers Alternativamente possibile variare alcuni parametri che il GBASIC passa ai drivers come ad esempio i numeri delle porte di I O per adattare il programma ad un
89. ente la scomparsa di vari comandi in particolare quelli del video driver 9129 che quando e se sar implementato per la versione 7 avr un proprio manuale Molti comandi sono stati poi aggiunti e varie opzioni che rendono ancora pi potente l impiego del sistema Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale L impegno di migliorare mantenere e documentare il GBASIC molto gravoso gli utenti possono contribuire comunicando i loro problemi gli errori riscontrati sulla documentazione ecc a mezzo del modulo che si allega in fondo al manuale o meglio quando possibile inviando una fotocopia della pagina errata con le correzioni o le aggiunte Questa nuova edizione relativa alla versione 7 35 che presenta molte innovazioni minori rispetto alla 7 30 Firenze Ottobre 1990 Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Presentazione Quest anno il GBASIC compie dieci anni Nato per sfruttare le caratteristiche grafiche di un chip allora in voga la G stava per grafico ha dato poi il meglio di s nel campo dell automazione industriale e del controllo di processo La presente edizione del manuale del GBASIC v 7 40 viene presentata esattamente tre anni dopo quella della versione 7 30 In tutto questo tempo il piccolo interprete ha dato ulteriore prova delle sue qualit consentendo di realizzare diecine di applicazioni perfettamente
90. era riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Esempio 10 DIM A 20 LET A 30 LET AI 40 LET CS Si noti che la frase DIM usata in modo diretto segnala ERRORE DI DIMENSION e non di MODO DIRETTO DISPLAY Forme generali 1 DISPLAY lt exp gt lt list gt 2 DISPLAY lt exp gt Descrizione provoca l emissione del risultato delle espressioni che compongono la lista lt list gt verso il dispositivo logico AUX e quindi verso il driver che in quel momento associato ad esso Il risultato di viene passato al driver come numero di record e vale di solito 1 per la prima riga 2 per la seconda ecc lt list gt una lista di espressioni da stampare con le stesse regole della frase PRINT Se lt list gt forma 2 viene omessa il display viene ripulito Esempio TO OPEN CH 4 MED 20 AUX O IS CH 4 30 DISPLAY 2 ABCD END Forma generale END Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Descrizione La frase END stata eliminata ENDCRIT Forma generale ENDCRIT Descrizione Definisce la fine di un segmento critico Vedi par 3 18 Esempio 1000 CRITSEG VOLO acli 1120 ENDCRIT ERR Forma generale ERR lt gt lt exp1 gt IS CH lt exp2 gt Descrizione assegna al dispositivo logico ERR la periferica fisica gestita dal driver lt exp2 gt lt Exp1 gt vale 0 per la funzione di uscita e 1 per quella d
91. ere un driver per GBASIC relativamente semplice come vedremo nel seguito a prescindere ovviamente dai problemi tipici che una certa periferica pu presentare Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Nel kit GBASIC sono forniti alcuni drivers esemplificativi il pi importante dei quali certo quello della console Questa sua importanza discende da due fatti il primo che il driver di console indispensabile per il funzionamento di base del sistema ed il secondo che la sua relativa semplicit gli consente di costituire un valido esempio per chi si appresta a scrivere un nuovo driver Nella sezione 2 stato spiegato come generalmente non sia necessario intervenire sul driver di console potendosi agire semplicemente sulla stringa di configurazione per procedere all implementazione del GBASIC su un nuovo hardware I motivi di studio e modifica del driver di console possono essere i seguenti in ordine decrescente di probabilit a necessit di modificare la funzione di autostart scrivendo le poche linee di codice necessarie per l acquisizione del segnale esterno e per fissare l indirizzo di partenza dell esecuzione c la necessit di modificare certi parametri come parit numero di bit ecc c la necessit di utilizzare un hardware diverso da quello previsto come standard ossia una UART diversa dalla SIO d la necessit di utilizzare un modo diverso di
92. erruzione non sono inizializzate all accensione al fine di evitare la perdita di informazioni e di richieste di interruzione in esse eventualmente accumulate qualora si faccia uso di memoria non volatile Il programma utente deve quindi eseguire almeno una volta la frase reset interrupt La frase reset interrupt clear Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale nvece sprogramma tutte le assegnazioni eseguite con le frasi ON INTERRUPT o ON TIMER e arresta i timers La funzione INFO 10 ritorna il numero di interruzioni pendenti presenti ancora nel FIFO Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Timers e contatori Il GBASIC gestisce anche interruzioni provenienti da dai timers delle periferiche autogestite I timers hanno propri livelli di interrupt e non limitano quindi il numero dei drivers che usano l interruzione Si riporta un esempio di programma che impiega un timer per stampare un messaggio ogni 3 secondi open timer 1 CTC 5 DATA 145 on timer 1 gosub Stampa load timer 1 with 3 freerun gt Loop goto Loop gt Stampa print Timer scattato return timer 1 L espressione che segue la parola with indica il numero dei secondi che devono trascorrere prima dello scatto del timer L effettiva corrispondenza tra unit e secondi conservata solo se il clock del sistema a 3 68 MHz Con clock diverso per
93. et per mezzo del terminale di console Ogni volta che una linea viene digitata il kernel provvede alla sua codifica in un formato pi compatto del semplice ASCII Questa operazione detta tokenizzazione ha anche lo scopo di migliorare il tempo di esecuzione e viene eseguita in senso inverso quando si impartisce il comando LIST per ricostruire le linee originali Il formato tokenizzazto detto GBA GBASIC Assoluto Normalmente tuttavia i programmi sono scritti su un personal computer 286 o maggiore per mezzo di un qualunque text editor e convertiti quindi nel formato tokenizzato per mezzo del pre procompilatore PREGB pregb non opera su PC 8088 PREGB accetta in ingresso un programma scritto in una sintassi pi estesa del GBASIC standard ad esempio accetta nomi di variabili lunghi fino a 30 caratteri ecc mentre genera un file oggetto del tutto compatibile con il formato GBA Il file di ingresso ha suffisso GBE GBASIC Esteso Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Il formato GBA non prevede indirizzi assoluti il programma codificato quindi completamente rilocabile in qualunque posizione di memoria Di solito viene posto in eprom ed eseguito con il comando RUN lt exp gt senza nemmeno caricarlo nell area di lavoro Procedendo al caricamento in ram con LOAD ABS si ha invece la possibilit di modificarlo a scopo di debug I vantaggi derivanti dall uso di PREGB sono molto
94. ferito Abbreviazioni x Per evitare una notazione complicata si preferito descrivere le parti opzionali indicando la forma di una frase o di un comando con o senza la parte opzionale Ad esempio PRINT PRINT lt exp gt PRINT lt string gt lt exp gt sta per espressione aritmetica es 3 14 R lt string gt sta per stringa alfanumerica Si noti che l unica espressione stringa ammessa composta da un solo elemento che pu essere una costante es ABC o una delle funzioni stringa lt var gt sta per variabile es A2 B ecc lt linnum gt sta per numero linea es 1230 lt val gt valore numerico costante es 123 2 lt explog gt espressione logica es A 0 Altre abbreviazioni sono spiegate nel testo Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Quando una frase prevede una serie di parametri di numero non definito si usano i puntini di sospensione ad esempio INPUT lt var gt lt var1 gt indica che dopo INPUT possono essere indicate una serie di variabili var varl ecc Per PRINT ed INPUT che avrebbero richiesto una descrizione della forma generale troppo complessa si ricorsi alla definizione a mezzo di una serie di esempi Operatori Gli operatori utilizzati da GBASIC sono i seguenti somma sottrazione moltiplicazione divisione assegnazione nella frase LET lt minore uguale gt maggiore gt maggiore od uguale
95. frase READ e dalle funzioni TIME e DATES Parametri in ingresso B codice funzione 1 HL indirizzo di destinazione DE numero del record Parametri in uscita ACC codice esito O OK 1 ERRORE Funz driver 2 Init Descrizione Esegue l inizializzazione del driver Viene chiamata al momento della esecuzione della frase OPEN CH Tra gli altri parametri viene passato anche il numero di canale assegnato dall utente nella frase OPEN Parametri in ingresso B codice funzione 2 C numero del canale usato nella OPEN CH E flag di presenza stringa di conf 0 no 1 si HL indirizzo della stringa di configurazion se presente Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Parametri in uscita ACC codice esito 0 OK 1 ERRORE Funz driver 3 Close Descrizione Esegue la disattivazione del driver Viene chiamata al momento della esecuzione della frase CLOSE CH Parametri in ingresso B codice funzione 3 Parametri in uscita ACC codice esito 0 OK 1 ERRORE Funz driver 4 Write Char Descrizione Invia un carattere al driver Chiamata dall eco di console dalle frasi PRINT LPRINT INPUT ecc Parametri in ingresso codice funzione 4 carattere per uscita Gi w Parametri in uscita ACC codice esito 0 OK 1 ERRORE Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale
96. funzionali in tempi veramente ridotti Le differenze tra il GBASIC versione 7 4 e 7 3 sono consistenti ma non rivoluzionarie Il prodotto oramai ben stabile ed affidabile il passaggio di versione non introduce inoltre incompatibilit nei programmi sorgenti se non in aspetti estremamente marginali Firenze Ottobre 1993 Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Introduzione Questo manuale descrive il GBASIC vers 7 41 Comprende le seguenti sezioni 1 introduzione 2 installazione livello minimo 3 guida dell utente particolarit 4 riferimento 5 come scrivere un driver custom 6 modulo segnalazione errori Descrizione generale GBASIC un sistema composto da vari moduli destinato ad accelerare lo sviluppo di applicazioni su microprocessori della famiglia Z80 e compatibili utilizzanti hardware generico nel seguito chiamato sistema target o semplicemente target Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Sinteticamente il sistema GBASIC si compone dei seguenti elementi un sistema operativo residente in ROM sul sistema target la sua struttura modulare e pu essere facilmente modificato o espanso dall utente scrivendo opportuni drivers per le proprie periferiche un traduttore GBASIC sempre residente nella ROM del sistema target e capace di interpretare programmi GBASIC scritti dall utente diret
97. gica Infatti la parola CH era usata impropriamente ed era ormai limitata solo ad alcuni casi specifici La nuova logica la seguente la parola CH viene usata per la redirezione dell input o dell output su un driver L espressione che segue d il numero del driver cos come dichiarato nella OPEN CH la vecchia parola CH viene sostituita da LDEV e serve per Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale redirigere il dispositivo logico che normalmente CON Le possibilit sono quindi adesso due a redirigere temporaneamente il dispositivo logico CON normalmente usato da PRINT ed INPUT su un qualunque driver b redirigere temporaneamente le frasi PRINT ed INPUT su un diverso dispositivo logico Vedere nel seguito ulteriori spiegazioni Opzione NOCLEAR L opzione NOCLEAR consente di non alterare le variabili qualora l operatore risponda con un semplice CR Es INPUT NOCLEAR A B C Opzione LDEV precedentemente CH L opzione LDEV lt exp gt consente di utilizzare un dispositivo logico diverso al posto di CON per le operazioni di ingresso Sono possibili le seguenti opzioni LDEV 0 console Seleziona CON default LDEV 1 input da area fisica specificata lt exp gt 1 provoca la lettura di dati da un area che deve essere preventivamente indicata con STORAGE ABS lt exp gt dove lt exp gt una espressione il cui risultato l indirizzo fisico dell a
98. gt deve essere compresa tra 0 e 255 Esempi 10 POKE 20000 0 10 POKE 20000 0 9 89 234 90 76 POKE eseguiti sull area EEPROM devono essere seguiti da un loop di ritardo della durata di almeno 10 msec prima di un ulteriore POKE La durata di tale loop funzione del clock del sistema Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale PRESCALE Forma generale PRESCALE lt exp gt Descrizione Con il clock del processore a 3 7 MHz il parametro di tempo prefissabile con la frase LOAD TIMER corrisponde approssimativamente ad un secondo per ogni unit In realt le interruzioni che il processore riceve sono assai pi frequenti che non una per ogni secondo esse vengono divise da un programma chiamato prescaler che assume un fattore di divisione pari a 56 cio una interruzione ogni 56 arriva effettivamente al GBASIC Con la frase PRESCALE possibile assegnare un nuovo fattore di divisione da indicarsi come variare l unit di misura del tempo Il valore dell unit di tempo determinabile con la formula lt exp gt 65536 T con T periodo del clock di sistema infatti con lt exp gt 56 f lt MJ8 gt clock lt DJO gt 3 6864 MHz T 271 ns si ha che ogni unit corrisponde a 0 9955 secondi Esempio 10 PRESCALE 78 PRINT Forma generale 1 PRINT lt lista di espress numeriche o stringa gt 2 PRINT LDEV lt exp gt lt lista di esp num o tringa gt
99. har o etere reerre rene eee e siero ee nee resine rino ne nonnononon iene no nr ononon nene ron rice cinienieneneo 156 Funz driver 0 Status bussola lella nella a 156 FP AA A ai 157 A AA cilea alal 157 Funz A A a 158 FAZ A OA A nine Rael 158 Funz driver 98hAutostarti nali isis 159 I EDASI ra a a AEEA AE EEEE iaia alieni aio E EE 159 F nz system 0 PSH_USTR oera ene rt EEEE ENE E E A R i 160 F n system FLASK MY LEV oreren erR EEE EET EE RE E T R i 161 F n system 2 HRQ oi a 161 F n system RS INSTV EC ii e iaia Vail 162 Funz systern 4 PARSEP o ia 163 F nz systems PARSE P2 ui io 164 F nz system 6 CSERR oia id 165 F nz system 7 TRIPLEX opinais 165 F nz system 8 REPLDRV sepia deso 166 Funz s stem 9 RBEBKSP uote 167 F nz system IONEWTASK coi eds 167 Funz system 11 STOPAL E ui aida 168 F nz system 12 DOCKSUM aii eds 168 Funz system 13 CRITSEG aia odia 169 F nz system 14 ENDCRIT iii co 169 Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Fu nz syst m 15 BO E iocnaisin alla e Lea ea e LA nai 169 Funz systero 16 amp EOF ci rio 170 Funz system 18 CNS nn eenei MIAO LE LAU ELE a iii rasca dii 170 Funz system 19 INTMON i nivcarinia dubai darian eins died dentado adi 171 Funz system 20 ORYMM Tiida rca rd a iii dii 172 FunzSystemtt2 1 ORYFRE O c00covonotantin aiar dede O RAI 172 Funz system 22 DRADDR cuota di a iii ridi 173
100. i ingresso 0 Out 1 In Il dispositivo logico ERR viene usato per l emissione dei messaggi di errore Dopo l inizializzazione il dispositivo logico ERR ha il valore 0 ossia quello del dispositivo CON Esempio LO OPEN CH 2y PTIRIc ia 20 ERR 0 IS CH 2 Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale redirige tutti i messaggi al driver PTR FOR Forma generale 1 FOR lt var gt lt exp1 gt TO lt exp2 gt 2 FOR lt var gt lt exp1 gt TO lt exp2 gt STEP lt exp3 gt Descrizione La frase FOR viene usata per eseguire ciclicamente tutte le istruzioni che stanno fra la frase FOR medesima e la prossima frase NEXT La frase FOR significa esegui tutte le istruzioni che seguono fino alla NEXT per la variabile var che va dal valore lt exp1 gt al valore lt exp2 gt incrementandola ogni volta del valore lt exp3 gt Se STEP lt exp3 gt viene omesso alla variabile lt var gt viene aggiunto ad ogni ciclo il valore 1 Tutte le espressioni possono assumere qualsiasi valore Limiti la frase NEXT deve essere presente o risulter un ERRORE DI FOR NEXT Esempio 10 FOR I 1 TO 24 20 PRINT TAB I 30 NEXT Spiegazione la frase 20 viene eseguita per I che va da 1 a 24 Poich non specificato STEP ad ogni ciclo viene sommato 1 alla variabile I I vale quindi 1 al primo giro 2 al secondo e cos via Esempio 10 FOR H1 20 TO 18 5 STEP 0 5 20 PRINT SOR H1 30 PRIN
101. i retta uso temp per vento uso temp direzione uso temp temperatura periodo da anemometro in msec valore medio di Twnd frequenza anemometro in Hz velocit del vento numero del tasto ritornato da GetKey prossimo record utilizzabile per la registrazione se non zero siamo in registrazione stringa per comando timer gt Second return timer 1 gt Main gosub IniSys if Logging 1 then gosub LogMore gt MainMenu display 1 Eolo v 1 0 S I4DOF NextRec int NextRec 100 MAXSAMPLE display 2 LOG MEAS ESAM DUMP CLEAR SETUP gosub WaitNoKey gt Loop et key bios KEYPAD INKEY if key F1 then gosub Log goto MainMenu if key F2 then gosub Measure goto MainMenu if key F3 then gosub ExamMem goto MainMenu if key F4 then gosub Dump goto MainMenu if key F5 then gosub ClearMem goto MainMenu if key F6 then gosub Setup goto MainMenu goto Loop MS registrazione dati gt Log if NextRec if NextRec lt gt 0 then MAXSAMPLE then MemFull I3DOF mo r ms Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale display 1 Ok to resume data logging else display 1 Ok to start data logging endif gosub Confirm if key lt gt F5 then return if NextRec 0 then storage MAXSAMPLE REC1 print ldev RAMFILE date timeS
102. i tipo stringa di lunghezza ciascuna compresa tra 1 e 255 caratteri Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale La memoria disponibile limita ovviamente il numero complessivo delle variabili utilizzate ma non la loro scelta I nomi delle variabili sono costituiti da una lettere dell alfabeto inglese o da una lettera dell alfabeto inglese seguita da una cifra Esempi A Al A2 ecc Il nome delle variabili stringa seguito da un carattere g Esempi AS A1S Le variabili ad indice vengono dimensionate automaticamente salvo diversa indicazione vedi frase DIM al valore 10 Poich presente anche l elemento zero il dimensionamento automatico d luogo a 11 variabili L utilizzazione dello spazio ottimizzata nel senso che possibile utilizzare a parit di memoria grandi programmi e poche variabili o piccoli programmi e tante variabili L utente non deve procedere a stabilire le assegnazioni degli spazi che sono automatiche Tutte le stringhe devono essere dimensionate prima dell impiego La loro dimensione deve essere di uno maggiore della massima prevista Il GBASIC utilizza i seguenti caratteri ABCDEFGHIUKLMNOPORSTUVWXYZ 01234567890 i tara AS A a i caratteri sotto riportati possono invece essere utilizzati ma solo entro stringhe Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale abcdefghijklmnopqrstuvwxyz
103. ientri e commenti Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Generalita Guida dell utente Sono stati compiuti dei notevoli sforzi per rendere quanto pi generale la struttura del kernel e quindi indipendente dall hardware Per poter operare a livello minimo il kernel richiede tuttavia almeno un driver funzionante quello del terminale di console Assieme al kernel viene fornito un file con il sorgente di un possibile driver di console che l utente pu quindi facilmente modificare secondo le proprie necessit vedi relativo capitolo Si constato che frequentemente l hardware di sistemi Z 80 ricalca linee comuni e che di solito viene fatto impiego di periferiche della famiglia stessa SIO CTC PIO In questo caso possibile portare molto rapidamente il sistema a livello di funzionamento minimo variando solo i dati di alcune tabelle ammesso che a come interfaccia per la console sia utilizzata una SIO b che come baud rate generator per la stessa sia impiegato un CTC o che comunque il clock venga fornito senza necessit di programmare altre periferiche ad esempio con Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale un oscillatore autonomo Il kernel inoltre incorpora la possibilit di usare in vari modi dei CTC in funzione di timers contatori ecc senza la necessit di scrivere i relativi drivers Dalla versione 7 3
104. imo caso il driver provvede ad inserire nella coda di attesa la propria richiesta di interruzione Il GBASIC esamina alla fine della esecuzione di ogni linea se l interruzioni non sono state disabilitate la stato della coda delle richieste ed a servirle nell ordine esatto in cui sono pervenute E chiaro che in questo modo il GBASIC pu far fronte a richieste che arrivino a velocit di punta elevata ossia pu acquisire richieste di interruzione in tempi brevi e processarle poi alla velocit che gli propria In molti casi tuttavia non basta acquisire solo le richieste di interruzione Riprendendo l esempio prima riportato si comprende come oltre alla richiesta di interruzione sia necessario trasmettere al GBASIC anche il contenuto dell ipotetico buffer con i dati pervenuti Se infatti nel frattempo che il GBASIC esegue i suoi processi arriva un nuovo record il precedente se ne va perduto Questo problema viene risolto con l impiego di una struttura FIFO First In First Out o coda che assimilabile intuitivamente ad un tubo Il GBASIC fornisce al driver le funzioni per inserire messaggi nel nostro caso un record ad una estremit ed al programma utente quelle per prelevare il prossimo messaggio all altra estremit del tubo In questo modo non si ha perdita di dati almeno finche il driver riesce a mantenere il ritmo imposto dagli eventi esterni e tutti i messaggi vengono accodati in parallelo alle richieste di inter
105. infine possibile per l utente aggiungere delle proprie routines per la gestione delle condizioni di power fault La versione distribuita di kernel non include di solito una gestione della mancanza di alimentazione E opportuno comunque eseguire le semplici verifiche indicate nel seguito per essere sicuri che il power fault sia escluso Diversamente come intuibile si possono avere dei problemi di funzionamento conseguenti alle differenze tra il sistema target utilizzato e quello previsto Le stringhe di configurazione Ad indirizzi fissi nel kernel sono previste alcune stringhe di configurazione per la SIO della console e per il CTC opzionale usato come baud rate generator BRG Stringa di configurazione della SIO Ha il seguente formato SIO lt m gt DATA lt n gt CONTR lt o gt VECT lt p gt dove lt m gt e il numero della tabella vettori da utilizzare Per adesso non si forniscono ulteriori spiegazioni su questo punto Utilizzare il valore 0 per un canale A ed un valore 1 per un canale B lt n gt l indirizzo della porta dati espresso come stringa di caratteri ASCII in decimale lt o gt l indirizzo della porta controllo espresso come stringa di caratteri ASCII in decimale Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale lt p gt l indirizzo della porta dove deve essere programmato il vettore di interrupt espresso come stringa di caratteri ASCII in decimale
106. inga e la sua lunghezza Esempio 10 DIM A 100 20 LET AS ABC 30 PRINT LEN A d per risultato 3 cio lo spazio di A 100 e la lunghezza dopo l esecuzione della frase 20 di 3 NGET x Forma generale NGETS lt string gt Descrizione con questa funzione possibile editare stringhe alfanumeriche con una tastierina solo numerica La stringa lt string gt viene emessa sul dispositivo logico AUX di solito un display LCD Con i tasti S e D si muove il cursore a sinistra e a destra Con e si incrementa o si decrementa secondo la sequenza ASCII il carattere dove posizionato il cursore ad esempio incremento C D E decremento Z Y X ecc Con CR si accettano le modifiche effettuate e si ritorna il valore della stringa modificata I tasti di comando sono acquisiti dal dispositivo logico CON in Esempio 10 LET BS NGETS BS Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale NIBBLES x Forma generale NIBBLES lt string gt Descrizione Ritorna un valore compreso tra 0 e 255 calcolato sulla base dei primi due caratteri della stringa lt string gt che devono avere codice ASCII compreso tra 30h e 3Fh Il calcolo viene effettuato come segue risultato carl and OFh x 16 car2 and OFh Esempi 10 PRINT NIBBLES 74 Risultato 116 10 PRINT NIBBLES 772 il codice di 3Fh Risultato 127 NOT x y Forma generale
107. ionale di interi blocchi di istruzioni Nella forma 3 blocco istruzioni viene eseguito se vera Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale lt explog gt Nella forma 4 viene eseguito il blocco1 se lt explog gt vera e blocco2 se lt explog gt falsa Le IF strutturate IF ELSE ENDIF possono essere nidificate tra loro fino a 9 livelli Tenere per presente che a non ammessa l uscita dalla IF con un GOTO o comunque deve essere eseguita una ENDIF b ai fini della velocit di esecuzione le linee non eseguite non sono saltate ma sono in realt eseguite come se fossero delle REM Esempio 10 IF AS lt gt SI THEN 20 PRINT DIVERSO 30 LET B 5 40 ENDIF INPUT Forma generale 1 INPUT lt var gt lt varl gt 2 INPUT lt string gt lt var gt lt varl gt 3 INPUT LDEV lt exp1 gt lt var gt lt varl gt 4 INPUT NOBLANK lt var gt lt varl gt 5 INPUT PICTURE lt string gt lt var gt 6 INPUT CH lt drv gt lt var gt lt varl gt Nota le varie opzioni sopra riportate sono variamente combinabili tra loro Le clausole PICTURE CH LDEV e NOBLANK possono essere inserite in qualsiasi ordine Descrizione La frase INPUT e utilizzata principalmente per richiedere Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale all operatore di introdurre il valore di una o pi vari
108. ione CBACK 8 Passo indietro cursore Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Richiesta interrupt ad alto livello La serie di esempi si conclude con un breve listato che illustra come un driver possa richiedere un interrupt al GBASIC Tipicamente una routine di servizio di un interrupt a basso livello quando decide di richiedere un interrupt all alto livello deve solo eseguire le operazioni sottodescritte R ESEMPIO DI GENERAZIONE INTERRUPT DA UN DRIVI E ISTRUZIONI CHE SEGUONO SONO ESEGUITE IN UNA ROUTINE DI SERVIZIO INTERRUPT A BASSO LIVELLO ESEGUI IL PUSH NEL FIFO DEL RECORD DA PASSARE AL GBASIC INTGB D A 13 SEGMENTO CRITICO SOLO SE CALL SYS HARDWARE PREVEDE POWER FAULT LD B 0 PREDISPONI IN BC IL NUMERO DEI CARATTERI LD A COUNT DA PUSHARE NEL FIFO LD C A LD HL RBNMSG INDIRIZZO DEI DATI DA PUSHARE XOR A CODICE FUNZIONE SYSTEM 0 PSH USTK CALL SYSTEM ESEGUI IL PUSH LD A CHNUM NUMERO DEL NOSTRO CANALE ERA STATO LD E A SALVATO AL MOMENTO DELLA INIT LD Rd CODICE FUNZIONE SYSTEM 2 ASKMYLEV CALL SYSTEM
109. ione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Si notino le direttive DECLVAR DECLCONST CODE END che non vengono tradotte in frasi GBASIC ma sono delle semplici istruzioni per il pre processore Le direttive devono iniziare sempre sul primo carattere della linea Altre direttive sono illustrate nei paragrafi seguenti Il carattere apice indica che tutti i caratteri conseguenti sono di commento e possono essere ignorati Linee di puro commento sono ammesse cos come linee vuote In questo caso consigliabile apporre l apice sulla prima colonna e non inserire spazi o tabs nelle linee vuote per accelerare l operazione di precompilazione Per altre informazioni vedere quanto illustrato nel paragrafo precedente Identificatori Procedure All interno della sezione CODE detta procedura Main possibile definire delle procedure nel modo seguente PROC Prova DECLCONST def di cost locali opzionale END FDECLVAR dichiarazioni variabili locali END gt Prova entry point della procedura RIETI corpo della procedura ENDPROC Valgono le seguenti regole a il nome dell entry point di una procedura non deve necessariamente essere uguale a quello della procedura Poich possibile riferirsi dall esterno a qualsiasi label interna ad una procedura possibile avere anche pi entry points Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manual
110. ita di alimentazione in caso di RAM non volatile E quindi necessario eseguire sempre una RESET COUNTER prima dell uso Esempio 10 OPEN COUNTER 1 C 1 D 120 20 COUNTER 1 1 30 PRINT COUNT 1 40 GOTO 30 COS x Forma generale COS lt exp gt Descrizione COS ritorna il coseno della espressione lt Exp gt deve essere in radianti Esempi a D COS 3 Y D COS A B O Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale DATES Forma generale DATES Descrizione ritorna una stringa del formato GG MM AA contenente la data del momento Essa viene determinata da un driver esterno che deve essere precedentemente aperto con la frase OPEN vedi Il driver deve essere dichiarato come quello che svolge la funzione di data ora con la frase TIMDA vedi La funzione viene ottenuta mediante una chiamata al driver con codice 1 BLOCK READ e numero di record uguale a 2 Esempio 10 OPEN CH di VOCALE t D 20 20 TIMDAT IS CH 4 30 PRINT DATES DIAG n Forma generale DIAG lt exp gt Descrizione Con argomento 0 ritorna l esito del controllo iniziale eseguito al momento del reset generale Il codice ritornato pu essere 1 nel caso in cui il controllo statistico della RAM abbia rilevato una differenza di contenuti rispetto all ultimo spegnimento 2 nel caso di alimentazione mancata durante un segmento Libera riproduzione e libero
111. ito per la stampante Esempio open ch 4 SERPRIN lst is ch 4 Il dispositivo aux richiede anche esso una associazione obbligatoria con un driver Usa il dispositivo aux la frase display e la funzione get Il dispositivo timdat usato per l orologio calendario qualora il sistema ne sia provvisto Usano il dispositivo logico timdat le frasi time e date nonch le funzioni time e date Esempio open ch 4 CCAL orologio calendario Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale timdat is ch 4 print time date Il dispositivo err usato per l emissione dei messaggi di errore Viene inizializzato verso la console ma pu essere modificato ad esempio per inviare i messaggi di errore ad una stampante Questo particolarmente utile a scopo diagnostico Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Preliminari sull interrupt Concetti Il GBASIC prevede due tipi di interruzioni a interruzioni a basso livello gestite dai drivers e per le periferiche autogestite dal kernel stesso b le interruzioni ad alto livello generate di solito dai programmi di servizio delle interruzioni a basso livello e riconosciute alla fine della corrente frase GBASIC salvo casi particolari o disabilitazioni Le interruzioni ad alto livello provocano di regola l esecuzione di una prestabilita subroutine GBASIC Le inter
112. key Fl then let TimerSet 23 59 00 goto SetIntl if key F2 then let TimerSet 23 55 00 goto SetIntl if key F3 then let TimerSet 23 45 00 goto SetIntl if key F4 then let TimerSet 23 30 00 goto SetIntl if key F5 then let TimerSet 23 15 00 goto SetIntl if key F6 then let TimerSet 23 00 00 goto SetIntl goto Loop2 gt SetIntl storage MAXSAMPLE REC2 lt TimerSet return T oas a PES MI A e A A ATE SIAT PINE AA A IE E ERE SRL A A AE PERC LA SERI RE LO PRE EDI il WaitKey attende un tasto e lo lascia in Key A A A A e Eee nera E A sac gt WaitKey display 2 Press any key to continue gt WaitKeyl gosub WaitNoKey gt WaitKey2 let key bios KEYPAD INKEY if key 0 then WaitKey2 return A E AE A AAN E A A iran E A O e i WaitNoKey attende che nessun tasto sia premuto gt WaitNoKey if or inp KEYB 128 lt gt NOKEY then WaitNoKey return AA ER O E AN E O Y sca iicic O E MN CI RN AN ER ON PE E A PEN A AS NA AnyKey ritorna in key ANYKEY o NOKEY Tr cita e n e e N ii E e e E ii E n PO a pali i AI n me IL dr TA i eli ci a gt AnyKey let key or inp KEYB 128 if key lt gt NOKEY then let key ANYKEY return mt ica A ER A E AN lella O II A RA A AA E E ME y Confirm attende un tasto e lo lascia in Key A Rate RD re I dint i e i a a i ALn e I ini Ri aa A gt Confirm display 2 Confirm YES NO Lib gosub WaitKeyl return A
113. l driver la 1 BLOCK READ Esempio 10 OPEN CH 3 CARD D 100 20 READ CH 3 0 Q Forma 3 Prima della v 7 4x tutte le scritture della WRITE avvenivano solo come stringhe pur accettando la write anche una espressione numerica essa veniva convertita in stringa e passata al driver come tale in pratica come una PRINT con Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale uscita sul driver o file Adesso possibile specificare che un valore numerico deve essere convertito in intero unsigned a 16 bit e passato al driver senza altra conversione Lo si ottiene preponendo un all espressione da scrivere o alla variabile da leggere Esempio 10 WRITE CH 1 3 A1 10 READ CH 1 3 A2 Il numero del record adesso gestito a 16 bit REM Forma generale REM testo Descrizione la frase REM serve per aggiungere commenti all interno di un programma Il testo viene completamente ignorato Le frasi REM accrescono il tempo di esecuzione di un programma e aumentano la sua occupazione di memoria Poich in genere viene utilizzato il precompilatore che non produce codice oggetto per i commenti la frase REM di solito di impiego limitato Esempio 10 REM PROGRAMMA CONTROLLO POMPE ARIA 20 REM VERSIONE 1 0 DEL 12 7 89 RESET Forma generale 1 RESET OSC lt exp gt Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale
114. l kernel come illustrato dalla figura sottostante Come si vede il driver di console immediatamente contiguo al kernel e a loro volta ulteriori drivers sono attaccati al driver di console senza spazi infrapposti Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Struttura fisica di un driver I drivers hanno tutti una struttura fisica identica All inizio di ogni driver presente un blocco di dati detto header che contiene alcune informazioni elementari tra cui la lunghezza fisica del driver Questa la costituzione dell header Carattere fisso 1Bh Lunghezza del driver due bytes Tipo un byte Nome del driver 8bytes Entry point del driver Il tipo vale 0 per character 1 per block e 2 per misto Come si pu osservare l header contiene le informazioni che possono essere usate dal kernel per saltare da un driver all altro per ricercarne uno in particolare infatti il kernel conosce sempre la propria lunghezza In questo modo non sono necessari legami di alcun tipo tra kernel e drivers e non necessario quindi procedeere al link complessivo E sufficiente per l utente assicurarsi della contiguit dei vari drivers La prima posizione dopo l ultimo driver NON deve contenere il carattere 1Bh Da questo infatti il kernel si rende conto che non ci sono pi drivers Pu essere conveniente per l utente modificare il driver di console per adattarlo al proprio assem
115. l massimo 3 timers e 3 contatori Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Oscillatori Programmazione Gli oscillatori sono costituiti fisicamente da dei CTC Il GBASIC consente di inizializzarli con una opportuna costante di tempo allo scopo precipuo di costituire dei baud rate generator per le SIO Il modo di uso segue la stessa filosofia di quello dei contatori La frase OSC lt m gt lt n gt consente di fissare la costante dell oscillatore lt m gt pari al valore lt n gt Esempio 10 OPEN OSC 1 C 1 D 145 20 OSC 1 40 Il GBASIC pu gestire al massimo 3 oscillatori Si noti che essi non usano interrupt a basso livello ma che indispensabile ugualmente indicare il numero di posizione in tabella nella stringa di configurazione Al reset gli oscillatori non sono bloccati questo per evitare di inibire il clock anche alla console Se inizializzato il baud rate generator della console il n 1 occupa la posizione 0 della tabella dei CTC Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Complemento sui drivers Concetti Fino ad 8 drivers possono essere aperti simultaneamente Oltre alla frase open gi vista esiste la close ch lt n gt che libera una posizione e disabilita il driver E possibile accedere direttamente ai drivers senza passare attraverso i dispositivi logici per mezzo delle frasi read ch lt m gt lt
116. l verificarsi di un errore In questo caso si ritorna a livello di accettazione comandi OK Se tra l avvio dell esecuzione e l interruzione stata eseguita una frase AUTOSTART 1 e non stata eseguita una AUTOSTART 0 si avr la ripartenza automatica dalla prima linea di programma Con lt exp gt 0 si annulla l effetto di AUTOSTART 1 Vedi paragrafo 3 17 AUX Forma generale AUX lt exp1 gt IS CH lt exp2 gt Descrizione assegna al dispositivo logico ausiliario AUX la periferica fisica gestita dal driver lt exp2 gt lt Exp1 gt vale 0 per la funzione di uscita e 1 per quella di ingresso 0 Out 1 In Utilizzano il dispositivo logico AUX DISPLAY NGET La frase AUX viene utilizzata anche per riassegnare il dispositivo logico ausiliario ad un altro driver Esempio LO OPEN CH 25 DLCDI ua as Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale 20 AUX 0 IS CH 2 riassegna tutte le uscite dirette al dispositivo logico AUX al driver LCD BACKSP Forma generale BACKSP IS lt exp gt Descrizione La cancellazione dell ultimo carattere digitato avviene di regola con il tasto backspace codice ASCII 08 E possibile riassegnare la funzione ad un tasto diverso con la frase BACKSP con lt exp gt uguale al codice ASCII desiderato Esempio 10 BACKSP IS 19 terminale Tesak BEEP Forma generale BEEP Descrizione Provoca di un carattere BEL
117. le porte uscita 70 OUT 0 2 80 REM indica al basic dove sta il buffer 80 OUT ADDROF B 0 A OVERPRINT Forma generale OVERPRINT lt stgl gt lt exp gt lt stg2 gt Descrizione Sovrascrive la stringa lt stg1 gt con la stringa lt stg2 gt a partire dalla posizione lt exp gt POP Forma generale POP lt stringvar gt Descrizione Preleva il prossimo dato dal FIFO in cui vengono inseriti i Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale messaggi provenienti dai drivers Se questo vuoto si avr un errore ERR I STK UF Interrupt Stack UnderFlow Vedi i paragrafi 3 7 e 3 10 per ulteriori informazioni lt Stringvar gt il nome di una variabile stringa che deve essere definita e di dimensione adeguata a contenere il messaggio Esempi POP A POKE Forma generale 1 POKE lt exp gt lt expl1 2 POKE lt exp gt lt exp1 gt lt exp2 gt Descrizione la frase POKE e utilizzata per scrivere un dato in una cella di memoria ad un certo indirizzo assoluto e nei successivi lt Exp gt da l indirizzo mentre lt exp1 gt lt exp2 gt ecc danno i relativi contenuti lt exp1 gt viene registrato all indirizzo lt exp gt lt exp2 gt all indirizzo lt exp gt 1e cosl via Limiti lt exp gt deve essere compreso tra 16384 e 65535 infatti la memoria sotto 16384 di tipo in sola lettura e non vi possono quindi essere inseriti dei valori lt Exp n
118. lista solo uscita aux ausiliario ingresso ed uscita timdat orologio calendario ingresso ed uscita err emissione dei messaggi di errore solo uscita Un numero indefinito di dispositivi possono essere poi gestiti con altri metodi che saranno descritti nel seguito Per default il dispositivo con associato con il driver di console ch 0 ma esso pu essere riassegnato semplicemente con con lt m gt is ch lt n gt dove lt n gt il numero del canale del driver che si intende usare al posto di CONS e lt n gt vale 0 per Output o 1 Input E infatti ammesso l uso di un driver in ingresso e di un altro driver in uscita Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Esempio Si riassegna l uscita del dispositivo logico con verso un driver di nome LCDI1 open ch 2 LCDl con 0 is ch 2 uscita consolle verso lcd Le frasi PRINT ed INPUT utilizzano il dispositivo logico con rispettivamente per l uscita e per l ingresso Le frasi INPUT e PRINT consentono la redirezione dell ingresso e dell uscita su uno specifico driver con gli appositi operatori vedi PRINT ed INPUT Uno stesso driver pu essere utilizzato per due dispositivi logici diversi Esempio open ch 2 LCD1 con 0 18 ch 2 uscita consolle verso lcd aux 0 is ch 2 uscita aux verso lcd Il dispositivo Ist deve essere necessariamente associato ad un driver ed usato di sol
119. lla frase successiva all ultimo GOSUB vedi eseguito Il ritorno da un sottoprogramma eseguito in seguito ad una frase ON TIMER o ON INTERRUPT vedi deve avvenire con la frase RETURN TIMER lt exp gt oppure RETURN INTERRUPT con lt exp gt uguale al numero dell interrupt interessato in modo da ripristinare lo stato di preset Viceversa ulteriori interruzioni di quel codice non saranno servite Se nessuna frase GOSUB era stata precedentemente eseguita si ha un messaggio ERR DI FOR NEXT Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Esempio 10 GOSUB 1000 20 PRINT A 30 STOP 1000 A 787878 1010 RETURN SIOSET Forma generale 1 SIOSET lt ctlp gt lt dbits gt lt par gt lt stopbits gt 2 SIOSET CH lt exp gt lt dbits gt lt par gt lt stopbits gt Descrizione Con SIOSET possibile variare i parametri di comunicazione di una SIO Nella forma 19 si indica l indirizzo fisico della porta controllo della SIO Nella forma 2 si indica il numero del canale Questa seconda forma ammessa solo nel caso in cui il driver accetti di rispondere alla nuova funzione driver 7 vedi DIversamente si ha un DRV ERR I parametri sono espressioni aritmetiche con il seguente significato lt ctlp gt numero della porta controllo lt exp gt numero del canale associato al driver lt dbits gt numero dei bit di dati 7 od 8 lt par gt parit 0 no 1 di
120. ma di prova INPUT LDEV 4 CON PICTURE FOR INPUT PICTURE LDEV 4 A NEXT Tempo totale 29 7 sec Differenza con loop vuoto 18 0 sec Tempo singolo frase esaminata 3 0 msec LETTURA COUNTER LET B 1 FOR Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale LET A COUNTER B NEXT Tempo totale 33 3 sec Differenza con loop vuoto 21 6 sec Tempo singolo frase esaminata 3 6 msec Programma di prova DOG solo versioni custom FOR DOG NEXT Tempo totale 13 9 sec Differenza con loop vuoto 2 2 sec Tempo singolo frase esaminata 0 4 msec Programma di prova Influenza di interruzioni da timer vers 6 80 ON TIMER 1 GOSUB 100 LOAD TIMER 1 WITH 1 FREERUN FOR LET A A 100 NEXT 100 DISPLAY 1 1 110 RETURN TIMER 1 Tempo totale 27 1 sec Differenza con stesso esempio senza timer 0 3 sec Influenza su ogni ciclo di loop 0 05 msec Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Riferimento Contenuto In questa sezione sono descritte in ordine alfabetico tutte le frasi le funzioni ed i comandi che compongono il GBASIC vers 7 20 Generalit Questa sezione del manuale da intendersi come semplice consultazione i concetti e le possibilit del GBASIC sono illustrati in altre parti del manuale Accensione e reset All accensione del sistema target dove sia residente il GBASIC viene emessa sul terminal
121. mati 4 e 5 ne danno la forma generale Anche variabili stringa possono essere utilizzate come sorgente o destinazione dei dati anche pi di una per storage Ogni variabile numerica registrata nel formato fast occupa 7 bytes Pi variabili possono essere registrate nello stesso storage La posizione della freccia ricorda il senso del trasferimento lt verso lo storage gt verso le variabili Esempio 10 STORAGE 60 20 INPUT N M 30 STORAGE N lt M REGISTRA IL VALORE M NELLO StseN ecc 1000 INPUT Codice N 1010 STORAGE N gt M RILEGGE IL VALORE M 1020 PRINT M STORAGE ABS La forma STORAGE ABS serve per posizionare il puntatore di lettura delle frasi INPUT PRINT LDEV 1 vedi ad una specifica locazione di memoria In questo modo e possibile leggere dati da una EPROM o scriverli in una RAM Lo storage di configurazione STORAGE SYS Dalla v 7 4x e stata aggiunta la possibilita di creare uno speciale storage di configurazione per salvare parametri di sistema In esso al momento possibile registrare due parametri la dimensione di memoria da assegnare agli storages ed il baud rate generator per la console nei sistemi muniti di batteria tampone Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Si accede a questo storage denominato storage sys con le consuete frasi Il posizionamento avviene con STORAGE SYS mentre la scrittura e la lettura avvengono con WRITE e R
122. me di solito Dichiarazione delle costanti E possibile dichiarare delle costanti L uso di costanti simboliche presenta molti vantaggi tra cui maggiore leggibilit del programma possibilit di eseguire variazioni agendo in un solo punto Descriviamo con un esempio si vogliono dichiarare due costanti una numerica PiGreco 3 14 ed una alfanumerica Prodotto COCACOLA DECLCONST PiGreco 3 14 Prod COCACOLA FEND Note a il che sostituisce lo nella seconda assegnazione specifica che Prodotto una costante alfanumerica b tutte le volte che nel corso del programma viene incontrato il nome di una costante esso viene sostituito dalla stringa dichiarata senza alcun ulteriore controllo le costanti assegnate con tuttavia sono rimpiazzate anche con le virgolette iniziali e finali c una costante non pu superare i 40 caratteri Esempio let Area 2 PiGreco Raggio let a Bevete let b prodotto print concat a b Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Costanti numeriche nuovo tipo Una costante numerica pu essere alternativamente dichiarata nella forma seguente Raro TES Si osservi come al posto delle virgolette si usato il carattere underscore davanti al numero Le costanti definite in questa seconda maniera sono note anche in valore al precompilatore che pu quindi utilizzarle per valutare espressi
123. messi i seguenti valori LDEV 0 console Seleziona CON default LDEV 2 lista Seleziona LST pi semplice usare LPRINT LDEV 3 lista Seleziona ERR LDEV 5 scrittura negli storages pseudofile RAM La frase PRINT ammette l opzione LDEV 5 per scrivere dati in uno storage precedentemente selezionato con la frase STORAGE lt exp gt Vedere le frasi INPUT e STORAGE per ulteriori informazioni La velocit di scrittura regolabile per consentire l impiego di EEPROM Vedi frase NOVRAM Esempio PRINT LDEV 5 A B C LDEV 7 ausiliario Seleziona AUX meglio usare DISPLAY Redirezione dell uscita L opzione CH consente di redirigere l uscita della frase Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale PRINT direttamente su un driver specificato L operazione avviene tramite l assegnazione temporanea del driver richiesto al dispositivo logico AUX ed eseguendo l uscita su di esso Alla fine il dispositivo AUX viene ripristinato alla sua assegnazione originale Il driver deve essere di tipo character oriented Esempio VOTOPEN CH Da COME sue Sd D20 C 2T Y DGM 20 PRINT CH 1 ABCDEF PRINTS Forma generale PRINTS lt stringvar gt lt list gt Descrizione La frase PRINTS del tutto identica alla PRINT ma l uscita diretta nella stringa di nome lt stringvar gt che deve essere definita e di dimensione adeguata La lt list gt deve essere terminata c
124. metri in ingresso ACC codice funzione 10 HL indirizzo routine da installare B fattore di prescala C livello di priorit D massimo tempo di CPU in tics non supportati nella corrente versione Parametri in uscita nessuno Funz system 11 STOPALL Questa funzione stata eliminata Funz system 12 DOCKSUM Significato mnemonico DO ram ChecKSUM Descrizione Esegui il calcolo statistico del checksum della RAM ed archivialo nell apposita variabile Usata durante power down Parametri in ingresso ACC codice funzione 12 Parametri in uscita nessuno Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Funz system 13 CRITSEG Significato mnemonico CRITical SEGment Descrizione Definisce l inizio di un segmento critico vedi par 3 18 Parametri in ingresso ACC codice funzione 13 Parametri in uscita nessuno Funz system 14 ENDCRIT Significato mnemonico END of a CRITical segment Descrizione Definisce la fine di un segmento critico vedi par 3 18 Parametri in ingresso ACC codice funzione 14 Parametri in uscita nessuno Funz system 15 amp BOF Significato mnemonico address of Beginning Of File pointer Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Descrizione Ritorna l indirizzo della locazione ove contenuto l indirizzo della prima lo
125. nelli 100 POKE isa anelli le Lena lai aan 101 PRESCATE SS cio Ae bia Lies e ele Eee 102 PRINTS LARA ARSA Lenna anni iena 102 PRINTS arena sel aloe niuno i paella ione eri lai e e As o ego 107 READ toniolo ieri een 107 REM freni Liri iodio e idr io i io ino E 109 RESET nl nati latenti 109 RESTOREssa ii ire iodio i aiar io i Oi ea TO 110 RETURNS e latenti n 111 SIOSET iii iaia oo e lO e ein a 112 STOP tulle lalla intona 113 STORAGE lilla iaia teresa nilo ero e ei a 114 FTIMDAT Staino 119 TM R i ini all anni 119 TIMESGS selon oe ii il ila 120 WRITE td e teo ee a EENE E N de a NA 120 WRITE taa it iatale 121 FUNZIONI EA NET E RR E e 121 Ct E e to ii 121 AUD pRO Dicta aa 122 AN o ds tale ta llo o 122 ARO DE a 122 ASCO to to tdo tl 123 ABS Mu ide ad 123 BIOS al aa 124 CARECE Hat aa ao 125 A AEE EE A EE E E aio 126 LI a a init 126 CE SLB O A i 127 A A EE aLe OE EE EEE E EE 127 CONCATSO S Y n r r AE R E A R EA E RTE 128 COUN a I 129 OR OA E EE t 129 DATES E E E OE EEEE E si 130 O 130 DRUSTO DRV STA Y iii ei aria 131 O ON 132 HE e e o i e laine ini 132 NA calle nali ei elena 132 INPEXINPEEY iso 134 MN E EA NE RE 135 ENS AE iaia A E AANE AT R RET io i EAA ATA AA 135 NEEDS o Co 136 NBBLES A ass 137 NO ao 137 UR isa 137 PEER osa 138 Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale RNDR siete A A E Lab Alena Dt E EA AS LL IL i 138 SECS Oda A alate Bel cieli otto 139
126. ni GBASIC 7 40 Manuale Generale LD HL XYZ XYZ CONTIENE 1330 LD SP TEMP Vedi anche frase ARG CHR x Forma generale 1 CHR lt exp gt 2 CHR lt expl1 gt Descrizione Nella forma 1 ritorna la stringa di un solo carattere corrispondente al codice ASCII del valore lt exp gt Nella forma 2 opera come nella forma 1 con la differenza che i caratteri di controllo vengono esplicitati con il loro nome simbolico es ETX STX ecc Esempio 10 LET G CHR 65 20 PRINT G provoca la stampa di una lettera A CKDAT x Forma generale CKDAT lt string gt Descrizione CKDAT verifica che la stringa lt string gt sia una data valida In caso positivo ritorna 1 diversamente 0 lt String gt deve avere il seguente formato Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale data GG MM AA e devono essere indicati anche gli zeri es 04 e non 4 Il giorno 29 02 viene considerato valido indipendentemente dall anno CKSUM x Forma generale CKSUM lt string gt Descrizione CKSUM esegue lo XOR ad 8 bit dei caratteri che compongono la stringa lt string gt e ne ritorna il risultato Esempio 10 PRINT CKSUM AS CKTIM x Forma generale CKTIM lt string gt Descrizione CKTIM verifica che lt string gt sia una ora valida In caso positivo ritorna 1 diversamente 0 lt String gt deve avere il seguente formato data OO MM SS e
127. nni Becattini GBASIC 7 40 Manuale Generale Esempi TO GET C S 3 y 8 10 LET C 3 9 10 LET D1 X Y X Y 10 LET F SIN 3 21 COS A 10 LET R 1000 10 LET AS LOAD TIMER Forma generale 1 LOAD TIMER lt exp1 gt WITH lt exp2 gt 2 LOAD TIMER lt exp1 gt WITH lt exp2 gt FREERUN NOTA esiste anche un comando LOAD vedi Descrizione carica il timer lt exp1 gt con il valore lt exp2 gt lt exp1 gt deve valere 1 2 o 3 mentre lt exp2 gt salvo modifica frase PRESCALE corrisponde approssimativamente al numero di secondi che devono trascorrere prima dello scatto del timer e quindi prima della esecuzione della routine di servizio prefissata con la frase ON TIMER vedi Indipendentemente da ci che il processore sta eseguendo dalla esecuzione della frase load timer si innesca un conteggio cio che dopo il numero di secondi prefissati determina lo scatto del sottoprogramma di servizio Il ritardo come gi detto approssimativamente proporzionale al numero di secondi indicati da lt exp2 gt Con la frase PRESCALE vedi tuttavia possibile variare il Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale fattore di scala in modo da allungare od accorciare il tempo corrispondente ad ogni unit di lt exp2 gt Specificando l opzione FREERUN si ha la ripartenza automatica del timer dopo lo scatto con l autocaricamento
128. nti critici Si noti in particolare che la routine di esecuzione del power down inizia dalla locazione 069H e non pi 066H Il power down restava fino alla presente versione una caratteristica del kernel del tutto al di fuori della portata dell utente Adesso il kernel e stato modificato per consentire una semplice customizzazione In primo luogo sono state aggiunte due nuove funzioni di system la 11 e la 12 precedentemente descritte per arrestare i CTC e per valutare il checksum di RAM Il kernel e stato poi rivisto in modo da concentrare le routines interessate in aree ben definite Si hanno due indirizzi riservati 63H salto alla routine di inizializzazione del sistema di Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale power down che deve terminare con un RET 69H routine di servizio per la mancanza di alimentazione si suppone sempre che l hardware preveda un NMI per il power down Lo spazio da 66h a BFh e libero per inserire le routines dell utente Si riportano delle routine esemplificative i riferimenti all hardware specifico sono ovviamente da rivedere caso per caso 63H ABSOLUTE JP TO POWER FAULT INIT ROUTINE ORG 63H INIPOW JP INIPOW1 69H ABSOLUTE POWER FAULT EXECUTE RO
129. nuale Generale ESC a patto che l arresto non sia stato inibito con la frase BREAK 0 vedi RUN lt exp gt avvia l esecuzione del programma presente in memoria alla locazione fisica specificata da lt exp gt Dopo RUN lt exp gt viene disattivata l area di lavoro RAM Eventuali tentativi di modificare il programma danno luogo ad un messaggio di errore L area RAM torna attiva introducendo il comando RUN senza operando Esempio RUN 20000 l esecuzione inizia SAVE Forma generale SAVE ABS lt exp gt Descrizione Provoca la registrazione del programma attualmente in memoria RAM all indirizzo fisico specificato da lt exp gt L area interessata deve ovviamente essere disponibile e di adeguata capacit Vedi comando LOAD ABS Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Come scrivere un driver Generalit La possibilit di poter scrivere un proprio driver rappresenta uno dei maggiori vantaggi dell utente del GBASIC v 7 3 Scrivere un driver assai meno semplice dello scrivere un programma GBASIC in quanto indispensabile una buona conoscenza della programmazione assembler e dello specifico dispositivo da interfacciare Un driver per una volta scritto e provato diventa un patrimonio acquisito e pu essere sfruttato molto velocemente anche da parte di coloro che ignorano la programmazione assembler KERNEL Driver console Con queste premesse scriv
130. o 1 INFO 3 I area libera I Fani tiranni I INFO 2 I area variabili I I ad indice e I I stringhe I A A EE AA I INFO 1 I area progr I r E EEE I INFO 0 I area sistema I E oa 1 inisio RAM INP x INP x y Forma generale 1 INP lt exp1 gt 2 INP lt exp1 gt lt exp2 gt Descrizione INP lt exp1 gt ritorna il valore del dato in ingresso alla porta lt exp1 gt Se specificato lt exp2 gt indica che si deve eseguire l operazione di ingresso da un solo bit indicato appunto da In questo caso il valore ritornato potr valere solo 0 od 1 lt exp2 gt 0 indica il bit meno significativo 7 il pi significativo Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Gli indirizzi delle porte dipendono dalla struttura e dalla implementazione dello specifico sistema target lt exp gt deve corrispondere ad una porta fisica realmente implementata Esempio 10 PRINT INP 241 INT x Forma generale INT lt exp gt Descrizione INT ritorna la parte intera di lt exp gt cio la parte a monte del punto decimale Esempi PRINT INT 1 L PRINT INT 1 2 J PRINT INT 0 2 0 LEN x Forma generale LEN lt string gt Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Descrizione ritorna la lunghezza della stringa lt string gt Si faccia attenzione alla distinzione tra lo spazio riservato per una str
131. o essere richiamate con BIOS ma solo quelle che non ritornano parametri o che ritornano un parametro nel registro E La chiamata deve inoltre avere un significato logico Con il driver standard di console hanno particolare utilit le seguenti funzioni 8 GETCH ritorna prossimo carattere dal buffer se presente oppure 0 9 FLUSH azzera il buffer dei caratteri ricevuti 10 CHCNT ritorna il numero dei caratteri presenti nel buffer L uso della funzione GETCH raccomandata in sostituzione della INPUT LDEV 4 Vedi esempio seguente Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Esempi 10 LET N BIOS 0 8 20 IF N 0 THEN 10 20 LET AS CHRS n invece di 10 INPUT LDEV 4 AS 20 IF LEN AS 0 THEN 10 CALL x Forma generale CALL lt exp gt Descrizione Chiamata ad una subroutine dell utente in linguaggio macchina lt Exp gt d l indirizzo della routine E consigliabile all ingresso della subroutine salvare lo SP La routine dell utente potr ritornare un valore che sar passato poi al GBASIC dal valore della funzione lasciandolo nel registro HL Esempi an LU Cc PRINT CALL 25000 LET A CALL 21987 O ARG 200 passa il val 200 in BC 20 LET A CALL 25000 chiama la sub a 25000 30 PRINT A A contiene 1330 ORG 25000 INGRESSO LD TEMP SP LD SP SPUSER BC CONTIENE 200 Libera riproduzione e libero uso Gianni Becatti
132. o il costrutto Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale LET AS SUBSTRS AS m n TAN x Forma generale TAN lt exp gt Descrizione TAN ritorna la tangente di lt exp gt lt Exp gt deve essere espressa in radianti Esempio 10 LET S TAN X TIMES Forma generale TIMES Descrizione ritorna una stringa del formato oo mm ss contenente il tempo attuale Leggere quanto indicato per la funzione DATE La funzione viene ottenuta mediante una chiamata al driver con codice 1 BLOCK READ e numero di record uguale a 1 Esempio 10 LET AS TIMES 20 PRINT AS Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale TIMSEC x Forma generale TIMSEC lt exp gt Descrizione Ritorna il valore di conteggio del timer lt exp gt Il valore viene inizializzato al valore massimo con la LOAD TIMER e si decrementa Ad ogni scatto del timer se prevista l opzione FREERUN si ricarica il valore massimo Esempio 10 PRINT TIMSEC 1 VAL x Forma generale VAL lt string gt Descrizione converte in numero il valore della variabile stringa lt string gt in modo da poterlo usare in calcoli lt String gt deve contenere solo caratteri numerici Esempio TO LET CS 6 20 LET A VAL C 72 30 PRINT A Risultato 3 Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale XOR m n Forma
133. on un punto e virgola per evitare l emissione di CR LF Esempio 10 PRINTS A A B C READ Forma generale 1 READ lt varl gt lt var2 gt 2 READ CH lt exp1 gt lt exp2 gt lt string gt 3 READ CH lt exp1 gt lt exp2 gt lt var gt Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Descrizione Forma 1 La frase READ assegna alla variabile varl il primo valore letto dall insieme delle frasi DATA vedi alla seconda il secondo e cosl via Alla fine il puntatore di lettura viene lasciato posizionato dopo l ultimo elemento letto La successiva frase READ partir quindi da esso per le successive assegnazioni La frase READ utile per eseguire lunghi caricamenti di variabili Desiderando riposizionare all inizio dell insieme DATA il puntatore si user la frase RESTORE vedi Se si tenta di leggere variabili quando non ci sono pi DATA disponibili si ottiene un ERR READ Esempio 10 DATA 12 4 45 8 20 READ A B C Forma 2 READ con opzione CH usata per ricevere blocchi di dati da un driver lt Exp1 gt il numero del driver di origine che deve essere aperto e deve prevedere la comunicazione di tipo BLOCK I dati vengono ricevuti nella stringa lt string gt Il parametro lt exp2 gt viene passato senza modifiche al driver ed il suo uso differisce a seconda dei casi Frequentemente usato quando abbia senso come numero del record L operazione richiesta a
134. one e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale 20 LOAD TIMER 1 WITH 5 FREERUN 30 PRINT AAAAA 40 GOTO 30 LOO PRINT MS 2 2 Li 120 RETURN TIMER 1 Il precedente programma provoca l emissione ripetuta della stringa AAAAA sullo schermo Ogni 5 secondi circa viene inframezzata una stringa di L uso della frase ON INTERRUPT implica necessariamente la conoscenza dell hardware e dei dispositivi periferici che possono eventualmente essere programmati eseguendo un breve programma in EEPROM scrivibile byte per byte con il debug eseguibile con la frase CONFIGURE vedi Vedi anche le frasi RETURN CONFIGURE LOAD TIMER RESET TIMER OPEN TIMER Forma 5 Nella forma 5 si ha il salto ad una frase su pi possibili Ad esempio 10 ON NGOTO 100 2000 3000 provoca il salto ad una delle linee in funzione del valore di N Per N 0 si ha il salto alla prima delle etichette elencate OPEN Forma generale 1 OPEN CH lt exp gt lt stringl gt 2 OPEN CH lt exp gt lt stringl gt lt string2 gt 3 OPEN TIMER lt exp gt lt stringl gt 4 OPEN OSC lt exp gt lt string gt 5 OPEN COUNTER lt exp gt lt stringl gt Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Descrizione Scopo della frase OPEN quello di rendere edotto il kernel della presenza di un driver esterno o di una periferica autogestita L operazione svolta dalla frase OPEN
135. oni La vecchia notazione con le virgolette resta in uso e serve tanto per compatibilit con i vecchi programmi quanto per definire quantit non intere o fuori del rango 32k Esempio DECLCONST SCRIBA _ PASSW 71215 Le espressioni di compilazione possono essere utilizzate solo nella nelle IF vedi dopo o nella sezione DECLCONST in questo ultimo caso non devono per iniziare con una costante generica quella tra virgolette Le espressioni di compilazione possono essere composte con costanti di compilazione numeriche intere es _123 costanti di compilazione generiche es 123 identificatori di costanti di compilazione intere o generiche purch nel rango 32k gi definite es SCRIBA gli operatori not or amp and L ordine di valutazione strettamente sequenziale Tra due termini ci pu stare solo un operatore Es Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale SCRIBA EFMDRC non ammessa si scriver invece FMDRC SCRIBA STAMP Una costante alfanumerica cui si assegna il valore STAMP verr a contenere ora e data della compilazione vedi sotto Il programma Il programma viene scritto nel solito modo con le seguenti eccezioni a la sezione programma inizia con CODE e termina con END b non vengono indicati i numeri di linea c il testo pu essere scritto in maiuscole o in minuscol
136. oni 1 ELSE blocco di istruzioni 2 ENDIF Descrizione la frase IF viene usata per eseguire la lt frase gt se si verificano certe condizioni se cio l espressione logica lt explog gt vera Se cir non avviene l esecuzione continua dalla linea subito seguente e la parte che segue THEN viene ignorata L espressione esplog cosl costruita lt exp1 gt lt oprel gt lt exp2 gt dove lt exp1 gt ed lt exp2 gt sono due comuni espressioni aritmetiche e oprel un operatore di relazione scelto tra quelli che seguono uguale Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale gt maggiore lt minore lt minore od uguale maggiore od uguale lt gt diverso E ammessa l indicazione diretta di un numero di linea forma numero 2 sottintendendo una GOTO Esempio 10 IF A 0 THEN PRINT ERRORE 20 Spiegazione se A vale 0 allora scrivi errore e passa alla 20 Se A diverso da 0 passa subito alla 20 Esempio 10 IF W1 W2 THEN LET A 89 20 Spiegazione se la somma di W1 W2 minore della somma di E K poni A 89 e passa alla 20 Se non passa direttamente alla 20 Esempio 10 IF 1 2 THEN PRINT IMPOSSIBILE 20 Spiegazione poich 1 non diverso da 2 la frase PRINT IMPOSSIBILE non sar mai eseguita Per le stringhe sono ammessi solo gli operatori lt gt gt lt Le forme 3 e 4 IF strutturata consentono l esecuzione condiz
137. ormattare l uscita aggiungendo una notevole flessibilit Per formattare l uscita si deve inserire nella frase print come un qualsiasi elemento della lista uno specificatore di formato costituito dal carattere e da una costante stringa ad esempio I6 I caratteri dello specificatore di formato sono i seguenti Dn fissa la stampa di un numero fisso n di decimali anche se nulli Nn fissa la stampa di un numero n di decimali solo se non nulli In fissa la stampa di un numero n di cifre della parte intera Se le cifre pi significative sono nulle al loro posto vengono stampati degli zeri o qualsiasi altro carattere fissabile con lo specificatore F Fc fissa il carattere c di riempimento per le cifre a sinistra non significative Di solito si usa lo spazio lo zero o l asterisco E determina l uscita in formato esponenziale L effetto degli specificatori cumulativo e rimane in effetto fino a modifica La variazione del formato di uscita della PRINT ha effetto anche su PRINTS e STR Lo specificatore I0F0 ripristina il comportamento standard Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Esempio 10 PRINT I6D2F dispone la stampa di 6 cifre intere e 2 decimali con riempimento di asterischi Opzione LDEV precedentemente CH Con l opzione LDEV possibile variare il dispositivo logico attraverso cui vengono emessi i dati dalla frase PRINT Sono am
138. p1 gt lt exp2 gt Descrizione ritorna l AND logico a 16 bit dei valori risultanti da lt exp1 gt ed lt exp2 gt Esempio 10 PRINT AND 10 20 ARG x Forma generale ARG lt exp gt Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Descrizione ARG serve per predisporre il passaggio di un parametro argomento della funzione ad una routine dell utente in linguaggio macchina Il valore passato verr ritrovato nella coppia di registri BC La chiamata della routine avviene con la funzione CALL vedi Esempio LET A ARG 45 ASC x Forma generale ASC lt string gt Descrizione Ritorna il codice ASCII del primo carattere della stringa lt string gt Esempio 10 PRINT ASC A ABS x Forma generale ABS lt exp gt Descrizione ABS ritorna il valore assoluto della espressione cio se lt exp gt gt 0 ritorna 1 viceversa 1 Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Esempi PRINT ABS 9876 8 9876 8 PRINT ABS 9876 8 9876 8 BIOS x Forma generale BIOS lt drv gt lt functcode gt Descrizione La funzione BIOS consente di richiedere ad un driver lt drv gt di eseguire una funzione lt n gt e di restituire il valore da esso ritornato Questa funzione risulta particolarmente utile per accedere a drivers specifici che possono eseguire numerose funzioni Non tutte le funzioni posson
139. parti uguali Per questo motivo essendo la zona a variabile da versione a versione di GBASIC quando si aggiorna il kernel necessario riscrivere i dati eventualmente presenti nello pseudo file Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Autostart E spesso auspicabile che al reset l esecuzione di un certo programma residente in eprom venga avviata in modo automatico e trasparente per l utente Il GBASIC pu compiere questa funzione di solito uno switch collegato ad un bit di una porta di ingresso che viene utilizzato per determinare se procedere alla normale inizializzazione in modo console o se avviare automaticamente il programma autostart Per eseguire l autostart il GBASIC deve possedere due importanti infornazioni quale switch leggere e quale la prima locazione ove risiede il programma da eseguire Per questo motivo il funzionamento dell autostart richiede un intervento di personalizzazione La funzione di Autostart contenuta nel driver di console Riferirsi alla sezione 5 per ulteriori informazioni Il driver pu determinare l avvio del programma residente in RAM se questa ovviamente di tipo non volatile In questo caso la prima istruzione del programma deve essere una REM per evitare l azzeramento automatico della memoria La frase AUTOSTART vedi consente di abilitare la ripartenza automatica del programma in caso di errore o di interruzione per ESC
140. rale COUNTER lt expl gt lt exp2 gt Descrizione Abilita se lt exp2 gt 1 o disabilita se lt exp2 gt 0 la funzione di conteggio del contatore lt exp1 gt Esempio 10 OPEN COUNTER 1 C 5 D145 20 COUNTER 1 1 30 PRINT COUNT 1 40 GOTO 30 CRITSEG Forma generale CRITSEG Descrizione Definisce l inizio di un segmento critico Vedi par 3 18 Esempio 1000 CRITSEG TOLTO pori 1120 ENDCRIT DATA Forma generale DATA lt vall gt lt val2 gt Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Descrizione La frase data crea un elenco di valori che possono successivamente essere letti dalla frase READ che li assegna a delle variabili Possono essere usate pi DATA l elenco dei valori viene costituito dall insieme di tutte le frasi DATA essendo il primo elemento dell insieme il primo valore della prima frase DATA e l ultimo l ultimo della ultima frase DATA In un programma la frase READ non pu precedere la frase DATA ma peraltro le frasi DATA possono essere poste ovunque I valori vall val2 ecc devono essere scritti esattamente come si introdurrebbero in risposta ad una frase INPUT vedi Esempio 10 DATA 12 6 7 897 20 READ A B C 30 PRINT A B C RUN 12 6 7 897 Esempio 10 DATA 3 6 20 DATA 6 8 30 READ A C C1 C2 40 PRINT A C C1 C2 RUN 3a E E DATE x Forma generale DATE lt string gt Descrizione E usata per regolare la d
141. rapidamente al simbolo originario dal nome di variabile GBASIC alfa numero In pi vengono conservati tutti i commenti che iniziano a colonna 1 Gli switches 1 e s devono necessariamente usare la lettera minuscola Normalmente si utilizza comunque l ambiente integrato GBT per cui non necessario impartire i comandi a livello di prompt La sintassi estesa La sintassi estesa comprende quanto segue a possibilit di inserire commenti e linee vuote b omissione dei numeri di linea c etichette simboliche riferibili nei GOTO e GOSUB d identificatori lunghi per le variabili e possibilit di definire costanti f pre dichiarazione dei nomi di variabile g marcature data ed ora Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale h compilazione condizionale i inclusione di files j procedure con variabili locali File sorgente Identificatori Il file sorgente pu essere scritto in formato non documento ASCII puro con qualunque text editor Le linee troppo lunghe possono essere continuate sulla riga successiva con il carattere amp messo all inizio del nuovo rigo Non ammesso continuare ulteriormente su un terzo rigo Gli identificatori etichette variabili e costanti possono essere lunghi a piacere ma solo i primi 30 caratteri sono riconosciuti Devono essere composti da lettere e numeri ed iniziare per lettera Viene riconosciuto il maiuscolo minuscolo ad e
142. re amp fissa il carattere CONFIRM vedi sopra che deve subito seguire La parte della stringa che descrive i caratteri di input deve essere sempre alla fine Esempio 10 INPUT PICTURE 999 N Spiegazione Accetta solo tre cifre Esempio 10 INPUT PICTURE LDEV 4 A Spiegazione Accetta un carattere al volo senza eco Esempio 10 INPUT NOCLEAR PICTURE AAAA BS Spiegazione Accetta quattro caratteri alfabetici ed esegui auto CR dopo il quarto carattere Se viene introdotto solo CR non modifica B Esempio INPUT PICTURE gt 9 Spiegazione input di un solo carattere numerico con auto cr e NBESC rappresentato da Esempio pregb NBESC _36 codice di CONFIRM 42 codice di Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale input picture amp gt 9 n gt WtStart let key bios K8279 8 if key CONFIRM then StartEx if key NBESC then MainMenu goto WtStart Redirezione dell ingresso L opzione CH consente di redirigere l ingresso della frase INPUT direttamente da un driver specificato L operazione avviene tramite l assegnazione temporanea del driver richiesto al dispositivo logico AUX ed eseguendo l ingresso da esso Alla fine il dispositivo AUX viene ripristinato alla sua assegnazione originale Il driver deve essere di tipo character oriented Esempio TO OPEN CH 1 COM ia 20 C 21 V DD 20 PRINT CH 1 AS Altre note su INPUT
143. rea stessa Il buffer deve essere predisposto in ASCII come mostra il seguente esempio Esempio All indirizzo 26000 Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale 10 11 12 21 22 23 31 32 33 ossia in hex 31 30 2C 31 31 2C 31 32 0D 0A 32 31 2C 32 32 2C 32 33 0D 0A ecc 10 STORAGE ABS 26000 20 FOR I 1 TO 3 30 INPUT LDEV 5 A B C 35 PRINT A B C 40 NEXT In esecuzione 10 EI 12 22 23 31 32 33 LDEV 4 input on the fly NOTA IMPORTANTE Per nuovi programmi preferire l uso della funzione BIOS vedi lt exp gt 4 per eseguire l accettazione al volo di caratteri dalla tastiera senza arrestare l esecuzione del programma Esempio 10 DIM AS 30 20 INPUT LDEV 4 PICTURE AS 30 IF AS S THEN 1000 40 IF INP 123 23 THEN 2000 50 GOTO 10 Il programma sopra riportato attende la pressione del tasto S Nel frattempo monitorizza la porta fisica 123 Notare l opzione PICTURE che evita l eco dei tasti premuti Se si preme il tasto ENTER viene ritornato il carattere In questo modo possibile riconoscere il CR dal nessun tasto premuto Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale La condizione di nessun tasto premuto pu essere rilevata anche dalla lunghezza della stringa ritornata da INPUT se questa zero nessun tasto risulta premuto Un tasto premuto ritorna una stringa di lunghezza
144. ruzione Esaminiamo adesso pi nel dettaglio la gestione delle interruzioni dal punto di vista del programma GBASIC La scrittura dei driver invece illustrata nella relativa sezione Sono disponibili 4 livelli di interrupt ad alto livello pi 3 riservati ai timers che al momento non ci interessano E possibile associare un driver ad un livello di interruzione con la frase ch Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Esempio open ch 1 LANSLAV ch 1 to interrupt 2 on interrupt 2 gosub ListenLan Il programma di cui sopra attiva il driver LANSLAV e gli assegna il canale 1 Quindi specifica che eventuali interruzioni dal driver ch 1 devono provocare una interruzione a livello 2 Infine indica che eventuali interruzioni a livello 2 devono provocare il salto al sottoprogramma ListenLan Il sottoprogramma ListenLan avr la struttura di un normale sottoprogramma ma sar terminato dalla frase return interrupt 2 essendo l interrupt in questione di livello 2 Se il driver LANSLAV provvede ad inserire dati nel FIFO il sottoprogramma ListenLan dovr eseguire necessariamente una pop a o altra variabile stringa per prelevare dal FIFO la stringa che stata inserita dal driver La stringa a dovr ovviamente essere stata opportunamente dimensionata per contenere i dati in arrivo Le strutture FIFO utilizzate dal GBASIC FIFO dei dati e FIFO delle richieste di int
145. ruzioni a basso livello delle quali adesso ci occupiamo devono ovviamente essere previste dal programma In particolare necessario a che ogni periferica che pu richiedere interrupt sia opportunamente programmata b che per ogni interrupt sia prevista la relativa routine di servizio detta ISR Interrupt Service Routine c che l indirizzo della ISR sia opportunamente registrato nella tavola dei vettori d che l indirizzo della tavola dei vettori sia programmato 1 nella periferica e 2 nel registro I L utente che scrive il driver deve provvedere a sopra quanto specificato ma il GBASIC fornisce i necessari supporti in particolare per c e d Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Tutti i vettori di interruzione utilizzati dalla CPU al momento dell interrupt si trovano in RAM nella stessa area di memoria La tabella contiene spazio per 3 SIO 3 CTC e 3 PIO La scrittura dei dati nella tabella non viene fatta direttamente dall utente che tra l altro ne ignora la posizione Invece l utente richiede al GBASIC di installare il vettore o i vettori desiderati specificando la posizione nella tabella prescelta ossia indicando quale SIO delle tre possibili quale CTC o PIO Deve essere cura dell utente evitare conflitti ogni vettore pu ovviamente servire una sola periferica La funzione GBASIC accessibile all utente che esegue l installazione del vettore in tabella provve
146. sa diverso da 0 si ha la copia automatica al boot dalla COH fino al terminatore 0 che deve essere presente Esempio PRINT LDEV 5 SYS STOR 05K BRG 1 AUTO LOAD ABS 0 RUN CHR 13 Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Segmenti critici Concetti I sistemi reali in cui viene utilizzato il GBASIC devono sovente conservare inalterate alcune informazioni al momento della perdita di alimentazione Queste informazioni vengono di solito immagazzinate in memoria RAM munita di alimentazione non interrompibile La semplice conservazione dei dati non tuttavia sufficiente in alcuni casi per garantire l integrit del sistema Si immagini ad esempio un programma che registra i dati relativi a certe operazioni in uno storage aggiungendo un record ad ogni operazione e che mantenga un puntatore all ultimo storage scritto in un altro storage Se la mancanza di alimentazione sopravviene tra la scrittura del record dati e la scrittura del puntatore si ha in pratica la perdita dell ultimo record Per ovviare a questo inconveniente GBASIC possiede un meccanismo di gestione di queste situazione denominato dei segmenti critici Grazie ad esso il programmatore pu definire delle sezioni di programma che non devono essere interrotti a met per nessuna ragione Se un allarme di prossima mancanza di alimentazione si verifica durante una di queste sezioni non viene servita la routine di gestion
147. seguita Vedi frase INPUT Uscita da INPUT Esempio Vedi INPUT HEX x Forma generale HEX lt EXP gt Descrizione ritorna una stringa contenente il valore di lt exp gt espresso in esadecimale Esempio 10 PRINT HEX 120 INFO x Forma generale INFO lt exp gt Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Descrizione ritorna alcuni parametri di sistema La selezione del parametro avviene in base al valore di lt exp gt come dalla sottostante tabella lt exp gt mnemonico descrizione 0 BOFA primalocazioneprogramma ipa i ZLI 6 BUE primalocazionebufferingressotastiera 8 NOVST primalocazionearea RAM non modificata al rest 9 dimensione complessiva dell area degli storages 10 __ mumerodiinterruptspendeni 15 SAPOINT SAPOINT puntatore all area usata da PRINT ed INPUT LDEV 5 16 FREEWS memoria libera workspace ossia area per programma o variabili FPSIZE dimensione di una variabile numerica A pagina seguente riportata la struttura della mappa della memoria relativamente al segmento della WS principale Si noti che PRINT INFO 3 INFO 2 fornisce indicazione sulla quantit di memoria ancora disponibile MAPPA DELLA MEMORIA WORK SPACE SOI I FFFFh Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale area storages REEE EET I INFO 4 I area variabili I
148. sempio i seguenti nomi sono relativi a variabili diverse nomeprodotto NomeProdotto NOMEPRODOTTO Non possono essere usati come identificatori i nomi delle parole chiave del GBASIC o quelli delle direttive del precompilatore o la parola STAMP che ha un significato particolare Queste sono riconosciute indipendentemente dal carattere maiuscolo o minuscolo Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Il numero massimo complessivo di identificatori 300 Gli identificatori con esclusione delle etichette devono essere dichiarati prima dell uso come sotto indicato Per maggiore leggibilit si conviene di scrivere gli identificatori di etichetta e di variabile in caratteri minuscoli usando per la lettera maiuscola per il primo carattere di ogni parola componente Ad esempio NomeProdotto PrintLoop VolTotErog Gli identificatori senza particolare significato invece come a si scrivono con l iniziale maiuscola Si propongono le seguenti convenzioni costanti tutte maiuscole variabili iniziale minuscola uso intermedio delle maiuscole per chiarire la composizione es i j k tempLim etichette iniziale maiuscola uso intermedio delle maiuscole per chiarire la composizione es PrintTable procedure come le normali etichette ma precedute da Pr Es PrEvalTime Campo di validit Ogni simbolo definito dall utente caratterizzato anche dal nome della procedura cui
149. spari 2 pari lt stopbits gt numero dei bit di stop 1 o 2 I registri della SIO non sono leggibili Per questo motivo SIOSET pu alterare alcuni parametri programmati dal driver o dall utente e precisamente DTR viene sempre azzerato Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale RTS viene sempre settato AUTOENABLE viene sempre disabilitato In funzione di ci l utente valuter la convenienza di usare la SIOSET eventualmente riprogrammando i parametri che devono assumere diversi valori con la frase OUT Quando la generazione del clock di comunicazione della SIO venga fatta con un CTC il baud rate pu essere variato con la frase OSC Esempio SIOSET CH 1 7 2 1 7 bit parit pari 1 sto pP pP P STOP Forma generale 1 STOP 2 STOP ERROR Descrizione quando in un programma viene incontrata la frase STOP l esecuzione si arresta e compare il messaggio BRK LN lt linnum gt dove lt linnum gt il numero della linea dove si trova lo STOP Il controllo ritorna all operatore La seconda forma resetta anche i dispositivi logici al valore di default Questo evita di trovarsi con la tastiera disabilitata al momento del break Esempio 450 STOP Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale STORAGE Forma generale 1 STORAGE lt exp gt 2 STORAGE lt exp gt 3 STORAGE ABS lt exp gt 4 STORAGE l
150. t exp gt gt lt lista var gt 5 STORAGE lt exp gt lt lt lista var gt 6 STORAGE SYS Logica degli storages Una area riservata e non azzerata al reset denominata SA Save Area rende possibile registrare informazioni in modo abbastanza simile a quello usato nel BASIC standard per i files In GBASIC disponibile un unico pseudo file dove i dati anche non omogenei sono registrati in records detti storages Uno storage pu contenere qualsiasi tipo di dato alfanumerico o numerico E compito del programmatore provvedere alla oculata gestione degli storages e dei loro contenuti In considerazione che la memoria usata per registrare lo pseudo file potrebbe essere di tipo EEPROM la velocit di scrittura variabile con la frase NOVRAM vedi Le informazioni sono registrate e rilette dagli storages secondo due possibili formati formato ASCII usando le frasi PRINT LDEV 5 ed INPUT LDEV 5 formato fast usando la frase STORAGE nelle forme 4 e 5 Questo formato disponibile solo per le variabili numeriche Uso del formato ASCII Le informazioni sono registrate con la frase PRINT LDEV 5 Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale vedi Esempio PRINT LDEV 5 A B C registra nella SA il valore delle variabili A B e C al posto dei nomi di variabili possono essere usate delle espressioni La rilettura avviene poi con una frase INPUT LDEV 5 purch ovviament
151. ta a questa funzione I valori ritornati sono i contenuti della prossima coppia della stringa Esempio Se la stringa e DATA 45 ritorna E D e B 45d Vedere anche PARSEP2 e TRIPLEX Parametri in ingresso ACC codice funzione 4 puntatore TXA CS alla stringa di configurazione posizionato automaticamente A ang dal sistema alla chiamata della funzione driver INIT Parametri in uscita zero flag esito set OK reset non trovato E lettera chiave B valore Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Funz system 5 PARSEP2 Significato mnemonico PARSE a pair keyletter value in the config string type 2 Descrizione Simile alla precedente PARSEP consente di determinare in precedenza la lettera chiave che ci aspetta Se questa non corrisponde a quella effettivamente presente nella stringa si ha un errore GBASIC ERR CS Esempio Se la stringa e DATA 45 ritorna B 45d Vedere anche PARSEP e TRIPLEX Parametri in ingresso ACC codice funzione 5 E lettera chiave prevista puntatore TXA CS alla stringa di configurazione posizionato automaticamente dal sistema alla chiamata della funzione driver INIT Parametri in uscita zero flag esito set OK reset non trovato B valore Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Funz system 6 CS
152. tamente sul sistema target utilizzando un terminale o programmi GBASIC residenti in ROM un precompilatore PREGB utilizzabile su un sistema tipo PC che converte un file con un programma sorgente esteso ossia scritto con una sintassi pi libera del GBASIC ROM in un file che pu essere direttamente scritto in ROM ed interpretato dal GBASIC ROM un ambiente integrato di sviluppo a finestre denominato GBT utilizzabile su un PC Essendo stato concepito per applicazioni di controllo il GBASIC possiede molte caratteristiche e funzioni non comuni ai normali interpreti gestionali come ad esempio la possibilit di una complessa gestione delle interruzioni ed un facile collegamento con il linguaggio assembler tramite drivers modulari Queste caratteristiche sono illustrate nel dettaglio nelle apposite sezioni di questo manuale Ciononostante il GBASIC conserva le caratteristiche peculiari di semplicit di impiego e rapidit di sviluppo comuni al BASIC standard La struttura del sistema ROM stata concepita per la massima generalit e si compone fondamentalmente di un kernel indipendente dall hardware e una serie di drivers per la gestione dell hardware specifico I drivers ed il kernel comunicano tra loro con un meccanismo che non prevede indirizzi comuni In questo modo non richiesta una operazione di link tra i vari moduli Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale
153. to dal procompilatore e registrato in eprom Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Il programma generato dal precompilatore file con suffisso GBA non contiene indirizzi assoluti e pu quindi essere ubicato in qualsiasi area libera Se presente della memoria scrivibile e non volatile il programma pu venirvi registrato con la frase SAVE ABS vedi e quindi riletto con LOAD ABS Il programma una volta caricato con LOAD pu essere editato come se lo si fosse digitato da tastiera Si ricordi comunque che non indispensabile caricare un programma in RAM per eseguirlo Il comando RUN lt exp gt vedi consente di eseguire il programma direttamente in eprom Il comando LOAD ABS non carica direttamente dall indirizzo indicato in argomento ma usa la funzione 90H del driver di console In questa maniera possibile customizzare il caricamento da una eventuale pagina estesa di rom Ad esempio alcune CPU usano una 27512 divisa in due met la met alta contiene il GBASIC e quella bassa il programma utente L utente carica il programma con LOAD ABS 0 RUN Forma generale 1 RUN 2 RUN lt exp gt Descrizione RUN serve per avviare l esecuzione di un programma a partire dalla linea di numero pi basso Tutte le variabili sono azzerate L esecuzione del programma pu essere arrestata battendo Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Ma
154. ulsanti come interfaccia utente per gentile concessione della Cite spa Come si pu notare analizzando il listato molte funzionalit di basso livello come la misurazione del periodo del segnale proveniente dall anemometro somo svolte da drivers Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale DECLCONST FOROUT FORINP STORPTR FREEWS FREESTOR MAXSAMPLE STAMP o o 10000 funzioni BIOS STAMP e parola riservata per ora e data costanti usabili in info numero massimo di campioni accumulabili RDCHAR 5 GETCH _8 INKEY 8 FLUSH 9 CHCNT 10 SETTIMER 4 RECI 20 REC2 40 drivers CONSOLE 00 canale console LCD 1 lcd CCAL clock tempo reale PWME 23 misuratore periodo KEYPAD 4 tastierina ldev s RAMFILE mol canale storages porte KEYB 176 porta tastiera WIND _168 porta impulsi da anemometro WINDBIT 0 bit impulsi da anemometro tasti ANYKEY _0 NOKEY Sa ZOO tasti F1 03 F2 0 08 F3 69 F4 46 Libera riproduzione e libero uso F5 F6 x1 X2 YL Y2 END DECLVAR ny Kk a b win dir d wnd med fre Win q d Key A Q Y El NextRec Logging rem goto Main PimerSet Gianni Becattini GBASIC 7 40 Manuale Generale 10 9 98 8 4 67 32 06 48 13 coefficient
155. una normale EEPROM 8Kx8 sono usati di solito valori di circa 10 Esempio 10 NOVRAM 10 NEXT Forma generale NEXT Descrizione indica la fine di un ciclo di FOR Pi cicli di FOR possono essere innestati uno dentro l altro per ogni FOR necessaria una NEXT L accoppiamento avviene in modo automatico tra Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale l ultimo FOR e la prima NEXT vedi anche frase FOR E possibile opzionalmente indicare il nome della variabile usata dalla FOR Note se viene incontrata una frase NEXT senza che questa sia stata preceduta da un FOR si ottiene un ERRORE DI FOR NEXT Similmente nel caso in cui una frase NEXT risulti mancante Esempio 10 FOR T 1 TO 10 20 PRINT 30 NEXT ON Forma generale 1 ON ERROR lt linnum gt 2 ON ERROR CON IS CH lt exp gt 3 ON INTERRUPT GOSUB lt linnum gt 4 ON TIMER GOSUB lt linnum gt 5 ON lt exp gt GOTO GOSUB lt lista di linnum gt La frase ON una frase dichiarativa vale a dire che non provoca nessuna immediata azione apparente ma predispone delle azioni da compiersi nel caso in cui si verifichino certi eventi Forma 1 La forma 1 determina il numero di linea cui si deve saltare nel caso in cui si verifichi un qualsiasi errore Forma 2 La forma 2 serve a riassegnare al dispositivo logico CON out ed in il driver di numero specificato da lt exp gt nel Libera riprodu
156. uso Gianni Becattini GBASIC 7 40 Manuale Generale critico par 3 18 4 nel caso di una locazione di RAM difettosa Questa funzione ha senso solo se implementato un sistema di gestione della mancanza di alimentazione Eseguendo un BOOT senza avere compiuto lo spegnimento e quindi senza avere eseguito l operazione statistica di controllo si ha normalmente un a condizione di DIAG 0 1 Nel caso che gli errori di cui sopra si verifichino contemporaneamente il codice di errore pari alla loro somma 1 2 3 Con argomento 1 ritorna 0 in caso di power up o un numero maggiore di zero in caso di reset manuale pressione del tasto reset Il numero ritornato indica quanti reset manuali sono stati eseguiti dall ultimo power up fino ad un massimo di 254 Questa funzione molto utile per non eseguire routines diagnostiche al reset manuale Esempio pregb gt DiagSys if diag 1 gt 0 then return DRVST x DRVST x y Forma generale 1 DRVST lt exp gt 2 DRVST lt exp1 gt lt exp2 gt Descrizione Ritorna lo stato del driver lt exp1 gt mediante chiamata della funzione 6 STATUS Il parametro lt exp2 gt opzionale viene passato integralmente al driver Libera riproduzione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale Esempio 10 PRINT DRVST 2 EXIT 0 Forma generale EXIT 0 Descrizione Ritorna il codice del carattere utilizzato per uscire dall ultima frase INPUT e
157. zione e libero uso Gianni Becattini GBASIC 7 40 Manuale Generale caso in cui si verifichi un errore per evitare situazioni di stallo I messaggi di errore sono comunque sempre inviati al dispositivo logico ERR Forme 3 e 4 Le forme 3 e 4 stabiliscono invece l azione da compiersi nel caso in cui avvenga lo scatto di un timer o provenga una interruzione da un dispositivo periferico Ricordiamo che ogni interrupt INTERRUPT o TIMER ha tre stati possibili O inattivo 1 preset 2 sotto servizio La frase ON INTERRUPT lt exp1 gt GOSUB lt exp2 gt provoca il passaggio dallo stato 0 allo stato 1 idem per TIMER La frase ON INTERRUPT lt exp1 gt cio senza il GOSUB susseguente riporta invece nello stato 0 disabilitando ulteriori interruzioni Nella frase ON TIMER lt exp1 gt pu valere 0 1 2 o 3 in corrispondenza dei tre timers gestiti Nella ON INTERRUPT lt exp1 gt pu valere invece 0 1 2 o 3 Si ricordi che il ritorno dal sottoprogramma di servizio deve avvenire con la frese RETURN TIMER lt exp1 gt oppure RETURN INTERRUPT lt exp1 gt con lt exp1 gt uguale al numero dell interrupt interessato in modo da ripristinare lo stato di PRESET Diversamente ulteriori interruzioni non verranno servite Un timer prima di poter essere usato deve essere aperto con la frase OPEN Vedere la sezione 3 per dettagli Esempio 10 OPEN TIMER 1 CTC 2 DATA 145 15 ON TIMER 1 GOSUB 100 Libera riproduzi

Download Pdf Manuals

image

Related Search

Related Contents

2 - Fujifilm    CESAR AUGUSTO CUSIN Acessibilidade em Ambientes  SUNNY CENTRAL 400HE/500HE/630HE  `一 - 製品名検索  Owner`s Manual  AR-19 facilite le travail et réduit les cycles de  Power Distribution Panel User`s Guide  Actuadores Neumáticos Serie PN5000 y PN6000  Service Manual  

Copyright © All rights reserved.
Failed to retrieve file