A SAM Coupé egy brit 8 bites hobbiszámítógép, melyet először 1989 végén mutatott be a swanseai székhelyű Miles Gordon Technology (MGT). Gyakran – de hibásan – a Sinclair ZX Spectrum klónjaként utalnak rá, mivel néhány tekintetben hasonlítanak. Van egy ZX Spectrum kompatibilis üzemmódja, és annak idején a ZX Spectrum egyik kézenfekvő utódjaként reklámozták, amihez már a megjelenése pillanatában nagy mennyiségű szoftver áll rendelkezésre. Az újságok „az új Speccy”-nek becézték, a korabeli népszerű 16 bites számítógépekhez (Amiga, Atari ST) hasonlították a teljesítményét.

Hardver áttekintés jobbra|bélyegkép|283px|Oldalról úgy mutat mint egy autó A számítógép központi egysége a 6 MHz-en működő Zilog Z80B mikroprocesszor. Továbbá tartalmaz egy ASIC áramkört, amely – a ZX Spectrum ULA-hoz hasonlóan – több különböző funkciót valósít meg, előállítja az RGB videojelet, I/O műveleteket kezel, memória lapozást végez stb. A számítógép alapkiépítésben 256 KB RAM-ot tartalmaz, ami a gépen belül 512 KB-ig bővíthető, illetve külső bővítő segítségével akár további 4 MB-tal növelhetjük a memóriát (1 MB-os modulokkal). A Z80B a 16 bites címbusszal egyszerre 64 KB memóriát tud megcímezni, melyet a tervezők 4db 16 KB méretű blokkra osztottak fel, így a teljes rendelkezésre álló memóriát lapozással lehet elérni. Az alapmodell elsődleges háttértárolója a kazettás magnó, de lehetőség van akár két 3.5 collos floppy meghajtó beszerelésére is. A hangkeltésért a 6 csatornás (+2 zaj), 8 oktávos, Philips SAA 1099 típusú integrált áramkör felelős. Az ASIC – többek között – tartalmaz egy megszakítás vezérlő áramkört, melynek segítségével a programfutás szinkronizálható az elektronsugár pozíciójához. Az ASIC eredeti prototípusa 138 IC-ből állt, melyet a japán Fujitsu cég miniatürizált egyetlen integrált áramkörbe.

Grafika

A SAM Coupé 4 grafikai módot ismer:

Mode 1 – 256×192 felbontás, nemlineáris, különálló attribútumterület, ZX Spectrum kompatibilis, 6,75 KB méretű Mode 2 – 256×192 felbontás, lineáris, 1 bit/pixel, külön 32×192 attribútumterület minden 8×1 pixelhez, 12 KB méretű Mode 3 – 512×192 felbontás, lineáris, 2 bit/pixel (4 szín), 24 KB méretű Mode 4 – 256×192 felbontás, lineáris, 4 bit/pixel (16 szín), 24 KB méretű

A Mode 3 kétszeres vízszintes felbontása rendkívül hatékonnyá teszi a program- vagy szövegszerkesztést. Például programozás közben használhatjuk a 3-as módot, míg maga a program futhat mondjuk 4-es képernyő módban.

A színeket egy max. 16 elemű palettáról használhatjuk, melyet a rendelkezésre álló 128 színből állíthatunk össze. Egy szín 2-2 bit vörös, zöld és kék szín-komponensből áll, továbbá 1 bit a fényerőt szabályozza. A számítógép nem szabványos SCART csatlakozóján kivezették a TTL videojelet is, ami mindössze 16 szín megjelenítését teszi lehetővé. Mode 4 üzemmódban a paletta színei újradefiniálhatók rasztersoronként, így mind a 128 szín felhasználható a képen. A kompozit videojelet a Motorola MC1377P áramkör állítja elő az ASIC RGB kimenetéből.

A ZX Spectrum emulációhoz szükséges, hogy a processzor azonos sebességgel hajtsa végre az utasításokat, ezért a kompatibilis Mode 1 üzemmódban a SAM extra várakozó ciklusokat iktat be.

A hanggenerátor Hat önálló frekvenciagenerátort tartalmaz, melyek 8 oktávon, oktávonként 256 különböző hangmagasságot képesek előállítani, a – tartományban. Két programozható zajgenerátora van, melyek két különböző üzemmódban használhatók: vagy az egyik generátor vezérli (kétszerezi a generátor frekvenciáját), vagy a három előre definiált zajból választhatunk (7,8 kHz, 15,6 kHz, 31,25 kHz). Utóbbi esetben a zaj- és a frekvenciagenerátor kimenete egymásra keverhető. A 6 csatornára egyenként megadható, hogy a jobb, a bal, vagy mindkét oldalon szóljon. Így a kimeneten 12 logikai hangcsatornát kapunk, melyek hangereje 16 szinten állítható. Két dedikált generátorra 8–8 különböző burkológörbét definiálhatunk, de ebben az esetben csak 8 hangerő-szintet lehet állítani. Egy hardverhiba miatt, a reset gomb megnyomásakor az SAA1099 hanggenerátor csip nem kap reset jelet, így az épp lejátszott hangok tovább szólnak.

SAM Basic

A számítógép bekapcsolásához szükséges ún. boot kódot és a BASIC értelmezőt (SAM BASIC) a 32 KB ROM tartalmazza, melyet Dr. Andrew Wright (a Spectrum Beta Basic szerzője) készített. A lemezmeghajtó kezeléséhez szükséges szoftvert (DOS) nem tartalmazza a ROM, ezt először lemezről be kell tölteni a BOOT parancs vagy az F9 billentyű segítségével. A gyári lemezek nagy része tartalmazza a SAMDOS-t, így azok közvetlenül indíthatók. Később egy továbbfejlesztett változat is megjelent MasterDOS néven, amely egyebek mellett gyorsabb lemezhozzáférést, több fájl kezelését és a valós idejű óra (RTC) támogatását tartalmazza.

A Basic-ben írt programok maximális mérete 217 KB lehet az alapkiépítésű SAM-en. Maximum 61439 sort írhatunk tele, soronként 127 utasítással. A változók neve akár 10 karakter hosszú is lehet. A tömbök méretét csak a rendelkezésre álló szabad memória mérete korlátozza. A SAM Basic egy strukturált nyelv, amely támogatja az eljárás definíciót, a lokális változókat, a paraméterátadás pedig lehet érték vagy cím szerinti. A vezérlő és ciklusszervező utasítások is gazdagabbak a ZX Spectrum Basicben megszokottnál, van ELSE, DO, LOOP, REPEAT, UNTIL, CASE és ON ERROR utasítás. Támogatja az automatikus újrasorszámozást (AUTO). Az igen fejlett SAM Basic különböző képernyő-manipuláló utasításokkal segíti a programozókat: gyors rajzoló utasítások vonal és kör rajzolásához, területkitöltéshez (PLOT, DRAW, CIRCLE, pattern FILL), képernyő mozgató utasítások (ROL, SCROLL), képernyő terület manipuláló utasítások (GRAB, PUT). A rajzoló utasításokhoz a képernyő koordináta rendszer állítható, szabadon választható a középpont, és tetszőlegesen skálázható a vonalhúzás (XOS, YOS, XRG, YRG változók). Az egymást követő grafikai utasítások egy szekvenciába rögzíthetők (RECORD), hogy később egyszerűen megismételhetők legyenek (BLITZ), a BASIC értelmező feldolgozási lassítása nélkül. Mind a 128 szín elérhető Basic-ből is (PALETTE), és mindegyik szín felhasználható egy képernyőn, ugyanis megadható, hogy melyik képernyő-sorban változzon meg az adott paletta bejegyzés (Mode 4 módban). Hangkeltéshez rendelkezésre áll a Spectrum-on megismert BEEP utasítás, de a speciális SOUND utasítással a hangchip minden funkciója elérhető. Ezen kívül beépítettek néhány hangeffektust is (ZAP, POW, ZOOM, BOOM).

MasterBasic

Később megjelent kiegészítés, melyet szintén Dr. Andrew Wright készített, és amely a SAM Basic minden területén érdekes bővítéseket tartalmaz. A RECORD-BLITZ utasításokhoz hasonlóan az új megszakítás vezérelt SOUND utasítás is dolgozhat karakterlánc változóból, a háttérben futva (RECORD SOUND, BLITZ SOUND). Ez lehetővé teszi, hogy a Basicben írt programokhoz is egyszerűen készíthessünk aláfestő zenét. A képernyő-terület kezelő parancs (PUT) kb. 40%-kal gyorsabb lett, és lehetőséget ad a felülírt terület elmentésére (nem kell külön GRAB). Megjelent egy új utasítás a teljes képernyő másolására (COPY SCREEN), ami a különböző képernyőmódok közötti konverziót is automatikusan elvégzi, továbbá lehetőség van a különböző felbontási módok keverésére (ALTER DISPLAY). A karakterlánc kezelés kapott néhány kiegészítést: sorbarendezés (SORT), összefűzés (JOIN), törlés (DELETE), keresés karakterlánc-tömbökben (INARRAY), formázott kiírás (USING$), karakter-szám konverzió (SVAL$, NVAL) stb. A programszerkesztést is hatékony eszközökkel segíti. A modern parancsbeviteli rendszerekhez (shell) hasonlóan, lehetőség van a korábban bevitt sorok visszakeresésére (CTRL+UP/DOWN), a kurzor szavankénti léptetésére (SHIFT+LEFT/RIGHT), bizonyos változók/szövegrészek/kulcsszavak keresésére (REF), vagy akár ezek kicserélésére (ALTER). A fejlesztők örömére hibakereső funkció (LINE) is került a bővítésbe, melynek segítségével akár lépésenkénti végrehajtásra is van mód. A strukturált programozást segítendő, lehetőség van az eljárások vagy ciklusok magjából az azonnali kilépésre (EXIT PROC, EXIT DO, EXIT FOR), így nem kell a GOTO parancsot használni. A gyakran használt eljárásokat rezidenssé tehetjük (HIDE), így egy NEW vagy LOAD parancs után is rendelkezésre állnak.

Videomemória-problémák

A belső memóriához való hozzáférés megosztott a processzor és a videoáramkör között. A CPU-nak várnia kell, míg az ASIC olvassa a memóriát. Emiatt a SAM Coupé processzora mindössze 10-15%-kal tud gyorsabban működni, mint a ZX Spectrum-ban található 3,5 MHz-es Z80A processzor. További teljesítmény problémát jelent, hogy Mode 3 vagy Mode 4 grafikus módban majdnem négyszer annyi memóriaterületet kell kezelni, mint a Spectrum esetében.

Némi előnyt jelent azonban a Spectrummal szemben, hogy a képernyőmemória lineáris és nincs külön színmemória (kivéve Mode 1). Ez egyszerűbbé – és így gyorsabbá – teszi az alacsony szintű képernyőkezelést.

A video áramkör okozta lassulás a teljes belső memóriára vonatkozik, nem úgy mint a ZX Spectrum esetében, ahol csak az alsó 16K RAM-ban okoz lassulást az ULA. Sajnos hardveres képernyő-segédműveleteket nem implementáltak a fejlesztők (mint például sprite-kezelés, blitter, vonalhúzás, területkitöltés), ami jelentősen növelte volna a gép grafikai teljesítményét.

Mialatt a 256x192 képpont méretű területet rajzolja az ASIC, a CPU minden 8 T-állapot alatt csupán egyszer férhet a memóriához. Mode 3 és Mode 4 üzemmódban a képernyő teljesen kikapcsolható, így a processzor teljes 6 MHz-es teljesítménye kihasználható. A ROM területen található kód futását nem befolyásolja a video áramkör működése. A tervezők gondoltak erre, ezért, a fejlesztőket segítendő, néhány gyakran használatos assembly utasítást helyeztek el fix címen a ROM-ban (pl. LDIR, LDDR, CPRD stb).

Lemezmeghajtó

A SAM Coupé-ba két, Citizen típusú, 3,5 hüvelyk méretű, keskeny lemezmeghajtót fogadó nyílást terveztek. Az IDE merevlemezekhez hasonlóan, ezek a meghajtók is tartalmazzák a vezérlő elektronikát, típusa: WD1772-02. Ez azzal az előnnyel jár, hogy két lemezmeghajtót akár egyszerre is használhatunk.

A SAM tervezési hibájából fakadóan adatvesztést okozhat, ha a számítógép újraindításakor (reset), vagy bekapcsoláskor a meghajtóban hagyjuk a lemezt. A probléma gyökere az, hogy reset alatt az ASIC nem állítja elő a 8 MHz-es órajelet, ami hibás működést vált ki a floppy vezérlő áramkörében. A MasterDOS tartalmaz egy segítséget a probléma elhárítására (Seek Safe), ami a meghajtó olvasófejét a directory utolsó sávjára viszi. A megoldás nem 100%-os. Létezik hardveres javítás is, ami gyakorlatilag kiváltja a 8 MHz előállítását egy önálló kapcsolással (Edwin Blink Disk Protector Unit).

A DSDD (két oldal, double density) lemezeket 80 sávra (tracks) formázza oldalanként, sávonként 10 szektorral, szektoronként 512 bájt kapacitással. A lemezek így 800 KB információt hordoznak, amiből 20 KB foglalt a könyvtárstruktúra számára. A fájlrendszer nagyon hasonló az MGT Plus D interfészénél használt megoldással, bővítve a SAM Coupé fájltípusokkal.

A lemezmeghajtók vezérlője kompatibilis az IBM PC-ben használttal, és léteznek szoftverek, melyek segítségével olvashatók a FAT formátumú lemezek.

Periféria csatlakozók

A SAM Coupé-hoz kiemelkedően sok periféria illeszthető alapkiépítésben is:

két belső 3,5 hüvelykes hajlékonylemezes meghajtó nem szabványos SCART csatlakozó, audio kimenet, kompozit, analóg és digitális RGB videojel kimenet 64 tűs Euro-csatlakozó, általános bővítő port Egér csatlakozó (saját szabvány, de létezik Atari ST átalakító) 5 tűs DIN csatlakozó fényceruza vagy fénypisztoly csatlakoztatására MIDI ki/bemenet (és átmenet, szoftveresen) max. 16 számítógép kapcsolható hálózatba a MIDI porton keresztül Atari szabvány 9 tűs joystick port, ami egy speciális kábellel két joystick illesztését is lehetővé teszi 3,5 mm mono kazettás magnó csatlakozó sztereo hangkimenet, 5 tűs DIN csatlakozón keresztül