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:

- Sviluppo: e' la modalita' normalmente utilizzata dall'utente finale e comprende un editor, l'interprete BASIC e l'ambiente di debug per il programma applicativo da sviluppare. L'uso di questa modalita' e' comune a tutti i linguaggi di programmazione e prevede:
 
1) la stesura o la correzione del programma applicativo (questa fase puo' essere realizzata con l'editor integrato o un normale editor ASCII esterno, come ad esempio quello del GET-80);
2) il caricamento del programma applicativo usando il file system del GDOS-80;
3) l'esecuzione del codice ottenuto direttamente a bordo della scheda di controllo. Se dalla verifica funzionale del programma applicativo emergono dei problemi si ritorna al punto 1;
4) la generazione finale di un programma direttamente eseguibile dal GDOS-80 (ad esempio per la programmazione in EPROM o FLASH EPROM).
 
Tra le caratteristiche dell'ambiente di sviluppo appena descritto, si ricorda:


REQUISITI DEL BASIC NSB8

In termini operativi il BASIC NSB8 richiede solamente quattro elementi separati che vengono di seguito elencati.

- Una scheda di controllo basata su CPU con Core Z80, o compatibile, come:

- 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 - nEm

n = 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

 PRINT

 !

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

 >=


B A S T R A

( 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.


B A S Y M

( 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


home Home Software CartellaUtility Tabelle Linguaggi