# Commodore 128

Il Commodore 128 (noto anche come C128, CBM128 o C= 128) è un modello di home computer a 8 bit prodotto dalla Commodore Business Machines tra il 1985 e il 1989.
Immesso sul mercato 3 anni dopo il Commodore 64, il computer venne progettato per rimediare al fallimento della serie Commodore 264. Fu l'ultima macchina a 8 bit prodotta dalla Commodore e venne presto abbandonato a causa dell'imminente successo delle macchine a 16 bit e soprattutto della nuova piattaforma Amiga acquistata da Commodore nello stesso 1985. Nonostante avesse totalizzato un discreto numero di vendite, ed essere stato prodotto sia nel classico modello con tastiera americana sia in versioni nazionalizzate, non riuscì a raggiungere gli stessi risultati del Commodore 64.

## Storia
### Progettazione

Dopo che Jack Tramiel lasciò la Commodore agli inizi del 1984, il nuovo gruppo dirigenziale cercava un nuovo prodotto per rimediare al fallimento della serie Commodore 264 e produrre un computer che potesse rimpiazzare il C64. Durante l'estate del 1984 il progetto fu avviato e la direzione venne affidata a Bil Herd, che aveva guidato proprio lo sviluppo delle macchine della serie TED. Furono però posti dei vincoli: il computer avrebbe dovuto essere a 8 bit e avrebbe dovuto essere pronto in 5 mesi poiché doveva essere presentato al successivo CES di Las Vegas che si sarebbe tenuto nel gennaio del 1985, e avrebbe dovuto competere anche nel mercato semi-professionale come macchina per piccoli uffici.

### Primi prototipi e sviluppo hardware

Herd iniziò a lavorare a un nuovo home computer partendo da un prototipo già in fase di sviluppo denominato D128, basato sul MOS 6509 e su un nuovo chip video monocromatico denominato MOS 8563, ma successivamente rivoluzionò quasi completamente il progetto ripartendo da uno schema hardware più simile a quello del Commodore 64. Durante questa revisione gli ingegneri che avevano sviluppato l'8563 offrirono a Herd un modello revisionato con l'aggiunta del supporto al colore: questa versione fu scelta come chip grafico della nuova macchina. Un paio di settimane dopo l'inizio dello sviluppo la dirigenza Commodore decise che il nuovo computer avrebbe dovuto essere compatibile anche con il C64: Herd fu costretto, perciò, a rivedere in corso d'opera il progetto della macchina. La CPU non destava preoccupazioni: scelse il nuovo MOS 8502, una versione migliorata del 6510 perciò capace di eseguire tutto il codice di quest'ultimo. Poiché il chip grafico era stato pensato per un computer che potesse essere usato anche in un ufficio, per ottenere la grafica multicolore, il supporto agli sprite e l'audio avanzato del SID fu deciso di integrare tutti i coprocessori del Commodore 64 in modo che il nuovo computer fosse in grado di eseguire tutti i giochi e i programmi scritti per tale home computer. Il VIC-II non prese comunque il posto del MOS 8563 ma lo affiancò perché solo questo era capace di offrire le 80 colonne richieste in ambito professionale.
Lo sviluppo dell'hardware si rivelò comunque problematico: l'8563 manifestò diversi problemi, a cominciare dal surriscaldamento anomalo a cui andavano incontro i primi prototipi, che costringevano gli sviluppatori a raffreddarlo con metodi artigianali, per arrivare ai problemi di sincronizzazione sull'accesso alla memoria tra l'8563 e il VIC-II che generavano artefatti grafici con parti di testo che scomparivano dallo schermo. Una volta risolti questi problemi il computer, grazie ai 2 chip grafici, riuscì a offrire diverse modalità video: l'8563 generava un'immagine a 640x200 pixel con 80 colonne di testo e un'uscita video RGBI compatibile con i segnali CGA dei PC IBM mentre il VIC-II offriva uno schermo a 40 colonne su un'uscita TV. In questo modo era possibile pilotare 2 schermi contemporaneamente, ognuno con un'immagine diversa. Essendo pensato anche per un uso professionale, fu deciso di integrare anche la CPU Zilog Z80 così da poter usare sul computer tutto il vasto parco software scritto per il CP/M che nel periodo era uno dei più diffusi sistemi operativi.

### Presentazione al pubblico

Lo sviluppo fu terminato pochi giorni prima dell'inizio del Consumer Electronics Show, mentre gli ultimi bug software furono risolti poche ore prima dell'inizio della stessa manifestazione. Il computer fu presentato al CES del 5 gennaio 1985 con il nome di Commodore 128, a indicare il quantitativo di RAM installata.
Fu presentato anche come modello da ufficio in concorrenza col Macintosh 128K e i PC IBM grazie alla presenza dello Zilog Z80 come seconda CPU con cui poteva eseguire il CP/M e tutti i programmi professionali disponibili per questo sistema operativo.

### Insuccesso e dismissione

Nonostante la pubblicità lo rappresentasse come il terrore degli IBM compatibili o un Macintosh killer, il C128 non ebbe una grande fortuna, né come home computer né come macchina professionale. Possedeva caratteristiche comuni a home computer e personal computer con i limiti del primo tipo, ma nell'utilizzo come PC non fu in grado di reggere la concorrenza; la scarsa penetrazione nel mercato fu in parte anche dovuta al fatto che, al momento del lancio, lo standard CP/M cominciava a essere abbandonato commercialmente, in favore dell'MS-DOS.
Dopo il successo del Macintosh, Apple lanciò nuovi modelli, tra i quali il Macintosh Plus, dotato della nuova interfaccia SCSI che permetteva l'aggiunta di disco rigido e di altre periferiche, risultando superiore alle macchine della Commodore. Complice infine la scarsità del software appositamente sviluppato, l'interesse verso il Commodore 128 diminuì già dopo qualche anno dal lancio, infine la produzione cessò nel tardo 1989.

## Caratteristiche

Possedeva di base la stessa quantità di memoria del Macintosh 128K e capacità grafiche e sonore maggiori rispetto a un IBM compatibile dell'epoca, poteva contare sulla vastissima quantità di software già scritto per il C64 e sul sistema Operativo CP/M, precedente l'MS-DOS e ispiratore di quest'ultimo. Aveva inoltre una tastiera completa da 95 tasti integrata nel corpo macchina e di una linea più filante e bassa rispetto a quella dei modelli precedenti. Il Commodore 128 presentava 2 CPU: il MOS 8502, derivato dal MOS 6510 montato sul C64, e lo Zilog Z80. Operava a 2 MHz e l'utente aveva accesso ai 128 kB di RAM, sia con uno schermo a 80 colonne e con un BASIC con nuovi comandi, sia emulando il C64, offrendo una compatibilità quasi totale con questa macchina, sia in modalità CP/M, permettendo di eseguire i programmi scritti per questo sistema operativo.
Le nuove caratteristiche hardware promettevano inoltre una più vasta gamma di utilizzi professionali e ludici: la grafica offriva una modalità a 640x200, grazie al nuovo chip MOS VDC e il suono era a 3 canali, offerto dal MOS SID. Tuttavia, il chip grafico era anche il maggior punto debole del C128: nonostante fosse ufficialmente messo in commercio come processore per modalità "solo testo", dalle schede tecniche si evinceva che esso poteva operare anche in modalità grafica (senza supporto per gli sprite) ma vista la complessità del metodo adottato per l'accesso ai suoi registri gli sviluppatori avevano optato per non supportare questa modalità con il BASIC 7.0, rendendo la modalità testuale a 80 colonne l'unica effettivamente utilizzabile inizialmente sul C128. Affiancato al VDC era stato integrato nella piastra madre anche il MOS VIC-II, che però non era in grado di operare al clock di 2 MHz dell'8502: perciò l'unica maniera per avere la modalità a 40 colonne (320x200) era quella di operare a velocità dimezzata. Per rimediare a questo limite fu studiato un metodo per usare (almeno parzialmente) il clock a 2 MHz anche in modalità a 40 colonne che sfruttava l'interrupt agganciato al pennello elettronico che disegnava l'immagine sul quadro video. Il pennello video lanciava un interrupt nel momento in cui arrivava a disegnare la prima riga vuota sotto all'immagine centrale: in quel momento il computer veniva impostato a 2 MHz e a tale velocità restava mentre il pennello disegnava le parti vuote sopra e sotto l'immagine centrale, venendo poi reimpostato a 1 MHz quando iniziava nuovamente a disegnare l'area principale.
Seguendo la documentazione rilasciata in seguito dalla stessa Commodore, fu pubblicato in un libro un metodo che consentiva di sfruttare la modalità grafica del VDC che consisteva nell'accedere alla memoria video indirizzando singolarmente ogni locazione, attraverso un macchinoso sistema a due registri che rendeva le operazioni grafiche molto lente. Il VDC, infatti, non aveva né la memoria video né i suoi registri mappati nella RAM principale del computer, a parte 2 locazioni usate per passare i dati da e per il chip grafico denominate "Address Register" e "Data Register". Per programmare il chip si dovevano passare i dati esclusivamente attraverso questi due registri: per esempio, per scrivere un valore in un registro interno del chip si doveva inserire il valore nella cella dei dati e il numero del registro nella cella degli indirizzi; per accendere un pixel si doveva usare lo stesso sistema, passando al chip i dati indicanti l'indirizzo della cella nei registri appropriati e il dato da inserire. Lo sviluppo di giochi con grafica in modalità 640x200 era di fatto improponibile e la gestione del chip non supportata dal BASIC nativo convinse gli autori del libro, tramite la loro software house Walrusoft, a creare il BASIC 8.0, una estensione al linguaggio integrato nel computer che consentiva una gestione più semplice del VDC e alcune modalità grafiche aggiuntive.
Il Commodore 128 poteva contare anche su un processore Z80 di ZiLOG che consentiva l'utilizzo del sistema operativo CP/M e permetteva di accedere al vasto parco programmi scritti per questo sistema operativo. Ma il lavoro dello Z80 non si limitava a questo: era questa CPU, infatti, che veniva "risvegliata" per prima all'avvio della macchina e controllava se non fossero inserite delle cartucce C64/C128 nell'apposita porta, che in caso di unità a dischi non ci fosse un floppy avviabile oppure che l'utente non stesse premendo il tasto C= (Commodore) per richiedere l'avvio della modalità C64. Per permettere al CP/M di funzionare con prestazioni degne, il Commodore 128 supportava nativamente una modalità di trasferimento accelerata dei dati sul bus seriale dei dischi (burst mode).

### Le modalità

Grazie a queste caratteristiche la Commodore lo presentava come "tre computer in uno" per via delle sue diverse modalità operative:
* Modalità 128: modalità nativa del computer. Grazie al MOS 8563, poteva utilizzare 80 colonne di testo mentre con il VIC-II 40 colonne. In questa modalità si aveva accesso al nuovo Commodore BASIC 7.0, arricchito di molti comandi tra cui quelli per la gestione della grafica e del suono.
* Modalità 64: la CPU veniva abbassata a 1 MHz e l'immagine era generata dal VIC-II. Tutta la ROM del C64 era contenuta nel computer ed erano presenti tutti i suoi coprocessori per cui avviando il C128 in modalità C64 la compatibilità era quasi totale. In questa modalità l'utente poteva usare solo il Commodore BASIC 2.0 e le 40 colonne.
* Modalità CP/M: avviando il CP/M grazie allo Z80 il computer poteva lanciare ed eseguire tutto il software scritto per questo sistema operativo. In questa modalità il computer poteva operare a 40 oppure 80 colonne.

### Il sistema operativo

Il BASIC residente del C128, denominato BASIC 7.0 integrava funzioni grafiche avanzate e la possibilità di controllare la parte audio. La schermata di avvio mostra chiaramente il copyright di Microsoft per il linguaggio BASIC.
L'accensione del sistema avvia anche la ricerca di software autoavviante dalla prima unità a dischi. Questa caratteristica, anch'essa una novità per i computer Commodore, è tipica del sistema CP/M ma fu successivamente utilizzata anche in altri software per il C128, tra i quali una creazione italiana che riusciva a forzare il caricamento di programmi per Commodore 64 e l'attivazione della relativa modalità di funzionamento. La partenza avveniva, oltre che per accensione, alla pressione del tasto di reset e con il comando basic BOOT.
Il BASIC 7.0 contiene anche dei comandi non implementati: digitando QUIT oppure OFF si ottiene l'errore ?UNIMPLEMENTED COMMAND ERROR. Questi comandi sono rimasugli del BASIC sviluppato per il mai uscito Commodore LCD, un computer portatile con schermo integrato di tipo LCD, e servivano, rispettivamente, per uscire dall'ambiente BASIC e per ignorare l'input da tastiera durante sessioni di elaborazione particolarmente gravose.
Per il C128 venne creata una particolare versione del Sistema Operativo a icone GEOS, che già aveva avuto fortuna col C64, e che venne denominato sulla nuova macchina GEOS 128. Questa versione specifica permetteva l'uso della grafica 640x200 tramite il secondo chip video VDR e il bank switching necessario a sfruttare le espansioni di memoria da 128 kB e 512 kB ufficiali Commodore (mod. 1700 e 1750). Da notare il fatto che, dal 2004, le versioni GEOS per Commodore sono state rese freeware, quindi liberamente scaricabili dalla società che ne detiene i diritti.
Un discorso a parte merita il CP/M. Questo era all'epoca un sistema operativo molto noto e assai apprezzato (un vero "industry standard"): dal CP/M trasse infatti ispirazione il QDOS, da cui derivarono i sistemi operativi per PC IBM (il PC-DOS di IBM e l'MS-DOS di Microsoft). La Commodore dotò il C128 della più moderna implementazione per Z80, il CP/M 3.0 (alias CP/M Plus - retrocompatible con il più diffuso CP/M 2.2) e dell'emulazione di terminale ADM31/3A.
Il parco software per uso professionale era molto ampio e largamente compatibile, pur pensato per hardware differente. Vi erano implementazioni di WordStar, dello spreadsheet Multiplan, del dBase II della Asthon Tate, del Turbo Pascal della Borland, e di altri.
Sfortunatamente alcune scelte implementative e il tipico target utente del C128, uniti al disinteresse di Commodore e al crescente mercato MS-DOS, non permisero al C128 di diffondersi come "macchina CP/M", se non per usi saltuari. Né venne sfruttata particolarmente la possibilità di comunicare (a basso livello) con l'altra CPU (l'8502).
Da un lato la scelta di dotarlo del CP/M 3.0 (più lento del 2.2), unita al fatto che lo Z80 funzionava a 2 MHz, invece dei più canonici 4/6 MHz presenti in hardware concorrenti, ne faceva una delle implementazioni più lente. Era pianificato che operasse a 4 MHz a 80 colonne, ma questo non avvenne. Andava altresì tenuto conto che il CP/M era principalmente un DOS, cioè un sistema operativo basato su dischi, e non poteva funzionare in loro assenza, il cui costo, per l'utente medio, era importante. Inoltre buona parte degli acquirenti del C128 comprò questo computer semplicemente come un C64 "con una marcia in più", e soprattutto per poter giocare con le migliaia di giochi disponibili per C64, nell'attesa di veder uscire una nuova generazione di giochi per C128, che, viste le limitazioni della grafica, non vi fu. Inoltre la compatibilità tra i vari hardware ove girava CP/M non era assoluta, a causa di una babele mai totalmente sbrogliata di formati tra i dischi di diversi produttori. Il drive a doppia faccia 1571, espressamente concepito per il Commodore 128, consentiva la lettura di una parte dei dischi di tali sistemi, oltre a supportare naturalmente un proprio formato specifico.

### La compatibilità col Commodore 64

L'alta compatibilità con il Commodore 64 è dovuta al fatto che i più importanti componenti del C64, come il VIC, il SID e le ROM del Commodore BASIC 2.0 e del KERNAL del 64 sono presenti anche nel C128 e grazie al fatto che la CPU MOS 8502 è completamente retrocompatibile con il MOS 6510. In modalità C64 il funzionamento della CPU a 2 MHz (per via dell'oscuramento e del fatto che nel 6510 questa possibilità non esisteva), non sarebbe impiegabile. In realtà esisterebbe un modo, e si può mantenere l'uso del video, alternando la frequenza di clock tra 1 e 2 MHz a ogni segnale di vertical blank tramite una routine guidata dall'interrupt del raster video.
Dal punto di vista hardware, si possono collegare al C128 tutte le periferiche del C64, incluse le cartucce, che fanno partire automaticamente il C128 in modalità 64. Ciascuna delle due CPU può indirizzare al massimo 64 kilobyte, quindi i 128 kB di RAM possono essere visti solo dopo essere stati suddivisi in due banchi e commutando fra essi.
A volte però in modalità C64 era possibile riscontrare differenze rispetto a un vero Commodore 64 e questo talvolta generava blocchi, dovuti soprattutto all'utilizzo da parte del software degli indirizzi di memoria del chip MMU, visibile al software anche in modalità C64.

### Dati tecnici

* CPU:
** MOS 8502 capace di operare a 2 MHz in modalità nativa "C128 a 80 colonne" oppure a 1 MHz in modalità "C128 a 40 colonne" o in modalità "C64". Operando a 2 MHz viene però oscurato l'output del processore VIC-II. Il segnale del VDC, a 80 colonne, rimane ovviamente visibile. *
** Zilog Z80 a 4 MHz per lanciare e gestire il sistema operativo CP/M+. Sta di fatto che i 4 MHz, per altri limiti hardware (sono introdotti dei ritardi per permettere al VIC-II di accedere al bus di sistema), non vengono realmente impiegati, operando quindi a 2 MHz.
** MOS 6502 presente nei soli modelli C128D e C128DCR come processore del controller del lettore di floppy integrato.
* ROM: 68 kB
** Modalità C128:
*** BASIC 7.0: 32 kB
*** Editor dello schermo: 4 kB
*** I/O e mappa caratteri: 4 kB
*** KERNAL e monitor esadecimale: 8 kB
** Modalità C64:
*** BASIC 2.0: 8 kB
*** I/O e mappa caratteri: 4 kB
*** KERNAL ed editor dello schermo: 8 kB
* RAM:
** 128 kB suddivisa in 2 banchi da 64 kB
** Espandibile a 512 kB con schede originali Commodore (a 1 MB con schede di terze parti)
* Chip video:
** MOS VDC (modalità C128 e CP/M)
*** 16 kB di RAM dedicata. I C128D erano equipaggiati con ben 64 kB dedicati permettendo risoluzioni più alte e/o con un numero maggiore di colori.
*** Ufficialmente il Commodore BASIC 7.0 supportava solo la modalità testuale 80×25 con 16 colori (alcuni diversi da quelli del MOS VIC-II).
*** Modalità grafica: 640×200 monocromatica (e fino a 16 colori, se si hanno 64 kB) o 640×400 interlacciato (se 64 kB). Entrambe non supportate dal BASIC fornito e usabili solo mediante accesso indiretto ai registri e alla memoria del chip o usando estensioni del BASIC di terze parti.
*** Porta output RGBI, o anche video composito, se ci si limita al monocromatico. La porta è un connettore standard DB-9, con segnali RGB TTL digitali (come lo standard CGA, quindi 15 kHz) con in più un pin su cui esce il segnale video monocromatico.
** MOS VIC-II:
*** usato in modalità C64
*** Modalità Testo: 40×25 caratteri su schermo (o su televisore) indipendente dal VDC:
*** Modalità Grafica: 320×200 monocromatico oppure 160×200 a 4 colori.
*** 8 sprite gestiti in hardware.
*** Output su videocomposito o TV (RF). Schermo gestito indipendentemente dall'altro.
** Se si hanno 2 monitor, è possibile visualizzare contemporaneamente le uscite del VDC e del VIC-II.
* Audio:
** MOS SID
*** 3 canali mono, a 6 ottave
* Tastiera:
** tipo esteso a 92 tasti con tastierino numerico.
* Porte:
** 1 seriale IEC
** 1 userport
** 1 porta cartucce C64
** 1 Audio/Video
** 1 RGBI
** 1 Antenna HF
** 1 porta per unità a nastro Datassette
** 2 porte Joystick "standard Atari"
* Sistemi Operativi disponibili:
** KERNAL (integrato in ROM)
** CP/M (dischetto incluso con il computer, lettore dischi da acquistare separatamente)
* Software incluso in ROM:
** BASIC 7.0 (modalità C128)
** BASIC 2.0 (modalità C64)
* Software di terze parti:
** BASIC 8.0
** GEOS64
** GEOS C128
** Lunix

## Periferiche

Furono realizzate per questo computer due nuove unità a disco, il Commodore 1570 a faccia singola e il Commodore 1571 a doppia faccia, in grado di supportare la scrittura in formato MFM, usato sia dal CP/M, oltre che nel GCR. Erano disponibili anche delle espansioni di memoria, le Commodore REU.

## Modelli e prototipi

Durante la seconda metà del 1985 fu presentato anche il Commodore 128D (o C128D). Il C128D era sostanzialmente identico al C128 dal punto di vista hardware/software, ma era dotato di un corpo macchina centrale con l'unità floppy Commodore 1571 incorporata e di una tastiera separata, come i PC IBM e il primo Amiga 1000. Concepito come computer trasportabile, con un elegante cabinet in plastica al di sotto del quale si poteva agganciare la tastiera e con una maniglia a scomparsa su un lato, ma non fu venduto negli USA poiché il suo contenitore plastico non schermava dalle interferenze elettromagnetiche generate durante il suo uso per cui l'Federal Communications Commission non ne autorizzò la vendita sul suolo statunitense.
A fine 1986 il C128D fu ripresentato con un nuovo contenitore metallico per ridurre le emissioni elettromagnetiche e una nuova tastiera più economica: questo modello fu noto come C128D-CR o C128DCR, dove "CR" stava per "Cost Reduced". Rispetto al C128D non aveva più la maniglia per il trasporto e la ventola di raffreddamento era stata rimossa (anche se conservava il suo alloggiamento); la scheda madre era differente, integrando anche l'elettronica per la gestione dell'unità a dischi, compreso il MOS 6502, per cui adesso il computer presentava 3 CPU. Il VDC era stato sostituito con la sua evoluzione denominata MOS DVDC e la RAM video dedicata era stata portata da 16 kB a ben 64 kB, permettendo nuove modalità grafiche con maggiori colori. Il costo era però molto più elevato rispetto al C128 standard (circa 500 dollari, al momento del lancio), ed ebbe perciò un successo commerciale limitato poiché il prezzo lo metteva in concorrenza diretta con i compatibili IBM di fascia bassa.
Vennero prodotti anche ulteriori prototipi derivanti dal C128:
* C128D/81 (?): derivato dal C128D, integrava un floppy modello 1563 per dischetti da 3,5" e capacità di 1 MB. Per il resto identico al C128D. Mai rilasciato.
* C256: modello con 256 kB di RAM. Alcuni prototipi furono realizzati fra il 1986 e il 1987 ma non fu mai commercializzato.
* C128DL: C128 classico con unità floppy da 3,5". Esistono alcuni prototipi non funzionanti con l'unità montata in diverse posizioni del case.
* C128CR: un C128CDR senza l'unità floppy e tutti i chip in tecnologia HMOS. Mai rilasciato.
È assai probabile che non siano mai stati trasformati in materiale funzionante a causa della perdita di interesse per i sistemi a 8 bit dato che la Commodore International, dopo la presentazione dell'Amiga, concentrò tutte le sue risorse su questa piattaforma.

## Easter egg

Una curiosità del C128 è ritrovabile in un easter egg, un messaggio nascosto nel sistema richiamabile con l'istruzione SYS32800,123,45,6 e che mostra i nomi dei progettisti hardware e software del computer. Il gruppo hardware era composto da Bil Herd, Dave Haynie e Frank Palaia mentre quello software da Fred Bowen, Terry Ryan e Von Ertwine. Da notare il gioco di parole di "herdware team" al posto di "hardware team" dal cognome di Bil Herd, e il curioso appello contro la guerra, «Link arms, don't make them», che chiude l'elenco.