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