Systémové proměnné počítačů Sinclair ZX Spectrum

Systémové proměnné počítačů Sinclair ZX Spectrum jsou místa v paměti tohoto počítače, která ovlivňují chování jeho základního programového vybavení v jeho paměti ROM. V paměti počítače jsou umístěny od adresy 23552 po adresu 23733.[1] Pokud je k počítači připojen ZX Interface I, jsou vytvořeny další systémové proměnné v oblasti od adresy 23734 po adresu 23791.[2] Tyto systémové proměnné jsou vytvořeny až při vložení příkazu pro ZX Interface I nebo při pokusu o vložení řádku se syntaktickou chybou.[3] Počítače ZX Spectrum 128K/+2/+2A/+3 mají další systémové proměnné umístěné v oblasti tiskové vyrovnávací paměti tiskárny ZX Printer (tyto počítače v režimu 128 Basic, resp. +3 Basic ZX Printer nevyužívají). Systém ZX Spectra využívá jako ukazatel na systémové proměnné registr IY (obsahuje vždy hodnotu 23610 desítkově, 5C3A šestnáctkově, ukazuje tedy přímo na systémovou proměnnou ERRNR), jeho hodnotu je nutné zachovat při využívání některých podprogramů v ROM a při využívání přerušení v módu IM1.[4]

Systémové proměnné disketových jednotek Didaktik 40 a Didaktik 80 jsou umístěny v jejich vlastní paměti RAM od adresy 14336 po adresu 16383.[5]

Přehled systémových proměnných

názevadresavelikostvýznam
KSTATE235525C008dočasné hodnoty při vyhodnocování stisknuté klávesy
LAST_K235605C081kód poslední stisknuté klávesy
REPDEL235615C091doba stisku klávesy po jejíž uplynutí bude držení klávesy vyhodnoceno jako opakovaný stisk (v padesátinách sekundy)
REPPER235625C0A1pauza mezi jednotlivými vyhodnoceními opakovaného stisknutí klávesy při jejím držení (v padesátinách sekundy)
DEFADD235635C0B2adresa argumentu uživatelem definované funkce DEF FN při vyhodnocování této funkce. Pokud není vyhodnocována uživatelem definovaná funkce, tato systémová proměnná obsahuje nulu.[6]
K_DATA235655C0D1informace o barvách vložených jako řídicí znaky z klávesnice
TVDATA235655C0E1informace o barvách a pozicování AT a TAB při tisku na obrazovku
STRMS235685C1038adresy kanálů připojených na jednotlivé linky
CHARS236065C362adresa definice znakové sady od mezery po znak ©. Adresa ale ukazuje na znak s kódem nula (v případě standardního ASCII by se jednalo o znak NULL), proto do systémové proměnné musí být uložena hodnota o 256 menší, než je skutečný začátek definice znakové sady.[6]
RASP236085C381délka zvuku varovného bzučáku
PIP236095C391délka pípnutí po stisku klávesy
ERRNR236105C3A1číslo chybového hlášení zmenšené o 1 (takže chybovému hlášení 0 OK odpovídá hodnota -1, tj. 255)
FLAGS236115C3B1různé příznaky pro práci Basicu, blíže nespecifikovatelné[1]
TVFLAG236125C3C1příznaky využívané při tisku na obrazovku
ERR_SP236135C3D2adresa adresy, na kterou se skočí v případě výskytu chybového hlášení (rst 08)
LIST_SP236155C3F2adresa adresy, na kterou se skočí po ukončení výpisu programu. Obvykle je hodnota této systémové proměnné shodná s hodnotou ERR_SP.[1]
MODE236175C411určuje režim kurzoru při editaci řádku a při vkládání dat příkazu INPUT. Hodnoty 0, 1, 2 a 4 nastaví režim L/C, E, G a K.[6]
NEWPPC236185C422číslo řádku, na který skočí příkaz GO TO nebo GO SUB
NSPPC236205C441pořadí příkazu v rámci řádku, na který se skočí. Nastavením této systémové proměnné lze simulovat příkaz GO TO na daný příkaz v řádku
PPC236215C452číslo právě vykonávaného řádku
SUBPPC236235C471pořadí právě vykonávaného příkazu v rámci řádku
BORDCR236245C481barva okraje (borderu) a editační části obrazovky
E_PPC236255C492číslo řádku s programovým kurzorem (řádek, který je přesunut do editační oblasti při stisku klávesy EDIT)
VARS236275C4B2adresa začátku oblasti, ve které jsou uloženy hodnoty proměnných Basicu
DEST236295C4D2adresa právě používané proměnné
CHANS236315C4F2adresa informací o kanálech
CURCHL236335C512adresa kanálu, který je právě otevřen
PROG236355C532adresa začátku oblasti paměti, ve které je uložen Basicový program
NXTLIN236375C552adresa dalšího řádku v programu
DATADD236395C572adresa konce naposledy čtené položky u příkazu DATA
E_LINE236415C592adresa právě zapisovaného příkazu
K_CUR236435C5B2adresa kurzoru
CH_ADD236455C5D2adresa následujícího znaku, který se bude interpretovat
X_PTR236475C5F2adresa výskytu syntaktické chyby
WORKSP236495C612adresa dočasného pracovního prostoru
STKBOT236515C632adresa začátku zásobníku kalkulátoru
STKEND236535C652adresa vrcholu zásobníku kalkulátoru, začátek volného místa
BREG236555C671registr B kalkulátoru
MEM236565C682adresa oblasti používané kalkulátorem, obvykle adresa oblasti MEMBOT, ale ne vždy
FLAGS2236585C6A1další příznaky používané při práci Basicu. Bit 3 této systémové proměnné určuje, zda je zapnutý caps lock.[7]
DF_SZ236595C6B1počet řádků v editační části obrazovky. Pokud je počet řádků nastavený na 0 a mělo by dojít k obvyklému využití této části, např. pro výpis chybového hlášení, systém ZX Spectra se zhroutí, proto je lepší pro výpis textu v dolní části obrazovky použít PRINT #1.[8]
S_TOP236605C6C2číslo řádku programu, který je vypsán jako první při automatickém výpisu programu na obrazovku
OLDPPC236625C6E2číslo řádku, na který skočí příkaz CONTINUE
OSPPC236645C701pořadí příkazu, na který skočí příkaz CONTINUE
FLAGX236655C711různé příznaky
STRLEN236665C722délka právě vyhodnocovaného řetězce
T_ADDR236685C742adresa následující položky v syntaktické tabulce
SEED236705C762nastavení generátoru náhodných čísel
FRAMES236725C783doba od zapnutí počítače (v padesátinách sekundy)
UDG236755C7B2adresa definice znaků UDG
COORDS236775C7D1souřadnice x posledního nakresleného bodu
236785C7E1souřadnice y posledního nakresleného bodu
P_POSN236795C7F1číslo sloupce v tiskové vyrovnávací paměti
PRCC236805C802adresa v tiskovém bufferu, na kterou se zapíše další znak při tisku na tiskárně. Vyšší bajt na adrese 23681, obsahuje vždy hodnotu 91 (desítkově).[8] Tato systémová proměnná není používána u ZX Specter 128K+/+2/+2A/+3 v režimu 128 Basic, resp. +3 Basic. Někdy je vyšší byte této systémové proměnné uváděn jako samostatná nepojmenovaná systémová proměnná.
ECHO_E236825C822adresa posledního znaku ve vyrovnávací paměti při vkládání dat (při editaci programu nebo při příkazu INPUT)
DF_CC236845C842adresa ve videoram odpovídající aktuální tiskové pozici
DF_CCL236865C862adresa ve videoram odpovídající aktuální tiskové pozici v editační části obrazovky
S_POSN236885C881číslo sloupce aktuální tiskové pozice
236895C891číslo řádku aktuální tiskové pozice
SPOSNL236905C8A1číslo sloupce aktuální tiskové pozice v editační části obrazovky
236915C8B1číslo řádku aktuální tiskové pozice v editační části obrazovky
SCR_CT236925C8C1počet řádků, po jejichž vytisknutí na obrazovku se objeví otázka scroll?
ATTR_P236935C8D1aktuálně nastavené barvy, flash a bright
MASK_P236945C8E1určuje, které barevné vlastnosti mají být zachovány na tiskových pozicích při novém výpisu do těchto pozic (určeno příkazy INK 8, PAPER 8, BRIGHT 8 A FLASH 8)
ATTR_T236955C8F1dočasně nastavené barvy, flash a bright (jak jsou specifikovány v aktuálním příkazu PRINT nebo INPUT, pokud specifikovány nejsou, přebírají se hodnoty z ATTR_P)[8]
MASK_T236965C901jako MASK_P, ale pro aktuální příkaz PRINT nebo INPUT (viz ATTR_T)
P_FLAG236975C911další příznaky pro tisk na obrazovku, systémová proměnná je ovlivňována příkazy INK 9, PAPER 9, OVER a INVERSE[8]
MEMBOT236985C9230pracovní prostor kalkulátoru
NMIADD237285CB02adresa rutiny obsluhující NMI. U ZX Specter 48K/48K+/128K+/+2 je v ROM chyba, takže pokud tato systémová proměnná obsahuje 0, provede se reset počítače, jinak neprovede nic. u počítačů ZX Spectrum +2A/+3 je chyba opravena. Pokud je připojen ZX Interface I, systémová proměnná je také využívaná pro uložení nastavené šířky při tisku přes RS-232.[9]
RAMTOP237305CB22adresa posledního bytu paměti využitelného pro Basic
P_RAMT237325CB42adresa posledního fyzicky existujího bytu paměti RAM. Systémovou proměnnou je možné využít pro zjištění, zda program běží na ZX Spectru 16K nebo na ZX Spectru 48K.[8]

Přehled systémových proměnných ZX Interface I

názevadresavelikostvýznam
FLAGS_3237341příznaky pro činnost ZX Interface I
VECTOR237352adresa používaná pro rozšíření interpretu Basicu (normálně je v této systémové proměnné uložena hodnota 01F0)[2]
SBRT2373710rutina pro stránkování ROM, využívaná pro spuštění podprogramu v ROM ZX Spectra z ROM ZX Interface I
BAUD237472rychlost přenosu sériového portu
NTSTAT237491síťové číslo stanice pro práci v síti ZX Net
IOBORD237501barva okraje při vstupně výstupních operacích
SERFL237512pracovní hodnoty při práci se sériovým portem
SECTOR237532pracovní hodnoty při práci se ZX Microdrive
CHADD237552dočasné uložení hodnoty systémové proměnné CH_ADD
NTRESP237571návratový kód stanice při práci v síti
NTDEST237581síťové číslo cílové stanice (touto systémovou proměnnou začíná síťová vyrovnávací paměť)
NTSRCE237591síťové číslo vysílací stanice
NTNUMB237602číslo bloku posílaného přes síť (0 - 65535)
NTTYPE237621hlavičkový byte
NTLEN237631délka bloku dat posílaného přes síť
NTDCS237641kontrolní součet bloku posílaného přes síť
NTHCS237651kontrolní součet hlavičky bloku
D_STR1237662číslo jednotky ZX Microdrive nebo číslo cílové stanice v síti, nebo určení režimu sériového přenosu (touto systémovou proměnnou začíná 8bytový specifikátor souboru)
S_STR1237681číslo linky (0 - 15)
L_STR1237691typ zařízení (m, n, t nebo b)
N_STR1237702délka názvu souboru
T_STR1237722adresa prvního znaku názvu souboru
D_STR2237748druhý 8bytový specifikátor souboru používaný příkazy MOVE a LOAD (má stejnou strukturu jako první specifikátor)
HD_00237821typ souboru (touto systémovou proměnnou začíná pracovní oblast pro příkazy SAVE, LOAD, VERIFY a MERGE)
HD_0B237832délka datového bloku
HD_0D237852počáteční adresa dat
HD_0F237872délka programu v Basicu (bez společně uložených proměnných)
HD_11237892číslo řádku, od kterého se program v Basicu automaticky spustí (autostart)
COPIES237911počet kopií uložených příkazem SAVE

Od adresy 23792 jsou uloženy informace o otevřených kanálech. Informace o každém otevřeném kanálu na ZX Microdrive je velká 595 bytů, informace o každém otevřeném kanálu na síti ZX Net je velká 276 bytů.

Přehled dodatečných systémových proměnných počítačů ZX Spectrum 128K/+2

názevadresavelikostvýznam
SWAP232965B0020stránkovací rutina
YOUNGER5B149stránkovací rutina
ONERR5B1D18stránkovací rutina
PIN5B2F5předrutina vstupu RS-232
POUT5B3422předrutina výstupu RS-232
POUT25B4A14předrutina výstupu znaku přes RS-232
TARGET233845B582adresa rutiny volané v ROM 1
RETADDR233865B5A2adresa návratu do ROM 0
BANK_M233885B5C1poslední hodnota zapsaná na port 7FFD
RAMRST233895B5D1instrukce rst 8 používaná ROM 0 pro zobrazení chybových hlášení z ROM 1
RAMERR233905B5E1číslo chybového hlášení
BAUD233915B5F2časovací konstanta výstupu RS-232
SERFL233935B611příznak příjmu druhého znaku
233945B621přijmutá data
COL233955B631číslo aktuálně tisknutého sloupce
WIDTH233965B641šířka tisku ve znacích (standardně 80)
TVPARS233975B651počet parametrů očekávaných RS-232
FLAGS3233985B661příznaky činnosti editoru 128 Basicu a kazetových/ramdiskových operací
N_STR15B6710název souboru při operacích s ramdiskem, používána také pro uložení adresy právě zpracovávaného řádku při přečíslovávání[10]
HD_005B711hlavičkové informace při operacích s ramdiskem. Dále používaná jako počítadlo pixelů při tisku kopie obrazovky příkazem COPY, uložení rychlosti přenosu při nastavení příkazem FORMAT a pro odkládání informací při přečíslovávání[10]
HD_0B5B722hlavičkové informace při operacích s ramdiskem - délka bloku, používána také jako počítadlo půlřádků při tisku kopie obrazovky příkazem COPY a pro uloženín ASCII reprezentace nového čísla řádku při přečíslovávání[10]
HD_0D5B742hlavičkové informace při operacích s ramdiskem
HD_0F5B762hlavičkové informace při operacích s ramdiskem, používaná také přečíslovávací rutinou[10]
HD_115B782hlavičkové informace při operacích s ramdiskem, používaná také přečíslovávací rutinou pro dočasné uložení hodnoty systémové proměnné VARS[10]
SC_005B7A1alternativní hlavičkové informace při operacích s ramdiskem
SC_0B5B7B2alternativní hlavičkové informace při operacích s ramdiskem
SC_0D5B7D2alternativní hlavičkové informace při operacích s ramdiskem
SC_0F5B7F2alternativní hlavičkové informace při operacích s ramdiskem
OLDSP5B812původní hodnota registru SP, pokud byl zásobník přesunut do TSTACK
SFNEXT5B832ukazatel na začátek volného místa v ramdisku
SFSPACE5B853velikost volného místa v ramdisku
ROW015B881informace o stisknutých klávesách keypadu ve třetí řadě
ROW235B891informace o stisknutých klávesách keypadu v první a druhé řadě
ROW455B8A1informace o stisknutých klávesách keypadu ve čtvrté a páté řadě
SYNRET5B8B2návratová adresa pro ONERR
LASTV5B8D5poslední hodnota zobrazená kalkulátorem
RNLINE5B922adresa délky právě přečíslovávaného řádku
RNFIRST5B942počáteční číslo řádku pro přečíslování (standardně 10)
RNSTEP5B962přírůstek čísla řádku při přečíslování (standardně 10)
STRIP15B988znakový generátor pro první proužek Sinclairovy duhy. Prostor o velikosti 32 bytů je také používán jako vyrovnávací paměť při operacích s ramdiskem,[10] v tomto případě je obsah generátoru přepsán.
STRIP28znakový generátor pro druhý proužek Sinclairovy duhy
TSTACK235515BFFdočasný zásobník, systémová proměnná je vrcholem zásobníku

Pracovní proměnné editoru 128 Basicu jsou umístěny ve stránce 7 od adresy EC00 po adresu FFFF.[10]

Přehled dodatečných systémových proměnných počítačů ZX Spectrum +2A/+3

názevadresavelikostvýznam
SWAP232965B0016stránkovací rutina
STOO233125B1017stránkovací rutina
YOUNGER233295B219stránkovací rutina
REGNUOY233385B2A16stránkovací rutina
ONERR233545B3A24stránkovací rutina
OLDHL233785B522dočasně uložená hodnota registru při stránkování ROM
OLDBC233805B542dočasně uložená hodnota registru při stránkování ROM
OLDAF233825B562dočasně uložená hodnota registru při stránkování ROM
TARGET233845B582adresa rutiny volané v ROM 3
RETADDR233865B5A2adresa návratu do ROM 1
BANKM233885B5C1poslední hodnota zapsaná na port 7FFD
RAMRST233895B5D1instrukce rst 8 používaná ROM 1 pro zobrazení chybových hlášení z ROM 3
RAMERR233905B5E1číslo chybového hlášení. Také je používáno pro uložení dočasného písmena jednotky.
BAUD233915B5F2perioda vysílání bitů přes sériový port RS-232 (v 1/26 T-cyklů procesorů), nastavována příkazem FORMAT LINE
SERFL233935B612příznak příjmu druhého znaku a data
COL233955B631číslo aktuálně tisknutého sloupce
WIDTH233965B641šířka tisku ve znacích (standardně 80)
TVPARS233975B651počet parametrů očekávaných RS-232
FLAGS3233985B661příznaky nastavení tisku (tisk klíčových slov, RS-232/Centronics) a disketového řadiče (přítomnost řadiče, přítomnost disku B:)
BANK678233995B671poslední hodnota zapsaná na port 1FFD
XLOC234005B681souřadnice x při tisku příkazem COPY
YLOC234015B691souřadnice y při tisku příkazem COPY
OLDSP234025B6A2původní hodnota registru SP, pokud byl zásobník přesunut do TSTACK
SYNRET234045B6C2návratová adresa pro ONERR
LASTV234065B6E5poslední hodnota zobrazená kalkulátorem
RCLINE234115B732číslo právě přečíslovávaného řádku
RCSTART234135B752počáteční číslo řádku pro přečíslování (standardně 10)
RCSTEP234155B772přírůstek čísla řádku při přečíslování (standardně 10)
LODDRV234175B791písmeno jednotky pro operace LOAD, MERGE a VERIFY
SAVDRV234185B7A1písmeno jednotky pro operacI save
DUMPLF234195B7B1počet 1/216 pro posun papíru při tisku příkazem COPY EXP (standardně 9)
STRIP1234205B7C8znakový generátor pro první proužek Sinclairovy duhy
STRIP2234285B848znakový generátor pro druhý proužek Sinclairovy duhy
TSTACK235515BFF115dočasný zásobník, když je používána stránka 7 (editorem +3 Basicu nebo +3DOSem). Systémová proměnná je vrcholem zásobníku, v případě potřeby může zásobník přepsat systémové proměnné STRIP1 a STRIP2

Reference

  1. RAK, Pavel. Systémové proměnné. ZX Magazín. 1993, čís. 3/93, s. 22–24. ISSN 1210-4833. ((česky))
  2. Organizacja pamięci ZX Spectrum 48/+ Archivováno 16. 2. 2010 na Wayback Machine (polsky) na spectrum.8bit.pl, cit. 2014-03-30
  3. Those Moody Microdrives. Your Spectrum. March 1984, čís. 2. Dostupné online. ((anglicky))
  4. VILÍM, Tomáš. Assembler a ZX Spectrum, 1. díl. Ústí nad Labem: Proxima - Software, 1992. ((česky))
  5. ŽABENSKÝ, Petr. Systémové proměnné MDOSu. ZX Magazín. 1999, čís. 4/98-1/99, s. 17. ((česky))
  6. Variables on a Theme - Part One. Your Spectrum. March 1984, čís. 2. Dostupné online. ((anglicky))
  7. Тайники ZX-Spectrum: Системные переменные Бейсика. Echo. Март 1997, čís. 03. Anglicky na . Dostupné online. ((rusky))
  8. Variables on a Theme - Part Two. Your Spectrum. May 1984, čís. 3. Dostupné online. ((anglicky))
  9. Sinclair ZX Spectrum computer System Variables Archivováno 22. 11. 2013 na Wayback Machine (anglicky) na wearmouth.demon.co.uk
  10. WILSON, Matthew. Spectrum 128 ROM 0 Disassembly [online]. 2010-11-04, rev. 2011-02-12 (datum vytvoření PDF souboru). Dostupné online. ((anglicky))

Externí odkazy


This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.