Il Commodore 128 (noto anche come C128CBM128 o C= 128) e' 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. 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 riusci' a raggiungere gli stessi risultati del Commodore 64. Nonostante la pubblicita' lo rappresentasse come il terrore degli IBM compatibili o un Macintosh killer, il C128 non ebbe una grande fortuna, ne come home computer ne 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 lancio' nuovi modelli, risultando superiore alle macchine della Commodore. Complice infine la scarsita' del software appositamente sviluppato, l'interesse verso il Commodore 128 diminui' gia' dopo qualche anno dal lancio, infine la produzione cesso' nel tardo 1989. Il Commodore 128 possedeva di base la stessa quantità di memoria del Macintosh 128K e capacita' grafiche e sonore maggiori rispetto a un IBM compatibile dell'epoca, poteva contare sulla vastissima quantita' di software gia' 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 piu' 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 in con uno schermo a 80 colonne e con un BASIC con nuovi comandi, sia emulando il C64, offrendo una compatibilita' quasi totale con questa macchina, sia in modalita' CP/M, permettendo di eseguire i programmi scritti per questo sistema operativo.

Le nuove caratteristiche hardware promettevano inoltre una piu' 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 modalita' "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 modalita' con il BASIC 7.0, rendendo la modalita' 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 pero' non era in grado di operare al clock di 2 MHz dell'8502: percio' l'unica maniera per avere la modalita' a 40 colonne (320x200) era quella di operare a velocita' dimezzata. Per rimediare a questo limite fu studiato un metodo per usare (almeno parzialmente) il clock a 2 MHz anche in modalita' 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 ne la memoria video ne 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 unita' a dischi non ci fosse un floppy avviabile oppure che l'utente non stesse premendo il tasto C= (Commodore) per richiedere l'avvio della modalita' 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). Grazie a queste caratteristiche la Commodore lo presentava come "tre computer in uno" per via delle sue diverse modalita' operative:

·         Modalita' 128: modalita' 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.

·         Modalita' 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 modalita' C64 la compatibilita' era quasi totale. In questa modalita' l'utente poteva usare solo il Commodore BASIC 2.0 e le 40 colonne.

·         Modalita' 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 modalita' il computer poteva operare a 40 oppure 80 colonne.

·         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, e' 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 modalita' 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 gia' 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 doto' il C128 della piu' moderna implementazione per Z80, il CP/M 3.0 (alias CP/M Plus - retrocompatible con il piu' 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. Ne' venne sfruttata particolarmente la possibilita' di comunicare (a basso livello) con l'altra CPU (l'8502).

·         Da un lato la scelta di dotarlo del CP/M 3.0 (piu' 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 piu' lente. Era pianificato che operasse a 4 MHz a 80 colonne, ma questo non avvenne. Andava altresi' tenuto conto che il CP/M era principalmente un DOS, cioe' 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 compro' questo computer semplicemente come un C64 "con una marcia in piu'", 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 compatibilita' 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.

·         L'alta compatibilita' con il Commodore 64 e' dovuta al fatto che i piu' 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 e' completamente retrocompatibile con il MOS 6510. In modalita' C64 il funzionamento della CPU a 2 MHz (per via dell'oscuramento e del fatto che nel 6510 questa possibilita' non esisteva), non sarebbe impiegabile. In realta' esisterebbe un modo, e si puo' 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 pero' in modalita' 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 modalita' C64.

 

 

 

Dati tecnici

·         CPU:

o    MOS 8502 capace di operare a 2 MHz in modalita' nativa "C128 a 80 colonne" oppure a 1 MHz in modalita' "C128 a 40 colonne" o in modalita' "C64". Operando a 2 MHz viene pero' oscurato l'output del processore VIC-II. Il segnale del VDC, a 80 colonne, rimane ovviamente visibile. *

o    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.

o    MOS 6502 presente nei soli modelli C128D e C128DCR come processore del controller del lettore di floppy integrato.

·         ROM: 68 kB

o    Modalita' C128:

§  BASIC 7.0: 32 kB

§  Editor dello schermo: 4 kB

§  I/O e mappa caratteri: 4 kB

§  KERNAL e monitor esadecimale: 8 kB

o    Modalita' C64:

§  BASIC 2.0: 8 kB

§  I/O e mappa caratteri: 4 kB

§  KERNAL ed editor dello schermo: 8 kB

·         RAM:

o    128 kB suddivisa in 2 banchi da 64 kB

o    Espandibile a 512 kB con schede originali Commodore (a 1 MB con schede di terze parti)

·         Chip video:

o    MOS VDC (modalita' 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).

§  Modalita' 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 e' un connettore standard DB-9, con segnali RGB TTL digitali (come lo standard CGA, quindi 15 kHz) con in piu' un pin su cui esce il segnale video monocromatico.

o    MOS VIC-II:

§  usato in modalita' C64

§  Modalita' Testo: 40×25 caratteri su schermo (o su televisore) indipendente dal VDC:

§  Modalita' 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.

o    Se si hanno 2 monitor, e' possibile visualizzare contemporaneamente le uscite del VDC e del VIC-II.

·         Audio:

o    MOS SID

§  3 canali mono, a 6 ottave

·         Tastiera:

o    tipo esteso a 92 tasti con tastierino numerico.

·         Porte:

o    1 seriale IEC

o    1 userport

o    1 porta cartucce C64

o    1 Audio/Video

o    1 RGBI

o    1 Antenna HF

o    1 porta per unita' a nastro Datassette

o    2 porte Joystick "standard Atari"

·         Sistemi Operativi disponibili:

o    KERNAL (integrato in ROM)

o    CP/M (dischetto incluso con il computer, lettore dischi da acquistare separatamente)

·         Software incluso in ROM:

o    BASIC 7.0 (modalita' C128)

o    BASIC 2.0 (modalita' C64)

·         Software di terze parti:

o    BASIC 8.0

o    GEOS64

o    GEOS C128

o    Lunix

Una curiosita' del C128 e' ritrovabile in un easter eggs  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.