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

MCmicrocomputer


Commodore Vic-20:
VIC Trislot

di Andrea de Prisco

Il Commodore VIC-20 ha riscosso, sin dalla sua prima uscita sul mercato, notevole successo in una larga fascia d'utenti.
Stretto parente delle cucine componibili e dei mattoncini Lego il VIC, per il suo prezzo
Copertina del numero di MCmicrocomputer contenente l'articoloal pubblico e per le sue effettive caratteristiche, si pone nella cosiddetta fascia degli Home: i computer domestici. Volete che vi prepari un buon caffé? Non ci sarà da aspettare molto: ammesso sempre che lo meritiate presto o tardi qualcuno brevetterà la Super Caffetter Cartridge detta anche VICa-Express. È questa infatti la sorte dei Personal ultradiffusi: l'essere praticamente circondati dalle più svariate periferiche che ditte, compresa la casa madre, producono.
Sulle riviste specializzate estere, già si parla per il VIC di sintetizzatore vocale, interfaccia morse per telecomunicazioni e tante nuove cartucce di giochi e utility alcune dotate perfino di slot supplementare posteriore per collegarne più d'una in “fila”. Con questo articolo ci proponiamo di presentarvi soluzioni più economiche dell'assai impegnativo acquisto del cabinet di espansione per attivare più schede contemporaneamente.
Prima di addentrarci nel merito, è bene dare uno sguardo un tantino più attento alla mappa della memoria del VIC, alle varie espansioni che useremo e alle incompatibilità software che si manifestano fra le cartucce quando sono attive contemporaneamente. Va precisato a tal proposito che tutte le incompatibilità riscontrate sono insite nel firmware e quindi non sono da addebitare ai metodi quasi casarecci discussi in questo
articolo.

La mappa della memoria

Il microprocessore adottato dalla Commodore per il governo del VIC-20 è il classico e supercollaudato 6502 già presente in molti altri personal computer anche di generazioni precedenti (Apple II, PET, ecc.). Avendo l'indirizzamento della singola locazione di memoria limitato a soli 16 bit, il numero totale di byte che il 6502 potrà gestire è dato da 2^16 ossia 65536. In altre parole, sempreché non si adottino particolari e costosissimi sistemi di switching, un calcolatore basato su questa CPU
potrà indirizzare al più 64K byte (K= 1024). La memoria centrale del VIC è appunto di tale dimensione, opportunamente ripartita in zone RAM e zone ROM. Nella configurazione La mappa della memoriadi base la RAM utente è di soli 3.5 K byte posti dall'indirizzo 4096 all'indirizzo 7679. A questi si aggiungono, sempre nella versione non espansa, soltanto altri 2.5 K RAM per la gestione del video, dei colori e l'area stack di sistema. La ROM disponibile è di ben 20K; 16 di questi, posizionati in coda ai 64, contengono il Basic e il sistema operativo; 4K servono per la mappa dei caratteri: è questa la zona dove sono "disegnati" tutti i caratteri stampabili sul video. La figura l mostra appunto la memoria del VIC in configurazione "chiavi in mano". Supponendo di voler espandere il nostro VIC con l6K RAM, la cartuccia Programmer's Aid, la grafica ad alta risoluzione e il monitor di linguaggio macchina, la mappa della memoria avrà la configurazione di figura 2. Purtroppo, e i motivi di tale scelta sono ancora inspiegati, i 3K byte di RAM offerti dalla scheda grafica sono ignorati dal Basic se in congiunzione con altri 8, 16 o 24K. .
Per quel che concerne i 4K ROM contenuti nella Super Expander, si pongono a partire dall'indirizzo 40960 nella cosiddetta area di Autostart. A differenza dei Packages Programmer's Aid e Monitor di Linguaggio Macchina, la scheda grafica non ha bisogno di essere attivata con particolari SYS. Al momento dell'accensione, il sistema operativo controlla se a partire dall'indirizzo 40964 è memorizzata la stringa chiave "A0CBM"; in caso affermativo, il controllo del flusso è passato a tale ROM che inizializza i nuovi comandi. Con lo stesso metodo, se prima dell'accensione si introduce una cartuccia gioco, quest'ultima prende il comando ignorando qualsiasi istruzione da tastiera, non pertinente il videogame. Le altre due espansioni si posizionano dall'indirizzo 24576 in poi occupando quindi il terzo blocco da 8K. Restano liberi solo 4K a ridosso del Basic per future espansioni ROM.

Tre Cartridge

Della miriade di cartucce inseribili nel VIC, oltre ai quasi obbligatori l6K RAM, le più interessanti sono certamente il Monitor di Linguaggio Macchina (ribattezzato dalla stessa Commodore VIC-MON), la Super Expander Cartridge, comunemente detta scheda Grafica, e la Programmer's Aid, una versione riveduta e riadattata della famosa ROM Toolkit del PET. Delle prime due è stata data già ampia descrizione nella prova del VIC-20 apparsa sul n. 14 di MC.
Particolarmente studiata per chi sviluppa software, la Programmer's Aid è l'espansione che arricchisce maggiormente il set di comandi, aggiungendone alcuni davvero "IN". Fra i. classici troviamo RENUMBER, per la rinumerazione di un programma contenuto in memoria; AUTO, che imposta automaticamente sul video il nuovo numero linea ad ogni Carriage-Return; DELETE per cancellare intere sezioni di Programma. Col comando MERGE è possibile invece saldare insieme due programmi, uno in memoria e l'altro caricandolo da nastro senza sovrapporlo al primo. TRACE e STEP permettono l'esecuzione rallentata di un Programma Basic con visualizzazione della linea corrente: ottimo per scoprire i bug!!! È possibile inoltre definire i tasti Fl ...F12 con il comando KEY X, "bla.bla.bla",dove X è il numero del tasto e fra apici è indicata la stringa da associargli. X compreso tra 9 e 12 indica che il tasto va premuto insieme a CTRL. Ancora per i softwaristi abbiamo:
HELP: digitato immediatamente dopo un messaggio di errore, visualizza la linea e il punto esatto dove il sistema ha trovato qualcosa che non andava.
FIND: serve per ricercare all'interno di un programma tutte le linee che contengono la stringa, lo statement, la variabile o la costante indicata nell'istruzione. (Es.: FIND GOTO oppure FIND "ANDREA")
CHANGE: con questo comando è possibile manipolare i contenuti delle linee di programma. Ad esempio CHANGE "GIORNO" , "NOTTE" sostituisce a tutte le occorrenze della stringa "GIORNO" la stringa "NOTTE". Anche per questa istruzione l'argomento potrà essere una variabile, una costante o uno statement Basic.
Interessantissima infine la possibilità offerta da CTRL Q e CTRL A di effettuare lo scroll su video dei listati Basic nei due sensi avanti e indietro. Pochissimi Personal hanno questa particolarità; oserei dire che nel VIC quasi perdona la larghezza del video limitata a 22 colonne.

Le dolenti note

Ed ora miei cari VIC-inghi, mettetevi pure a lutto: dice il Saggio "a giocar coll'espansioni saltan su l'imperfezioni!!". È evidente che la Commodore Business Machines ha dei progettisti di software che ...non vanno tanto d'accordo tra loro, così come non vanno d'accordo le loro rispettive creature. Mi riferisco alle incompatibilità esistenti tra le varie cartucce, in particolare fra la Programmer's Aid e la Super Expander che a livello software fanno praticamente a cornate. Di fatto, chi ha curato la prima delle due, non ha considerato che il Basic del VIC potesse essere esteso grazie al set di istruzioni aggiuntive della scheda grafica. Se digitiamo ad esempio FIND PLOT, con in memoria un programma che contiene tale istruzione, se ci va bene non otteniamo un bel niente, se ci va male avremo l'intero inceppamento del sistema con dolorosa e unica soluzione data dallo spegnimento e riaccensione (non troppo ravvicinate!) della macchina. Lo stesso dicasi quando si tenta lo scroll a ritroso di un listato che contiene istruzioni di Basic esteso. In generale, quando l'esecuzione di un comando di Programmer's Aid provoca l'apparizione su video di linee contenenti statement di Super Expander si ha il blocco totale del sistema. Per tutti gli altri casi (e sono fortunatamente ancora molti!!) va tutto liscio come l'olio. L'unica incompatibilità totalmente risolta riguarda le definizioni dei tasti definibili relative alle due cartridge. Quando sono tutte e due simultaneamente in linea, le definizioni cominciano a mischiarsi ottenendo un fritto misto di entrambe. Per ovviare a questo inconveniente è sufficiente digitare POKE 55.0 per abbassare leggermente il top della memoria prima di SYS 28681 che inizializza appunto la Toolkit. Grazie a questo semplice artificio, il nuovo set di definizioni è creato immediatamente prima del set della sheda grafica. A questo punto, ogni qual volta sarà effettuata un'istruzione di Programmer's Aid sarà disponibile il set di quest'ultima: premendo di contro RUN/ STOP e RESTORE saranno presenti ai tasti Fl ...F8 le definizioni della scheda grafica. Un piccolo bug è stato trovato anche nel VIC-MON quando è usato in congiunzione con un'espansione di memoria da 8 a 16K: non funziona più lo scroll a ritroso dei listati di assembler o HexDump. Ciò è probabilmente imputabile al fatto che aggiungendo RAM da 16 o da 8K, la mappa video è allocata in un'altra zona della memoria come si può notare dalle figure l e 2. In definitiva, usando più cartridge contemporaneamente non si riescono a sfruttare appieno tutte le caratteristiche delle singole cartucce. Il restante 80% però è sempre meglio che usare le quattro cartucce una per volta.

Le soluzioni economiche

La singola porta-espansioni presente sulla scheda madre del VIC-20 dispone di tutti i segnali per poter locare una qualsiasi espansione RAM/ROM in qualsiasi punto libero della memoria centrale.
Sfruttando il fatto che il VIC, come qualsiasi altro personal, in un determinato istante può accedere ad una sola locazione di memoria (e non parallelamente a più di una), è possibile attivare contemporaneamente più schede, semplicemente collegandole fisicamente tutte in parallelo..È compito del sistema rendere trasparente il fatto che funzioneranno una per volta: se ad esempio è eseguita una PEEK di 21480, sarà dato il segnale di "sveglia" alla cartuccia l6K RAM (che se è presente risponderà); se la PEEK è per la locazione 41384 a "rispondere", se presente, sarà la scheda grafica. Questo dal punto di vista logico. Per il Iato tecnico-pratico, l'unica limitazione è data dal fatto che le schede devono essere costantemente alimentate, anche quando "dormono"; e il VIC certamente non ha corrente da buttare. Fino a quattro schede in parallelo funziona perfettamente; di più non so...
Per risolvere il problema dello slot singolo sono state varate tre soluzioni in difficoltà proporzionale alle proprie capacità di ...bricolage. Tranquilli: per l'ultima, la più impegnativa ma la più elegante, abbiamo predisposto il kit. La prima riguarda essenzialmente i possessori di espansioni da 3K RAM (con grafica o senza) e di un'altra espansione ROM: il VIC-MON o la Toolkit. È possibile fondere assieme le due cartridge ottenendo quindi 3K RAM + VIC-MON o 3KRam + Toolkit. Aprendo la cartuccia da 3K RAM si notano due spazi vuoti (l nel caso della scheda grafica) atti ad ospitare ROM da 4K l'una. Nello spazio superiore è possibile inserire ROM da posizionare nel quinto o secondo blocco da 8K, nello spazio inferiore si può posizionare la ROM nel primo e terzo blocco. Naturalmente il VIC-MON o la Toolkit essendo ROM del terzo blocco, dovranno necessariamente essere poste (o l'una o l'altra) nello spazio inferiore. Per i dettagli riferirsi al riquadro di pag. __. La seconda soluzione riguarda la possibilità di inserire una qualsiasi scheda all'interno del VIC in modo da lasciare lo slot libero per altre espansioni. È stato adoperato un cavo piatto e l'unica difficoltà sta nelle saldature che dovranno essere abbastanza precise, per evitare contatti o falsi contatti (riquadro a pag. __). Adottando invece la terza soluzione è possibile costruirsi facilmente una mini motherboard capace di ospitare 3 cartridge contemporaneamente. L'unico problema è dato dalla scarsa reperibilità dei connettoria 44 contatti. Riferirsi ai dettagli al riquadro in alto. Oppure, se non volete perdere troppo tempo, potete acquistare il nostro kit già pronto.

Concludendo

Per ciascuna delle tre soluzioni proposte non è necessaria alcuna preparazione specifica. Con un po' di impegno, qualche ora di tempo libero e pochi soldi, chiunque può mettersi al lavoro. Il VIC di chi scrive, plurifotografato per questo articolo, ha dentro la scheda grafica (3K RAM + 4K ROM) con inserita all'interno a sua volta la ROM da 4K della Programmer's Aid Cartridge; una bella 16K infilata nello slot libero e... chi s'è visto s'è visto.
 

(Riquadro 1)

Clicca per ingrandire...Con la prima delle tre soluzioni consigliate è possibile inserire una ROM da 4K all'interno dell'espansione RAM da 3K. Per inserire il monitor di linguaggio macchina o la Programmer's Aid all'interno di essa, occuperemo lo spazio vuoto inferiore (vedi foto 1 e 2). L'unica difficoltà sta nel dissaldare (senza arrecare danno) la ROM dalla scheda originale e togliere lo stagno che ottura i forellini, sulla espansione da 3K. Esistono in commercio dissaldatori molto economici (meno di 10000 lire) che compiono egregiamente il loro lavoro. È consigliabile non risaldare la ROM direttamente sullo stampato, ma servirsi di un apposito zoccolo per integrato 12+ 12 piedini, facilmente reperibile sul mercato. Anche il piccolo condensatore contenuto nella cartuccia ROM va dissaldato e risaldato sulla scheda RAM nella posizione indicata dalla foto 2. Effettuate queste operazioni non ci resta che asportare, con una lametta o un taglierino, il minuscolo ponticello in prossimità del pallino n. 1 e far cadere una goccia di stagno sul pallino n. 3. In questo modo la ROM Toolkit o VIC-MON si posiziona correttamente sul terzo blocco da 8K: operazione obbligatoria dato che non è possibile rilocarla in un altro punto della mappa del VIC. Le figure 3 e 4 mostrano i "pallini" presenti sulla scheda prima e dopo il "fattaccio". Partendo dalla Super Expander Cartridge, le operazioni da compiere sono esattamente le stesse. Unica attenzione va posta alle incompatibilità software esistenti tra la scheda grafica e la Programmer's Aid, come abbondantemente discusso nell'articolo.

 

(Riquadro 2)

Clicca per ingrandire...Seconda soluzione: per incorporare una qualsiasi scheda all'interno del VIC, ci serviremo di un cavo piatto. Non è necessario effettuare tutti i 44 collegamenti fra cartuccia e VIC dato che non tutti sono utilizzati, ma variano da scheda a scheda. Aprendo l'espansione da incorporare, possiamo facilmente constatare quali contatti sono necessari. Certamente abbondare non guasta, specialmente se per alcuni contatti è dubbia la loro utilità o inutilità: al massimo avremo effettuato qualche saldatura in più. È importante non sbagliare i collegamenti. Sulla generica scheda X, guardando il lato componenti, i contatti sono numerati da destra verso sinistra con i numeri da l a 22; guardando il lato saldature la numerazione è da sinistra verso destra con le lettere dalla A alla Z. Per quel che riguarda la scheda madre del VIC, lato saldature, orientandola in modo da avere la porta espansione in alto, la numerazione è classica: da sinistra verso destra fila superiore lettere dalla A alla Z, fila inferiore numeri da l a 22. Quindi attenzione a collegare ad esempio il contatto l della espansione al contatto 1 del VIC e non ad uno dei simmetrici 22, A o Z. Le saldature, in particolar modo quelle sulla scheda madre, dovranno essere precise, eseguite con un saldatore a punta molto sottile e stagno di buona qualità. Ciò per evitare pericolose sbavature, cortocircuiti e falsi contatti.
 

 

(Riquadro 3)

Clicca per ingrandire...La terza è certamente la più "pulita e raffinata" delle tre soluzioni discusse. Si tratta per l'appunto di costruire una Mini-Mother-Board in grado di ospitare 3 cartridge qualsiasi simultaneamente. Il tutto sta nel realizzare un semplice circuito stampato a doppia faccia. Per la realizzazione di quest'ultimo, si ricorre ad una basetta in vetronite ramata su ambedue le facce, da incidere: dopo aver riprodotto il disegno su rame, la basetta va immersa in un apposito acido, in vendita presso tutti i rivenditori di componenti elettronici, che provvederà a corrodere il metallo in eccesso. Per riprodurre su rame lo schema è possibile ricorrere a diversi metodi: dalla tecnica della fotoincisione, con la quale si ottengono riproduzioni fedeli e veloci dell'originale, al ricopiare ad occhio, inchiostro alla mano, i disegni sulle due facce della basetta. Il prototipo visibile nelle foto è stato realizzato tracciando coi trasferibili tutte le piste; non è difficile trovare in vendita i tre elementi necessari: il pettine, le linee e i cerchietti. Eseguita la basetta, con un piccolo trapano si effettuano i fori per i contatti della faccia inferiore. Le saldature riguardanti la faccia superiore saranno eseguite, per semplicità, direttamente sulla faccia, avendo l'accortezza di piegare a L tutta una fila di 22 contatti di ogni connettore. La figura qui a sinistra rappresenta una sezione esplicativa. Abbiamo scelto questa soluzione (saldatura anche sulla faccia superiore) per l'impossibilità pratica, per un hobbysta, di metallizzare i fori del circuito stampato. La basetta del nostro kit prevede invece fori-metallizzati, quindi le saldature sono tutte dal lato opposto agli slot. Le singole cartridge prendono posto sulla MotherBoard come indicato nella foto in alto a sinistra, rivolgendo la scritta verso il VIC.


Impaginato originale...


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

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