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+
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
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
Rutiny pro obsluhu magnetofonu zajišťují zajišťují ukládání dat na magnetofonovou 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
- 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
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
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
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]
Obsah paměti ROM počítače Timex Sinclair 2068
Počítač Timex Sinclair 2068 obsahuje 24 KiB paměti ROM. V adresním prostoru se paměť ROM nachází mezi adresami 0 a 16383. Celá paměť je tak rozdělena na dvě části o velikostech 16 KiB a 8 KiB. Menší část paměti ROM se nachází v bance nazývané jako EX-ROM a připojuje se v případě potřeby. V menší části se nachází rutina pro nahrávání dat z magnetofonu.
Zajímavosti
- 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
Poznámky
Reference
- ↑ a b LOGAN, Ian; O'HARA, Frank. The Complete Spectrum ROM Disassembly. [s.l.]: Melbourne House ISBN 0-86161-116-0. ((anglicky))
- ↑ BELFIELD, Dean. L Break Into Program, 0:1 [online]. [cit. 2024-03-29]. Kapitola Interrupts. ((anglicky))
- ↑ a b ROM routines Archivováno 26. 12. 2008 na Wayback Machine. (anglicky) na timexsinclair.org
- ↑ PHILLIPS, John. ... did you get that fab loader on Exolon?. Sinclair User. March 1988, čís. 72, s. 70–71. Dostupné online. ((anglicky))
- ↑ 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.
- ↑ Use Your ROM. ZX Computing. June/July 1985, s. 20–21. Dostupné online. ((anglicky))
- ↑ JENNE, Daniel, a kol. ZX ROM Výpis. Praha: Vydavatelství Naše vojsko/Zenitcentrum, 1989. ((česky))
- ↑ a b Stránkování pro Spectrum 128/+2/+2A/+3. FIFO. Január 1993, roč. 3, čís. 20, s. 9–10. ((česky))
- ↑ Sinclair BASIC History (anglicky) na scratchpad.wikia.com
- ↑ Sinclair ZX Spectrum +2 Archivováno 3. 12. 2013 na Wayback Machine. na k1.dyndns.org
- ↑ Spectrum 128 ROM Disassembly Archivováno 15. 1. 2014 na Wayback Machine. (anglicky) na fruitcake.plus.com
- ↑ The canonical list of +3 oddities na cs.ox.ac.uk
- ↑ Ž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))
- ↑ Jen si pekne ty "in" telefony kupujte ... na hw.cz
Související články
Externí odkazy
- The Incomplete Spectrum ROM Assembly Archivováno 25. 8. 2015 na Wayback Machine.
- Philip Kendall - The Spectrum ROMs collection Archivováno 21. 10. 2013 na Wayback Machine.
- ZX Spectrum ROM Images
- An Assembly File Listing to generate a 16K ROM for the ZX Spectrum