ZX ROM Memory Card (ZX RMC) je periféria k počítaču ZX Spectrum, ktorá je alternatívou k ROM pamäťovým modulom predstaveným s ZX Interface II. ZX IF2 bola periféria, umožňujúca pripojiť dva ovládače joystick (mapované na klávesy 1, 2, 3, 4, 5 alebo 6, 7, 8, 9, 0) a vložiť jeden 16kB pamäťový modul. Tých bolo vydaných však len týchto 10: Jetpac, PSSST, Cookie, Tranz Am, Chess, Backgammon, Hungry Horace, Horace and the Spiders, Planetoids a Space Raiders.
Keďže je konektor ROM modulov v ZX IF2 obmedzený do počtu signálov, a absentujú tam dôležité signály /RD, /WR, je jeho použitie limitované
ZX RMC sa pripája priamo na zbernicu počítača a nie do IF2. Obsahuje dekóder portu stránkovania a ovládacích signálov, register stránkovania a jednu flash pamäť. Pri jej maximálnej veľkosti 512kB je možné do nej uložiť 32 rôznych 16kB programov. Do prototypu boli vložené všetky v tejto dobe existujúce hry dostupné pre IF2 a dve testovacie ROM.
Register stránkovania je 6-bitový, 5 bitov sa využíva pre stránkovanie pamäte, jeden bit pre ovládanie signálu ROMCS, vďaka čomu je možné využívať aj pôvodnú ROM.
Register sa ovláda portom 254 (FE), ktorý je počítačom využívaný na ovládanie jeho vlastných periférií - klávesnice, zvukového výstupu, výstupu na magnetofón, ovláda farbu okraja (BORDER) a na čítanie stavu klávesnice a magnetofónu. Aby nedochádzalo používaním týchto vnútorných periférii aj k zmenám registra stránkovania, boli v návrhu ZX RMC urobené nasledovné ochranné mechanizmy:
do registra sa dá zapísať iba inštrukciou OUT (C), A a nie OUT (n), A - inštrukcia OUT (C), A je v ZX ROM použitá iba raz pri vykonávaní basicovského príkazu OUT
zapojenie obsahuje dve zámky, každá sa odomyká iným portom, obe zámky musia byť odomknuté pre zápis do registra stránky
V ZX RMC je implementovaná softvérovo ovládaná I2C zbernica.
Prečo práve port 254? Množstvo voľných portov je limitované nedokonalým dekódovaním adresy rôznymi perifériami, takže v zozname použitých portov je ťažko nájsť niečo naozaj voľné, Preto padla voľba na port 254, ktorému sa vývojári snažia vyhýbať.
Na vybratie potrebnej ROM stránky bol naprogramovaný manažér, kde pomocou kurzorových kláves (príp. kláves P, O, Q, A) je možné vybrať potrebnú stránku, ktorá sa následne vynúteným reštartom spustí. Samotný manažér bol pridaný do jednej z hier do voľného miesta a tak nezaberá samostatnú stránku.
Konštrukcia ZX RMC je na jednej doske plošných spojov, prvá verzia bola riešená nastojato, verzia dva je horizontálna.
Okrem pamäte flash a registra stránok je na doske pole GAL, ktoré je vo funkcii dekódera portu FE, ovládania pamäte, registra zámok a ako vstupný port pre sériový port. Odpájanie vnútornej ZX ROM je zabezpečené MOSFET tranzistorom s odporom a diódami. Ďalšie diódy sú použité na vytvorenie zbernice I2C.
MOSFET tranzistor je možné nahradiť tranzistorom PNP (napr. BC556), ale je potrebné skontrolovať rozloženie vývodov (BC 556 sa osádza zrkadlovo).
Schéma a fotografie verzie 1
Verzia 2
V prvej verzii je zakomponovaný sériový port, slúži na výmenu dát medzi ZX a PC. Treba použiť prevodník USB2TTL na strane PC. Rýchlosť prenosu je zvolená na 38 400Bd, väčšiu rýchlosť nebolo možné dosiahnuť, nakoľko port 254 je port, pre ktorý ULA pozastavuje mikroprocesor, toto pozastavovanie je nekontrolovateľné a preto treba počítať s jeho najhoršou variantou. Testy s rýchlosťou 38 400Bd preukázali vysokú spoľahlivosť prenosu. V návrhu bol zvolený prenos dát s dvojbajtovou hlavičkou, obsahujúcou adresu, od ktorej sa majú dáta ukladať do pamäte, a od ktorej sa spustí vykonávanie programu po skončení prenosu dát. Prenos dát sa považuje za ukončený, keď určitú dobu neprichádzajú žiadne ďalšie dáta (to ovšem môže byť spôsobené aj vyťažením PC).
Z verzie dva bol sériový port vyňatý, ale je možné ho vytvoriť zo zbernice I2C. Môže tak dočasne slúžiť na aktualizáciu flash.
A načo je dobrá zbernica I2C? Je možné na ňu pripojiť okrem modulov displejov (OLED 128x64, OLED 128x32, LCD 1602, LCD 2004 s I2C doskou) aj moduly senzorov, sériové pamäte, príp. hodiny reálneho času. Pozor, neexistuje štandard I2C konektora a čo výrobca, to iné rozloženie signálov na 4-pinovom konektore!
Displej je možné využívať napr. pri ladení programu na ostrom počítači na zobrazovanie rôznych stavov, registrov, pamäte a pod., keď nie je vhodné takéto zobrazenia robiť na obrazovku kvôli poškodeniu jej obsahu.
Ovládanie zámok modulu
Odporúčaná sekvencia zmeny stránky. Kód musí byť umiestnený mimo ROM.
UNLOCK 1
UNLOCK 2
SET PAGE
LOCK 2
LOCK 1
Obsah Flash pamäte a GAL na vyžiadanie.