MBASIC: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Nessun oggetto della modifica
Riga 6:
| sviluppatore = [[Microsoft Corporation]]
| versione ultimo rilascio = 5
| data ultimo rilascio = ?--
| versione beta =
| data versione beta =
Riga 59:
Nell'MBASIC il flusso del programma era gestito tramite le [[Struttura_di_controllo#Strutture_di_controllo_della_programmazione_strutturata|strutture di controllo]] <code>IF...THEN...ELSE</code> e <code>WHILE...WEND</code> e le istruzioni di salto <code>[[GOTO]]</code> e <code>GOSUB</code>. All'assenza dell'istruzione <code>CASE</code>, per la scelta fra più di 2 opzioni, si sopperiva con l'istruzione di salto multiplo <code>ON...GOTO</code>. Le sub-routine non aveva parametri e tutte le variabili erano globali. L'MBASIC non metteva a disposizione strumenti per la [[programmazione strutturata]] ed era facile scrivere "[[spaghetti code]]".
 
==PEEK, POKE e funzioni definite dall'utente==
<!--
Come per tutti gli altri dialetti BASIC dei computer ad 8 bit dei primi [[anni 1980|anni '80]], anche nell'MBASIC le funzioni [[PEEK e POKE]] rivestivano un ruolo importante dato che permettevano di leggere e scrivere direttamente nella memoria dell'elaboratore. Data l'assenza di sistemi di [[protezione della memoria]], il programmatore poteva accedere direttamente al [[sistema operativo]] od a funzioni normalmente non permesse dai comandi a disposizione: ad esempio, con una <code>POKE</code> in un sistema CP/M, se il suo [[BIOS]] supportava questa funzione, si poteva passare il terminale sulla [[porta seriale]]; nei computer con un [[Real-time clock|orologio in tempo reale]], una serie di <code>PEEK</code> permetteva di leggerne l'orario.
== PEEKs, POKEs, and user functions ==
No discussion of BASICs on the 8-bit computers of the late '70s and early '80s would be complete without mentioning the importance of the [[PEEK and POKE]] functions for directly reading and writing to memory. Since these systems typically had no [[memory protection]], this allowed a programmer to access portions of the operating system, or functions that would not otherwise be available. This also provided opportunities for user programs to hang the system. For example, a CP/M programmer might use a <code> POKE </code> function to allow BASIC to switch the console device to the serial port, if the system [[BIOS]] supported this. For machines with real-time clocks, a set of <code>PEEK</code> instructions might have been used to access the time.
 
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]].
For more complex operations, MBASIC allowed user-defined functions that could be called from a BASIC program. These were typically placed in a reserved area of memory, or POKEd into string constants, as a series of [[Machine language|machine codes]] (op codes). MBASIC also provided hardware <code>INP</code> and <code>OUT</code> instructions that read and wrote directly to the 8080 hardware input/output ports. This could be used to control peripheral devices, though on at least one common CP/M system, the Osborne 1, all I/O instructions were pre-empted for use by the system.
 
Erano inoltre disponibili le istruzioni <code>INP</code> e <code>OUT</code> per leggere e scrivere direttamente nelle porte di I/O dell'8080: grazie a ciò si poteva controllare direttamente una periferica. Su alcuni computer CP/M, come il diffuso [[Osborne 1]], tutte le istruzioni di I/O erano però riservate dal sistema.
Any MBASIC programs that made use of <code>PEEK</code> and <code>POKE</code>, and of [[machine code]] user functions, were not portable between machines.
 
Programmi in MBASIC che usavano <code>PEEK</code>, <code>POKE</code> o le funzioni scritte in linguaggio macchina non perano eseguibili su macchine differenti da quelle per cui erano stati scritti.
<!--
 
== Successors to MBASIC ==