Untitled Document

BIOS megszakítási rutinok

A BIOS megszakításokat védett modú operációsrendszereken ma már nem lehet közvetlenül meghívni, helyette az adott operációsrendszer függvényeit kell használni - ami egyébként is tanácsosabb.

DOS alapú (win9x) op. rendszerben és Pascal vagy Delphi nyelven viszont:

Function billbios: char; assembler;
asm
    MOV AH, 0 //Billentyűzet: karakter beolvasási funkció
    INT $16 //BIOS billentyűzet megszakitás hívása
    MOV @RESULT, AL //billkód a "RESULT" címre (AL átadása a függvény értékeként).
end;


20-14(h) megszakítás,
0-00(h) funkció
A funkció segitségével egy soros interfész inicializálható
Bemenet
AH
= 0
DX
= a soros intefész száma (az első intefész azonósítója 0, COM1 = 0, COM2 = 1)
AL
= konfigurációs paraméterek

0-1. bit:

adathossz
10 = 7 bites
11 = 8 bites
2. bit:
stopbitek száma
0 = 1 stopbit
1 = 2 stopbit
3-4. bit:
paritásvizsgálat
00 = nincs
01 = páratlan
10 = páros
5-7. bit:
átviteli sebesség
000 = 110 baud
001 = 150 baud
010 = 300 baud
011 = 600 baud
100 = 1200 baud
101 = 2400 baud
110 = 4800 baud
111 = 9600 baud
Kimenet
AH
= soros interfész státusza
0. bit:
1. bit:
2. bit:
3. bit:
4. bit:
5. bit:
6. bit:
7. bit:
adatok készenlétben
adattúlfutás
paritáshiba
protokoll eltérés
szakadás észlelése
az adó puffer regisztere üres
az adó léptető regisztere üres
időtúllépés
AL
= modem státusz
0. bit:
1. bit:
2. bit:
3. bit:
4. bit:
5. bit:
6. bit:
7. bit:
CTS változás
DSR vátozás
RI változás
RLSD változás
CTS - modem adásra kész
DSR - modem rákapcsolva
RI - modem cseng
RLSD - a kapcsolat a vevővel felépült.
Változatlan: BX, CX, DX, SI, DI, BP, valamint a szegmens regiszterek

22-16(h) megszakítás,
0-00(h) funkció
A funkcióval egy karakter olvasható be a billentűzet pufferből
Bemenet: AH= 0
Kimenet: AL = 0, akkor AH = bővített billentyűzetkód.
AL > 0, akkor AL = billyentyű ASCII-kódja és AH = scan-kód
Változatlan: BX, CX, DX, SI, DI, BP, valamint a szegmens regiszterek


20-14(h) megszakítás,
2-02(h) funkció
A funkció segítségével egy karakter olvasható be a soros interfészről

A funkció meghívása előtt, a 3-as funkciót (státusz lekérdezése) mindig meg kell hívni, hogy van e vételre alkalmas karakter
Bemenet:
AH
= 2
DX
= a soros intefész száma (az első intefész azonósítója 0, COM1 = 0, COM2 = 1)
Kimenet:
AH
= soros interfész státusza
7. bit = 0:
7. bit = 1:
0. bit:
1. bit:
2. bit:
3. bit:
4. bit:
5. bit:
6. bit:

karakter vétele kész
hiba; hibakód a 0..6 bitek
adatok készenlétben
adattúlfutás
paritáshiba
protokoll eltérés
szakadás észlelése
az adó puffer regisztere üres
az adó léptető regisztere üres

 
AL
= a vett karakterkód, ha a vétel sikeres
Változatlan: BX, CX, DX, SI, DI, BP, valamint a szegmens regiszterek


20-14(h) megszakítás,
3-03(h) funkció
A funkció a soros interfész és a modem stászuszát adja.

Ezt a funkciót a 2-es funkció (karakter beolvasása) előtt mindig meg kell hívni, annak megállapítására, hogy van e vételre kész karakter ( AH regiszter 0. bitje = 1, adatok készenlétben)
Bemenet
AH
= 3
DX
= a soros intefész száma (az első intefész azonósítója 0, COM1 = 0, COM2 = 1)
Kimenet
AH
= soros interfész státusza
0. bit:
1. bit:
2. bit:
3. bit:
4. bit:
5. bit:
6. bit:
7. bit:
adatok készenlétben
adattúlfutás
paritáshiba
protokoll eltérés
szakadás észlelése
az adó puffer regisztere üres
az adó léptető regisztere üres
időtúllépés
AL
= modem státusz
0. bit:
1. bit:
2. bit:
3. bit:
4. bit:
5. bit:
6. bit:
7. bit:
CTS változás
DSR vátozás
RI változás
RLSD változás
CTS - modem adásra kész
DSR - modem rákapcsolva
RI - modem cseng
RLSD - a kapcsolat a vevővel felépült.
Változatlan: BX, CX, DX, SI, DI, BP, valamint a szegmens regiszterek


22-16(h) megszakítás,
2-02(h) funkció
A funkcióval a billenytűzet státusza kérhető le.
Bemenet:
AH =
2
Kimenet:

AL =

billentyűzet státusza
0.bit = 1 : jobb oldali SHIFT billentyű lenyomva
1.bit = 1 : bal oldali SHIFT billenytű lenomva
2.bit = 1 : CTRL billentyű lenyomva
3.bit = 1 : ALT-billentyű lenyomva
4.bit = 1 : SCROLL LOCK billentyű bekapcsolva
5.bit = 1 : NUM LOCK billentyű bekapcsolva
6.bit = 1 : CAPS LOCK billentyű bekapcsolva
7.bit = 1 : INS billentyű bekapcsolva
Változatlan: BX, CX, DX, SI, DI, BP, valamint a szegmens regiszterek