Importanza storica e dati di vendita
Il Commodore 64 è il computer più venduto al mondo, record che si trova anche nel Guinness dei primati. Nel 1986 furono venduti più di 10 milioni di esemplari in tutto il mondo. Fu commercializzato fino al 1993, quando le unità vendute furono appena 700 mila. In totale ne sono stati venduti nel mondo oltre 17 milioni di esemplari: record che con tutta probabilità non verrà mai più superato (la natura degli attuali computer, assemblati diversamente a seconda delle esigenze dell'utente, rende praticamente impossibile ripetere un'impresa simile).
La semplicità d'uso e facilità di programmazione di questo nuovo computer era superiore sia ai suoi predecessori (il PET e il VIC-20) sia agli altri home computer concorrenti. Grazie a ciò e al suo prezzo di vendita, in breve tempo divenne il computer più venduto nella storia dell'informatica.
Il Commodore 64 venne inizialmente costruito usando lo stesso chassis del Vic-20 al fine di mantenere bassi i costi di produzione. Dopo alcuni anni, la Commodore cambiò leggermente l'estetica del computer assieme ad altri cambiamenti minori, ribattezzandolo 64C.
Nonostante il cessare della produzione, lo sviluppo di software per questa macchina continuò e ancora oggi (2011) c'è chi scrive dei giochi per il Commodore 64 o fa dei porting da giochi per telefoni cellulari.
Origini
Nel gennaio 1981, la sussidiaria della Commodore per la progettazione di circuiti integrati, la MOS Technology Inc. iniziò il progetto dei chip grafico e sonoro per la nuova generazione di console per videogiochi.
Il lavoro di progettazione per i chip fu completato in novembre, ma il progetto della console venne cancellato dopo un meeting con il presidente della Commodore, Jack Tramiel, il quale voleva che i chip formassero la base per un computer con 64 kB di RAM, il doppio del quantitativo di RAM di molti dei personal computer disponibili nel tardo 1981. Sebbene 64 Kb di RAM fossero molto costosi, Tramiel sapeva che i prezzi della DRAM stavano crollando e che sarebbero alla fine calati a un livello accettabile prima di passare alla piena produzione.
Alla squadra di progettazione furono dati meno di due mesi per sviluppare un prototipo che potesse essere mostrato all'International Winter Consumer Electronics Show, nel gennaio 1982. Il C64 fece un debutto impressionante come ricorda David A. Ziembicki: "Tutto quello che vedemmo al nostro stand erano le persone dell'Atari con la mascella spalancata, che dicevano 'Come potete farlo per solo 595 dollari?'". Il costo di costruzione di ogni C64 è stimato attorno ai 135 dollari, grazie all'integrazione verticale e, più crucialmente, ai vantaggi della fabbricazione dei circuiti integrati della MOS Technology. Questo rendeva possibile un ampio margine di guadagno con il quale lavorare.
Il nome adottato dalla casa costruttrice fu inizialmente Commodore VIC-30, ma prima della distribuzione venne cambiato in Commodore 64.
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. Cinque mesi dopo è stato presentato in anteprima mondiale all'International Summer Consumer Electronics Show del 1982 (6–9 giugno 1982 – McCormick Place – Chicago, Illinois, Stati Uniti). Nell'agosto 1982 è iniziata la vendita al dettaglio negli Stati Uniti con un prezzo di lancio di 595 dollari.
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. I visitatori non hanno potuto vederlo in funzione ma solo ammirarlo dietro una vetrinetta posizionata al centro dello stand. L'importazione e la distribuzione autorizzata del Commodore 64 in Italia è stata curata direttamente dalla Commodore International Ltd. attraverso la propria consociata italiana Commodore Italiana S.r.l. che lo ha reso disponibile per la vendita al dettaglio a partire dal marzo 1983 con un prezzo di listino di 973.500 lire, listino in cui il Commodore 64 è rimasto fino al dicembre 1993 con un prezzo ribassato più volte.
Vincere la guerra del mercato
Il C64 fronteggiò una vasta gamma di macchine concorrenti, dopo la sua introduzione nell'agosto 1982. Con un impressionante prezzo di listino e con il suo hardware avanzato, superò velocemente molti dei suoi concorrenti. Negli Stati Uniti i più grandi concorrenti del C64 erano l'Atari 800 e l'Apple II. L'Atari 800 era molto simile in termini di hardware, ma era molto costoso da costruire, il che forzò l'Atari a spostare la sua produzione nell'Asia orientale. Costrinse anche l'Atari a riprogettare le loro macchine per essere più economiche, dando la luce alla linea dei 400/800XL. L'ormai vecchio Apple II non poteva competere con l'hardware del C64, ma era molto espandibile grazie ai suoi slot interni, una caratteristica che il C64 non aveva.
Nel Regno Unito i concorrenti principali del C64 erano il britannico Sinclair ZX Spectrum e l'Amstrad CPC. Rilasciato qualche mese prima del C64, e venduto a quasi metà del suo prezzo, lo Spectrum diventò rapidamente leader del mercato. Il C64 competerà in popolarità con lo Spectrum nella seconda meta degli anni ottanta, sopravvivendo allo stesso quando ne fu cessata la produzione, nel 1992.
La chiave del successo del C64 furono le aggressive tattiche di marketing, che portarono a venderlo nei grandi magazzini, nei discount e nei negozi di giocattoli, oltre che nella rete di rivenditori autorizzati. Questo gli consentì, come al suo predecessore VIC 20, di competere con le console per videogiochi.
Nel 1983 la Commodore offrì, negli Stati Uniti, un incentivo di 100 dollari all'acquisto di un C64, ritirando un qualsiasi computer o una console per videogiochi. Il successo del VIC-20 e del C64 contribuì anche in modo significativo all'uscita di scena della Texas Instruments dal campo degli home computer (si veda TI-99/4A) e al tristemente noto crack dei videogiochi del 1983.
L'hardware
Il Commodore 64 usava il microprocessore MOS Technology 6510, con 64 KByte di RAM e 20 KByte di ROM con il KERNAL (che sta per Keyboard Entry Read, Network, And Link) e il CBM BASIC versione 2.0: audio e video erano gestiti da due chip separati. Poiché il processore 6510 poteva indirizzare solo 64 Kbyte di memoria in tutto, 20 Kbyte 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 progetto hardware originale del Commodore 64 fu opera di un gruppo di circa dodici ingegneri i quali, successivamente, lasciarono la Commodore.
Il microprocessore
Il microprocessore utilizzato era il MOS Technology 6510, una versione modificata del 6502 con alcuni registri hardware aggiuntivi nelle locazioni $00 e $01, per il registratore a cassette, che veniva gestito direttamente dal microprocessore, e per la configurazione di memoria. La frequenza di clock era pari a 0,9875 MHz. Le istruzioni più semplici prendevano almeno 2 cicli di clock, quelle più complicate 7. Quindi il Commodore 64 aveva una potenza di calcolo di una piccola frazione di MIPS. Poteva però delegare molti compiti ai due chip aggiuntivi descritti di seguito (più il CIA, Complex Interface Adapter = Adattatore di interfaccia complessa). Questa caratteristica, cioè l'architettura a coprocessori, costituì la base sulla quale venne in seguito sviluppato il primo computer Amiga dalla Hi-Toro, il quale venne poi commercializzato ed ulteriormente sviluppato dalla Commodore e spopolò negli anni ottanta e nei primi anni novanta con i successivi modelli.
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 il suddetto OS (versione 2.2) tramite una combinazione di emulazione hardware/software.
Il chip video
Il Commodore 64 possedeva un chip video (VIC-II) che poteva produrre 16 colori (L'illusione ottica di un numero maggiore di colori era ottenibile con particolari algoritmi software). Aveva una risoluzione 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 font di caratteri di default era modificabile (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 (fino a 144 in alcuni complicati Demo). I registri del VIC-II sono memory-mapped agli 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
Il supporto audio superava tutti i computer della stessa classe. Alla base c'era il chip SID 6581, progettato da Bob Yannes (il progettista del VIC-20), che poteva riprodurre tre voci hardware, permettendo la riproduzione della voce umana senza hardware aggiuntivo (vedere ad esempio il programma "SAM" - Software Automatic Mouth = "bocca automatica software"). A livello di sintesi, il SID 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 memory-mapped (essendo il SID, così come il VIC-II, il CIA, ecc. un adattatore di interfaccia, cioè mappato in memoria) agli indirizzi $D400-$D41C (decimale 54272-54300).
Sistema operativo
Il Sistema Operativo del Commodore 64 era costituito da tre componenti, separati ma interdipendenti. La particolare architettura che permetteva al C/64 una modalità di indirizzamento della RAM "al di sotto delle ROM" permetteva modifiche in software a componenti del sistema, spesso mostrate a titolo di esperimento negli articoli delle riviste specializzate. Tali modifiche, ovviamente, andavano perdute allo spegnimento.
1- Il KERNAL
2- L'editor di schermo
3- L'interprete BASIC ( Commodore BASIC )
Il KERNAL era il kernel adottato dai Commodore 8-bit, utilizzato per la prima volta nel Commodore PET 2001 (1977), via via aggiornato nel corso degli anni. Esso è un insieme di routine preposte alla gestione dell'I/O (gestione dello schermo, della tastiera e di tutte le varie periferiche). Le routine potevano anche essere chiamate dall'utente mediante una jump table standardizzata: in questo modo, le chiamate alle routine presenti su tutte le versioni del KERNAL funzionavano correttamente su tutti i modelli Commodore 8-bit (nonostante le differenti mappe di memoria). I programmi in linguaggio macchina potevano così essere scritti più rapidamente, ed avevano un ragionevole grado di portabilità. Le subroutine di IRQ (interrupt) 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.
L'editor di schermo era il programma preposto alle funzioni di immissione del testo da parte dell'utente, alloggiato nella medesima ROM del Kernal.
L'interprete BASIC, di diretta derivazione del Microsoft BASIC dell'allora neonata ditta di Redmond, 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à a disco 1541). In questo modo era possibile interagire con la macchina. L'interprete usato nel C64 è il CBM BASIC V 2.0, privo di comandi per la gestione della grafica bit-map, sprite e di gestione del suono. In ogni caso, erano disponibili come estensione il Simons' BASIC e numerosi altri interpreti, sia di tipo generico che specializzati. Tali estensioni del Basic erano in qualche raro caso disponibili sotto forma di cartridge, benché ad esempio il Simons' Basic fosse disponibile anche come software puro. La scrittura di tali estensioni diventò un'attività sufficientemente diffusa nella seconda metà degli anni ottanta, quando in Italia videro la luce alcune produzioni notevoli, tra cui le routine grafiche di Danilo Toma per disegnare in wire-frame in tre dimensioni ed un emulatore (così chiamato dalla Systems che lo produsse, ma sarebbe più corretto oggi chiamarlo "simulatore") del GW-Basic dei PC IBM. La grafica ed il suono potevano essere gestiti anche da BASIC 2.0, utilizzando le istruzioni PEEK e POKE, rispettivamente per leggere e modificare un valore nella memoria (gli adattatori di interfaccia dei sistemi Commodore 8-bit erano infatti mappati in memoria). Tecnicamente, il BASIC ha bisogno del KERNAL per funzionare, ma non vale il viceversa: programmi in linguaggio macchina, una volta lanciati, disattivavano spesso la ROM BASIC per guadagnare ulteriori 12KB di memoria contigua (gli 8 liberati dalla ROM del Basic e un'area da 4KB successiva) rispetto ai 38 originali.
Per quanto riguarda la visualizzazione dei caratteri, un chip ROM di 4K (detto "generatore dei caratteri") 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 circuito grafico (VIC-II) di leggere le forme dei caratteri sulla RAM, in modo da poter utilizzare un set di caratteri personalizzato. Una versione svedese e una giapponese del Commodore 64 comprendevano 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=) ed il tasto Shift Lock diventava "C= lock". Un cenno particolare meritano gli emulatori software scritti per Amiga, PC ed altri computer, che in qualche caso permettevano di caricare da file versioni alternative di ognuna delle ROM, includendo talora una versione ridisegnata dei caratteri di sistema.
Nel 1986 fu sviluppato, dalla Berkley Softworks, un sistema operativo con interfaccia grafica: GEOS (Graphical Environment Operating System), che ottenne un buon successo e che fu reso disponibile anche per il Commodore C128.
Progetti alternativi e quasi sempre di stampo amatoriale, come il sistema Lunix (Little Unix, da non confondersi con Linux), sono tuttora disponibili tramite siti FTP che contengono software per questa classe di computer. Fanno eccezione, per richiesta della Tulip che ne detiene i diritti, proprio le immagini delle ROM originali del sistema, scomparse anche dove presenti in precedenza.