Turbo Pascal MSX – lezione 1

da | Nov 3, 2023 | Programmazione, Turbo Pascal | 0 commenti

MSX Turbo Pascal Rubrica a cura di Stefano Roperto (parte 1)

Uno sguardo dall’alto

Questo vuole essere un corso introduttivo alla programmazione in linguaggio Turbo Pascal in ambiente MSX. Non è necessario, ma certamente facilita il compito, la conoscenza di qualche linguaggio di programmazione. Fondamentale, invece, è avere accesso a Turbo Pascal 3.0 della Borland e a una macchina MSX, o a un emulatore, così da poter mettere in pratica gli argomenti trattati. Il corso sarà così articolato:

1. Introduzione a Turbo Pascal 3.0: breve presentazione del menu principale di Borland Turbo Pascal 3.0
2. Introduzione al linguaggio Turbo Pascal: vedremo la sintassi del linguaggio e la struttura di un programma.
3. Tipi di dati: Il Turbo Pascal è abbastanza rigido nel trattare i tipi di dati primitivi, ma molto flessibile nel trattare i tipi di dati definiti dal programmatore. 4. Set di istruzioni: come ogni linguaggio di programmazione, Turbo Pascal possiede il proprio set di istruzioni, oltre a una serie di identificatori predefiniti. 5. Cicli e strutture di controllo: in Turbo Pascal troviamo strutture iterative e istruzioni di controllo più complete rispetto al MSX BASIC.
6. Procedure e funzioni. Il Turbo Pascal permette di suddividere un programma in parti più piccole tramite la scrittura di procedure e funzioni
7. Files. Vedremo come operare sui vari tipi di file.
8. Librerie esterne: una delle grandi doti di versatilità del Turbo Pascal sta nel poter produrre librerie esterne da includere nei propri programmi anche, ma non solo, per aggiungere funzioni non previste dal linguaggio.
9. Bibliografia: per chi volesse approfondire l’argomento.

INTRODUZIONE A TURBO PASCAL

Capitolo 1

MSX non è solo BASIC. Sebbene il primo approccio con un sistema MSX sia proprio il BASIC, e più avanti torneremo sull’importanza che ebbe il BASIC Microsoft nella formazione giovanile di tante persone che poi hanno effettivamente trovato la loro strada nel mondo del IT, esistono altri ambienti di programmazione con i quali è possibile produrre software per tutti i sistemi MSX. Si possono trovare compilatori per diversi linguaggi: il COBOL, il C standard, il Turbo PASCAL, per citare i più conosciuti, e questo grazie al fatto che il sistema operativo MSX DOS è compatibile col sistema operativo CP/M della Digital Research ed è quindi possibile eseguire in ambiente MSX Dos i programmi a 8 bit prodotti per quell’ambiente. Oltre ai citati compilatori, possiamo trovare, per esempio, programmi come Dbase II della Ashton Tate o Wordstar della MicroPro che negli anni 80 del secolo scorso rendevano professionale il sistema MSX. Naturalmente, trattandosi di software progettato per un sistema come il CP/M che girava anche su macchine completamente diverse da MSX, questo non sfruttava le caratteristiche più avanzate del sistema come la grafica in alta risoluzione o il sonoro a tre canali, tipiche dei videogames, ma per la natura intrinseca di quei programmi, ciò non rappresentava un problema. Diverso il discorso per gli ambienti di programmazione. Il MSX BASIC, corredato di tutto l’occorrente per sfruttare l’hardware della macchina (istruzioni grafiche, di produzione del suono, di gestione della memoria e cosi via), certamente rappresenta la via più semplice per la produzione di software, ma i limiti oggettivi legati al fatto che è un linguaggio interpretato non lo rendono ideale per applicazioni che fanno un massiccio uso di grafica, come i videogiochi, a meno di non affidarsi al linguaggio macchina. Utilizzare un linguaggio diverso dal basic, come per esempio il Borland Turbo Pascal 3.0, pone alcuni vantaggi a mio parere fondamentali. Il codice sorgente viene compilato e gira direttamente sotto MSX DOS, in questo modo l’interprete basic non è necessario e quindi c’è più memoria a disposizione per i programmi.
Il problema più grande che riguarda l’utilizzo di un ambiente di programmazione diverso dal basic risiede nel fatto che per sfruttare le caratteristiche dell’hardware è necessario utilizzare librerie esterne che forniscono le necessarie estensioni. Fortunatamente, il turbo pascal supporta le librerie esterne e questo consente di ovviare a questo problema. Si trovano in rete diverse librerie che forniscono le istruzioni grafiche più comuni come la definizione di sprites, la scrittura e lettura di dati nella Vram, la gestione dei vari modi video o l’accesso alle routines residenti nella Rom, le istruzioni per la programmazione del PSG, di accesso a periferiche come joystick, stampanti, modem, floppy eccetera. Nessuno, poi, vieta di scrivere in autonomia librerie per qualsiasi utilità si voglia implementare. E questa è un’altra delle caratteristiche di turbo pascal che lo rendono un ambiente davvero funzionale. Più avanti vedremo come ciò possa essere fatto, ma ora, quello che mi preme far capire è che è possibile programmare in maniera strutturata in modo da rendere i programmi più eleganti, funzionali, con parti riutilizzabili facilmente in altri programmi e di facile manutenzione. Questo richiede un piccolo sforzo all’inizio (se non si è mai utilizzato un linguaggio strutturato) che però è in grado di dare grandi soddisfazioni in seguito. Vediamo ora da vicino l’ambiente di programmazione. Una volta entrati in ambiente Msx Dos, basta inserire il dischetto contenente il Turbo Pascal e tutti gli altri file di supporto e lanciare il programma scrivendo TURBO e premendo invio. Durante il caricamento il programma chiede se vogliamo importare anche il file con i messaggi di errore. In fase di debugging è molto utile, ma costa qualche kilobyte di memoria. Una volta effettuata la nostra scelta (Y o N), si presenterà la schermata di figura 1.

Fig.1 – Menù principale

Noterete che alcune lettere sono maiuscole, ciò significa che basta premere quella lettera per attivare quella voce di menu. Per esempio premendo la “D” di Dir , otterremo la visualizzazione dell’elenco dei file del drive corrente, che possiamo cambiare premendo la “L” di Logged drive, e così via “E” per editare il file sorgente o per caricarne o crearne uno nuovo, Premendo “O” possiamo accedere alle opzioni del compilatore che prevedono la compilazione in memoria, su di un file eseguibile con estensione .com o con estensione chn (che vedremo in seguito). Naturalmente, la cosa migliore è provare e vedere all’opera le varie opzioni.

Perché dunque mettersi a studiare un altro linguaggio di programmazione, quando il basic Msx, che nasce come linguaggio dedicato alla macchina, fa già tutto quello che ci occorre? Intanto, imparare un altro linguaggio di programmazione è sempre un arricchimento del proprio bagaglio culturale, inoltre il pascal si basa su un paradigma diverso rispetto al basic. Il basic è un cosiddetto linguaggio imperativo, mentre il pascal rientra nel gruppo dei linguaggi strutturati. Si vedrà che non è mai davvero necessario utilizzare l’istruzione GOTO (che è notoriamente nemica della leggibilità dei programmi), che si può suddividere il programma in tante strutture più piccole, procedure e funzioni (vedremo a breve qualche esempio) che è possibile anche, come dicevamo prima, scrivere librerie di funzioni esterne da incorporare nel programma che, essendo appunto esterne, se sono ben scritte, possono essere utilizzate in qualunque altro programma. Per esempio se programmiamo una libreria che contiene la logica per far scrollare lo schermo dal basso verso l’alto e viceversa, questa libreria può essere utilizzata con qualunque altro programma che ha la necessità di effettuare uno scroll verso l’’alto o verso il basso, senza dover riscrivere ogni volta tutto il codice, per cui dovremo occuparci solo dell’aspetto grafico, senza preoccuparci della routine che gestisce lo scroll, che magari abbiamo scritto un anno prima per un altro programma. Attualmente utilizzo il Turbo Pascal 3.0, che può essere scaricato dall’archivio di File Hunter, attraverso il famoso emulatore Blue Msx, visto che non dispongo di un machina reale, mentre per l’editing mi avvalgo del blocco note di windows, salvando in

una cartella che poi carico come se fosse un disco. Il metodo che utilizzo è un po’ macchinoso, ma efficace: innanzitutto dopo aver scritto il programma lo salvo nella cartella che caricherò come immagine disco nell’emulatore. Nel drive B dell’emulatore carico una immagine disco, un file con estensione .Dsk, perché utilizzando una cartella come disco, Blue Msx non effettua il salvataggio dei file, che andranno quindi salvati sul drive B per le successive modifiche tramite blocco note di windows. A dire il vero, prima di poter editare il file salvato sul drive B, bisogna estrarlo tramite il programma Disk manager all’interno della cartella che usiamo come disco. Finito l’editing, bisogna rimuovere la cartella dal drive A e ricaricarla di modo che si aggiorni. Si potrebbe usare direttamente il file .Dsk, ma occorrerebbe un passaggio in più in fase di salvataggio

Avevo detto che era un po’ macchinoso, ma davvero è più difficile a dirsi che a farsi. In ogni caso, programmare in Pascal di per sé non è difficile, si tratta di imparare una nuova sintassi e alcune nuove parole chiave e, come per tutte le cose nuove, provare, sperimentare, sbagliare. Buon Lavoro!

0 commenti

Invia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Turbo Pascal MSX – Lezione 7

Turbo Pascal MSX – Lezione 7

I FILES (parte 1) Turbo Pascal fornisce un completo set di istruzione per la gestione dei file. Il tipo FILE è rappresentato da una sequenza di oggetti dello stesso tipo, la dimensione di  un file non è determinata dal tipo, ma viene fornito un puntatore che si sposta...

Turbo Pascal MSX – Lezione 4

MSX Turbo Pascal Rubrica a cura di Stefano Roperto (parte 4) Lezione 4 Set di istruzioni Le parole riservate sono parte integrante di Turbo Pascal. Non possono essere ridefinite, né usate come identificatori o nomi di variabili. Il Turbo Pascal è sostanzialmente il...

Turbo Pascal MSX – lezione 3

MSX Turbo Pascal Rubrica a cura di Stefano Roperto (parte 3) Capitolo 3 Il tipo di dati definisce l’insieme di valori che una variabile può assumere. I tipi di dati più complessi che possono essere definiti dal programmatore, derivano tutti dai tipi standard. I tipi...

it_ITIT_IT