Commodore 64 Floppy Disk Drive 1541 Monitor Model1702
Il Commodore 64 ( C64, CBM 64, C=64) è un home computer della Commodore Business Machines Inc. commercializzato dal 1982 al 1994.
Fu immesso sul mercato due anni dopo il Commodore VIC-20, con capacità di memoria, grafiche e sonore superiori rispetto a quest'ultimo, oltre a una buona compatibilità con le sue periferiche. La macchina venne venduta sino al fallimento della società, ed è stata la più venduta nella storia dell'informatica, con diversi milioni di unità prodotte e vendute. Il successivo Commodore 128 ne mantenne la compatibilità hardware e software grazie a una modalità dedicata.
Il progetto e la realizzazione
La società MOS Technology Inc. di proprietà della Commodore International iniziò a progettare un nuovo chip dalle stupefacenti caratteristiche grafiche e sonore. Il presidente della Commodore, Jack Tramiel, aveva previsto ampi margini di guadagno sia perché il costo di costruzione ammontava a soli 135 dollari al pezzo, sia perché il lavoro di progettazione per i chip sarebbe durato relativamente poco tempo e ultimato entro novembre 1981.
La presentazione al pubblico
Il Commodore 64 è stato annunciato all'International Winter Consumer Electronics Show del 1982 (7–10 gennaio 1982 – Las Vegas Convention Center – Las Vegas, Nevada, Stati Uniti) durante il quale ne è stato anche mostrato un prototipo. Nell'agosto 1982 è incominciata la vendita al dettaglio negli Stati Uniti con un prezzo di lancio di 595 dollari. Il Commodore 64 venne inizialmente costruito usando lo stesso chassis del VIC-20 al fine di mantenere bassi i costi di produzione, poco dopo venne dotato di un proprio case, simile a quello del VIC 20 ma di diverso colore.
In Italia il Commodore 64 è stato presentato in anteprima allo SMAU del 1982 (17–23 settembre 1982 – Fiera di Milano – Milano) dove Commodore International Ltd. era presente ufficialmente con un proprio stand.[1] I visitatori non poterono vederlo in funzione, visto che la macchina era spenta e dentro una vetrinetta posizionata al centro dello stand. L’importazione e la distribuzione autorizzata del Commodore 64 in Italia venne curata direttamente dalla Commodore International Ltd. attraverso la propria consociata italiana Commodore Italiana S.r.l. che lo rese disponibile per la vendita al dettaglio a partire dal marzo 1983 con un prezzo di listino di 973.500 lire.
Il prezzo di base fu poi portato a 799.000 lire in abbinamento alla rivista "Basic".
Da lì in poi il "biscottone" superò per vendite lo ZX Spectrum.
Caratteristiche tecniche
In questo dettaglio della scheda madre sono visibili in alto la PLA, che pilota i Chip Select degli integrati e commuta i banchi di memoria, a destra il SID e, a sinistra, il processore.
Il C64 utilizzava come microprocessore il MOS Technology 6510, con 64 kB di DRAM e 20 kB di ROM con il KERNAL e con interprete BASIC in versione 2.0, mentre la grafica e il sonoro disponevano ognuno di un processore dedicato: il video era gestito dal MOS VIC-II e l'audio dal MOS SID. Poiché il processore 6510 poteva utilizzare un metodo di indirizzamento capace di gestire 64 KB di memoria in tutto, 20 kB della RAM erano nascosti dalla ROM. Un registro permetteva di mappare in memoria la RAM nascosta escludendo la ROM, cosa molto utile nei programmi assembly che non avevano bisogno dell'interprete BASIC. Il C64 poteva essere collegato alla presa per l'antenna di un comune televisore. Il segnale emesso era secondo standard diversi e su canali diversi nei vari Stati del mondo: in Italia si utilizzava il canale 36 della quinta banda (UHF), tenuto libero dalle trasmissioni televisive proprio per non avere interferenze con videoregistratori o altri apparati video che potevano essere usati in casa. Vennero anche prodotti dei monitor da parte della stessa Commodore, da collegare all'uscita A/V su un connettore DIN a 5 poli.
Il microprocessore
Lo stesso argomento in dettaglio: MOS 6510.
Il microprocessore utilizzato fu il MOS 6510, una versione modificata del 6502 con alcuni registri hardware aggiuntivi nelle locazioni $00 e $01 per il datassette, che veniva gestito direttamente dal microprocessore, e per la configurazione di memoria. La frequenza di clock era pari a 1 MHz. Le istruzioni più semplici prendevano almeno due cicli di clock, mentre quelle più complicate sette. Il Commodore 64 aveva una potenza di calcolo di una piccola frazione di MIPS, poteva però delegare molti compiti ai due chip dedicati per audio e video.
Esistevano anche delle schede aggiuntive Z-80, che consentivano di utilizzare lo Zilog Z80 (evoluzione dell'Intel 8080A) sul Commodore 64. Una di queste era la cartuccia CP/M Z80 della Commodore che permetteva di utilizzare tale sistema operativo tramite una combinazione di emulazione hardware/software.
Il chip video
Il Commodore 64 possedeva un chip video (MOS VIC-II) che poteva produrre 16 colori, con la possibilità di creare l'illusione ottica di un numero maggiore di colori, ottenibile con particolari algoritmi software. Aveva una risoluzione video massima di 320 x 200 punti nel modo "hi-res" (2 colori possibili per ogni cella 8 x 8), e di 160 x 200 nel modo "multicolor" (4 colori possibili per ogni cella 4 x 8, con pixel di larghezza doppia). Il modo testo forniva una visualizzazione di 40 colonne per 25 righe. Il tipo di caratteri di default era modificabile, poiché bastava ordinare al circuito grafico di prelevare le definizioni dei caratteri dalla RAM anziché dalla ROM. Il chip gestiva fino a 8 sprite hardware, cioè delle forme grafiche facilmente gestibili dal chip per ottenere immagini e animazioni, disegnate sopra allo schermo tradizionale. Il VIC-II era capace di generare un interrupt in una qualunque linea di scansione del video desiderata. Questo permetteva al programmatore di riprogrammarlo "al volo" in modo da usare un set di parametri diverso per zone diverse dello schermo, per esempio per riutilizzare un'altra volta gli 8 sprite, avendone così 16 o anche più disponibili sullo schermo. I registri del VIC-II sono mappati negli indirizzi di memoria $D000-$D02E (in decimale 53248-53294), quindi nella configurazione normale la RAM a quegli indirizzi non era disponibile contemporaneamente ai registri del VIC-II.
Il chip audio
Alla base c'era il chip MOS SID 6581, progettato da Bob Yannes, che poteva riprodurre tre voci hardware, permettendo la riproduzione della voce umana senza hardware aggiuntivo. A livello di sintesi, il processore costruiva i suoni a partire da quattro forme d'onda basilari - a Impulsi o Quadra, Triangolare, a Dente di Sega, Rumore Bianco - più l'ADSR. Il numero di voci poteva essere "aumentato" mediante tecniche software che aggiungevano campionamenti audio PWM, perché il SID poteva anche campionare segnali analogici, con risoluzione di 4 bit. Anche i registri di controllo del SID, come quelli del VIC-II, erano mappati agli indirizzi $D400-$D41C (decimale 54272-54300).
Il sistema operativo
Schermata iniziale all'accensione del computer.
Il sistema operativo del Commodore 64 era costituito
da tre componenti, separati ma interdipendenti, ovvero:
Il KERNAL;
Il monitor in linguaggio macchina;
L'interprete BASIC.
Il KERNAL era il kernel adottato dai computer Commodore a 8-bit, utilizzato per la prima volta nel Commodore PET 2001; esso è un insieme di routine preposte alla gestione dell'input/output (ovvero dello schermo, della tastiera e di tutte le varie periferiche). Le routine potevano anche essere chiamate dall'utente mediante una jump table standard: in questo modo, le chiamate alle routine presenti su tutte le versioni del KERNAL funzionavano correttamente su tutti i modelli Commodore a 8-bit (nonostante le differenti mappe di memoria). I programmi in linguaggio macchina potevano così essere scritti più rapidamente, e avevano un ragionevole grado di portabilità. Le subroutine di IRQ (interrupt request) e NMI (non-maskable interrupt) erano collocate in questa ROM: per evitare un blocco del sistema, i programmi che accedevano in lettura alla RAM sottostante vi dovevano piazzare precedentemente una finta routine NMI e disattivare l'IRQ. Il bus era concepito in modo tale che le scritture avvenivano in RAM anche quando la lettura era possibile dalla ROM. Il software scritto in linguaggio macchina, una volta lanciato, disattivava spesso la ROM BASIC per guadagnare ulteriori 12 kB di memoria contigua (gli 8 liberati dalla ROM del Basic e un'area da 4 kB successiva) rispetto ai 38 originali.
Il monitor in linguaggio macchina era il programma preposto alle funzioni di immissione del testo da parte dell'utente, alloggiato nella medesima ROM del kernel.
Il BASIC all'epoca della commercializzazione il C64 possedeva la versione 2.0 del Commodore BASIC, la stessa del predecessore Commodore VIC-20, per ridurre i costi. Esso si appoggiava al KERNAL per il funzionamento, era di diretta derivazione del Microsoft BASIC e consentiva all'utente di scrivere i programmi in BASIC, e più in generale di interagire con il sistema operativo, immettendo dei comandi nel modo diretto (come il comando LOAD per caricare un programma, oppure i comandi di gestione dell'unità Commodore 1541). In questo modo era possibile interagire con la macchina. Il BASIC del C64 era privo di comandi per la gestione della grafica bitmap, sprite e di gestione del suono. In ogni caso, malgrado il Commodore BASIC fosse usato anche per dare ordini al sistema operativo e alle periferiche, tale linguaggio non offriva alcun comando grafico e sonoro diretto, e tali potenzialità potevano essere sfruttate solamente con i comandi PEEK e POKE unitamente a lunghi inserimenti di dati in formato numerico decimale. Per questa ragione nacquero diverse estensioni del BASIC del Commodore 64 realizzate da terze parti, come il Simons' BASIC (che aggiungeva 110 nuovi comandi), la cartuccia Super Expander (che aggiungeva 32 comandi) e Ultrabasic della Abacus del 1983 (che aggiungeva 50 comandi).
Per quanto riguarda la visualizzazione dei caratteri, un chip ROM di 4k conteneva le bitmap 8x8 del particolare doppio set di caratteri di questi computer, in grado di offrire due tipi diversi di visualizzazione: maiuscolo/simboli (default all'accensione) e minuscolo/maiuscolo, con la posizione delle maiuscole e minuscole scambiata rispetto allo standard ASCII. Tali caratteristiche sono ereditate direttamente dal VIC-20. Era possibile ordinare al MOS VIC-II di leggere le forme dei caratteri sulla RAM, in modo da poter utilizzare un set di caratteri personalizzato. La versione svedese e una giapponese del C64 comprendeva una differente ROM dei caratteri e le necessarie modifiche al Kernel per gestirla. La versione giapponese aveva i caratteri locali collocati al posto dei simboli accessibili tramite il tasto modificatore col marchio Commodore (C=) e il tasto Shift Lock diventava "C= lock".
Come in tutti i dialetti del Microsoft BASIC, il comando SYS permette di eseguire codice in linguaggio macchina situato a partire da un qualsiasi indirizzo di memoria (punto d'ingresso). Il sistema operativo fornisce molti indirizzi con routine di sistema predefinite. Ad esempio era molto noto il comando SYS 64738, che provoca il reset software della macchina, utile in quanto il C64 non ha un pulsante di reset.