# Amstrad CPC 464

L'Amstrad CPC 464 (CPC sigla di Colour Personal Computer) è un home computer a 8 bit prodotto da Amstrad e commercializzato dal 1984 al 1990. In Europa è stato uno dei microcomputer di maggior successo, essendo stato venduto in più di 2 000 000 di unità.
Il computer fu voluto direttamente da Alan Michael Sugar, presidente della Amstrad, che produsse così il suo il primo home computer; presentato nel 1984, si mise in diretta concorrenza con lo ZX Spectrum e il Commodore 64: nonostante utilizzasse componenti già da tempo in commercio e comuni ad altri sistemi, come la CPU Zilog Z80, da cui derivavano caratteristiche non eccellenti ma comunque discrete per un computer di quella fascia di prezzo e in linea con quelle della concorrenza, il CPC 464 riuscì ad affermarsi non solo sul suolo inglese ma anche in diversi altri Paesi europei grazie al suo prezzo di vendita contenuto che comprendeva un sistema completo, composto da un'unità centrale con tastiera integrata, un monitor e un registratore a cassette integrato.

## Storia
### L'ideazione

Nel 1982 Clive Sinclair presentò lo ZX Spectrum, un microcomputer destinato all'utenza domestica che fece registrare buone vendite grazie al suo prezzo abbordabile ed alle sue caratteristiche, come la grafica a colori. Alan Sugar, che fino ad allora si era dedicato al commercio di sistemi Hi-Fi con la sua azienda Amstrad, rimase colpito dal successo commerciale dello ZX Spectrum, e decise di sviluppare un proprio computer. Nello stesso periodo era arrivato sul mercato anche il Commodore 64, un altro home computer con interessanti caratteristiche tecniche. Agli inizi del 1983 Sugar incaricò uno degli ingegneri della società, Ivor Spital, di analizzare i computer in commercio per capire quali fossero le offerte della concorrenza, cosa mancava a quelle macchine e quanto costasse produrle. Con l'analisi di Ivor, Sugar capì che sarebbe stato necessario offrire un'unità "all-in-one" (tutto-in-uno), dotata cioè di tutto ciò che serviva per poterla utilizzare subito (tastiera, monitor, unità per leggere il software) ad un prezzo inferiore alle 200 sterline. Il primo passo fu la progettazione del case, che fu un processo abbastanza rapido. Terminato lo sviluppo del contenitore, per la circuiteria interna Amstrad dovette rivolgersi a dei progettisti esterni perché la società di Sugar non aveva le competenze per lavorare in ambito informatico. Nel mese di aprile del 1983 furono contattati un paio di sviluppatori i quali proposero ad Amstrad il progetto di un sistema basato sul diffuso microprocessore MOS 6502, sviluppabile in circa 1 mese. Sfortunatamente i due progettisti non si dimostrarono all'altezza del compito e, trascorso il tempo previsto, non furono in grado di presentare a Sugar nessun prototipo funzionante.

### Il completamento del progetto

Amstrad contattò allora un'altra coppia di sviluppatori, Roland Perry e William Poel, che avevano già esperienza nel settore. Ad agosto i due progettisti avevano già realizzato la tastiera, l'unità a nastri e disposto tutte le porte di comunicazione sul retro del computer ma mancava ancora la scheda madre definitiva ed il software di base del computer. Per la parte software Perry si rivolse alla Locomotive Software, una società fondata di recente da Chris Hall e Richard Clayton che aveva scritto una versione del BASIC per Acorn Computers, da usarsi insieme alla scheda di espansione basata sullo Z80 realizzata per il BBC Micro. Il problema era la CPU: il progetto del nuovo computer, a cui era stato dato il nome in codice di "Arnold" da Perry stesso, prevedeva l'uso del 6502 mentre il BASIC di Locomotive Software era stato scritto per lo Z80. La prima idea di Perry fu quella di attendere che Locomotive Software convertisse l'interprete dal linguaggio macchina del 6502 a quello dello Z80 ma Clayton e Hall fecero presente che ciò non sarebbe stato fatto in tempi brevi, ed il computer doveva essere terminato entro dicembre, la scadenza ultima fissata da Amstrad. Fu perciò deciso di cambiare il progetto hardware, sostituendo il 6502 con lo Z80: in questo modo si poteva utilizzare quel BASIC senza nessuna modifica. Per la parte hardware i fondatori di Locomotive Software suggerirono a Perry di rivolgersi alla MEJ Electronics, una società fondata da Mark-Eric Jones, che conoscevano da tempo. Jones non aveva mai lavorato con il 6502 ma aveva già avuto esperienze con lo Z80 perciò accettò l'incarico e si mise al lavoro sul progetto fornito da Perry per convertirlo allo Z80.
Anche sul lato hardware i lavori proseguivano. Per semplificare il progetto del prototipo che aveva ricevuto da Perry, Jones decise di adottare un gate array, un circuito integrato che incorporasse parte della componentistica più semplice. Fu deciso di rivolgersi a Ferranti, che già produceva un Gate Array denominato ULA per lo ZX81 e lo ZX Spectrum. Sfortunatamente Ferranti incontrò dei problemi derivanti dall'adattamento del progetto del chip ai suoi processi produttivi. Locomotive Software doveva avere ad ottobre i primi prototipi completi dell'hardware del computer per terminare lo sviluppo del software per cui, per portare avanti lo sviluppo del computer, fu realizzata una scheda elettronica che replicava le funzionalità dell'ULA, che fu chiamata "Gate Array Simulator" (GAS). Sugar voleva che al momento della presentazione del computer fosse già disponibile un certo numero di giochi per cui dei prototipi del computer, basati sul GAS e su una memoria RAM alimentata da una batteria tampone al posto delle più costose memorie non volatili EEPROM per ospitare il firmware in via di sviluppo, furono spediti a diversi sviluppatori di giochi. Al lancio del computer, Sugar poté presentare anche una libreria software con diversi titoli già pronti all'acquisto. Visti i ritardi di Ferranti, Sugar decise di pagare ugualmente il compenso pattuito per lo sviluppo del chip anche se non era stato in realtà terminato, e di far realizzare l'integrato ad un'altra società. Sugar decise così perché reputava che il danno d'immagine e le mancate vendite derivanti dal ritardo nella commercializzazione del computer sarebbero stati ben superiori rispetto alla cifra sborsata a Ferranti. La produzione passò a LSI Logic, ed il chip fu pronto solo nel mese di febbraio del 1984, circa 2 mesi prima della presentazione del computer: lo sviluppo fu comunque portato a termine entro la fine del 1983, rispettando i tempi previsti, grazie al GAS.

### La produzione e la dismissione

Il computer fu presentato il 12 aprile 1984 alla Westminster School di Londra ad un pubblico di circa 400 giornalisti del settore come CPC 464: la sigla "CPC" stava per "Colour Personal Computer", ad indicare la capacità del sistema di generare grafica a colori, mentre il numero 464 nasceva dall'unione della frequenza della CPU (4 MHz) con i kB di RAM in dotazione (64). Il computer era offerto in due configurazioni, con monitor monocromatico verde oppure con monitor a colori: la prima costava 249 sterline (più del prezzo inizialmente previsto) mentre la seconda 349 sterline, poi portata a 359 al momento dell'effettiva commercializzazione. Durante la presentazione Sugar annunciò anche un'unità a floppy disk esterna da 3" offerta a 199 sterline, prezzo comprensivo dell'interfaccia per collegarla al computer: tale unità fu però disponibile solo nell'autunno di quello stesso anno. Il computer fu messo in vendita il 21 giugno inizialmente solo presso Rumbelows, uno dei rivenditori dei prodotti Amastrad: questa esclusiva temporanea fu dovuta al fatto che Rumbelows pagò gli annunci pubblicitari del lancio del nuovo sistema.
L'home computer rimase in commercio, nonostante la presentazione di diversi computer derivati da esso, fino al 1990, quando fu definitivamente tolto dal commercio per far spazio alla console GX4000.

## Caratteristiche tecniche

Rispetto al prototipo originale, basato sul MOS 6502, il computer finale adottava la CPU Z80A di Zilog con frequenza operativa di 4 MHz, grazie al quale il computer dotato di unità a dischi poteva caricare il CP/M, all'epoca uno dei più diffusi DOS. Siccome lo Z80 poteva indirizzare un massimo di 64 kB di memoria e dato che il Locomotive BASIC ed il Firmware occupavano 32 kB di ROM, fu deciso di suddividere le routine del sistema su 2 chip da 16 kB l'uno e fu poi studiato un meccanismo di bank switching per alternare il banco di ROM attivo: la suddivisione fu fatta in modo che il chip attivo contenesse il codice di tutte le routine in quel momento in esecuzione. Il chip da utilizzare veniva poi selezionato dal sistema e reso attivo nello spazio di indirizzamento della CPU. Il chip ROM attivo occupava 16 kB e altra memoria era occupata dal sistema per variabili ed altro: dei 64 kB di memoria iniziali all'utente ne restavano liberi 42 kB. Di questi, 16 kB erano occupati dalla memoria video, la cui gestione era suddivisa fra l'ULA e l'Hitachi HD6845 CRT: la prima si occupava di generare la parte grafica mentre il secondo si occupava della generazione del segnale video da inviare al monitor. Le modalità grafiche permesse dal sistema erano tre. La prima permetteva la rappresentazione di una schermata testuale di 20×25 caratteri oppure di una schermata grafica di 160×200 pixel, entrambe con 16 colori disponibili da una tavolozza di 27. La seconda permetteva 40×25 caratteri oppure 320×200 pixel, con 4 colori. L'ultima, 80×25 caratteri oppure 640×200 pixel, con 2 colori. Il segnale video era inviato al monitor incluso nella confezione che era, a seconda del modello acquistato, monocromatico verde oppure a colori. Il collegamento con il computer avveniva con un doppio cavo: uno serviva al segnale video dal computer al monitor, sul secondo cavo viaggiava invece l'alimentazione elettrica dal monitor al computer. L'ULA si occupava anche di gestire gli interrupt, di alternare il banco ROM attivo e di generare i segnali di temporizzazione, compresi quelli per l'accesso alternato della CPU e del chip video alla RAM del sistema.
L'unità a cassette integrata era stata scelta perché più economica rispetto alle unità a floppy; quest'ultima fu presentata insieme al computer ed era di un formato da 3". L'unità veniva fornita con un'interfaccia hardware per il collegamento al computer che conteneva anche un rudimentale DOS, denominato AmsDOS (da Amstrad DOS) e scritto da Locomotive Software, che veniva caricato in memoria andando ad aggiungere al firmware originale i comandi per la gestione dei dischi. L'interfaccia conteneva anche il codice di avvio necessario a caricare il CP/M, fornito alla versione 2.2, grazie al quale sul computer poteva essere eseguito tutto il software da ufficio scritto per questo sistema operativo. Non va dimenticato, infatti, che nei piani di Sugar il CPC 464 non era visto solo come una macchina da gioco ma anche come un sistema idoneo all'uso in ambito professionale. Il computer era dotato del chip audio General Instrument AY-3-8912, usato su diversi computer e console ad 8 e 16 bit. Nonostante fosse inferiore al SID del Commodore 64, era comunque capace di generare 3 voci ad 8 ottave. Sui primi modelli l'audio era riprodotto da un piccolo altoparlante integrato, eliminato nei modelli successivi; un'uscita audio permetteva il collegamento ad un sistema di riproduzione esterno.

### BASIC

Clayton e Hall di Locomotive Software lavorarono al loro Locomotive BASIC per adattarlo al nuovo sistema aggiungendo tutte le parole chiave necessarie a gestire la grafica ed il sonoro del computer e strutturarono il linguaggio in modo da astrarlo dall'hardware della macchina mediante un livello software intermedio, il firmware, realizzato in modo modulare: al BASIC sarebbe perciò spettato solo il compito di interpretare i comandi dell'utente e passarli al firmware, a cui sarebbe spettato il compito di interagire direttamente con l'hardware della macchina per la loro esecuzione. Il firmware fu diviso in 5 moduli: lo schermo, la gestione delle cassette, le routine grafiche di disegno, l'aritmetica in virgola mobile ed il sistema operativo real-time. La scelta di suddividere il firmware in moduli fu fatta per tenere il codice ordinato, con le varie funzioni separate le une dalle altre.
Le tante parole chiave furono introdotte affinché i programmatori non dovessero fare ricorso all'uso di numerose POKE per gestire le caratteristiche del computer, come avveniva ad esempio sul Commodore 64 dove il suo BASIC non offriva istruzioni per un uso diretto delle sue capacità grafiche e sonore. Il sistema fu inoltre pensato affinché fosse in grado di gestire 8 finestre testuali separate, ognuna gestita in modo indipendente così che l'utente potesse scegliere su quale scrivere e quale visualizzare.
Il BASIC era dotato di un sistema di espansione dei comandi detto "RSX" (da "Resident System eXtensions") grazie a cui si poteva integrare nel linguaggio il supporto a nuove periferiche quali i floppy, le penne ottiche ed altro. Le estensioni RSX erano riconoscibili dal fatto che i comandi iniziavano con il carattere "|", ad esempio "|DISK" passa al disco come unità di massa predefinita. Le estensioni RSX potevano essere inserite da una ROM (ad esempio dalla ROM di una periferica) oppure via software.

### Firmware

Il kernel del computer, il nocciolo del sistema operativo, era il Firmware, un insieme di routine in linguaggio macchina che accedevano direttamente all'hardware del sistema. Per facilitare i programmatori gli ingegneri di Locomotive Software decisero per l'adozione di una tabella di salti detta "jumpblock": questa tabella era un elenco di indirizzi posizionati su tutti i modelli dei computer della classe CPC allo stesso identico indirizzo. Un programmatore che voleva chiamare una determinata funzione del firmware poteva accederci tramite il suo punto d'ingresso della jumpblock: facendo così, il suo programma avrebbe funzionato su qualunque computer dato che se anche la funzione fosse stata ricollocata ad un altro indirizzo della ROM dai progettisti di Locomotive Software, anche l'indirizzo nella jumpblock sarebbe stato modificato. Questo sistema assicurava perciò la piena portabilità del codice non solo attraverso eventuali aggiornamenti del sistema ma anche tra i diversi modelli. Per facilitare l'utilizzo delle routine seguendo questo sistema Amstrad rilasciò una completa documentazione delle funzionalità del Firmware del computer denominata "Firmware Guide", nota anche come "Soft 968" dal suo numero nel catalogo Amstrad.

### AMSDOS

L'unità a dischi di Amstrad era dotata di un'interfaccia hardware contenente anche il software necessario alla gestione dell'acceso ai floppy. Queste routine erano caricate come estensioni RSX del linguaggio ed occupavano poco meno di 8 kB di memoria ed offrivano 14 nuovi comandi per gestire i floppy. Questi erano da 3" di diametro ed erano formattati con 40 tracce da 9 settori l'una per lato, per un totale di 178 kB. Il file system non usava directory.

### Componenti hardware

Qui di seguito sono elencate le principali caratteristiche hardware del computer:
* CPU: Zilog Z80A a 4 Megahertz
* RAM: 64 kB (di cui circa 42 kB liberi per l'utente)
* ROM: 32 kB divisi in due banchi da 16 kB l'uno contenenti rispettivamente il Firmware ed il Locomotive BASIC
* Chip video: Hitachi HD6845 CRT
** Tavolozza di 27 colori
** Risoluzioni:
*** Testo: 20×25 / 40×25 / 80×25 caratteri, rispettivamente con 16/4/2 colori
*** Grafica: 160×200 / 320×200 / 640×200 pixel, rispettivamente con 16/4/2 colori
* Chip audio: General Instrument AY-3-8912
** 3 voci
** 8 ottave
** 1 canale di rumore bianco
** 1 altoparlante mono integrato (presente solo nei primi modelli)
* Chip personalizzato: ULA
** generazione dell'immagine
** generazione dei segnali di temporizzazione
** alternanza tra ROM e RAM
** generazione degli interrupt
** generazione della tavolozza dei colori
* Gestione delle linee di I/O: Intel 8255 PPI (Programmable Peripheral Interface)
* Periferiche integrate: lettore di cassette
* Porte esterne:
** 1 porta parallela
** 1 porta di espansione
** 1 porta joystick
** 1 porta floppy
** 1 porta DIN per il monitor Amstrad
** 1 ingresso/uscita audio