***** BIOS *****
Inicializace systému
0EA00H BOOT vstupní bod do BIOSu při počátečním zavedení operačního
systému
0EA03H WBOOT zajistí znovuzavedení modulů CCP a BDOS do paměti
Jednoznakové I/O operace
0EA06H CONST zjistí stav konzole
0EA09H CONIN čte znak z konzole
0EA0CH CONOUT vypíše znak na konzoli
0EA2DH LISTST vrátí status tiskárny (její připravenost)
0EA0FH LIST vypíše znak na tiskárně
0EA12H PUNCH vyděruje znak do děrné pásky
0EA15H READER přečte znak ze snímače děrné pásky
Diskové operace
0EA1BH SELDSK vybere diskovou jednotku
0EA18H HOME nastaví hlavu na stopu 0 vybraného disku
0EA1EH SETTRK nastaví číslo stopy
0EA21H SETSEC nastaví číslo sektoru
0EA24H SETDMA nastaví DMA adresu
0EA27H READ čte nastavený sektor
0EA2AH WRITE zapíše nastavený sektor
0EA30H SECTRN převede logické číslo sektoru na fyzické
0EA00H - BOOT
Vstupní bod do BIOSu, na který odevzdává řízení zavaděč operačního systému (Cold
Start Loader) po zavedení celého systému do paměti. Inicializuje některé
systémové parametry.
0EA03H - WBOOT
Na tuto adresu je odevzdané řízení při volání služby č. 0 (reset systému).
Adresa 0 v oblasti systémových parametrů obsahuje instrukci skoku na tuto
položku vstupního vektoru BIOSu. WBOOT zabezpečí znovuzavedení modulů CCP a BDOS
do paměti a odevzdává řízení na CCP. Skok na adresu 0 (JP 0) je obvyklý způsob
ukončení práce uživatelských programů a odevzdání řízení operačnímu systému.
0EA06H - CONST
Přes tento bod se získá stav vstupu konzole. V registru A poskytne tento
podprogram hodnotu 0FFH, pokud je na konzoli připravený znak pro vstup, jinak
vrací nulu.
0EA09 - CONIN
Podprogram přečte ze vstupu konzole znak do registru A a nuluje sedmý (paritní)
bit. Podprogram čeká, dokud na konzoli není znak k dispozici.
0EA0CH - CONOUT
Podprogram zabezpečí výpis znaku z registru C na konzoli.
0EA0FH - LIST
Znak z registru C se vypíše na tiskárně.
0EA12H - PUNCH
Znak z registru C se vyděruje do děrné pásky.
0EA15H - READER
Ze snímače děrné pásky se přečte znak do registru A. Podprogram na znak čeká.
0EA18H - HOME
Na vybraném disku nastaví hlavu na nultou stopu.
0EA1BH - SELDSK
Vybere disk, kterého číslo je v registru C (0 pro disk A, 1 pro B atd.) pro
následující diskové operace. Podprogram vrátí v registru HL adresu 16 bytové
oblasti (tzv. hlavičky bloku diskových parametrů) patřící vybranému disku.
0EA1EH - SETTRK
V registru BC se BIOSu předává číslo stopy, na které se má vykonat následující
disková operace. Podprogram nastaví tuto stopu.
0EA21H - SETSEC
V registru BC se zadává číslo sektoru, na kterém se má vykonat následující
disková operace. Podprogram nastaví tento sektor.
0EA24H - SETDMA
V registru BC se zadává počáteční adresa oblasti paměti (DMA adresa) pro
následující čtení nebo zápis na disk. Například jestliže při BC = 1000H
nastavíme DMA adresu, budou následující diskové operace čtení i zápisu
vykonávané na adresách 1000H až 107FH tak dlouho, dokud tuto adresu nezměníme.
0EA27H - READ
Podprogram čte jeden záznam o délce 128 bytů z vybraného disku, nastavené stopy
a sektoru na nastavenou adresu DMA. V registru A vrátí 0 v případě úspěšné
operace a 1 v případě chyby. Chybový kód 1 je jednotný pro všechny druhy chyb,
ať už jde o chybu adresace na disku, ztrátu dat, chybu kontrolního součtu atd.
0EA2AH - WRITE
Podprogram zapíše jeden záznam o délce 128 bytů na nastavený sektor na nastavené
stopě na vybraném disku z nastavené DMA adresy. V registru A je vrácena 0 při
úspěšné operaci, nebo 1 v případě chyby.
0EA2DH - LISTST
V registru A vrátí hodnotu 0, jestliže tiskárna není schopna převzít vypisovaný
znak. V případě její připravenosti se vrací hodnota 0FFH.
0EA30H - SECTRN
Podprogram zabezpečuje převod logického čísla sektoru na fyzické. Vstupními
parametry jsou logické číslo sektoru v registru BC a adresa převodní tabulky v
registru DE. Logické číslo sektoru je vlastně indexem v této tabulce. Podprogram
poskytne v registru HL výsledné fyzické číslo sektoru. CP/M nemusí zapisovat
jednotlivé sektory na disk v plynule stoupajícím pořadí, ale z důvodu
minimalizace přístupové doby mohou být sektory zaznamenány na přeskáčku. Tento
způsob záznamu potom v konečném důsledku znamená, že čísla sektorů, ve kterých
je sekvenčně zapsán soubor, se neshodují s čísly odpovídajících sektorů na
disku. Říkáme, že sektory každé stopy jsou přečíslované. Je-li např. parametr
tohoto prečíslení rovný 6, vypadá posloupnost po sobě následujících fyzických
sektorů takto: 1, 7, 13, 19, 25, 5, 11, 17 atd. Logickému číslu sektoru 0 pak
odpovídá fyzický (skutečný) sektor č. 1, logickému číslu 1 odpovídá sektor 7,
logickému číslu 2 odpovídá sektor 13 atd.
(c)
by fy. SCAV for SHARP MZ-821
|
Tento soubor informací o SHARP MZ-800 není určen jako učební text, ale jako příručka programátora, proto se v něm nezmiňuji o podrobnějších detailech Hardware. Informace o mikroprocesorové technice byly čerpány z katalogů, technické dokumentace firem INTEL, ATES, SOKODI, SGS-THOMSON, časopisů AMATÉRSKÉ RADIO, ELEKTRONIKA, a zpracováním informačních souborů o SHARP MZ-800. Jako příloha je dodán plánek počítače zpracovaný ing. Martinem Váňou, plánek o maskovatelném přerušení otisknutý v časopise Elektronika 5/92, plánky řadičů FD, plánky ramdisků a znakové sady.
|
Zpracováno 4.10.1996
|