ROM počítačů ZX Spectrum

Z Wikipedie, otevřené encyklopedie
Skočit na navigaci Skočit na vyhledávání

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 | editovat zdroj]

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]

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

Blok rozeskoků a tabulek[editovat | editovat zdroj]

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

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

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.[4] Na adrese 8933 (šestnáctkově 22E5) se nachází rutina zajišťující vykreslení jednoho bodu na obrazovku (obsluha příkazu PLOT).[2]

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

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

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

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

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,[9]
  • ROM 1 - ROM ZX Spectra 48K s drobnými úpravami.

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

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

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

Zajímavosti[editovat | editovat zdroj]

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

Poznámky[editovat | editovat zdroj]

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

Reference[editovat | editovat zdroj]

  1. a b LOGAN, Ian; O'HARA, Frank. The Complete Spectrum ROM Disassembly. [s.l.]: Melbourne House ISBN 0-86161-116-0. ((anglicky)) 
  2. a b ROM routines (anglicky) na timexsinclair.org
  3. PHILLIPS, John. ... did you get that fab loader on Exolon?. Sinclair User. March 1988, čís. 72, s. 70 - 71. Dostupné online. ((anglicky)) 
  4. Use Your ROM. ZX Computing. June/July 1985, s. 20-21. Dostupné online. ((anglicky)) 
  5. JENNE, Daniel, a kol. ZX ROM Výpis. Praha: Vydavatelství Naše vojsko/Zenitcentrum, 1989. ((česky)) 
  6. a b Stránkování pro Spectrum 128/+2/+2A/+3. FIFO. Január 1993, roč. 3, čís. 20, s. 9 - 10. ((česky)) 
  7. Sinclair BASIC History (anglicky) na scratchpad.wikia.com
  8. Sinclair ZX Spectrum +2 na k1.dyndns.org
  9. Spectrum 128 ROM Disassembly (anglicky) na fruitcake.plus.com
  10. The canonical list of +3 oddities na cs.ox.ac.uk
  11. Ž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)) 
  12. Jen si pekne ty "in" telefony kupujte ... na hw.cz

Externí odkazy[editovat | editovat zdroj]