CP/M su Commodore 128: terminali e sequenze di escape

Se avete già letto la “prima puntata” allora avete già fatto qualche esperimento con il vostro Commodore 128 in modalità CP/M. Questa volta ci occuperemo della gestione dello schermo e del modo in cui il sistema operativo gestisce l’output verso l’utente.

CP/M nasce negli anni ’70, progettato per funzionare per macchine diverse tra loro ma che condividano la CPU Intel 8080 (alternativamente il compatibile Zilog Z80). Erano macchine di solito vendute anche senza tastiera e monitor ma con connettori seriali attraverso cui era possibile collegare dei terminali. Da questo punto di vista era simile a UNIX: l’input/output è uno stream sequenziale di caratteri da e verso il terminale. Ciò significa che per avere la possibilità di controllare l’esatta posizione dei messaggi sullo schermo il terminale deve prevedere determinate “sequenze di controllo” (rispetto a cui il sistema operativo è agnostico) per posizionare il cursore, cancellare lo schermo, dare un certo stile o colore ai caratteri, ecc.

Queste sequenze di controllo variano ovviamente in base al terminale utilizzato (quindi non dal sistema operativo) e i vari software devono conoscere come rendere determinati comandi di gestione schermo su uno specifico terminale. A meno che si tratti di software relativamente “semplici” dal punto di vista dell’interfaccia utente tali da non necessitare di altro che visualizzare caratteri e “mandare a capo”. Uno di questi casi è il Microsoft BASIC (detto anche MBASIC, dal nome del comando da lanciare), che non prevede nessun tipo particolare di terminale ma proprio per questo ci permetterà di fare un po’ di esperimenti specifici per il nostro Commodore 128.

Per iniziare, potete scaricare una versione patchata di MBASIC da questo link, che corregge un bug che impedisce di usare correttamente il tasto “backspace”. Una volta scaricato e lanciato, ne avrete il prompt come da immagine di copertina di questo articolo. Iniziate lanciando questo comando (rispettando correttamente le maiuscole e le minuscole):

PRINT CHR$(27)"G4Hello world!"CHR$(27)"G0"

Apparirà la scritta “Hello world!” in campo inverso. Cosa è successo? Abbiamo stampato, prima e dopo “Hello world!”, due sequenze di controllo terminale, una per impostare il campo inverso, e l’altra per tornare a una visualizzazione “normale”.

Ma… quale terminale, se il Commodore 128 non ha un terminale? La risposta è semplice: i progettisti del BIOS (la parte di sistema operativo dipendente dalla macchina) del CP/M per Commodore 128 hanno scelto un modello di terminale di riferimento, che è il modello “Lear Siegler ADM-31“, e ne hanno implementato i comandi emulando il comportamento di questo modello attraverso i chip video del C128.

Di seguito le principali sequenze di escape disponibili sul nostro Commodore 128. Tenete presente che sono da inviare senza spazi intermedi e che CHR$(27) è il comando BASIC per indicare il carattere di “ESC/ESCAPE” (codice ASCII 27).

Sequenza Significato Standard di riferimento
ESC ESC ESC CHR$(32+x) Imposta colore carattere=x Specifico del Commodore 128
ESC = CHR$(32+x) CHR$(32+y) Muove cursore a coord. (x,y) ADM-3A
CHR$(30) Cursore a “HOME” (0,0) ADM-3A
CHR$(26) Cancella schermo + HOME ADM-3A
CHR$(7) Suono “ring” ADM-3A
ESC G 4 Reverse ON ADM-31
ESC G 3 Sottolineato ON ADM-31
ESC G 2 Lampeggio ON ADM-31
ESC G 1 Alternate charset ON ADM-31 (charset specifico del C128)
ESC G 0 Azzera tutte le precedenti ADM-31
ESC ) Half intensity ON ADM-31
ESC ( Half intensity OFF ADM-31
ESC E Insert line ADM-31
ESC Q Insert character ADM-31
ESC R Delete line ADM-31
ESC W Delete character ADM-31
ESC T Clear to end of line ADM-31
ESC Y Clear to end of screen ADM-31

Link esterni:

Francesco Sblendorio

Francesco Sblendorio nasce nel 1977. Nel 1985 fa conoscenza con il mondo dei computer attraverso un Commodore 16: da quel momento la discesa verso il lato oscuro è inesorabile e si trasforma in un geek impenitente. Nell'ambito del retrocomputing ha un sogno: che i vecchi computer non debbano semplicemente sopravvivere (conservando la loro funzionalità), piuttosto devono vivere, attraverso nuovi software sviluppati oggi per i computer di ieri.

Potrebbero interessarti anche...