Turbo Pascal porting: dal 7.0 (DOS) al 3.01 (CP/M) – parte 2
di Francesco Sblendorio
Dopo la prima parte, dedicata alla preparazione dell’ambiente di sviluppo, eccoci finalmente “sul pezzo”, pronti ad affrontare le differenze tra le versioni 7.0 per DOS e 3.01 per CP/M di Turbo Pascal.
Dichiarazione delle STRINGhe.
In Turbo Pascal 7 siamo abituati a usare il tipo STRING senza specificarne la lunghezza. Nelle dichiarazioni di variabili si assume come default la lunghezza massima di 255 caratteri, mentre nelle dichiarazioni dei parametri di procedure e funzioni viene assunta una lunghezza variabile, in funzione del parametro effettivo fornito.
Tutto ciò in Turbo Pascal 3 non è possibile: bisogna sempre specificare la lunghezza massima tra parentesi quadre. Per comodità potete definire un nuovo tipo e usarlo al posto di “STRING” senza specifica della lunghezza massima:
Short-circuit boolean evaluation: non c’è.
Nelle istruzioni dove è prevista la valutazione di una condizione fate particolare attenzione che ogni parte delle espressioni boolean verrà valutata. Su questo stesso sito c’è stato un approfondimento in merito: ecco il link all’articolo completo.
Dimenticate USES CRT;
In Turbo Pascal 3 non esistono le UNIT (cioè i moduli pre-compilati e da linkare a parte). L’unico modo di fare programmazione modulare è tramite la direttiva di inclusione:
In ogni caso, parte delle procedure che siamo abituati a considerare parte del modulo CRT della versione 7, nella versione 3 sono built-in nel linguaggio, e non c’è in questo caso da includere nulla. Mi riferisco alle procedure basiche di gestione dello schermo:
CLRSCR | Cancellazione schermo |
GOTOXY(col,row) | Posizionamento cursore |
CLREOL | Cancella fino a fine riga |
INSLINE | Inserimento riga |
DELLINE | Rimozione riga |
Tali funzioni sono quindi utilizzabili as-is e senza particolari problemi.
ATTENZIONE: ricordiamoci però che il loro funzionamento dipende dalla fase di setup dell’ambiente (come visto nella parte 1): le chiamate a tali procedure vengono tradotte nelle sequenze di escape del terminale per cui è stato configurato l’ambiente. Ciò significa che l’eseguibile che si produrrà non avrà il comportamento atteso nel momento in cui verrà lanciato da un terminale non compatibile con quello selezionato in fase di setup.
La funzione Readkey
Questa funzione non è presente in Turbo Pascal 3. Al suo posto, bisogna usare la procedura standard READ applicata al file built-in di nome KBD (che rappresenta la tastiera)
Codice Turbo Pascal 7.0 | Codice Turbo Pascal 3.01 |
---|---|
var ch:char; … ch := Readkey; | var ch:char; … Read(KBD,ch) |
Gestione dei file: la procedura APPEND
Nel caso abbiate la necessità di gestire file, sappiate che la funzione di APPEND, cioè di apertura di un file in scrittura in coda, non esiste nella versione CP/M di Turbo Pascal 3. In questo stesso sito abbiamo già affrontato e risolto il problema relativamente ai file di testo: ecco il link all’articolo completo.
Finisce qui la seconda parte. Buon coding a tutti!
Riferimenti esterni:
- Turbo Pascal porting: dal 7.0 (DOS) al 3.01 (CP/M) – parte 1
- APPENDere in Turbo Pascal per CP/M
- Short-circuit boolean evaluation: mai dare niente per scontato
- CP/M su Commodore 128: terminali e sequenze di escape
Commenti
Posta un commento