Consigli sui libri per Vic 20 e due programmi grafici

Cari amici appassionati degli 8-bit ben ritrovati.

Proseguiamo nel parlare di Vic-20, approfittando del fatto che in questo periodo c’è l’intenzione di realizzare un nuovo arcade in “linguaggio macchina” per il piccolino di casa Commodore in versione inespansa.

Oggi nello specifico – credo siano due piccole chicche, non avendoli trovati in rete – desidero presentare due programmi da un libro del 1983 di Rita Bonelli e Daria Gianni e che ho digitato a mano sul Vic 20. Il primo è riportato in forma originale, mentre il secondo ha imposto alcune modifiche per “girare” adeguatamente ed è stato scelto anche perchè utilizza una tecnica interessante: il self-modifying code (codice automodificante), tecnica che si trova non di rado in LM, ma qui sfruttata con il Basic.

Breve parentesi: ricordo che nella prima metà degli anni ’80 Rita Bonelli per noi ragazzini di circa 10 anni che ci avvicinavamo agli home computers era una sorta di pozzo di conoscenza incredibile, visto che vedevamo vari suoi testi pubblicizzati sulle rivisite per le macchine di Commodore (ne ha scritti anche per quelle di Sinclair). A quel tempo, sempre per noi per i quali ad esempio proprio un Vic 20 costituiva il primo contatto con l’informatica, la conoscenza a riguardo – specialmente nelle piccole città come quella dove sono cresciuto – era rappresentata per lo più proprio dalle riviste dedicate – mi ricordo di “Super Vic&C64” che divoravo con gli occhi e da cui ricopiavo i listati con una pazienza da amanuense. I libri disponibili in zona erano purtroppo tutti imperniati sul Basic, per chi si accostava a tale linguaggio, mentre ci si trovava nel deserto quanto a testi sul fantomatico “linguaggio macchina”. Purtroppo nelle librerie era normale procedere per ordinazione fornendo a monte i riferimenti e poi attendere a volte anche diversi mesi per l’arrivo di testi in inglese. Il tempo di Internet non era ancora arrivato e i modem erano lentisss…ss…sssimi e decisamente non una dotazione standard tra ragazzini.

Per concludere questa parentesi di “rimembranze” ecco un paio di foto proprio di “Super Vic & C64”, numeri che da allora conservo (notate che inizialmente il nome era “Super Vic”: nel corso degli anni sono avvenute più “mutazioni genetiche” per adeguarsi alle novità tecnologiche – anche se si era ancora lontani dalla frequenza degli aggiornamenti in stile Android / iOS, conseguenti agli attuali agile development, continuous integration, eccetera):

Super Vic & C64 numero 1

Super Vic & C64 numero 1 - guida immissione listati

Super Vic & C64 - il signore dei draghi - esempio di listato

Back on track: ho preparato un file .d64, un floppy virtuale caricabile ad esempio in Vice, contenente ambedue i listati; il primo illustra il modo multicolor, mentre il secondo l’alta risoluzione.

Faccio un piccolo riassunto: il Vic 20 ha un chip grafico (6561) che supporta 22×23 celle distinte a schermo, per un totale di 506 bytes. Ogni posizione schermo è a sua volta una matrice di 8×8 pixels. Il Vic 20, contrariamente al successivo C64, non offre sprites hardware, per cui per programmare grafica (tra cui i giochi, naturalmente) è necessario ridefinirne il set caratteri (la macchina adopera come modalità predefinita il generatore caretteri in ROM, ma è possibile, alterando alcuni registri, indicare al computer che si vuole impiegare un range di memoria in RAM, dunque modificabile a piacimento dallo sviluppatore). E’ necessario letteralmente riempire le locazioni con i valori decimali (o, lavorando in Assembly, anche in hex) corrispondenti ai patterns di pixel. All’epoca, da ragazzini, lo facevamo su carta. Detto questo, ci sono due modalità con cui usare la grafica ridefinita dall’utente (UDG o UDC – user defined graphics/characters) : quella “in alta risoluzione” e la “multicolor”. La prima offre una risoluzione (non toccando i registri del Vic-I e dunque operando con le dimensioni schermo standard) di 176×184 pixels, ma i caratteri ridefiniti possono avere solo – per ogni singola cella – due colori: sfondo e il loro proprio colore carattere, quest’ultimo da impostare per singola cella nella cosiddetta mappa colori (color matrix). L’altra modalità, illustrata dal primo programmino che trovate nel .d64, è quella multicolor, dove si sacrifica metà della risoluzione sull’asse delle ascisse per avere un maggiore numero di colori per singola cella: quattro. I patterns di bit diventano diversi: gli 8 bit di una riga di una cella sono considerati a coppie, dunque ci sono proprio 2^2 = 4 combinazioni possibili.

Ecco come si presenta la schermata “lanciando” il programma “multicolor”:

Si può vedere come una singola cella abbia più dei due colori caratterizzanti l'”hires”.

Il secondo esempio, presente sempre nello stesso .d64, illustra invece l'”alta risoluzione”. Il programma è sempre per Vic inespanso, configurazione su cui ci concentriamo in quanto è la più diffusa tra chi possiede il “piccolino” in “carne ed ossa”. Per motivi di memoria, dunque (abbiamo a disposizione pochissimi KB), è necessario ridurre le dimensioni della video matrix a 11 righe.

Il programma vi chiede di quale funzione volete tracciare il grafico (due esempi a caso: x^2 – x^3 oppure cos(x)*2*cos(x/2)); successivamente vi chiede di indicare i limiti inferiore e superiore di dominio (es: -1000 +1000 nel primo caso, oppure 0 e 6.28 nel secondo), infine se volete sovrapporre il risultato alle visualizzazioni precedenti, cosa utile per comparative (anche se le scalature sono diverse, vista appunto la possibilità di indicare differenti domini).

Se volete giocare un po’ con i listati, li potete scaricare qui . Sono stati tratti da un libro del 1983 (che vedremo meglio tra poco nei consigli sui libri); il secondo listato, ripeto, è però stato modificato in quanto a me non funzionante correttamente (forse a causa di sviste in fase di stampa, non rare al tempo, oppure alla non ottimale intelliggibilità della pagina stampata).

 

Tocchiamo adesso il tema centrale di oggi e parliamo un po’ proprio dei libri sul Vic 20:

innanzitutto consiglio di partire dal manuale originale Commodore, in quanto è un’ottima, semplice e veloce introduzione alla macchina

Vic 20 manuale italiano Commodore - nonsolo8bit.it

 

Una volta letto questo manualetto, secondo me uno dei migliori libri in italiano è “Alla scoperta del Vic 20” di Rita Bonelli e Daria Gianni, del 1983 (Jackson editore). E’ proprio questa la fonte da cui sono tratti i due programmi visti in precedenza. Questo testo approfondisce molto bene i dettagli riguardanti l’hardware, esaminando il chip video 6561, i due chip I/O 6522 (VIA – Versatile Interface Adapter), spaziando dalla lettura del joystick, ai paddles e alla light pen, ad esempio. Esamina il registratore a cassetta, il floppy disk drive, i comandi DOS, la BAM, trattando poi l’interprete Basic e le routines Kernal, introducendo infine anche la cartuccia VICMON (ed altre), che consente di fare più propriamente l’ingresso nel mondo del microprocessore 6502. Cosa buona sono i numerosissimi esempi che la coppia Bonelli-Gianni fornisce: ci sono  ottimi spunti su alcune tecniche di programmazione per questo home computer.

Alla scoperta del Vic 20 Bonelli-Gianni Jackson 1983

 

Proseguendo (tutti i testi che seguono sono in inglese), si riparte dal riferimento “naturale”, cioè la “Vic 20 Programmer’s Reference Guide” di Commodore

Programmer's Reference Guide Vic 20

E’ un testo praticamente completo. Se non erro qualche edizione ha qualche piccolo errore qua e là, ma sono dettagli assolutamente trascurabili di fronte alla miniera di informazioni che racchiude. Un “must”.

Non mi fermo però alla PRG, propongo infatti alcuni altri titoli, in quanto secondo me sempre molto buoni: innanzitutto “Vic Revealed” di Nick Hampshire, uscito nel 1982 e che se non ricordo male è anche il libro su cui Jeff Minter, che ha sfornato un bel po’ di titoli imperniati sulla sua incessante “lllllama-mania”, proprio con questo si è “fatto le ossa”

Vic Revealed - Nick Hampshire

 

infine “Mastering the Vic” del trio Jones – Coley – Cole: un’altra miniera di informazioni tecniche ben curate

Mastering the Vic - Jones Coley Cole

 

Con questi testi si fa letteralmente del “body-building”, anzi “mind-building”, in materia di Vic 20: affrontano senza esitazione il lato hardware, come del resto è naturale che sia per le macchine di un tempo, quando la scarsità di memoria e di conseguenza di tools evoluti “costringeva” a tuffarsi nei meandri di registri, temporizzazioni, cicli macchina e affini (in realtà proprio questo può essere interessante: pensare e realizzare soluzioni software molto più in low level e con limiti architetturali o di prestazioni; se si pensa all’informatica che ha accompagnato svariate missioni spaziali del passato ci si rende conto di quanto sia in realtà concretizzabile con mezzi che ad un occhio odierno, probabilmente almeno in questo anche inesperto, risultano pressochè risibili).

Sicuramente per chi intende avventurarsi in questo viaggio, che io ritengo assolutamente entusiasmante in quanto come detto permette di andare a vedere cosa accade “sotto il cofano”, questi testi sono un insieme molto valido e rappresentativo.

In futuri appuntamenti torneremo comunque anche sul tema libri e ne vedremo assieme altri, altrettanto interessanti.

Alla prossima e buon retro computing!

 

2 responses to “Consigli sui libri per Vic 20 e due programmi grafici”

  1. Vox Humana says:

    Sono “atterrato” su questa pagina per caso, felice nel constatare che esista ancora qualcuno che dia valore alla programmazione ottimizzata per spazio e prestazioni, ma soprattutto che mi riporti ad un tempo in cui la microinformatica apriva il cuore. Non commerciale, orientata al futuro, proiettava in un mondo per allora avveniristico, profondamente diverso da ciò che è ora.

    Ottenni “VIC REVEALED” da un tale che abitava ad oltre 800 km di distanza dalla mia città, contattato in seguito ad una sua inserzione su Bit, il quale mi avrebbe spedito il libro purchè gli avessi tradotto due capitoli di esso. Potevo fare le fotocopie del libro, e rispedire questo più i capitoli tradotti. Ancora a distanza di trentasei anni sono stupito della fiducia che il tizio riponeva nel prossimo…

    Fu un testo fondamentale, ma altrettanto fondamentale fu “Programmazione del 6502” di Rodnay Zaks. Non avevo il “Monitor Linguaggio Macchina” e lo studio del testo di Zaks mi consentì di scrivermi un disassemblatore (un attrezzo molto rudimentale); questo, insieme alla mappa di memoria ed al funzionamento del registratore a cassette riportati nel libro di Hampshire, mi consentì la prima “sprotezione” di un programma su cassetta, facendo un figurone con gli amici. Il programma si chiamava “SWARM”.

    La protezione consisteva in un’istruzione RTS contenuta nell’header (il “titolo”) letta dal registratore. Il buffer cassetta era 128 caratteri, ma venivano visualizzati a schermo solo i primi 20 (mi pare fossero 20) così, se nel redistrare sul nastro il programma in memoria non veniva inserito quel carattere (invisibile e di cui non si sopettava l’esistenza) il programma, che conteneva un salto incondizionato all’ultima locazione del buffer, si bloccava. Bei tempi…

    Grazie per questo salto nel passato, grazie davvero! E complimenti per la tua competenza!
    Grazie ancora.

    • Enrico says:

      Ciao, grazie a te per il commento e per avere condiviso la tua interessante storia riguardante il Vic 20. A quei tempi disporre di testi di qualità era davvero come trovare mosche bianche, per cui oltre al bell’aspetto riguardante la fiducia che hai citato, per gli estimatori il poter disporre in quegli anni dei due libri da te menzionati costituiva un’emozione non da poco. Complimenti sia per la scrittura del disassemblatore, operata al tempo in autonomia, che per il patching di Swarm conseguente al “reversing” dell’utilizzo del buffer del registratore a cassetta. Grazie a te, ciao!

Leave a Reply

Your email address will not be published. Required fields are marked *