Articolo pubblicato sul n. 18 di
MCmicrocomputer
(Edizioni Technimedia Srl - Roma) nell'aprile 1983
Commodore Vic-20:
Math Pack Hard Copy
di Andrea de Prisco
Il
Programma "Math Pack" e la routine di grafica 160 x 192
apparsi sul numero 16 di MC hanno suscitato fra i lettori
notevole interesse. D'altronde il VIC, per la sua innocente
particolarità di definire una nuova mappa dei caratteri in
RAM, apre continuamente nuove frontiere a chiunque voglia in
qualche modo sfruttarne le capacità grafiche nascoste.
Ritorniamo ben volentieri sul tema spinti anche dal cospicuo
numero di telefonate e lettere pervenuteci in redazione da
vari utenti VIC.
Fra i molti che esponevano i loro problemi o consigliavano
qualcosa di nuovo, segnaliamo il lettore Adriano Vertua di
Roma che ha magistralmente risolto la malefica
incompatibilità fra il fatidico POKE 44,36 e l'espansione di
memoria da 16K, originale Commodore: "La soluzione del
problema - scrive Vertua - è digitare oltre a POKE 44,36
anche POKE PEEK (44) * 256 + PEEK (43) -l,0 e infine NEW
(senza alcun messaggio di errore!). Ciò accade perché
l'istruzione NEW mette a zero i primi due byte del link del
Basic, ma il byte che precede questi due deve contenere
zero, pena il messaggio d'errore. Con questo piccolo
accorgimento i due programmi possono essere caricati senza
problemi (pur non avendo la 16K Ram della AM)..."
Ciò permette inoltre di implementare "Math Pack" anche per
l'exp. da 8K Ram (AM o Commodore), secondo le nuove linee
del listato l, digitando, prima di battere o rileggere da
nastro il programma, la sequenza "Vertuana" POKE 44,32:
POKE8 l 92,0:NEW.
Consigliamo la modifica alle linee 100 e 105 (vedasi listato
1), anche agli utenti "VIC + 16K", per due motivi:
standardizzare una volta per tutte la sequenza sopra
descritta, sia per l'exp. da 8 che da 16K, indifferentemente
AM o Commodore, e di fatto risparmiare l K di memoria
spostando di soli 4K (lo stretto necessario) il top.
La sequenza è utilizzabile anche per caricare la routine di
grafica 160 x 192 apparsa anch'essa sul n. 16, così come per
qualsiasi altro programma per il quale occorre spostare
l'inizio del Basic, ad esempio, per creare una nuova mappa
Ram per i caratteri.
Ricapitolando, qualunque sia il taglio della vostra
espansione di memoria (8,16 o 24K), qual sia il programma a
carattere grafico da inserire: "POKE 44,32: POKE 8192,0
:NEW", un colpo sul [RETURN] e... addio problemi!
Math Copy
Le due stampanti "dedicate" al VIC, la Commodore 1515 (Seikosha
GP80 versione "custom' e la Seikosha GP-l00VC (l'ultima
arrivata), grazie a particolari caratteri di controllo,
hanno la possibilità di plottare punti singoli sulla linea
di stampa, permettendo così, naturalmente tramite opportune
routinette, di disegnare su carta grafici HGR, istogrammi e
caratteri creati ex novo per qualsiasi scopo. Per ogni riga
di stampa, si ha a disposizione una matrice di 7 x 480 pixel
su di un foglio formato A4 è possibile sfruttare una matrice
di oltre 330000 punti!!
Come si può notare, la definizione grafica della stampante
va molto oltre quella del VIC.
Sfrutteremo tali possibilità grafiche: il listato 2 riassume
le linee da aggiungere al "Math Pack" per ottenere l'hardcopy
della funzione plottata sullo schermo. Come si può notare
dalla linea 715 (sempre del listato 2), il salto a questa
subroutine avviene allorché è premuto il tasto "freccia a
sinistra" quando la funzione è visualizzata sullo schermo:
in pratica o dopo l'opzione 3 del menu o dopo l'opzione 8.
Inutile dire che se si impartisce il comando a stampante
spenta o, peggio, a stampante assente (!), un messaggio
d'errore "fantasma" (non leggibile perché in ambiente di
grafica) distruggerà parte del disegno tracciato e bisognerà
ricominciare da... RUN.
L'intera operazione di copy, essendo un continuo pesca e
ripesca tra le celle di memoria, finisce per durare parecchi
minuti. Se a ciò aggiungiamo l'esasperante lentezza della
stampante, c'è davvero da... andarsi a fare un buon caffè:
questa volta però senza super Caffetter Cartridge, essendo
il Vic occupato a "Print-are".
Le altre grafiche
Per non lasciare a "boccasciutta" coloro i quali non hanno
digitato il "MATH PACK" o, meglio, per non venir meno a
esigenze un po' più generali del tracciato su carta di una
funzione matematica, sono state preparate altre 3 routine
per l'hardcopy della pagina 160 x 160 della scheda grafica o
della grafica 160 x 192 presentata sul n. 16.
Per la prima delle due, tramite i programmi dei listati 4 e
5, è possibile eseguire rispettivamente il copy ingrandito
fino a occupare un intero foglio di stampa, o addirittura,
col programma VIC POSTER, ottenere un ingrandimento su 4
fogli continui da separare e unire con un po' di nastro
adesivo a stampa ultimata.
Per quest'ultimo, il programma divide la pagina 160 x 160 in
due strisce orizzontali 160 x 80, da stampare una per volta,
sfruttando l'intero formato di stampa da 80 colonne. Occhio
solo a far ben collimare le due strisce prima di appendere
sui muri di casa le vostre opere d'arte.
Il listato 3 descrive, di contro, la routine di hardcopy in
formato normale, come per il "Math Pack", per la pagina 160
x 160 o 160 x 192. Come facilmente osservabile, la linea 210
è incompleta: se poniamo A=4250:B= 1:C=3040:D= 160, la
routine è tarata per la scheda grafica; di contro,
A=4285:B=4:C=3648:D= 192, descrive l'hardcopy della pagina
160 x 192: da notare anche qui, il salto di 256 byte se si
supera il limite di 7679.
Di fattura un po' più complessa, il listato 4 permette, come
già accennato, di plottare su di un intero foglio di stampa,
il contenuto del videografico.
Il metodo si basa sull'esistenza, fra il set del VIC, di
alcuni caratteri semigrafici formati da l o 2 quadratini 4 x
4, disposti rispetto all'intera matrice 8 x 8,
singolarmente, nei quattro angoli o a coppia, affiancati o
diagonalmente opposti.
Giostrando sull'esistenza di questi e sul fatto che con i
rispettivi caratteri in negativo è possibile facilmente
ottenere tutte le 16 combinazioni di caratteri semigrafici,
ricostruiremo l'intera immagine della pagina grafica,
stampando opportune combinazioni di essi.
La "scelta" del carattere da stampare avviene dopo aver
analizzato quattro bit adiacenti, disposti a "quadrato",
della mappa grafica.
Veniamo ora all'ultimo problema: sul video, i pixel del
VIC20 non sono tondi, ma bensì "ovali", per la precisione
parecchio dilatati in senso orizzontale.
Sulla stampante, manco a farlo apposta, i pixel sono
abbastanza tondi se non leggermente allungati verticalmente.
Se si plotta pixel a pixel il contenuto del video sulla
carta, otterremo un'immagine contratta e certamente poco
gradevole della pagina grafica. Per la routine del listato
3, come si può notare dalla linea 300, vi è un raddoppio di
formato: ad ogni pixel del video ne corrispondono due sulla
carta.
Con questo semplice accorgimento, le proporzioni sono
praticamente rispettate, in particolar modo usando la
stampante: VIC 1515 della Commodore. Con la Seikosha
GP-100VC, avendo questa il pixel un po' più largo di quello
della sorellina, quindi meno della metà del pixel del
VIC-20, sfruttare la stessa routine vuol dire ottenere su
carta disegni un po' più dilatati orizzontalmente. D'altro
canto, non essendo possibile stampare 1.7 punti su carta per
ogni pixel sul video, è molto meglio accontentarsi!
II Programma VIC POSTER, di contro, si adatta meglio alla
"cento" che alla "quindiciquindici"; infatti, l'altezza e la
larghezza dei caratteri della prima fanno sì che le
proporzioni del risultato finale coincidano quasi
perfettamente con le proporzioni dell'immagine sullo
schermo.
Come conseguenza, sfruttare VIC POSTER con la 1515 vuoi dire
solo avere un'immagine un po' più dilatata orizzontalmente,
quindi meno fedele all'originale.
Un'ultima avvertenza: per un corretto funzionamento delle
routine presentate in queste pagine, raccomandiamo di usarle
soltanto mentre il disegno HGR da copiare è visualizzato
sullo schermo. Per questo mese è tutto. A presto!
Impaginato
originale...
Articolo pubblicato
su
www.digiTANTO.it - per ulteriori informazioni
clicca qui
|