středa 16. února 2000

LEC ROM

autor: Zeljko Juric

Toto je odlišná ROM jejíž zdroj neznám, ale seznámím vás s jejími základní rysy, jež jsem odhalil za použití disasembleru.

Startovní menu
Po startu, se objeví menu, s následujícími volbami:
  • basic - vstup do BASICu
  • monitor - vstup do monitoru (viz níže)
  • boot - načtení a start programu 'run' z microdrive

Detokenizovaná klávesnice
Tato ROM obsahuje detokenizovaný klávesnicový vstup (místo klíčových slov píše samotná písmenka). Rutina tokenizeru je naprogramována dobře:
  • klíčové slovo může být psané jak malými, tak velkými písmeny
  • mezera mezi GO a TO v příkazu GO TO (nebo GO SUB, DEF FN atd.) není nezbytná
  • mezera není nezbytná ani po příkazu (takže PRINT1 je přijatelný), je nutné ovšem vyloučit stav, kdy argument začíná písmenem (např. PRINTA je nepřijatelný). Jestliže dáváte přednost tokenizovaným klávesám, můžete detokenizovaný vstup klávesnice vypnout použitím basicového příkazu: FORMAT "k". Stejný příkaz tokenizer opět zapne. Toto je řízeno přes bit 7 v FLAGS2 (adresa 23658).

Rozšířený editor
Během úpravy dlouhé řádky, je možné pohybovat kurzorem nahoru a dolů.

80K podpora
Tato ROM má rozšířen BASICový příkaz (MOVE) pro podporu Spectra rozšířeného na 80K (viz níže). Nevím, kdo je výrobcem podporovaného rozšíření, ale zdá se že to není většinou používané 80K rozšíření, ve kterém je stránkováno horních 32K RAM. Totiž, podle dissasemblování ROM se zdá, že v tomto rozšíření je stránkováno spodních 32K (adresa 0-32767) použitím bitu 7 na portu 253, s následujícím významem:
b0=0 : standardní uspořádání (0-16383 ROM, 16384-32767 standardní RAM)
b0=1 : 0-32767 rozšířená 32K RAM
Jestliže chce někdo změnit používaný port, a chce podporu pro standardní 80K stránkování, mohu mu poskytnout nezbytnou informaci přes e-mail.

Rozšířené příkazy BASICu
Tato ROM má 4 nové BASICové příkazy (přesněji, stávající příkazy jsou rozšířeny o další funkci):
CAT
CAT bez parametrů vstoupí do monitoru, jinak pracuje jako obyčejně.
FORMAT
FORMAT "k" zapne nebo vypne tokenizovanou klávesnici; ostatní parametry příkazu FORMAT pracují jako obyčejně.
ERASE
ERASE "i" vymaže dodatečné systémové proměnné Interface 1, rozšířené kanály atd. bez odstranění BASICového programu z paměti; ostatní parametry příkazu ERASE pracují jako obyčejně.
MOVE
Toto je rozšířený příkaz, s následující syntaxí:
MOVE "{zdrojový_kód}{zdrojová_adresa},{délka}","{cílový_kód}{cílová_adresa}"
Ten přesune {délka} bytů ze {zdrojové_adresy} na {cílovou_adresu}. {Zdrojový_kód} a {cílový_kód} může být "r" s významem standard ROM/RAM a "d" s významem rozšířená 32K RAM. Zkuste například (na emulátoru): MOVE "r0,6144","r16384"
Parametry jsou povoleny jen mezi uvozovkami. Jiné parametry pro příkaz MOVE pracují jako obvykle. Tato syntaxe je podivná (parametry jako součást řetězce), ale zřejmě chce autor uchovat původní syntaxi příkazu MOVE {řetězec},{řetězec}.

Monitor
Monitor má následující příkazy (všechny parametry až na příkaz H jsou v hexadecimálních číslech):


B
Teplý návrat do BASICu (jestliže je možný)
D {hex}
Zobrazí vložené hexadecimální číslo v desítkovém zápisu
G {adresa}
Spustí podprogram na adrese G (RET se vrátí do monitoru).
H {dec}
Zobrazí vložené desítkové číslo v hexadecimálním zápisu
M {adresa}
Hexa a ASCII výpis od dané adresy (mezera pro návrat).
R
Prohlížení a/nebo změna registrů AF, BC, DE, HL, IX a SP.
S {adresa}
Plnění paměti od dané adresy použitím hexa editoru (enter před mezerou ukončí hexa editor).

Nová rutina přerušení
Standardní rutina přerušení je změněna, současný stisk SYMBOL SHIFT, SPACE a B provede vstup do monitoru (nefunguje, když je přerušení zakázáno, nebo když se používá mód IM2 bez volání RST 56). Také NMI chyba je opravena (NMI je přesměrován přes NMIADD jestliže <>0).

Ostatní změny
  • Změněny startovní parametry (bílé na černé obrazovce, klávesnicové cvaknutí, rychlost opakovaného stisku klávesy).
  • Nové obrazovkové písmo.
  • Opravena CHR$ 8 a CHR$ 9 chyba.
  • Opravena WAIT_KEY chyba během zobrazení zprávy"scroll?", a tak dále.
  • Opravena chyba CLOSE (chyba při CLOSE #4 bez Interface 1 jestliže proud 4 není otevřen).
  • Kratší prodleva mezi hlavičkou a blokem dat během ukládání.

Soubor ROM: lecrom.zip