Služby BIOSu a přerušení

BIOS při své práci využívá některé specifické služby a přerušení. V následujících tabulkách si je jednotlivě popíšeme.

Přehled jednotlivých přerušení ...

Číslo přerušení Jeho funkce
00 Toto přerušení je rezervované pro mikroprocesor. Je voláno vždy, jestliže se při provádění instrukcí div nebo idiv výsledek nevejde ( dojde k přeplnění ) do prostoru ( registru ) pro uložení výsledku nebo nastalo dělení nulou. Obslužná rutina provede výpis hlášení DIVISION OVERFLOW s následným zastavením činnosti počítače.
01 Také toto přerušení je rezervováno pro mikroprocesor. K jeho volání dojde po každé provedené instrukci jestliže je nastaven příznak TF v registru příznaků. Při provádění obslužné rutiny je příznak TF nulován a po jejím ukončení je nastaven na původní hodnotu. Standardně obsahuje obsluha přerušení pouze instrukci IRET. Přerušení je výhodné použit k ladicím účelům, kde obslužnou rutinou je monitor zobrazující hodnoty registrů a zajímavých oblastí paměti, ale je třeba nejprve nastavit na tento monitor vektor přerušení.
02 Jestliže je toto přerušení volané hardwarově pomocí signálu NMI na mikroprocesoru nelze jej maskovat instrukcí CLI. Z tohoto důvodu je používáno k obsluze událostí, které vyžadují obsluhu okamžitě a vždy ( např. výpadek napětí ). Obvykle se používá jako obslužná rutina chyby parity paměti ( provede se pokus o opakovaný přístup a při opakované chybě dojde k zastavení systému ) nebo jestliže je připojen numerický koprocesor, je přerušení využito k obsluze jeho chyb.
03 Toto přerušení je voláno jednak dvoubajtovou instrukcí INT a jednak jednobytovou instrukcí INT. Toho se využívá k ladění programů, kde se na kontrolní místo v paměti umístí tzv. BREAKPOINT ( jednobytové INT ). Jestliže má být toto přerušení použiti v ladicím monitoru, je třeba nastavit vektor tohoto přerušení na adresu ladicího monitoru, protože standardně rutina obsluhy přerušení obsahuje instrukci IRET.
04 Jestliže je příznak OF v registru příznaků nastaven, je možné přerušení volat instrukcí INTO. Toho lze použít v uživatelských programech a testovat zda došlo k přetečení při provádění aritmetických instrukcí a provést příslušnou odezvu. Standardně obsahuje obslužná rutina pouze instrukci IRET.
05 Jestliže je na klávesnici stisknuto tlačítko Print Screen dojde k volání tohoto přerušení, které slouží k vytisknutí kopie obrazovky na tiskárně. Přerušení lze samozřejmě volat i programově instrukcí INT 05. Využití přerušení může přinášet problémy na počítačích AT, protože toto přerušení je generováno instrukcí BOUND a podle doporučení Intelu jde tedy o přerušení rezervované a jakékoli jeho jiné použití pak předpokládá, že v uživatelském sowtvaru není instrukce BOUND použita
06 Interní HW - neznámá instrukce
07 Interní HW - NPU nenalezeno
08 Hardwarový požadavek o obsluhu přerušení IRQ0 volá toto přerušení. Požadavek je generován obvodem čítače/časovače, kanálem 0, pravidelně co 55 ms, neboli s frekvecí18,2 Hz a slouží jako hodiny reálného času
09 Zase se jedná o přerušení generované hardwarem při požadavku o obsluhu přerušení IRQ1, které signalizuje že buffer klávesnice obsahuje znak. Obslužná rutina v Biosu tento znak jež je uložen v tzv. IBM SCAN kódu převede do jejího ASCII vyjádření a uloží do kruhového bufferu klávesnice na adrese 41Eh v paměti.
0A IRQ2/IRQ9 - videoadaptér
0B IRQ3 - Com2
0C IRQ4 - Com1
0D IRQ5 - LPT2
0E Přerušení je generováno řadičem disket při dokončení každé diskové operace. Obslužná rutina nastavuje v případě potřeby příslušný bit proměnné Biosu na adrese 43Eh, který je užit rutinou INT 13h k určení toho, zda disková jednotka potřebuje před provedením požadované činnosti rekalibraci.
0F IRQ7 - LPT1
10 BIOS - služby videoadaptéru
11 BIOS - konfigurace systému
12 BIOS - velikost paměti
13 BIOS - služby HDD
14 BIOS - služby AUX/USART
15 BIOS - doplňkové služby
16 BIOS - rozšířené služby klávesnice
17 BIOS - obsluha tiskárny
18 ROM BASIC - start
19 ROM BIOS - zavedení systému
1A BIOS - obsluha hodin ( RTC )
1B BIOS - Ctrl + Break
1C ROM BIOS - systémové hodiny
1D DATA - tabulka inicializace videoadaptéru
1E DATA - tabulka disketových mechanik
1F DATA - Tabulka grafických znaků
20 DOS - ukončení programu
21 DOS - služby DOS
22 DOS - Ukončovací adresa procesu
23 DOS - Ctrl + C výstup
24 DOS - obsluha neopravitelných chyb I/O
25 DOS - absolutní čtení disku
26 DOS - absolutní zápis na disk
27 DOS - TSR výstup
28 Interní BIOS - klávesnice
29 Interní BIOS - videoadaptér
2A NET - služby NETBIOS ( MS )
2B Interní DOS
2C Interní DOS
2D Interní DOS
2E Interní DOS
2F TSR - PRINT ( multiplex )
30 DATA - CP/M kompatibilita
31 TSR - DPMI služby pro ovládač paměti v chráněném režimu
32 Rezervováno
33 TSR - MS MOUSE NPU
34 NPU D8h - emulace NPU
35 NPU D9h - emulace NPU
36 NPU DAh - emulace NPU
37 NPU DBh - emulace NPU
38 NPU DCh - emulace NPU
39 NPU DDh - emulace NPU
3A NPU DDh - emulace NPU
3B NPU DFh - emulace NPU
3C NPU - emulace NPU
3D NPU - emulace NPU
3E NPU - emulace NPU
3F MS DLL - DLL manažer paměti
40 TSR - Relokace FDD na HDD
41 DATA - Tabulka HDD parametrů
42 TSR - relokace služeb videoadaptéru
43 DATA - EGA + uživatelská tabulka znaků
44 DATA - EGA + uživatelská tabulka znaků
45 HW - rezervováno
46 BIOS - tabulka parametrů druhého HDD
47 HW - rezervováno
48 HW - rezervováno
49 HW - rezervováno
4A BIOS - budík
4B VDS - virtuální DMA systém
4C-4F HW - rezervováno
50-5A Definováno uživatelem
5B MS NET - NTLI
5C NET - BIOS
5D-5F Definováno uživatelem
60-66 Uživatelská obsluha
67 LIM/EMS - základní služby
68 Definováno uživatelem
69 DECNET - Základní služby
6A DECNET - rozšířené služby
6B NOVELL - základní služby
6C DOS 3,2 - RTC
6D Interní VGABIOS
6E DECNET - DOS interface
6F Definováno uživatelem
70 IRQ8 - RTC
71 IRQ9 - LAN adaptér 1
72 IRQ10 - rezervováno
73 IRQ11 - rezervováno
74 IRQ12 - rezervováno
75 IRQ13 - chyba 80287
76 IRQ14 - HDD
77 IRQ15 - rezervováno
78 Uživatelská obsluha
79 NOVELL - rozšířené funkce
7B-7F Uživatelská obsluha
80-F0 ROM BASIC
F1-FD Definováno uživatelem
FE Interní HW - rezervováno
FF Interní HW - rezervováno

Služby BIOSu

Služby video - INT 10h

Toto přerušení je používáno k obsluze požadavků VIDEO. Obsahuje řadu různých funkcí, jejíž volání se provádí přiřazením čísla funkce do registru AH.Tyto služby jsou prováděny jak ROM Biosem tak i Biosem na video kartě.

Hardwarová konfigurace - INT 11h

V registru AX vrací hodnotu informující o konfiguraci hardwaru systému. Tato hodnota je shodná s hodnotou v datové oblasti Biosu.

Velikost použitelné paměti - INT 10h

V registru AX vrací počet kilobajtů základní paměti počítače.

Diskové I/O operace - INT 13h

Toto přerušení umožňuje přímí přístup k pevnému disku nebo k disketové jednotce. Pro uživatele se však doporučuje přístup pře služby operačního systému. Volání těch to služeb se provádí uložením specifického čísla služby do registru AH a skokem na přerušení INT 13h. Jestliže je disková operace ukončená chybou, je nastaven příznak CF a v registru AH je vracen chybový kód, určující jakým způsobem byla operace ukončena. Jestliže chyba nenastala a registr AH není použit při výstupu je vně 00H.

Obsluha sériového portu - INT 14h

Toto přerušení je využíváno pro obsluhu sériových portů. Dokáže obsloužit čtyři sériové porty, jejichž bázová adresa je uložena a nastavena na adresách 400h-407h datové oblasti Biosu. Ale POST při startu počítače nastavuje pouze dvě adresy. Přerušení obsahuje čtyři funkce, jenž se rozlišují uložením čísla funkce do registru AH před vkročením do přerušení

Obsluha klávesnice - INT 16h

Přerušení vytváří uživatelské rozhraní pro obsluhu klávesnice, přitom stav klávesnice je čten nezávisle na běžící úloze pomocí přerušení INT 09h, to se pak generuje hardwarově. Tato rutina má tři obslužné funkce, jejichž číslo se před vstupem ukládá do registru AH.

Obsluha tiskárny - INT 17h

Obsluha tohoto přerušení umožňuje přístup k paralelnímu rozhraní CENTRONICS, jehož bázové adresy jsou uložený v datové oblasti Biosu počínaje adresou 408h. Bios může obsloužit až čtyři tyto porty, ale pouze dva mají přidělené přerušení. Na adrese 478h datové oblasti Biosu je uložena hodnota TIME OUTu tiskárny. Rutina obsahuje tři podprogramy jenž se volí vložením jejich čísla do registru AH.

Obsluha časovače - INT 1Ah

Díky tomuto přerušení máme přístup k systémovým hodinám. Bios pracuje s takzvaným čítačem taktů, což jsou intervaly po 55 ms po startu počítače nebo RESETU. A zároveň je umožněn přístup k hodinám reálného času, což je samostatný obvod na základní desce, který je zálohován baterií, díky tomu je pak nezávislý na napájení a na činnosti mikroprocesoru. Jednotlivé služby jsou rozlišeny jejich číslem v registru AH při volaní přerušení.