Il Commodore 16 è un modello di home computer presentato da Commodore nel 1984 come erede del VIC-20 e alternativa a più basso costo al Commodore 64.
Faceva parte della serie Commodore 264, che comprende il Commodore Plus/4 e il Commodore 116.
Storia Agli inizi degli anni ottanta la Commodore aveva in listino il VIC-20, presentato nel 1981 e destinato alla fascia bassa di mercato, e il più costoso Commodore 64, dotato di prestazioni superiori e messo in commercio nel 1982. In mezzo ad essi si posizionavano, offerti a prezzi che si aggiravano intorno ai 100 dollari, diversi prodotti delle concorrenti Timex Sinclair, Mattel e, soprattutto, il TI-99/4A prodotto dalla Texas Instruments.
L'allora presidente della Commodore, Jack Tramiel, decise quindi di completare l'offerta delle sue macchine realizzando un home computer che si posizionasse in quella fascia; inoltre, Tramiel temeva che alcuni costruttori giapponesi avrebbero prima o poi realizzato degli home computer di fascia medio-bassa, facendo crollare i prezzi, previsione che si rivelò infondata perché questi si dedicarono al settore delle console da gioco. Inoltre, Timex, Mattel e Texas Instruments si ritirarono dal mercato prima dell'arrivo dei nuovi prodotti.
Gli ingegneri Commodore nel 1984 si misero quindi al lavoro e progettarono la Commodore 264, una nuova famiglia di computer che comprendeva: il Commodore Plus/4, come modello di punta; il Commodore 16, come modello intermedio; il Commodore 116 (una versione del C-16 con case di ridotte dimensioni e tastini in gomma destinato al solo mercato europeo), come modello economico.
Il C-16 non ebbe il successo sperato e non riuscì a dominare il mercato dei computer a basso costo. La competizione fu difficile, in particolare con lo ZX Spectrum che era al suo apice e il cui prezzo scese presto al di sotto di quello del C-16; anche lo stesso Commodore 64 ebbe forti riduzioni di prezzo, rendendo l'alternativa economica del C-16 meno interessante. Il C-16 venne tolto dal mercato nel giro di un anno negli USA, ma ebbe una discreta diffusione in Europa. Un mercato notevole si formò in particolare in Ungheria. La Commodore cessò la produzione entro il 1988 e svendette il suo inventario, generando un'ultima ondata di nuovi utenti.
In tutto i C-16 prodotti furono 1.200.000.
Caratteristiche hardware Design
Il C-16 fu il secondo computer della serie Commodore 264 ad essere presentato ma, a differenza del Plus/4, furono riprese le forme del VIC-20 e del C-64: il case rotondeggiante era di colore nero con i 66 tasti grigio chiari e l'alimentatore esterno a 9 Volt. Le similitudini finivano qui: infatti il Commodore 16 era una versione depotenziata del Commodore Plus/4, montando lo stesso processore e lo stesso coprocessore, adottando gli stessi connettori di quest'ultimo) per le periferiche base, ossia joystick e registratore, anche se esistevano comunque in commercio dei cavi convertitori per usare le periferiche del C-64 sul C-16 e viceversa) ed integrando il Commodore BASIC in versione 3.5. Il connettore seriale, pur essendo in grado di gestire una velocità maggiore del transfer rate rispetto a VIC-20 e C-64 (con periferiche specifiche), era invece pienamente compatibile con le periferiche del C-64 e VIC-20.
Ad un BASIC 3.5 ricco di comandi avanzati, ad un'ottimale gestione della memoria, ad un ricco set di colori si contrapponevano l'assenza del SID e, soprattutto, hardware dedicato agli sprite che, unitamente ai 16 kb di RAM, alla necessità di utilizzare periferiche con connettori specifici e all'incompatibilità della macchina con gli altri modelli Commodore più diffusi ne decretarono lo scarso successo.
MOS 7501/8501
Il Commodore 16 era basato su una nuova CPU siglata MOS 7501/8501, evoluzione del 6510 che muoveva il C-64. Rispetto a quest'ultimo il 7501/8501 lavorava a 0,89/1,78 MHz di frequenza, e aveva un canale I/O bidirezionale a 7 bit con cui, in collaborazione con il TED, gestiva il bank switching (tecnologia poi ripresa anche nel Commodore 128) che permetteva di gestire dinamicamente i banchi di memoria visibili alla CPU: si poteva cioè avere più di un banco con lo stesso indirizzo, ad esempio uno ROM ed uno RAM, e selezionare di volta in volta quello attivo su cui operare. In questa maniera, dei 16 kB di memoria RAM totali disponibili sul computer, l'utente ne poteva utilizzare da BASIC circa 12 (il messaggio "12277 bytes free" che appariva all'accensione della macchina): anche se questa quantità era di per sé poca, relativamente parlando era una buona percentuale se si pensa che dei 64 kB di RAM del C-64 l'utente ne poteva usare solo 38 da BASIC, mentre il resto era comunque disponibile a patto di lavorare in linguaggio macchina e disattivando il banco ROM contenente il BASIC.
L'interazione del 7501/8501 con il TED causava ovviamente dei rallentamenti che comunque si potevano evitare se si disattivava l'output video del TED manipolando i suoi registri: in questa modalità il clock della CPU raddoppiava (da 0,89 a 1,78 MHz). Questa modalità era utile, ad esempio, per eseguire calcoli particolarmente gravosi: eliminando il video, si riduceva del 30% il tempo di elaborazione. Terminato il processo, bastava riattivare l'output e visualizzare a schermo i risultati.
Chip TED 7360
Affiancato alla CPU c'era un nuovo chip per la gestione della grafica e del suono, il TED 7360 (acronimo di Text Editing Device): con il TED il C-16 riprendeva l'architettura del VIC-20, dove un unico coprocessore (il VIC) integrava sia l'unità grafica che quella audio mentre sul C-64 queste erano separate (la parte grafica era gestita infatti dal VIC-II, mentre il suono era controllato dal SID).
Il TED era capace di 5 modalità video: modalità Text mode con 40x25 caratteri: caratteri di 8x8 pixel con 2 colori, uno per il testo ed uno per lo sfondo; modalità Multicolor text: i colori per carattere divenivano 4, di cui 3 comuni a tutti i caratteri dello schermo e 1 specifico per il carattere, ma la risoluzione orizzontale veniva dimezzata (4x8 pixel per carattere); modalità Extended background color mode: qui i caratteri (di 8×8 pixel) potevano avere colori di sfondo differenti l'uno dall'altro; modalità Multicolor Graphics: modalità grafica con risoluzione schermo di 160×200 pixel e 4 colori; modalità Hi-Res Graphics: modalità grafica con risoluzione di 320×200 pixel e 2 colori.
Le ultime due modalità permettevano anche una modalità mista in cui si aveva nella parte alta una finestra grafica di 160 pixel di altezza e nella parte bassa una finestra alta 40 pixel in modalità testo con 5 righe di caratteri visualizzabili. L'accesso alla modalità grafica riduceva però la RAM disponibile all'utente di 10 kB (necessari a memorizzare i dati dell'immagine), rendendo di fatto impossibile scrivere programmi grafici di una certa complessità. I colori disponibili erano ben 121 (una rarità per i computer dell'epoca) contro i 16 del C-64, grazie al fatto che il TED poteva gestire la luminanza del colore: in questo modo si avevano 8 tonalità per ognuno dei 15 colori di base (15x8=120) più il nero (120+1=121), mancava tuttavia il supporto per gli sprite.
A livello audio il TED integrava solo 2 generatori sonori contro i 3 del VIC e del SID. Inoltre, i generatori del TED erano capaci di generare solo onde quadre o rumore bianco (2 onde quadre oppure 1 onda quadra ed 1 rumore bianco), dato che erano stati studiati più per un impiego in applicazioni da ufficio che per i giochi: non va dimenticato infatti che il Plus/4, da cui deriva il C-16, era nato come tale offrendo in ROM quattro programmi tipicamente da ufficio, come un editor di testo ed un foglio elettronico.
Memoria
Il C-16 era dotato di 16 kB di memoria RAM e 32 kB di memoria ROM. La RAM era la memoria volatile destinata a contenere i programmi inseriti o caricati ma, come detto, di questa solo 12 kB erano utilizzabili effettivamente dall'utente: i primi 4 kB erano infatti occupati dal sistema per i registri mappati in memoria, i puntatori a varie funzioni, i buffer di I/O e lo stack (2 kB), e dalla memoria video per la modalità testuale (2 kB, di cui 1 per i caratteri da visualizzare sullo schermo ed 1 per i loro attributi). La RAM utile scendeva a 2 kB se si attivava la modalità grafica perché il TED mappava nella RAM utente il buffer grafico, togliendo altri 10 kB.
Nei 32 kB di ROM erano stipati tutti i dati necessari al funzionamento del computer: questi erano prevalentemente occupati dal KERNAL (circa 8 kB), dall'interprete BASIC e dall'editor di schermo (circa 16 kB), dai font (2 kB), dal monitor in linguaggio macchina e da tutte le routine accessorie. Qui di seguito l'allocazione della memoria del Commodore 16: Indirizzo UsoHexDec $0000-$07FF 0000-2.047 Memoria usata come RAM di sistema. Contiene anche la "Pagina zero", i primi 256 byte di memoria che possono essere indirizzati in maniera veloce dalla CPU$0800-$0C00 2.048-3.071 Color RAM, usata per conservare i colori delle celle video in modalità testo$0C01-$1000 3.072-4.095 Video RAM, usata per memorizzare i caratteri presenti nelle singole celle video in modalità testo$1000-$3FFF 4.096-16.383 RAM dedicata al BASIC (programma + variabili) - in modalità grafica quest'area viene ridotta alla sezione $1000-$17FF / 4.096-6.143 (vedi sotto)$1800-$1BFF 6.144-7.167 In modalità grafica quest'area contiene la luminanza dei pixel$1C00-$1FFF 7.168-8.191 In modalità grafica quest'area contiene i colori dei pixel (Color RAM)$2000-$3FFF 8.192-16.383 In modalità grafica quest'area è usata come buffer grafico (Video RAM)$4000-$7FFF 16.384-32.767 Indirizzi non mappati, sono lasciati liberi per eventuali espansioni di memoria$8000-$BFFF 32.768-49.151 ROM contenente il BASIC V3.5$C000-$CFFF 49.152-53.247 Indirizzi non mappati, sono lasciati liberi per eventuali espansioni del BASIC$D000-$D7FF 53.248-55.295 ROM contenente la mappa dei caratteri$D800-$FBFF 55.296-64.511 ROM contenente le routine del KERNAL$FC00-$FCFF 64.512-64.767 Routine per la gestione del bank switching$FD00-$FEFF 64.768-65.279 Registri di I/O$FF81-$FFF9 65.409-65.529 "Jump table" alle funzioni del KERNAL$FFFA-$FFFB 65.530-65.531 Vettore per l'interrupt NMI$FFFC-$FFFD 65.532-65.533 Vettore per la routine di reset$FFFE-$FFFF 65.534-65.535 Routine per l'interrupt IRQ
Caratteri Il set di caratteri era residente in ROM e derivava dal set PETSCII già usato da Commodore sui precedenti modelli VIC-20, C-64 e PET. Rispetto ai set in standard ASCII, il PETSCII comprendeva caratteri alfanumerici e semigrafici. Era costituito da due mappature differenti: una per la modalità maiuscola (quella standard), costituita da lettere maiuscole, numeri e caratteri grafici, ed una per la modalità minuscola, costituita da lettere minuscole e maiuscole e da altri caratteri grafici. I font potevano essere modificati semplicemente copiando i dati in memoria RAM, alterando i caratteri da cambiare e poi variando i puntatori alla mappa dei caratteri in modo che il sistema leggesse i nuovi fonts
Caratteristiche software Il sistema operativo Il sistema operativo del C-16 era costituito, come per il VIC-20 ed il C-64, da 4 parti indipendenti e integrate:
il KERNAL; l'interprete BASIC; l'editor di schermo; Il sistema monitor (TEDMON).
KERNAL
Il kernel del sistema operativo del C-16 era il KERNAL nato per i PET e poi utilizzato su tutti i computer Commodore ad 8 bit fino al C-128. Il KERNAL risiedeva in 8 kB di ROM ed era composto da tutte le routine di basso livello per il controllo dell'hardware del computer come l'I/O, lo schermo, le periferiche. Le routine potevano essere richiamate dall'utente utilizzando una jump table standard per tutti i computer Commodore così da rendere un programma in linguaggio macchina il più portabile possibile.
BASIC