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.[1]

Obsah paměti ROM počítačů ZX Spectrum a ZX Spectrum+ editovat

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.[1]

Od adresy 14592 (šestnáctkově 3900) se nachází blok nevyužité paměti obsahující více než 256 hodnot 255. Prostor byl rezerován pro funkce, které se nakonec do ROM nedostaly, a někteří programátoři ho používali jako tabulku vektorů přerušení pro režim IM 2.[2] Na konci paměti ROM se nachází definice jednotlivých znaků znakové sady ZX Spectra.

Blok rozeskoků a tabulek editovat

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,[3]
  • 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 editovat

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)[4],
  • 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 editovat

  • 1A1B (šestnáctkově) - OUT_NUM_1 - rutina pro výpis celého čísla na obrazovku.[5] Čí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.[5] 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.[6] Na adrese 8933 (šestnáctkově 22E5) se nachází rutina zajišťující vykreslení jednoho bodu na obrazovku (obsluha příkazu PLOT).[3]

Kalkulátor pro výpočty v plovoucí řádové čárce editovat

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ů.[7]

Obsah paměti ROM počítačů ZX Spectrum 128K+ a ZX Spectrum +2 editovat

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.[8]

Obsah jednotlivých stránek ROM je:

  • ROM 0 – celoobrazovkový editor, systém nabídek[p 1], výkonné rutiny přidaných příkazů 128 BASICu, kalkulátor, Tape Tester[p 2] a Tape Loader,[11]
  • ROM 1 – ROM ZX Spectra 48K s drobnými úpravami.

Obsah paměti ROM počítačů ZX Spectrum +2A a ZX Spectrum +3 editovat

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.[8]

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.[12]

Zajímavosti editovat

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

Odkazy editovat

Poznámky editovat

  1. První verze počítačů ZX Spectrum 128K+ systém nabídek neměla, místo něho celoobrazovkový editor obsahoval přidané příkazy zpřístupňující funkce pozdějšího systému nabídek.[9]
  2. Tape Tester se nachází pouze v paměti ROM počítačů ZX Spectrum 128K+, ale už ne v paměti ROM počítačů ZX Spectrum +2.[10]

Reference editovat

  1. a b LOGAN, Ian; O'HARA, Frank. The Complete Spectrum ROM Disassembly. [s.l.]: Melbourne House ISBN 0-86161-116-0. ((anglicky)) 
  2. BELFIELD, Dean. L Break Into Program, 0:1 [online]. [cit. 2024-03-29]. Kapitola Interrupts. ((anglicky)) 
  3. a b ROM routines Archivováno 26. 12. 2008 na Wayback Machine. (anglicky) na timexsinclair.org
  4. PHILLIPS, John. ... did you get that fab loader on Exolon?. Sinclair User. March 1988, čís. 72, s. 70–71. Dostupné online. ((anglicky)) 
  5. a b TIŠNOVSKÝ, Pavel. Zobrazení čísel a zpracování příznaků mikroprocesoru Zilog Z80. root.cz [online]. 2023-04-04 [cit. 2023-04-06]. Dostupné online. 
  6. Use Your ROM. ZX Computing. June/July 1985, s. 20–21. Dostupné online. ((anglicky)) 
  7. JENNE, Daniel, a kol. ZX ROM Výpis. Praha: Vydavatelství Naše vojsko/Zenitcentrum, 1989. ((česky)) 
  8. a b Stránkování pro Spectrum 128/+2/+2A/+3. FIFO. Január 1993, roč. 3, čís. 20, s. 9–10. ((česky)) 
  9. Sinclair BASIC History (anglicky) na scratchpad.wikia.com
  10. Sinclair ZX Spectrum +2 Archivováno 3. 12. 2013 na Wayback Machine. na k1.dyndns.org
  11. Spectrum 128 ROM Disassembly Archivováno 15. 1. 2014 na Wayback Machine. (anglicky) na fruitcake.plus.com
  12. The canonical list of +3 oddities na cs.ox.ac.uk
  13. ŽABENSKÝ, Petr. ROM, RAM, EPROM, PROM, ... - Hrátky s pamětí a něco už skoro zapomenutého. ZX Magazín. Čís. 1/96, s. 28–29. ISSN 1210-4833. ((česky)) 
  14. Jen si pekne ty "in" telefony kupujte ... na hw.cz

Související články editovat

Externí odkazy editovat