Pagine

sabato 13 giugno 2020

Grafici di funzioni - prima parte

Grafici di funzioni - Prima parte
Articolo scritto da Tommaso Mauro Tautonico

Nello stesso periodo che cominciavo ad imparare ed approfondire la programmazione con il C64, una delle cose che capii subito era che bisognava studiare, e tanto, e che una cosa che non mi entusiasmava in maniera particolare era la grafica, colpa sicuramente della povertà dell’interprete Basic v2 del C64, limitazione che in parte superai, prima grazie alle famose routine grafiche di Danilo TOMA e di seguito utilizzando estensioni del Basic (Simons) o versioni superiori del Basic (3.5, 7) per arrivare poi ad altri Basic (GW-Basic) e/o linguaggi.
In realtà ero come la volpe che non arrivava all’uva, vedevo il mio amico Antonello che disegnava aerogrammi con il suo Spectrum in tempo quasi reale nel corso dello spoglio delle votazioni per il sindaco del mio paese nel 1984 ed io mi rompevo di PEEK e POKE per una fottutissima linea o circonferenza, cosa questa che mi fece capire che la grafica non era il mio forte, che preferivo studiare gli algoritmi, che bisognava cercare di avere il Simon’s Basic (che costava troppo e da lì la mia passione irrefrenabile per tutti i tipi di basic extender del mondo 😊) ed imparare il LM (per capire come DE TOMA fece le sue routine).
L’interesse per la grafica ritornò imperante quando, pochi anni dopo, al liceo cominciammo a studiare prima le funzioni trigonometriche, poi i luoghi dello spazio in geometria analitica ed infine lo studio di funzioni.
Memore delle difficoltà che ebbi con i primi approcci alla grafica con il Basic V2 la soluzione “ottima” per me fu implementare un programma che disegnava le funzioni in modalità testo con una serie di asterischi: una cosa oscena, della quale forse ho traccia da qualche parte, sempre nell’antro dei miei genitori.
Ovvio che non era quello che volevo, anche perché la sigla di Quark, con le sue animazioni in wireframe di onde in 3d mi faceva sognare onde trigonometriche e sombreri sul mio C64.
Partì la ricerca della documentazione per fare grafica con il computer, la rilettura di tutte le riviste disponibili ed anche di quelle non disponibili (grazie Nino, l’edicolante del mio paese) e dei libri che affrontavano in maniera organica l’argomento: tanta teoria, ma tanta difficoltà perché non avevo il disk drive, inserire migliaia di data per il codice LM mi deprimeva ed il Simon’s continuava a costare troppo).
I libri che cercavo erano entrambi della Franco Muzzio & C. editore: “Matematica e geometria con il Commodore 64” e “Grafici di funzioni con il C64, il Plus4 e il C16”, il cui solo titolo prometteva meraviglie.
E già, perché, nel frattempo, la Commodore aveva rilasciato una famiglia di computer con un Basic più evoluto rispetto a quello del C64, il Basic v3.5 della serie 264, che aveva comandi per disegnare grafica in alta risoluzione senza scomodare PEEK e POKE.
Diventò necessario trovare i libri, ovunque essi fossero, compatibilmente con le mie finanze, ma la ricerca, in un paesino e relativa provincia della Puglia non portò a risultati soddisfacenti, pertanto dovetti ragionare su un sostituto e pensare ad un programma che tracciasse il grafico di una funzione data in bassa risoluzione, anche solo per avere una conferma che lo studio “a mano” stava andando per il verso giusto.
In quel periodo, per saggia decisione di mio padre, stavo migrando al mondo x86, con un meraviglioso Olivetti M24, e risolsi il problema acquistando due programmi che permettevano lo studio di funzioni e lo studio della geometria analitica su MS-DOS (se non erro facevano parte di una collana del GEJ).
Ma il ricordo di quei libri e di quello che avrei voluto fare mi sono rimasti e pertanto, anni dopo, quando mi è capitato di trovare “Grafici di funzioni con il C64, il Plus4 e il C16” l’ho preso.
Leggendolo mi sono accorto che all’epoca sarebbe stato un bell’aiuto, se l’avessi avuto probabilmente non sarei definitivamente passato al MSDOS (almeno non subito) quando ancora tanto avrei potuto fare con il C64 e con il Simon’s Basic (che nel frattempo mi ero procurato, a proposito: grazie Massimo per avermi prestato la tua cartridge).
Pertanto, per una sorta di sfida ed amarcord ho scritto il famoso programma che avrei dovuto/voluto scrivere in Simon’s basic, un programma essenziale, un po’ riarrangiato ed “ispirato” al listato presente nel libro, tralasciando la completezza anche in relazione al controllo degli eventuali errori di divisione per zero che può dare la valutazione di funzioni asintotiche o fratte.
Grazie al Basic V2 capii che per fare buona informatica bisognava si studiare, ma spesso era necessario avere anche gli strumenti giusti.
Passando al programma (foto 1), molto semplicemente, viene definito anzitutto l’intervallo nel quale si vuole calcolare la funzione, poi, con il comando HIRES 1,6, si passa in modalità alta risoluzione 320*200 (finalmente!); di seguito con 2 cicli FOR…NEXT vengono disegnate l’asse delle ascisse e l’asse delle ordinate ed infine, dopo aver definito nella riga 170 la funzione da disegnare, con un altro ciclo FOR…NEXT si traccia la funzione (foto 2).

Foto 1 - Listato Simons Basic

Foto 2 - Grafico Simons Basic

Come detto, e come appreso successivamente studiando meglio il manuale del Simons Basic (e del Simons Basic Extension), ci sono metodi più efficienti per disegnare ad esempio la sinusoide o le linee per gli assi ortogonali, metodi che contemplano l’uso delle funzioni DEG( o GRAD( o le funzioni VLIN ed HLIN (foto 3 e 4)

Foto 3 - Listato Simons Basic Extension

Foto 4 - Grafico Simons Basic Extension
Faccio notare che le estensioni del Simons basic sottraggono ulteriori 2.687 byte ai 30.718 bytes che rimangono dopo l’avvio del Simons Basic degli originari 38.911 bytes, ed aggiungono ulteriori 91 comandi ai già 114 previsti dal Simons Basic.
Per completezza e curiosità riporto il programma per il tracciamento delle funzioni scritto in Basic v3.5 (foto 5 e 6), il Basic che la Commodore inserì nelle macchine della serie TED, un dialetto che onestamente conosco molto poco, anche perché non ho mai avuto un computer di quella serie (all’epoca 😁).

Foto 5 - Listato Basic 3.5

Foto 6 - Grafico Basic 3.5
Come potete vedere è molto simile al Simons Basic ad eccezione della sintassi dei comandi propriamente grafici (GRAPHIC al posto di HIRES, DRAW al posto di PLOT9.
Lo stesso listato è stato interpretato senza problemi dal Basic 7 del Commodore 128 (foto 7 e 8).

Foto 7 - Listato Basic 7

Foto 8 - Grafico Basic 7
Come si dice, mangiando vien l’appetito ed ho pensato di implementare questo programmino, ripeto, solo didattico ed assolutamente incompleto, anche nel BASIC 8 della Walrusoft per il VDC del C128 e nel Basic 10 del prototipo C65… ma questo lo racconterò la prossima volta.

Nessun commento:

Posta un commento