Articolo pubblicato sul n. 16 di
MCmicrocomputer
(Edizioni Technimedia Srl - Roma) nel febbraio 1983
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,
dopo
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
in
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.
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...
Articolo pubblicato
su
www.digiTANTO.it - per ulteriori informazioni
clicca qui
|