Articolo pubblicato sul n. 18 di MCmicrocomputer (Edizioni Technimedia Srl - Roma) nell'aprile 1983

MCmicrocomputer


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.Copertina del numero di MCmicrocomputer contenente l'articolo
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...


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

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