ROM počítačů ZX Spectrum

From Wikipedia, the free encyclopedia

Remove ads

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]

Remove ads

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.
Remove ads

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

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads