ROM počítačů ZX Spectrum
ROM počítačů ZX Spectrum obsahuje základní programové vybavení počítačů a interpret a editor Sinclair BASICu. Programové vybavení v paměti ROM počítače ZX Spectrum bylo vyvinuto přímo z programového vybavení v paměti ROM počítače ZX80.

Obsah paměti ROM počítačů ZX Spectrum a ZX Spectrum+ 
Počítače ZX Spectrum a ZX Spectrum+ obsahují 16 KiB paměti ROM. Paměť ROM se nachází mezi adresami 0 a 16383 (šestnáctkově 0 a 3FFF) adresního prostoru procesoru Z80.

Obsah paměti ROM se skládá ze tří částí: vstupně/výstupní rutiny, interpret Sinclair BASICu a vyhodnocování výrazů. Tyto části lze dále rozdělit na:
 blok rozeskoků a tabulek,
 rutina pro obsluhu klávesnice,
 rutiny pro obsluhu reproduktoru,
 rutiny pro obsluhu magnetofonu,
 rutiny pro obsluhu obrazovky a tiskárny,
 rutina pro vyhodnocení správnosti syntaxe příkazu,
 vlastní interpret příkazů Sinclair BASICU,
 vyhodnocování výrazů,
 matematické rutiny,
 kalkulátor pro výpočty v plovoucí řádové čárce.

Na konci paměti ROM se nachází definice jednotlivých znaků znakové sady ZX Spectra.

Blok rozeskoků a tabulek 
Na začátku paměti ROM se nachází blok rozeskoků, které je tak možné snadno vyvolat pomocí instrukcí rst procesoru Z80:
 0 – studený start systému počítače,
 8 – zobrazení chybových hlášení,
 16 (šestnáctkově 10) – rutina pro tisk znaku skrz aktuálně otevřenou linku,
 24 (šestnáctkově 18) – rutina pro získání znaku z linky,
 32 (šestnáctkově 20) – rutina pro získání dalšího znaku z linky,
 40 (šestnáctkově 28) – spuštění kalkulátoru,
 48 (šestnáctkově 30) – rutina pro vytvoření volného místa v pracovním prostoru,
 56 (šestnáctkově 38) – rutina pro obsluhu přerušení.
Od adresy 149 se nachází blok tabulek:
 149 – tabulka klíčových slov Basicu,
 517 – tabulky kódů kláves.

Rutiny pro obsluhu magnetofonu 
Rutiny pro obsluhu magnetofonu zajišťují zajišťují ukládání dat na magnetogonvou kazetu a jejich opětné nahrání z magnetofonové kazety do počítače. Nezajišťují ale vlastní ovládání magnetofonu. Hlavní rutiny jsou:
 04C2 (šestnáctkově) – SA-BYTES – rutina pro uložení bloku dat na magnetofonovou kazetu,
 053F (šestnáctkově) – SA/LD-RET – nastavení původní barvy okraje a otestování stisku klávesy BREAK po ukončení magnetofonových operací,
 0556 (šestnáctkově) – LD-BYTES – nahrávací rutina pro načtení bloku z magnetofonové kazety,
 05E3 (šestnáctkově) – LD-EDGE-2 – zajišťuje, aby byla rutina LD-EDGE-1 spuštěna dvakrát,
 05E7 (šestnáctkově) – LD-EDGE-1 – provádí vlastní hledání hran a měření délky impulsů mezi dvěma hranami v signálu z magnetofonové kazety (na začátku tato rutina čeká 358 strojových cyklů procesoru),
 0605 (šestnáctkově) – SAVE-ETC – hlavní vstupní bod pro všechny čtyři příkazy pro operace s magnetofonem,
 07CB (šestnáctkově) – VR-CONTRL
 0802 (šestnáctkově) – LD-BLOCK
 08B6 (šestnáctkově) – ME-CONTRL
 092C (šestnáctkově) – ME-ENTER – vytvoření nové řádky a nové proměnné při příkazu MERGE,
 0970 (šestnáctkově) – SA-CONTRL – uložení dvou datových bloků, hlavičky a vlastních dat, na magnefonovou kazetu (dvakrát spouští SA-BYTES),
 09A1 (šestnáctkově) – tabulka textů, které se objevují při operacích s magnetofonem.

Další rutiny 
 1A1B (šestnáctkově) - OUT_NUM_1 - rutina pro výpis celého čísla na obrazovku. Číslo, které se má vytisknout, je očekáváno v registru BC a rutina modifikuje registr A. Rutina byla původně určena pro tisk čísel řádků a tak neumí tisknout záporná čísla a čísla větší než 9999. Např. při pokusu o tisk čísla 10000 je vytištěno :000.

Na adrese 6510 (desítkově) se nachází rutina, jejímž úkolem je najít, na které adrese paměti se nachází řádek Basicového programu s konkrétním číslem, na adrese 6629 (desítkově) se nachází rutina, která z programu v Basicu odebere blok několika řádků od zadané adresy po zadané číslo řádku. Na adrese 8933 (šestnáctkově 22E5) se nachází rutina zajišťující vykreslení jednoho bodu na obrazovku (obsluha příkazu PLOT).

Kalkulátor pro výpočty v plovoucí řádové čárce 
Kalkulátor pro výpočty v plovoucí řádové čárce obsahuje podprogramy pro všechny matematické funkce. Goniometrické funkce, exponenciální funkce, logaritmus jsou počítány jako aproximace pomocí Čebyševových polynomů.

Obsah paměti ROM počítačů ZX Spectrum 128K+ a ZX Spectrum +2 
Počítače ZX Spectrum 128K+ a ZX Spectrum +2 obsahují 32 KiB paměti ROM. Paměť ROM se nachází mezi adresami 0 a 16383 (šestnáctkově 0 a 3FFF) adresního prostoru procesoru Z80. Celá paměť ROM je rozdělená na dvě stránky označované jako ROM 0 a ROM 1, z nichž pouze jedna může být připojena do adresního prostoru procesoru. K přepínání stránek paměti ROM slouží bit č. 4 portu 32765.

Obsah jednotlivých stránek ROM je:
 ROM 0 – celoobrazovkový editor, systém nabídek, výkonné rutiny přidaných příkazů 128 BASICu, kalkulátor, Tape Tester a Tape Loader,
 ROM 1 – ROM ZX Spectra 48K s drobnými úpravami.

Obsah paměti ROM počítačů ZX Spectrum +2A a ZX Spectrum +3 
Počítače ZX Spectrum +2A a ZX Spectrum +3 obsahují 64 KiB paměti ROM. Paměť ROM se nachází mezi adresami 0 a 16383 (šestnáctkově 0 a 3FFF) adresního prostoru procesoru Z80. Celá paměť ROM je rozdělená na čtyři stránky označované jako ROM 0, ROM 1, ROM 2 a ROM 3, z nichž pouze jedna může být připojena do adresního prostoru procesoru. K přepínání stránek paměti ROM slouží bit č. 4 portu 32765 a bit č. 2 portu 8189.

Obsah jednotlivých stránek ROM je:
 ROM 0 – editor programu,
 ROM 1 – vyhodnocování syntaxe a interpret,
 ROM 2 – +3DOS,
 ROM 3 – ROM ZX Spectra 48K.

Programové vybavení v paměti ROM počítačů ZX Spectrum +2A a +3 existuje ve verzích 4.0 a 4.1.

Zajímavosti 
 Pavel Troller, autor rozšíření paměti ZX Spectra na 80 KiB, o sobě v prosinci 2011 prohlásil, že si stále pamatuje začátek obsahu paměti ROM ZX Spectra.

Odkazy

Poznámky

Reference

Související články 
 Software pro počítače ZX Spectrum

Externí odkazy 
 The Incomplete Spectrum ROM Assembly 
 Philip Kendall - The Spectrum ROMs collection 
 ZX Spectrum ROM Images
 An Assembly File Listing to generate a 16K ROM for the ZX Spectrum

Sinclair ZX Spectrum
Programování na ZX Spectru