MBASIC: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
No2 (discussione | contributi) m - Link ridond. |
m Bot: decenni secondo il manuale di stile e modifiche minori |
||
Riga 3:
==Caratteristiche tecniche==
===Interazione con il sistema===
L'MBASIC versione 5 richiedeva un sistema CP/M con almeno 28 [[byte|kB]] di memoria [[Random Access Memory|RAM]] libera ed almeno un'[[floppy disk drive|unità floppy]]. A differenza del BASIC-80, la versione per computer con [[CPU]] [[Intel 8080|8080]]/[[Zilog Z80|Z80]] dell'[[Altair BASIC]] che Microsoft distribuiva personalizzato per lo specifico [[hardware]] del sistema su cui doveva poi girare, l'MBASIC si appoggiava direttamente al sistema CP/M, sfruttandone le chiamate di sistema per la gestione delle operazioni di [[input/output]], ed era in questo modo indipendente dall'hardware sottostante.
L'MBASIC non usava tutti i servizi del CP/M ma solo la [[terminale (informatica)|console]], la gestione della stampante e l'accesso ai [[floppy disk|floppy]]: il linguaggio non supportava la modalità [[Computer grafica|grafica]], i colori, i [[joystick]], il [[mouse]], le [[Local Area Network|reti locali]], il suono o gli [[Real-time clock|orologi in tempo reale]]. Inoltre l'MBASIC non supportava le aree utente messe a disposizione del CP/M per l'organizzazione dei file sul disco. Siccome il CP/M era un sistema pensato per computer mono-utente, anche l'MBASIC non supportava nessuna forma di [[multitasking]] come ad esempio il blocco dei file. Nonostante queste limitazioni, l'MBASIC era considerato comunque un BASIC potente e funzionale.
===L'editor del linguaggio===
L'MBASIC era un [[linguaggio interpretato]]: il [[codice sorgente]] veniva salvato in memoria in forma di [[token (testo)|token]], ossia con le parole chiave del BASIC convertite in un singolo byte per risparmiare memoria. Ogni riga di testo inserita a video che iniziava con un numero veniva considerata come linea di codice e salvata in RAM, tutto il resto era considerato come un comando diretto ed eseguito immediatamente.
Il programma salvato in memoria poteva essere stampato a video oppure salvato su disco, sia nella forma compressa in token sia come testo [[ASCII]]. I numeri di riga erano utilizzati dalle istruzioni [[GOTO]] e [[GOSUB]] per le operazioni di salto. L'[[editor (informatica)|editor]] forniva solo funzionalità base, e conveniva salvare il sorgente in formato ASCII per poi modificarlo con un editor di testo vero e proprio.
Riga 15:
===Gestione della memoria===
Il programma, le [[Variabile (informatica)|variabili]] ed il [[buffer]] del disco dell'MBASIC condividevano con il CP/M la stessa memoria del sistema su cui giravano: su un sistema con 64 kB di RAM (il massimo indirizzabile da un processore ad 8 bit quale l'8080 o lo Z80) avviando l'interprete, che consumava 28 kB, restavano meno di 32 kB per il programma ed i suoi dati. Per questo motivo i programmatori non usavano inserire commenti nel codice, operazione fattibile con la parola chiave <code>REM</code>, dato che essi venivano memorizzati in formato ASCII, consumando 1 byte per carattere.
Per permettere di eseguire programmi molto grandi, le ultime versioni dell'MBASIC introdussero le istruzioni <code>CHAIN</code> e <code>MERGE</code>: la prima passava l'esecuzione ad un altro programma mentre la seconda caricava un programma unendolo a quello presente in memoria. Non c'era però il supporto all'esecuzione di programmi da terminale (l'istruzione <code>SHELL</code> presente in altri dialetti del BASIC), che permetteva di passare temporaneamente il controllo ad un comando del terminale per implementare funzioni del sistema operativo non supportate dall'MBASIC.
Riga 35:
Tutte le operazioni in virgola mobile erano eseguite via software dato che quasi nessun sistema CP/M aveva un [[coprocessore matematico]]: per questo motivo le funzioni matematiche precostituite quali il [[Seno (matematica)|seno]], il [[coseno]], la [[Tangente (trigonometria)|tangente]], il [[logaritmo naturale]], la [[funzione esponenziale]], la [[radice quadrata]], davano solo risultati in singola precisione.
L'MBASIC fornva anche un [[Numeri pseudo-casuali|generatore di numeri pseudo-casuali]], a cui l'utente poteva fornire un "seme" usato per ottenere una sequenza di numeri utili per i giochi o le simulazioni.
L'MBASIC consentiva l'uso della parola chiave <code>LET</code> per la dichiarazione delle variabili, anche se il suo uso non era obbligatorio. A differenza dei primi dialetti BASIC, l'MBASIC non limitava l'uso dei nomi delle variabili a 2 soli caratteri ma permetteva di usarne fino a 40 (MBASIC 5), consentendo così ai programmatori di usare nomi più indicativi del valore che conservavano.
Riga 43:
==PEEK, POKE e funzioni definite dall'utente==
Come per tutti gli altri dialetti BASIC dei computer ad 8 bit dei primi [[anni 1980|anni
L'MBASIC permetteva all'utente di definire delle funzioni che potevano essere poi richiamate da un programma: queste funzioni erano di solito salvate in un'area riservata della memoria oppure inserite tramite <code>POKE</code> in costanti di tipo stringa come una serie di istruzioni in [[linguaggio macchina]].
Riga 53:
==Varianti e derivati==
{{main|Microsoft BASIC}}
Microsoft mise in commercio anche un [[compilatore]] BASIC per il CP/M denominato '''BASCOM''', che aveva una sintassi simile a quella dell'MBASIC tanto che un programma sviluppato in MBASIC poteva essere compilato con il BASCOM: il software compilato non solo occupava meno memoria grazie alle ridotte dimensioni dell'eseguibile rispetto ad un sorgente in BASIC, mettendo quindi a disposizione dell'utente più memoria libera per i dati delle proprie applicazioni, ma risultava mediamente dalle 8 alle 10 più veloce dell'originale.
Tutte le chiamate alle funzioni del CP/M che erano integrate nell'MBASIC furono convertite per i sistemi [[PC-DOS]]/[[MS-DOS]] e rese disponibili nei BASIC che Microsoft sviluppò per i [[PC IBM]], il [[BASICA]] ed il [[GW-BASIC]]. I token usati per rappresentare le parole chiave del linguaggio erano però differenti per cui per trasportare un programma MBASIC in BASICA/GW-BASIC l'utente doveva salvare il listato in testo [[ASCII]].
== Bibliografia ==
|