Il SAM Coupé è un home computer a 8 bit commercializzato in Gran Bretagna dalla fine del 1989 al 1992. Inizialmente fu prodotto da Miles Gordon Technology (MGT), l'azienda che aveva realizzato per lo ZX Spectrum le schede di espansione DISCiPLE e +D. Quando nel 1990 la società fallì, i suoi fondatori crearono una nuova società, la SAM Computer Limited (SAMCo), e continuarono la vendita del computer fino al 1992, quando anche SAMCo fallì.
Il SAM Coupé era pensato come un anello di congiunzione tra i computer a 8 bit e quelli a 16 bit, ma ebbe scarso successo. Una sua caratteristica, sulla quale la pubblicità puntava molto, era la retrocompatibilità con il software per ZX Spectrum. Le macchine a 8 bit stavano ormai tramontando, e a chi voleva passare a computer superiori si offriva la possibilità di mantenere anche il software accumulato per il vecchio Spectrum. Il SAM Coupé si guadagnò in tal modo il soprannome di "Super Spectrum", ma era ingiustamente riduttivo. Le sue capacità erano in realtà più vicine a quelle dell'Atari ST che a quelle dello Spectrum..
Caratteristiche tecniche
Il computer era basato su una CPU Zilog Z80B operante a 6 MHz e conteneva un chip ausiliario ASIC, comparabile all'ULA dello Spectrum, che serviva per alleggerire la CPU dei compiti di gestione della sincronizzazione dei dati dello schermo.
Il modello base montava 256 kB di memoria, che poteva essere espansa internamente a 512 kB: usando una scheda di espansione esterna, si potevano aggiungere altri 4 MB di RAM (a pacchetti di 1 MB l'uno), per un totale massimo di 4,5 MB. A causa delle limitazioni dello Z80, che poteva indirizzare solo 64 kB di memoria, la RAM del computer era suddivisa in blocchi da 16 kB l'uno: gli indirizzi dei 4 blocchi visibili alla CPU erano impostati mediante l'utilizzo delle sue porte di I/O e la tecnica del bank switching.
La memoria di massa principale erano le cassette a nastro magnetico: opzionalmente si potevano installare 1 o 2 unità a dischi per floppy da 3½".
L'audio era gestito dal chip Philips SAA 1099, che forniva 6 canali stereo ad 8 ottave.
Il SAM Coupé era capace di 4 modalità grafiche:
Modo 1 — 256×192 pixel, 32×24 celle 8x8 pixel, profondità colore 1 bit (2 colori) con attributi separati per ogni cella (modalità compatibile con lo ZX Spectrum) = 6,75 kB Modo 2 — 256×192 pixel, 32x192 celle 8x1 pixel, profondità colore 1 bit (2 colori) con attributi separati per ogni cella = 12 kB Modo 3 — 512×192 pixel, framebuffer lineare, profondità colore 2 bit (4 colori) = 24 kB Modo 4 — 256×192 pixel, framebuffer lineare, profondità colore 4 bit (16 colori) = 24 kB
La tavolozza era composta da 128 colori, indirizzati tramite una tabella che accettava in input una stringa di 7 bit: 2 per il rosso, 2 per il verde, 2 per il blu ed 1 bit extra che selezionava una tonalità più intensa di tutte e tre le componenti. Il computer era dotato di un connettore SCART non standard, utilizzando il quale come uscita video la tavolozza si riduceva a 16 colori.
Quando il SAM Coupé era in modo 1 venivano introdotti dei tempi di attesa aggiuntivi per rallentare la velocità della CPU in modo da ottenere una velocità di esecuzione del codice e dei segnali di sincronizzazione del video quasi identici a quelli dello ZX Spectrum.
Il computer conteneva un encoder video Motorola 1377 che generava il segnale video per il modulatore RF miscelando i dati RGB del colore con i segnali di sincronizzazione generati dall'ASIC.
I 32 kB di ROM contenevano il codice necessario al boot del computer, le routine per accedere ai dischi ed un interprete BASIC, il SAM BASIC, derivato dal Beta BASIC disponibile per lo ZX Spectrum. La ROM non includeva nessun DOS: questo doveva essere caricato usando i comandi BOOT oppure BOOT 1 oppure ancora premendo il tasto F9. Il sistema fornito era inizialmente il SAMDOS, di cui in seguito ne fu offerta una versione migliorata denominata MasterDOS: quest'ultima, rispetto alla prima, aveva tempi minori di accesso ai dischi, poteva gestire più file, supportava il Real-time clock ed aveva altre migliorie.
Il BASIC era molto avanzato ed includeva i comandi per gestire gli sprite e per disegnare figure in grafica vettoriale quali linee e cerchi. Il sistema di coordinate dello schermo era variabile e poteva essere scalato e centrato arbitrariamente. Offriva anche un sistema di "registrazione" delle sequenze di comandi grafici che potevano essere ripetute in seguito per evitare la lentezza dell'interprete BASIC, un modo che ricordava molto le display list dell'OpenGL.
Problemi con la memoria video La RAM interna era condivisa fra la circuiteria video e la CPU, con quest'ultima che doveva attendere che l'ASIC avesse terminato il suo accesso, condizione detta memory contention delay: a causa di ciò il processore del SAM Coupé risultava essere solo del 14% più veloce rispetto alla CPU dello ZX Spectrum dato che per gestire le modalità grafiche ad alta risoluzione doveva essere svolto molto più lavoro. Ad esempio, lo schermo in modalità 3 o 4 utilizzava circa 4 volte la RAM della modalità 1 (quella identica allo ZX Spectrum) per cui era necessario svolgere nello stesso tempo 4 volte i calcoli richiesti dallo ZX Spectrum per gestire lo schermo.
A parziale compensazione c'era una gestione dei pixel colorati migliorata rispetto a quella dello ZX Spectrum: le operazioni software su grafica a bassa risoluzione erano più semplici delle equivalenti dello Spectrum e, di solito, anche più veloci.
L'attesa che la CPU doveva rispettare prima di accedere alla memoria si applicava a qualunque operazione condotta in RAM, non solo a quelle sulla memoria utilizzata per le informazioni relative allo schermo, come nel caso dello ZX Spectrum. Se il SAM Coupé avesse offerto la gestione degli sprite e dello scorrimento del video in hardware le prestazioni nei giochi sarebbero state senz'altro superiori ma, purtroppo, la mancanza di spazio sul wafer di silicio dell'ASIC non permise di integrare tali circuiterie.
Durante il tracciamento dell'area di 256×192 pixel dell'immagine dello schermo il processore poteva accedere alla memoria solo durante 1 dei suoi 8 cicli clock, o t-state; durante il disegno del bordo ciò era possibile solo una volta ogni 4 cicli clock, che si traduceva nel non poter eseguire molte delle istruzioni i cui timing erano multipli di 4. Nei modi grafici 3 e 4 lo schermo poteva essere disabilitato completamente, eliminando il problema delle attese forzate e potendo sfruttare tutti i 6 MHz di velocità della CPU. Il codice contenuto nella ROM era affetto da tale limite solo nel momento in cui doveva accedere all'area di memoria RAM.
Unità dischi
Il SAM Coupé utilizzava delle unità dischi a 3,5" prodotte da Citizen che venivano alloggiate sotto la tastiera, con lo sportellino disponibile frontalmente. Come nel caso dei dischi rigidi IDE, questi dispositivi non contenevano solo le unità dischi ma anche i controller, un WD1772-02, con il vantaggio che il computer poteva utilizzare entrambi i lettori contemporaneamente.
A causa di un errore nel progetto del computer, se si riavviava la macchina lasciando un dischetto nell'unità questo poteva andare incontro a problemi di corruzione dei dati. Il problema poteva essere risolto mediante un intervento tecnico.
I dischi a doppia densità usavano un formato a 2 lati, 80 tracce per lato e 10 settori per traccia, con 512 byte per settore: il risultato era una capacità totale di 800 kB, con la directory che ne occupava circa 20 kB ed i restanti 780 a disposizione dell'utente. I file erano memorizzati con la stessa struttura impiegata dall'interfaccia +D di MGT, con l'aggiunta di codici usati per i tipi di file del SAM Coupé. Il firmware dei controller delle unità dischi era compatibile con i dischi del PC IBM ed i programmi erano perciò in grado di leggere i dischi formattati FAT.
Porte di espansione
Il computer offriva diverse porte di espansione, tra cui: 2 alloggiamenti interni per altrettante unità a dischi; connettore SCART leggermente non standard con video composito, digitale e RGB lineare; connettore "Euroconnector" a 64 pin per collegare espansioni hardware; connettore per un mouse in formato proprietario (uscì più tardi un adattatore per i mouse con attacco tipo Atari ST); connettore per penna ottica/light gun a 5 pin DIN; porte IN/OUT MIDI (e THROUGH, tramite uno switch software). supporto per rete tramite la porta MIDI (fino a 16 macchine interconnesse); porta joystick a 9 pin tipo Atari (possibilità di collegare 2 joystick usando un apposito cavo sdoppiatore); jack 3,5 mm (mono) per collegare un registratore a cassette; uscita stereo tramite porta DIN a 5 pin.
Curiosamente il modulatore RF era integrato nell'unità di alimentazione del computer e collegato tramite un connettore alimentazione/TV: a causa di questa scelta il segnale soffriva di interferenze elettromagnetiche generate dal convertitore AC-DC. Per ovviare a questo problema gli utenti più esperti modificavano il computer togliendo il modulatore dall'interno e tenendolo come una unità separata.
A causa di un difetto di progettazione, quando 2 joystick erano collegati insieme (tramite l'apposito sdoppiatore), essi interferivano l'uno con l'altro.
Al connettore Euroconnector potevano essere collegati fino a 4 dispositivi differenti grazie all'uso del SAMBUS, una interfaccia da collegare all'Euroconnector che forniva 4 porte di espansione ed anche un orologio integrato. Se si collegavano dispositivi con un elevato consumo energetico, il SAMBUS richiedeva un alimentatore aggiuntivo.
Compatibilità con lo ZX Spectrum
Per la retrocompatibilità con il software per ZX Spectrum si utilizza un programma emulatore che veniva fornito sia su disco sia su cassetta e che si può eseguire con 5 opzioni, corrispondenti a vari periodi di produzione del software.. Il programma opera caricando in memoria una copia della ROM dello ZX Spectrum e poi passando alla modalità grafica 1, che riproduce la modalità dello schermo dello ZX Spectrum e la velocità del suo processore (non proprio uguale).
La compatibilità effettiva è solo parziale. Inizialmente la MGT dichiarò che il 90% delle cassette per ZX Spectrum avrebbe funzionato sul SAM Coupé, poi ridimensionò al 75%, ma dall'esperienza degli utenti una stima più realistica è il 50-60%.
La MGT non acquisì la licenza per utilizzare la ROM ufficiale dello Spectrum, invece l'emulatore incluso si serve di una ROM riscritta da capo e ridotta all'osso. Questo è il principale motivo delle incompatibilità. In seguito sono apparsi emulatori di pubblico dominio che usano la vera ROM dello Spectrum.
L'emulazione è limitata al modello 48K, mentre lo ZX Spectrum 128K non può essere emulato perché la mappa della sua memoria è incompatibile con quella del SAM Coupé. In aggiunta, anche il chip deputato alla generazione del suono è differente. L'unico modo era convertire i programmi modificando il codice originale.
Siccome il SAM Coupé non gira alla stessa identica velocità dello Spectrum neanche in modalità emulazione, molti sistemi anti-copia per i programmi su cassetta basati su caricatori modificati non funzionavano. Questo obbligò MGT a sviluppare una speciale interfaccia chiamata Messenger che può catturare la memoria di uno ZX Spectrum collegato ad essa e riversarne il contenuto su un disco del SAM Coupé, così da poter utilizzare il programma in un secondo momento. Il Messenger si collega al SAM Coupé tramite la porta rete e allo Spectrum tramite la porta di espansione: la presenza su numerosi SAM Coupé di pulsanti di break guasti (necessari per attivare il software del Messenger) costrinse MGT a offrire anche una scheda con pulsante di break da collegare al SAM Coupé tramite la porta di espansione.
Kaleidoscope