Template:Infobox Software

Il linguaggio di programmazione MBASIC è una versione del Microsoft BASIC sviluppata da Microsoft per i sistemi operativi CP/M. L'MBASIC era uno dei 2 linguaggi BASIC contenuti nel pacchetto software offerto da Osborne Computer Corporation insieme ai suoi Osborne 1, Osborne Executive e Osborne Vixen.

Caratteristiche tecniche

Interazione con il sistema

L'MBASIC versione 5 richiedeva un sistema CP/M con almeno 28 kB di memoria RAM libera ed almeno un'unità floppy. A differenza del BASIC-80, la versione per computer con CPU 8080/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 console, la gestione della stampante e l'accesso ai floppy: il linguaggio non supportava la modalità grafica, i colori, i joystick, il mouse, le reti locali, il suono o gli 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, 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 forniva solo funzionalità base, e conveniva salvare il sorgente in formato ASCII per poi modificarlo con un editor di testo vero e proprio.

Iterazione con il sistema operativo

Il programma, le 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 dati dello stesso. I commenti inseriti nel codice con la parola chiave REM venivano perciò ridotti al minimo dato che il testo veniva memorizzato in formato ASCII, consumando 1 byte per carattere. Per permettere di eseguire programmi molto grandi, le ultime versioni dell'MBASIC introdussero le istruzioni CHAIN e MERGE: 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 SHELL 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.

Uno dei punti di forza dell'MBASIC erano i suoi messaggi di errore in formato testuale, che aiutavano nell'individuazione degli errori di sintassi e di esecuzione. L'MBASIC aveva anche la funzione TRACE che visualizzava i numeri di riga man mano che venivano eseguiti dall'interprete, utile per ricercare eventuali errori logici nel programma (ad esempio: cicli infiniti).

Riferimenti

  • Thom Hogan, Mike Iannamico, Osborne 1 User's Reference Guide, Osborne Computer Corporation, 1982.
  • David A. Lien, The BASIC Handbook - 2nd Edition Encyclopedia of the BASIC Computer Language, Compusoft Publishing, 1981.
  • BASIC 80 Reference Manual, Microsoft Corporation.

Voci correlate

  Portale Informatica: accedi alle voci di Wikipedia che trattano di Informatica