N S B 8
BASIC Interprete per Z80 e Z180
Manuale Tecnico, in ITALIANO dell'Interprete " GRATUITO " BASIC per Z80, NSB8 - Lunghezza 657.762 byte
G E N E R A L I T A '
NSB8 è un potente pacchetto di sviluppo software che consente una programmazione ad alto livello in BASIC, per tutte le schede del carteggio grifo® basate sulla famiglia di microprocessori Z80. Il codice generato richiede l'ausilio del sistema operativo CP/M o dell'equivalente sistema operativo romato GDOS 80, di cui l'NSB8 sfrutta le funzioni e le modalita' di funzionamento. L'ambiente di sviluppo e' estremamente amichevole e, rispettando le normali caratteristiche dei BASIC interpretati, riduce notevolmente il tempo di generazione degli applicativi. Gli utenti che non conoscono il BASIC potranno usufruire delle sue intuitive e numerose istruzioni e comandi diventando operativi in poche ore di lavoro, mentre i programmatori esperti non avranno bisogno di alcun tempo di apprendimento. In ogni caso l'efficienza del codice e l'immeditatezza con cui è possibile intervenire sull'hardware, rendono il NSB8 un impagabile strumento professionale ad ogni livello.
L'interprete supporta le applicazioni matematiche, quelle di controllo, la gestione di data base, l'interfacciamento con una console generica, le chiamate al sistema operativo e tante altre funzioni adatte a risolvere i problemi di automazione industriale.
NSB8 e' un ambiente di sviluppo e programmazione composto da una serie di sottogruppi indipendenti che interagiscono nei confronti dell'utente che puo' quindi decidere se utilizzarli o meno. Volendolo paragonare ad ambienti di programmazione BASIC universalmente conosciuti, l'NSB8 ha una modalita' di sviluppo ed un elenco di istruzioni equiparabili a quelle del GWBASIC.
Con questo pacchetto si ha la possibilita' di sfruttare tutte le risorse hardware della scheda prescelta, direttamente con le istruzioni ed i comandi ad alto livello, senza doversi preoccupare di sviluppare firmware di gestione specifico. Ad esempio l'NSB8 si occupa della gestione di risorse hardware come le linee seriali, le stampanti, le memorie di massa, le interfaccie operatore, ecc.
Il pacchetto NSB8 e' composto da software su dischetti, da un ricco manuale d'uso e da una serie di esempi (in formato sorgente e tokenizzato) che illustrano come gestire le risorse della scheda di controllo.
CARATTERISTICHE DELL'NSB8
Fondamentalmente l'NSB8 include due modalita' distinte: quella di sviluppo vero e proprio del programma applicativo e quella di utilita' per semplificare ed ottimizzare lo sviluppo. Le caratteristiche fondamentali di queste modalita', vengono di seguito descritte.
- Utilita': l'NSB8 e' fornito con alcuni programmi e relativa documentazione d'uso che consentono di:
REQUISITI DEL BASIC NSB8
In termini operativi il BASIC NSB8 richiede solamente quattro elementi separati che vengono di seguito elencati.
- Il sistema operativo GDOS-80 per la scheda di controllo utilizzata e/o l'emulatore Z80MU;
- Un programma di emulazione terminale e di colloquio come il GET-80;
- Un personal computer collegato in seriale, alla scheda di controllo.
Personal Computer
Un Personal Computer provvisto di:
La presenza di un hard disk é consigliata, anche se non indispensabile, al fine di velocizzare tutte le operazioni di accesso ai files.
SINTASSI FILE PER NSB8
I file con i programmi eseguibili da NSB8 devono avere la seguente sintassi:
<nome file>.B
Dove <nome file> è una sequenza di 6 caratteri validi per il sistema operativo in uso.
SINTASSI FILE DATI DI NSB8
I file contenenti dei dati da gestire con NSB8 devono avere la seguente sintassi:
<nome file>.<est>
Dove <nome file> e <est>, sono due sequenze di,
rispettivamente, 6 e 3 caratteri validi per il sistema operativo
in uso.
OPERATORI ARITMETIBI |
||
OPERATORE |
FUNZIONE |
ESEMPIO |
^ |
Esponenziale |
9^2=81 |
* |
Moltiplicatore |
5*1.5=7.5 |
/ |
Divisore |
3/2=1.5 |
- |
Sottrattore |
3.2-2=1.2 |
+ |
Sommatore |
7.9+2.1=10 |
- |
Negatore |
-3, -27 |
OPERATORI RELAZIONALI |
||
OPERATORE |
RELAZIONE |
ESEMPIO |
> |
Maggiore di |
(6>1)=1 (vero) (2>3)=0 (falso) |
< |
Minore di |
(0<0)=0 (falso) (1<3)=1 (vero) |
<= |
Minore od Uguale a |
(5<=5)=1 (3<=5)=1 (3<=5)=1 |
>= |
Maggiore od Uguale a |
(8>=7)=1 (7>=7)=1 (6>=7)=0 |
= |
Uguale a |
(9=9)=1 (9=7)=0 |
<> |
Diverso da |
(4<>5)=1 (2<>2)=0 |
OPERATORI BOOLEANI |
||
OPERATORE |
FUNZIONE |
ESEMPIO |
AND |
Somma logica |
A>3 AND A<6 |
OR |
Prodotto logico |
A>3 OR A>6 |
NOT |
Negazione logica |
NOT (A>3 ) |
Gli operatori booleani sopra riportati restituiscono sempre un valore booleano (vero o falso) non un valore numerico.
ORDINE DI VALUTAZIONE DEGLI OPERATORI |
|
NOT , - |
Operatore logico, Negazione di un numero |
^ |
Esponenziale |
* , / |
Moltiplicatore e Divisore |
+ , - |
Sommatore e Sottrattore |
= , < , > ,<= , >= , <> |
Operatori relazionali |
AND |
Operatore logico |
OR |
Operatore logico |
FORMATO DI STAMPA
Sintassi da seguire:
PRINT %<formato carattere><specificazione formato>,<variabili>
Stringa di formato:
Formato float - nFm
Formato intero - nI
Formato esponenziale - nEmn = numero cifre a sinistra della virgola
m = numero cifre a destra della virgola
Carattere di formato:
A - Conteggio
C- Virgola
Z - Omissione degli 0
+ - Numero positivo
$ - Segno di dollaro
# - Formato di default
EDITOR DI LINEA NSB8
Control G - Copia fino alla fine della linea
Control N - Cancella per una nuova scrittura
Control A - Copia un carattere
Control Q - Indietreggia di un carattere
Control Z - Cancella un carattere
Control D X - Copia sino al carattere X
Control Y - Attiva e disattiva il modo insert
FUNZIONI INTERNE
Funzioni Matematiche
ABS - ABSolute value (<espressione>)
ATN - ArcTaNgent (<espressione numerica>)
COS - COSine (<espressione numerica>)
EXP - EXPonential value (<espressione numerica>)
INT - INTeger value (<espressione numerica>)
LOG - LOGarithmic value (<espressione numerica>)
SIGN - SIGN of a number (<espressione numerica>)
SIN - SINe (<espressione numerica>)
SQRT - SQuare RooT (<espressione numerica>)
Funzioni per stringhe
ASC - ASCii value (<espressione di tipo stringa>)
CHR$ - CHRaracter$ (<espressione numerica>)
LEN - LENgth of a string (<nome stringa>)
STR$ - STRing$ (<espressione numerica>)
VAL - VALue (<espressione di tipo stringa>)
Funzioni per input
INCHAR$ - INput a CHARacter$ (<dispositivo#>)
INP - INPut a byte (<numero port>)
Funzioni per file
FILE - FILE type (<nomefile>)
FILEPTR - FILEPoinTeR position (<canale#>)
FILESIZE - FILESIZE (<canale#>)
TYP - TYPe of file pointer (<canale#>)
Funzioni di utility
CALL - CALL machine language (<indirizzo memoria> [,<argomento>])
EXAM - EXAMine memory (<locazione memoria>)
FREE - FREE memory (<argomento>)
TAB - TABulate (<#espressione>)
RND - RaNDom (<#espressione>)
FUNZIONI DEFINITE DALL' UTENTE
DEF <nome funzione> (<lista parametri>) [=<espressione>]
RETURN <variabile numerica o di tipo stringa>
FNEND
COMANDI DIRETTI
ALOAD <FILE NAME>
ASCSAV <FILENAME>
AUTO [<LINE>] [,<INCREMENTAL VALUE>]
BYE
CAT [#<DEVICE#>] [,<DRIVE#>]
CONT
DEL <LINE#>,<LINE#>
LIST [#<DEVICE#>] [,<LINE#>] [,<LINE#>]
LOAD <FILENAME>
MEMSET <MEMORY ADDRESS>
PSIZE
REM [<LINE#>] [,<INCREMENTAL VALUE>]
RUN [<LINE#>]
SAVE <FILENAME>
SCR
ISTRUZIONI
* PUO' ESSERE USATO COME UN COMANDO IN MODO DIRETTO
Istruzioni per manipolazione dati interni al programma
DATA <LISTA DI COSTANTI>
READ <LISTA DI VARIABILI>
*RESTORE [<LINE#>]
Istruzioni di input e output
INPUT [<DEVICE#>] [,<STRING PROMPT>,] <VARIABLE LIST>
INPUT1 [<DEVICE#>] [,<STRING PROMPT>,] <VARIABLE LIST>
*OUT <PORT NUMBER>,<BYTE VALUE>
*PRINT [@,(ROW,COLUMN)][#<DEVICE#>] [,<LIST OF EXPRESSIONS>]
*! [@(ROW,COLUMN)] [#<DEVICE#>] [,<LIST OF EXPRESSION>]
Istruzioni di controllo
FOR <CONTROL>=<INITIAL> TO <LIMIT> [STEP <VALUE>]
GOSUB <LINE#>
GOTO <LINE#>
*IF < LOGEXPR> THEN <STATEMENT> [ELSE <STATEMENT>]
ON <#EXPR> GOSUB <LIST OF LINE NUMBERS>
ON <#EXPR> GOTO <LIST OF LINE NUMBERS>
RETURN
Istruzioni per file
*APPEND [LINE#>,]<FILENAME>
*CHAIN <FILENAME>
*CLOSE #<CHANNEL#>
*OPEN #<CHANNEL#>[%<TYPEXPR>],<FILENAME>[,<SIZEVAR>]
*READ# #<CHANNEL#>[%<RANDOM ADDRESS>],<LIST OF VARIABLES>
*WRITE# #<CHANNEL#>[%<RANDOM ADDRESS>],<LIST OF EXPRESSIONS>
ISTRUZIONI VARIE
*CLS [#<DISPOSITIVO#>]
*DIM <NOME VARIABILE (<DIMENSIONE DELL' ARRAY O DELLA STRINGA>)
END
ERRSET [<LINEA#>,<NUMERO LINEA D'ERRORE>,<NUMERO D' ERRORE>]
*FILL <LOCAZIONE>,<VALORE DEL BYTE>
*[LET] <VARIABILE NUMERICA>=<ESPRESSIONE NUMERICA>
*[LET] <VARIABILE STRINGA>=<ESPRESSIONE DI TIPO STRINGA>
*LINE [#<DISPOSITIVO#>,]<#ESPRESSIONE>[,<#ESPRESSIONE>]
REM <QUALSIASI LINEA DEL PROGRAMMA>
STOP
LEGENDA
LINEA# - Numero linea BASIC
DISPOSITIVO# - Numero di un dispositivo di input o output
DRIVE# - Numero del disk drive
NOME FILE - Nome del file
#EXPR - Espressione numerica
LOGEXPR - Espressione logica
TYPEXPR - Un tipo di espressione
FILE# - Numero identificazione file
[ ] - Ciò che racchiude è opzionale
ERRORI RICONOSCIBILI
ARGument - Error 1
DIMENSION - Error 2
OUT OF BOUNDS - Error 3
TYPE - Error 4
FORMAT - Error 5
LINE NUMBER - Error 6
FILE - Error 7
HARD DISK - Error 8
DIVIDE by ZERO - Error 9
SYNTAX - Error 10
READ - Error 11
INPUT Error 12
ARGument MISMATCH - Error 13
NUMERIC OVerflow - Error 14
STOP/control C - Error 15
LENGTH - Error 16
Tabella dei Comandi del BASIC NSB8 |
||||||||
8 |
9 |
A |
B |
C |
D |
E |
F |
|
0 |
LEF |
FN |
CLS |
STEP |
( |
<= |
||
1 |
FOR |
DEF |
TO |
^ |
<> |
|||
2 |
|
! |
THEN |
ATN |
* |
|||
3 |
NEXT |
ON |
TAB |
FILESIZE |
+ |
|||
4 |
IF |
OUT |
ELSE |
SORT |
FILEPTR |
< |
||
5 |
READ |
FILL |
CHR$ |
ADDR |
- |
= |
||
6 |
INPUT |
EXIT |
ASC |
INT |
> |
|||
7 |
DATA |
OPEN |
APPEND |
VAL |
/ |
NOT |
||
8 |
GOTO |
CLOSE |
STR$ |
FREE |
||||
9 |
GOSUB |
WRITE |
NOENDMARK |
INP |
||||
A |
RETURN |
INCHAR$ |
SGN |
EXAM |
||||
B |
DIM |
CHAIN |
FILE |
SIG |
ABS |
|||
C |
STOP |
LINE |
LEN |
COS |
END |
|||
D |
END |
CALL |
LOG |
OR |
||||
E |
RESTOR |
RDN |
EXP |
|||||
F |
REM |
ERRSET |
TYP |
>= |
( BAS-ic TRA-sforma )
Trasforma e Tokenizza un programma BASIC NSB8 riducendolo
ai minimi termini (toglie tutti i REM anche se situati
a meta' riga; toglie tutti gli spazi bianchi inutili; verifica
tutti i salti da GOTO, GOSUB, ON GOTO...,
ERRSET, ecc. e li risistema correttamente, se puntavano
a righe ora cancellate vengono aggiornati alla prima riga successiva
valida ...).
Lo si lancia come un qualsiasi programma, ed una volta in esecuzione
lo stesso richiede i parametri di lavoro; tra questi:
INPUT: nomi completi di suffisso del file di ingresso (sorgente) creato da NSB8 e del file di uscita (oggetto).
Tali nomi possono contenere anche l' indicazione di un drive nel formato:
nome file = d:nome.est
Oltre al File oggetto viene creato un nuovo file con il suffisso
.REM contenente dati statistici: N. di REM
cancellati, lunghezze dei file prima e dopo la cura, lista dei
numeri di riga modificati ecc. I dati generali vengono ripetuti
due volte.
Questo perche' il metodo e' a due passate. Il num. di REM
nelle due passate non coincide perche' in un caso vengono contati
tutti i REM, nel'altro solo quelli posti all'inizio di
riga, riga che, quindi, viene cancellata. Anche per il contatore
di righe, tieni presente che esiste una riga in piu' nel programma
in forma interna: la riga finale che consiste in una riga "vuota"
formata dal solo byte 01.
( BAS-ic SYM-boli )
Fornisce una Lista completa dei Simboli usati
e tutti i loro riferimenti al programma visualizzandoli sul dispositivo
di console in uscita.
Lo si lancia come un normale programma ed una volta in esecuzione
richiede di introdurre i parametri d'ingresso:
INPUT:
1) nome del file completo di suffisso (che sara' ".002" per il BAZIC e ".B" per l`NSB8).
Attenzione: non dare file ASCII (tipo ".SOH") ma solo quelli in codifica interna BASIC.
2) il tipo di operazione da effettuare:
1 -> elenca solo i simboli;
2 -> elenca simboli e linee in cui compaiono;
0 -> uscita dal programma.
3) tipo di dispositivo d'uscita:
V -> monitor della console;
S -> stampante.
OUTPUT: basta leggere i messaggi sul video e fare un paio di prove.
Comunque in uscita si puo' avere:
1) un tabulato in forma compatta con i nomi di tutte le variabili usate;
2) una lista alfabetica di tutte le variabili con i numeri di riga in cui compaiono.
Pagina aggiornata al 31 Ottobre 2004