Articolo pubblicato sul n. 16 di MCmicrocomputer (Edizioni Technimedia Srl - Roma) nel febbraio 1983

MCmicrocomputer


Commodore Vic-20:
Grafica... più della scheda

di Andrea de Prisco

A distanza di soli due numeri di MC, ritorniamo sul tema di grafica ad alta risoluzione sul VIC-20 per due motivi. II primo riguarda le diverse telefonate ricevute da utenti VIC che, nel tentativo di battere il programma apparso sul n. 14 a pago 93, Copertina del numero di MCmicrocomputer contenente l'articolodopo aver digitato POKE 44,36 otteneva- no il blocco totale del sistema. Tale inconveniente, che peraltro non si manifesta sempre, può essere risolto in due modi: o battere normalmente il programma, registrarlo su nastro e rileggerlo dopo aver digitato POKE 44,36, oppure digitare PO- KE 44,36 e POKE 46,36 prima di batterio per spostare sia il limite inferiore della me- moria, sia l'indirizzo di inizio delle variabili numeriche. In quest'ultimo caso non é necessario alcun trasferimento tempora- neo su nastro e si può dare il RUN subito. Purtroppo il tutto funziona solo se si adopera l'espansione di memoria della AM England (in contenitore rosso, distribuita dalla G.B.C.). Non sappiamo il perché, ma inserendo quella originale Commodore, dopo aver spostato i limiti, alla richiesta RUN il sistema risponde Sintax Error. II secondo motivo, e da ciò il titolo dell'arti- colo, riguarda la possibilità di creare un ambiente di grafica con definizione maggiore di quella della Super Expander. I pixel sono ben 30720 contro i 25600 della scheda grafica. II metodo adoperato é un po' complesso in quanto la mappa video e
la mappa dei caratteri sono fuse assieme. A partire dall'indirizzo 4096 inizia la mappa dei caratteri Ram e fino a 7679 sono mappati i primi 224 caratteri 16 x 8. Dall'indi- rizzo 7936 a 8191 i caratteri da 240 a 255, sempre 16 x 8, secondo il codice di schermo (diverso da codice ascii). Abbiamo per l'appunto saltato un pezzo di mappa caratteri dove costruiremo la nostra mappa video. Chiaramente anche quest'ultima avrà, per così dire, un salto. In essa saranno stampati in file verticali i caratteri da O a 223 e da 240 a 255. Avremo a disposizione una "griglia" 192
x 160 che rappresenta la massima finestra rettangolare di grafica ad alta risoluzione implementabile sul VIC- 20. Naturalmente chiunque sia in grado di dimostrare il contrario ben venga: non di- spiacerà a nessuno avere ancora molti pixel La mappa della memoriain più. Il listato l descrive tale implementazione, per plottare i vari punti dopo aver assegnato a X e a Y le coordinate basta richiamare la subroutine a partire dalla linea 60. Anche in questo caso si dovrà dapprima inizializzare la pagina grafica per mezzo delle linee 10-50. I MATH PACK
Come applicazione di "super grafica" è stato preparato un programma matematico che permette lo studio di funzioni continue del tipo y = f(x): funzioni reali di variabile reale. È stata scelta una finestra HGR di 168 x 176 pixel per un totale di 29568 punti singolarmente indirizzabili che, pur essendo leggermente meno definita della precedente, ha il vantaggio di essere un po' più larga che alta. Ciò facilita il tracciamento di funzioni trigonometriche che ten- dono appunto ad essere "lunghe" più che "alte". Digitando RUN, subito dopo l'inizializzazione della pagina grafica, appare il menù. E possibile tracciare il grafico di una funzione; ricercare i punti di intersezione con l'asse X (i cosiddetti zeri); calcolare massimi e minimi relativi di una funzione; il valore di y. y' e y" in un determinato punto; approssimare l'integrale definito in un intervallo col metodo delle suddivisioni. Tutte le tecniche impiegate per lo studio non hanno chiaramente la pretesa di sostituire il metodo analitico-manuale; non vi stupite se con funzioni particolarmente "assurde" qualche zero non venga trovato o un massimo sia scambiato per un minimo. Diciamo che per le normali applicazioni studentesche va tutto liscio come l'olio. Ritornando al menù, con l'opzione l è possibile input-are la funzione da studiare.
La mappa della memoria - Clicca per ingrandire...Deve obbligatoriamente essere funzione' della variabile X e quindi per y=sinx si dovrà rispondere SIN(X). L'opzione 2 permette di impostare l'intervallo di cui è richiesto il grafico. Questa operazione è obbligatoria, e va ripetuta se si cambia funzione. L'opzione 3 serve appunto per trac- ciare il grafico di f. Si può scegliere se far disegnare o meno gli assi cartesiani (ammesso che la funzione l'intersechi) e se si vuole, si può sovrapporre il grafico alla funzione precedentemente tracciata.
Per far sì che la funzione occupi in altezza tutti i 172 pixel disponibili, vengono dapprima calcolati i punti di massimo e minimo assoluto e poi, con semplici applicazioni lineari, ogni y è plottata proporzionalmente nel punto giusto dello schermo. Se è richiesto che la funzione sia sovrapposta alla precedente, come coefficienti di dilatazione o contrazione del campo sono adoperati quelli relativi alla funzione prima tracciata per non falsare la scala. L' opzione 4 riguarda l'integrazione della funzione in memoria, nel senso di area sottesa alla curva e non (purtroppo!!!!) di primitiva di f. Per calcolare l'area, oltre all'intervallo bisogna indicare il numero di suddivisioni da effettuare. Un maggior numero significa una maggiore precisione di calcolo, ma anche un maggior tempo di computazione. Generalmente 100-200 suddivisioni sono più che sufficienti. Se da menu è schiacciato il tasto 5, è possibile input-are un qualsiasi punto dell'asse x dove è definita f e conoscere il valore della funzione, della derivata prima e della derivata seconda in quel punto. Per tornare al menu cancellare il video con SHIFT +CLR/HOME e battere [RETURN]. Con l'opzione 6 e 7 vengono ricercati massimi minimi e gli zeri della funzione. In tutti i casi bisogna indicare l'intervallo in cui va effettuata la ricerca. Terminata la fase, dopo l'apparizione della stringa "STOP!", con la pressione di qualsiasi tasto si ritorna al menu. Ciò vale anche quando si vuole tornare da modo grafico a modo testo. L'opzione 8 esegue esattamente il contrario: da menu si passa al grafico precedentemente tracciato. Per sveltire al massimo queste operazioni, come quella di ripulire all'istante i quasi 3700 byte della pagina grafica, sono state aggiunte diverse routine in linguaggio macchina, come si può notare dalla presenza di DATA e di comandi di SYS. Per quel che riguarda la precisione di calcolo c'è da dire che l'aritmetica del VIC non è eccezionale: al fine di evitare lunghe file di decimali incorretti, ogni risultato è approssimato alla quarta cifra dopo la virgola. La funzione FNAR(X) provvede per l'appunto a tale scopo. Buon divertimento!


Impaginato originale...


Clicca per ingrandire... Clicca per ingrandire...

Articolo pubblicato su www.digiTANTO.it - per ulteriori informazioni clicca qui