8. Szczegółowy opis przerwań
INT 00
Dzielenie przez zero (przerwanie sprzętowe
Automatycznie wywołane, gdy zostaje wykryta próba dzielenia przez zero, w Dos'ie zostaje wyświetlony komunikat o błędzie i program zostaje przerwany
INT 01
Praca krokowa (przerwanie sprzętowe)
Wywoływane po każdej wykonanej przez procesor instrukcji, jeżeli jest ustawiona flaga TF najczęściej używany przez programy uruchomieniowe do realizacji pracy krokowej.
INT 02
Przerwanie niemaskowalne (NMI)
Wywołane przez sprzętowy sygnał NMI, przyczyny jego wywołania to:
- błąd parzystości pamięci RAM
- przerwanie koprocesora sygnalizujące błąd w operacjach arytmetycznych koprocesora
- przerwanie klawiatury: Jr, CONV
- kontroler I/O: CONV, PS50+
- kontroler dysku: CONV
- zegar czasu rzeczywistego: CONV
- kontroler DMA: PS50+
INT 03
Punkt kontrolny (BREAKPOINT)
(przerwanie sprzętowe)
Wywołane przez kod CCh, zwykle wykorzystywane przez programy uruchomieniowe do realizacji pułapek
INT 04
Nadmiar, przepełnienie przy operacjach arytmetycznych (przerwanie sprzętowe)
Wywołane przez instrukcje INTO, jeżeli jest ustawiona flaga OF, służy do wykrywania nadmiaru podczas wykonywania operacji na liczbach całkowitych.
INT 05
Klawisz PRINT-SCREEN
Automatycznie wywołane przez klawiaturę po naciśnięciu klawisza PRINT-SCREEN. Normalnie wywołuje procedurę drukowania ekranu, ale może wywołać inne procedury.
INT 05
Przekroczenie wartości granicznej (80186/80286 przerwanie sprzętowe)
Wywołane przez instrukcję BOUND, gdy testowana wartość jest mniejsza od dolnej wartości granicznej lub większej od górnej wartości granicznej.
INT 06
Zgłoszenie nielegalnego kodu rozkazu (80286 przerwanie sprzętowe)
INT 07
Brak koprocesora (80286 w trybie chronionym (Protected))
INT 08
Przerwanie zegara (IRQ 0)
Wywołane przez układ 8254 około 18,2 raza na sekundę, jego wywołanie powoduje zwiększenie licznika zegara systemowego, zmniejszenie licznika czasu włączenia silnika obracającego dyskietkę i ewentualne wyłączenie go oraz wykonanie przerwania 1Ch, przerwanie to może być użyte do określenia czasu, jaki upłynoł od chwili włączenia komputera.
INT 09
Przerwanie klawiatury (IRQ 1)
Wywołane przez naciśnięcie lub zwolnienie klawisza, powoduje wywołanie procedury obsługi klawiatury.
INT 0A
Przerwanie COM3 (XT); przerwanie 8259 (AT) (IRQ 2)
INT 0Bh
Przerwanie COM2 (IRQ 3)
INT 0Ch
Przerwanie COM1 (IRQ 4)
INT 0Dh
Przerwanie LPT2 lub COM4 (IRQ 5)
INT 0Eh
Przerwanie sterowników dysków elastycznych (IRQ 6)
INT 0Fh
Przerwanie LPT1 (IRQ 7)
INT 10
Video - ustawienie trybu pracy sterownika
Wejście:
AH=00h;
AL=tryb (graficzny, jeżeli roździelczość w pikselach)
Numer trybu n=nt
Roździelczość tekstowa = rt
Rozmiary znaku = rz
ROździelczość graficzna = rg
liczba kolorów = lk
liczba stron = ls
adres pamięci ekranu = ap
system = s
00h nt - 40*25 rt - 8*8 rz - B@W lk - 8 ls - B800 ap - CGA s
01h nt - 40*25 rt - 8*8 rz - 16 lk - 8 ls - B800 ap - CGA s
02h nt - 80*25 rt - 8*8 rz - B@w lk - 4 ls - B800 ap - CGA s
03h nt - 80*25 rt - 8*8 rz - 16 lk - 4 ls - B800 ap - CGA s
04h nt - 3200*200 rg - 4 lk - 1 ls - B800 ap - CGA s
05h nt - 320*200 rg - 4 st.szar lk - 1 ls - B800 ap - CGA s
06h - 6400*200 rg - B@W lk - 1 ls - B800 ap - CGA s
07h nt - 80*25 rt - 8*14 rz - mono lk - 1 ls - B000 ap - MDA/Hercules s
08h nt - 160*200 rg - 16 lk - ??? ls - B800 ap - PCjr/Tandy 1000 s
09h nt - 320*200 rg - 16 lk - ??? ls - B800 ap - PCjr/Tandy 1000 s
0Ah nt - 640*200 rg - 4 lk - ??? ls - B800 ap - PCjr/Tandy 1000 s
0Bh nt - zarezerwowane (używane przez EGA Bios)
0Ch nt - zarezerwowane (używane przez EGA Bios)
0Dh nt - 320*200 rg - 16 lk - 8 ls - A000 ap - EGA/VGA s
0Eh - 6400*200 rg - 16 lk - 4 ls - A000 ap - EGA/VGA s
0Fh - 640*350 rg - mono lk - 2 ls - A000 ap - GA/VGA
10h - 640*350 rg - 4 lub 16 lk - 2 ls - A000 ap - EGA/VGA
11h - 640*480 rg - mono lk - 1 ls - A000 ap - VGA/MCGA
12h - 640*480 rg - 16 lk - 1 ls - A000 ap - VGA
18h - 132*44 rt - 8*8 rz - mono lk - Tseng Labs EVA
19h - 132*25 - 8*15 - mono - tsengk Labs LVA
1Ah - 132*28 - 8*13 - mono - Tseng Labs LVA
22h - 132*44 - 8*8 - ??? lk - tseng, Ahead
23h - 132*25 - 6*14 - ??? lk - Tseng Labs LVA
23h - 132*25 - 8*14 - ??? - Ahead Systems EGA 200
24h - 132*28 - 6*13 - Tseng Labs LVA
25h - 640*480 rg - ??? lk - Tseng Labs LVA
26h - 80*60 rt - 8*8 rz - 640*480 rg - ??? lk - Tseng Labs LVA, Ahead Systems, EGA 2001
30h - ???*?? rt - ???lk - AT@t 6300
40h - 6400*400 rg - 2 lk - B00 ap - AT@T 6300
48h - 80*50 rt - 6400*400 rg - 2 lk - B000 ap - AT@T 6300
4Fh - 133*60 rt - 8*8 rz - 16 lk - B000 ap - Oak VGA +
50h - 132*25 rt - 9*14 rz - mono lk - 8 ls - B000 ap - Ahead Systems, EGA 2001, Oak VGA +, Paradise, EGA 480
50h - 132*25 rt - 8*14 rz - 16 lk - 8 ls - B000 ap - s jak wyżej
50h - 80*30 rt - 8*16 rz - 640*480 rg - ??? lk - 8 ls - B000 ap - s jak wyżej
51h - 80*30 rt - 8*16 rz - ??? lk - Paradise, EGA - 4800, OAK VGA +
51h - 13*43 rt - 8*8 rz - 16 lk - 5 ls - B000 ap - s jak wyżej
52h - 132*44 rt - 9*8 rz - mono lk - Ahead Systems, EGA 2001, Oak VGA +
52h - 800*600 rg - 16 lk - 1 ls - A000 ap - s jak wyżej
53h 640*480 rg - 256 lk - A000 ap - Oak VGA +
54h - 132*43 rt - 8*14 rz - ??? lk - Paradise, EGA - 480, Oak VGA +
55h - 1024*768 rg - 4 lk - A000 ap - s jak wyżej
56h - 132*43 rt - 8*8 rz - 2 lk - B000 ap - NSI SMARD EGA +
56h - 1024*768 rg - 16 lk - B000 ap - Oak VGA +++
57h - 132*25 rt - 8*14 rz - 4 lk - B0000 ap - NSI Smard EGA +
60h - 80*??? rt - ???*400 rg - ??? lk - Corona/Cordata, Bios v4.10+
61h - ???*400 rg - ??? lk - Corona/Cordata, Bios v4.10+
71h - 100*35 rt - 8*16 rz - 800*600 rg - 16 z 64 lk - A000 ap - NSI Smard EGA +
74h - 6400*400 rg - ??? lk - Toshiba 3100 s
INT 10
Video - określenie postaci kursora
Wejście:
Ah=01h
CH bity 0-4 = numer górnej lini kursora
bity 5-6 = atrybut migotania (00 = normalny, 01 = niewidzialny, 10 = wolne, 11 = szybkie)
bity 0-4 = numer dolnej lini kursora
INT 10
VIdeo - ustawienie pozycji kursora
Wejście:
AH=02h
DH, DL = żąd, kolumna (0,0 = lewy górny róg ekranu)
BH = numer strony
0 w trybach graficznych
0-3 w trybach 2 i 3
0 - 7 w trybach 0 i 1
INT 10
Video - odczytanie pozycji i postaci kursora
Wejście:
aH = 03h
BH = numer strony
0 w trybach graificznych
0-3 w trybach 2 i 3
0-7 w trybach 0 i 1
Powrót:
DH, DL = żąd, kolumna
CH = numer górnej lini kursora
CL = numer dolnej lini kursora
INT 10
Video - odczytanie pozycji pióra świetlnego (oprócz PS)
Wejście:
AH = 04h
Powrót:
AH = 0: pióro świetlne nie podłączone
AH = 1: pióro świetlne podłączone
DH, DL = żąd, kolumna aktualnej pozycji
CH = numer lini rastra (0 - 199) (EGA) stare tryby graficzne
CX = (EGA) numer lini rastra (0 - nnn) nowe tryby graficzne
BX = kolumna w pikselach (0 - 319 lub 0 - 639)
INT 10
Video - wybór wyświetlanej strony
Wejście:
AH = 05h
AL = 0-7: dostępne numery strony dla trybów 0 i 1
0-3: dostępne strony dla trybów 2 i 3
INT 10
Video - przewijanie tekstu w górę
Wejście:
AH = 06h
AL = liczba wierszy określająca wielkość przesunięcia (0 = wymazanie zawartości ekranu)
BH = atrybut wypełniający obszar znaku spacji
CH, CL = żąd, kolumna lewego górnego rogu obszaru do przesunięcia
DH, DL = żąd, kolumna prawego dolnego rogu obszaru do przesunięcia
INT 10
Video - przewijanie tekstu w dół
Wejście:
AL = liczba wierszy określająca wielkość przesunięcia (0 = wymazanie zawartośći ekranu)
BH = atrybu wypełniający obszar znaku spacji
CH, CL = żąd, kolumna lewego górnego rogu obszaru do przesunięcia
DH, DL = żąd, kolumna prawego dolnego rogu obszaru do przesunięcia
INT 10
VIdeo - odczyt kodu i atrybutu znaku na pozycji kursora
Wejście:
AH = 08h
BH = numer strony
Powrót:
AL = kod znaku
AH = atrybut znaku (tryby tekstowe)
INT 10
Video - wpisanie znaku z atrybutem w pozycję kursora
Wejście:
AH = 09h
AL = kod znaku
BH = numer strony
BL = atrybut znaku (tryby tekstowe, lub kolor (tryby graficzne)) jeżeli bit 7 = 1 w trybach graficznych, wykonywana jest operacja XOR na znaku i zawartości bieżącej pozycji kursora
CX = liczba kopi znaku
INT 10
Video - wpisanie znaku w pozycję kursora
Wejście:
AH = 0Ah
AL = kod znaku
BH = numer strony
BL = kolor znaku (tryby graficzne)
CX = liczba kopi znaku
(EGA) w trybach graficznych wszystkie kopie znaku muszą się mieścić w wierszu bieżącym
INT 10
Video - ustawianie koloru ramki i tła oraz palety kolorów
Wejście:
AH = 0Bh
BH = 0
BL = kolor ramki (0 - 15) (tryby tekstowe)
kolor ramki i kolor tła (tryby graficzne)
BH == 1
BL = numer palety kolorów (0 - 127)
INT 10
Video - wpisanie punktu w podaną pozycję
Wejście:
AH = 0Ch
al = kolor punktu (0-1 w trybie 6, 0-3 w trybach 4 i 5)
Jeżeli ustawiony jest 7 bit, wykonywana jest operacja XOR na nowym kolorze i kolorze aktualnym
DX = żąd (0 - 199)
CX = kolumna (0 - 319 w trybach 4/5/13, 0-639 w trybach 6/14/15/16)
Uwaga: funkcja działa tylko w trybach graficznych
INT 10
Video - odczytanie koloru punktu z podanej pozycji
Wejście:
AH = 0Dh
CX = kolumna (0 - 319 lub 639)
DX = żąd (0 - 199)
Powrót:
AL = wartośćkoloru punktu
INT 10
Video - wpisanie znaku i przesunięcie kursora (tryb dalekopisowy)
Wejście:
AH = 0Eh
al = kod znaku
BH = numer strony (tryby tekstowe)
BL = kolor znaku (tryby graficzne)
Uwaga: rozpoznawane są znaki sterujące: BEL (07B), BS (08B), CR (0DB), LF (0AB); pozostałe znaki sterujące są wyświetlane jak normalne znaki
INT 10
Video - odczytanie trybu pracy sterownika
Wejście:
aAH = 0Fh
Powrót:
AH = liczba kolumn na ekranie
AL = aktualny tryb graficzny (zopacz int 10h/AH=00h)
BH = numer aktualnej strony
INT 10
VIdeo - ustawienie rejestrów palety kolorów (PS, EGA, VGA)
Wejście:
AH = 10h
AL = 0: ustawienie rejestru koloru palety
BL = numer rejestru koloru do ustawienia
BH = numer koloru
AL = 1: ustawienie rejestru koloru brzegu ekranu
BH = numer koloru
AL = 2: ustawienie wszystkich rejestrów koloru palety
ES:DX = adres 17-bajtowej tablicy kolorów
bajty 0-15 = kolory palety (rejestry 0-15)
bajt 16 = kolor brzegu ekranu
(EGA/VGA/MCGA)
AL = 3: przełączenie: migotanie/tło
BL = 0: włączone tło
BL = 1: włączone migotanie
(VGA/MCGA)
AL = 07h: odczytanie pojedyńczego rejestru palety (tylko VGA)
BL = numer rejestru
Powrót:
BH = wartość rejestru
AL = 08h:
odczytanie koloru brzegu ekranu (tylko VGA)
Powrót:
BH = numer koloru
al = 09h: odczytanie wszystkich rejestrów palety (tylko VGA)
ES:DX = adres 17-bajtowej tablicy
AL = 10h: ustawienie pojedyńczego wzorca koloru
BX = numer rejestru wzorca koloru
CH = nowa wartość dla barwy zielonej (0-63)
CL = nowa wartość dla barwy niebieskiej (0-63)
DH = nowa wartość dla barwy czerwonej (0-63)
AL = 12h: zmiana bloku wzrorców koloru
BX = numer pierwszego zmienianego rejestru wzorca koloru
CX = liczba zmienianych rejestrów wzorcu koloru
EX:DX = adres tablicy o długości 3*CX bajtów, gdzie każde 3-bajtowe grupy reprezentują wartości rejestru dla każdego koloru (0-63)
AL = 13h: wybór liczby bloków wzorców koloru i aktywnego bloku wzorców bolorów (tylko VGA)
BL = 00h wybór liczby bloków
Bh = 00h 4 bloki po 64 wzorce koloru
= 01h 16 bloków po 16 wzorców koloru
BL = 01h wybór aktywnego bloku
BH = numer aktywnego bloku (00h to 03h) lub (00h to 0Fh)
AL = 15h: odczytanie pojedyńczego wzorca koloru
BL = numer wzorca koloru (0-255)
Powrót:
DH = wartość dla barwy czerwonej
CH = wartość dla barwy zielonej
CL = wartość dla barwy niebieskiej
AL = 17h: odczytywanie bloku wzorców kolorów
BX = numer pierwszego wzorca koloru
CX = liczba wzorców do odczytania
ES:DX = adres tablicy (3 * CX bajtów długości)
AL = 18h *nie udokumentowane*: ustawienie maski PEL
BL = nowa wartość PEL
AL = 19h *nie udokumentowane*: odczytanie maski PEL
BL = odczytana wartość
AL = 1Ah: odczytani e aktualnych ustawień wzorców koloru (tylko VGA)
Powrót:
BL = liczba bloków wzorców kolorów
0 = 4 bloki po 64 wzorce
1 = 16 bloków po 16 wzorców
BH = numer aktywnego bloku wzorców kolorów
AL = 1Bh: tworzenie odcieni szarości
BX = numer pierwszego modyfikowanego wzorca koloru
CX = liczba zmienianych wzorców
INT 10
Video - funkcje generatora znaków (PS, EGA, VGA)
Wejście:
AH = 11h
FUnkcje mogą spowodować zmianę trybu pracy sterownika, Całkowite skasowanie ustawień rejestrów sterownika, ale nie zmieniają zawartośći pamięci ekranu.
AL = 00h, 10h: załadowanie zestawu znaków zdefiniowanego przez użytkownika
ES:BP = adres tablicy znaków
CX = liczba zmienianych znaków
DX = kod ascii pierwszego zmienianego znaku
BL = numer zastępowanego zbioru znaków
BH = liczba bajtów na znak
AL = 01h, 11h: załadowanie zestawu znaków z ROM (8*14)
BL = numer zastępowanego zbioru znaków
AL = 02h, 12h: załadowanie zestawu znaków z ROM (8*8)
BL = numer zastępowanego zbioru znaków
AL = 03h: wybór zbioru znaków
BL = numer zbioru znaków
AL = 04h, 14h: załadowanie zbioru znaków z ROM (8*16) (VGA)
AL = 20h: załadowanie zestawu znaków zdefiniowanych przez użytkownika dla trybów graficznych
ES:BP = adres tablicy znaków
AL = 21h: załadowanie znaków dla graficznego trybu pracy
ES:BP = adres tablicy znaków
CX = liczba bajtów na znak
BL = liczba wierszy
0: podana przez użytkownika
DL = liczba wierszy
0: 14 wierszy
2: 25 wierszy
3: 43 wierszy
AL = 22h: załadowanie znaków standardowych z ROM (8*14)
BL = liczba wierszy (tak jak w AL = 21h)
AL = 23h: załadowanie znaków standardowych z ROM (8*8)
BL = liczba wierszy (tak jak w AL = 21h)
AL = 24h: załadowanie znaków standardowych z ROM (8*16) (VGA)
AL = 30h: informacja o załadowanych zbiorach znaków
BH = kod zbioru znaków
0: zbiór znaków odpowiadających przerwaniu 1Fh
1: zbiór znaków odpowiadających przerwaniu 44h
2: zbiór 8*14 załadowanych z ROM
3: zbiór 8*8 załadowany z ROM
4: zbiór znaków 8*8 o kodach 128-256 załadowany z ROM
5: dodatkowy zbiór znaków 8*14 załadowany z ROM
6: zbiór znaków 8*16 załadowany z ROM
7: dodatkowy zbiór znaków 8*16 załadowany z ROM
Powrót:
ES:BP = adres zbioru znaków
CX = liczba bajtów na znak
DL = liczba wierszy na ekranie
INT 10
Video - konfiguracja (PS, EGA, VGA, MCGA)
Wejście:
AH = 12h
BL = 10h: informacje o konfiguracji
Powrót:
Bh = 0: monitor kolorowy; 1: monitor monochromatyczny
BL = wielkość pamięci sterownika
0: 64kB
1: 128kB
2: 192kB
3: 256kB
CH = zawartość rejestru złącza krawędziowegoBH = 20h: wybieranie rozszerzonej procedury drukowania ekranu
BL = 20h: wybranie rozszerzonej procedury drukowania ekranu
BL = 30h: wybór rodzielczości pionowej dla trybów alfanumerycznych (VGA)
AL = 00h - 200 lini; 01h - 350 lini; 02h - 400 lini;
Powrót:
Al = 12h jeżeli sterownik to VGA
BL = 31h: włączenie lub wyłączenie standardowej palety kolorów (VGA)
AL = 00h włączenie; 01h = wyłączenie
Powrót:
AL = 12h jeżeli funkcja została wykonana
BL = 32h: włączenie lub wyłączenie sterownika (VGA/MCGA)
AL = 00h sterownik włączony; 01h - sterownik wyłączony
Powrót:
AL = 12h jeżeli funkcja została wykonana
BL = 33h: włączenie lub wyłączenie odcieni szarości (VGA/MCGA)
AL = 00h - włączenie; 01h - wyłączenie
Powrót:
AL = 12h jeżeli funkcja została wykonana
BL = 34h: włączenie lub wyłączenie emulacji kursora (tylko VGA)
AL = 00h - emulacja kursora; 01h - brak emulacji kursora
Powrót:
AL = 12h jeżeli funkcja została wykonana
BL = 35h: zmiana aktywnego sterownika
AL = 00h - wyłączenie pierwszego sterownika; 01h - włączenie pierwszego sterownika; 02h wyłączenie aktywnego sterownika; 03h - włączenie aktywnego sterownika; 80h *nie udokumentowane* - ustawienie flagi włącznika sterownika
ES:DX = adres 128-bajtowego bufora na informacje o stanie aktywnego sterownika (jeżeli AL = 0, 2 lub 3)
BL = 36h: wygaszenie ekranu (VGA/PS)
AL = 0 - normalne wyświetlanie; 1 - ekran wygaszony
Powrót: AL = 12h jeżeli funkcja została wykonana
INT 10
Video - zapisywanie łańcucha (AT, XT286, PS, EGA, VGA)
Wejście:
AH = 13h
AL = tryb
bit 0: 1 = kursor zostanie przesunięty na koniec łańcucha; bit 1: 1 = łańcuch zawiera pary znak, atrybut, jeżeli 0, to łańcuch zawiera tylko znaki
BL = atrybut jeżeli AL bit 1 = 0
BH = numer strony
DH, DL = żąd, kolumna od których rozpocznie się wypisywanie łańcucha
CX = długość łańcucha
ES:BP = adres łańcucha
INT 10
Video - załadowanie zestawu znaków LCD (Convertible)
Wejście:
AH = 14h
AL = 0 - załadowanie zestawu znaków zdefiniowanych przez użytkownika
ES:DI = adres zestawu znaków
BH = liczba bajtów na znak
BL = 0: ładowanie pierwszego zbioru znaków (blok 0); 1: ładowanie drugiego zbioru znaków (blok 1)
CX = liczba zmienianych znaków
DX = adres pierwszego zmienionego znaku
AL = 1: załadowanie standardowego zbioru znaków
BL = 0: ładowanie pierwszego zbioru znaków (blok 0); : ładowanie drugiego zbioru znaków (blok 1)
AL = 2: ustawienie interpretacji atrybutu podświetlenia
BL = 0: ignorowanie atrybutu; 1: wyświetlanie znaku z podkreśleniem; 2: wyświetlanie znaków w inwersie; 3: wyświetlanie znaków z drugiego zestawu znaków
INT 10
Video - fizyczne parametry monitora (Convertible)
Wejście:
AH = 15h
Powrót:
AX = typ monitora
ES:DI = adres tablicy parametrów
Słowo 0: model monitora
1: rodzielczość pionowa (piksele na metr)
2: roździelczość pozioma (piksele na metr)
3: liczba pikseli w pionie
4: liczba pikseli w poziomie
5: odstęp między pikselami w poziomie (mikrometry)
6: odstęt między pikselami w pionie (mikrometry)
INT 10
Video - rodzaj wyświetlacza (PS, VGA/MCGA)
Wejście:
AH = 1Ah
AL = 0: odczytanie rodzaju karty i monitora
Powrót:
BL = rodzaj wyświetlacza (dla aktywnego sterownika)
BH = rodzaj wyświetlacza dla drugiego sterownika
1: ustawienie rodzaju karty i monitora
BL = rodzaj wyświetlacza dla aktywnego sterownika
BH = rodzaj wyświetlacza dla drugiego sterownika
Powrót: AL = 1Ah jeżeli funkcja została wykonana
Rodzaj wyświetlacza:
00h - brak wyświetlacza
01h - monochromatyczna karta i monochromatyczny monitor
02h - CGA i kolorowy monitor
03h - zarezerwowane
04h - EGA i monitor kolorowy
05h - EGA i monitor monochromatyczny
06h - PGA i monitor kolorowy
07h - VGA i analogowy monitor monochromatyczny
08h - VGA i analogowy monitor kolorowy
09h - zarezerwowane
0Ah - MCGA i cyfrowy monitor kolorowy
0Bh - MCGA i analogowy monitor monochromatyczny
0Ch - MCGA i analogowy monitor kolorowy
0Eh-FFA - zarezerwowane
FFh - nieznany typ wyświetlacza
INT 10
Video - informacje o stanie i funkcjach sterownika (PS, VGA/MCGA)
Wejście:
AH = 1Bh
BX = zawsze 0
ES:DI = adres bufora (64 bajty)
DI+00 adres tablicy z opisem możliwości sterownika
DI+04 bieżący tryb pracy sterownika
DI+05 liczba wyświetlanych kolumn
Di+07 rozmiar wykorzystywanej pamięci obrazu w bajtach
DI+09 adres lewego górnego rogu pamięci obrazu (względem początku pamięci obrazu)
DI+0B pozycja kursora dla strony 0
DI+0D dla strony 1
DI+0F dla strony 2
DI+11 dla strony 3
DI+13 dla strony 4
DI+15 dla strony 5
DI+17 dla strony 6
DI+19 pozycja kursora dla strony 7
DI+1B numer górnej lini kursora
DI+1C numer dolnej lini kursora
DI+1D numer aktywnej strony
DI+1E adres rejestru indeksowego układu sterowania wyświetlaczem
DI+20 numer aktualnego trybu pracy
DI+21 numer palety kolorów dla trybów 04h-05h
DI+22 liczba wyświetlanych wierszy
DI+23 wysokość znaku w punktach
DI+25 kod rodzaju aktywnego sterownika
DI+26 KOD rodzaju nie aktywnego sterownika
DI+27 maksymalna liczba jednocześnie wyświetlanych kolorów
DI+29 liczba dostępnych stron
DI+2A liczba lini (0, 1, 2, 3) = (200, 350, 400, 480)
DI+2B numer zbioru znaków składającego się na pierwszą połowę zbioru 512 znaków
DI+2C numer zbioru znaków składającego się na drugą połowę zbioru 512 znaków
DI+2D informacje dodatkowe:
bit 0 - wszystkie tryby pracy dostępne
bit 1 - włączone odcienie szarości
bit 2 - dołączony monitor monochromatyczny
bit 3 - wyłąćzona standardowa paleta kolorów
bit 4 - emulacja kursora
bit 5 - 1 = migotanie
bit 6 - zarezerwowane
bit 7 - zarezerwowane
DI+2E to DI+30 zarezerwowane
DI+31 wielkość pamięci obrazu: 0 - 64kB; 1 - 128kB; 2 - 192kB; 3 - 256kB lub więcej
DI+32 informacja o zawartośći tablicy wskaźników:
bit 0 - używany zbiór 512 znaków
bit 1 - zmieniony zestaw standardowych kolorów
bit 2 - zdefiniowane znaki dla tekstowego trybu pracy
bit 3 - zdefiniowane znaki dla graficznego trybu pracy
bit 4 - zmieniony zestaw standardowych kolorów i wzorców koloru
bit 5 - zmieniona lista par sterowników
bit 6 - zarezerwowane
bit 7 - zarezerwowane
DI+33 to DI+3F zarezerwowane
Struktura 16-bajtowej tablicy z opisem możliwości sterownika
adres+00 dostępne tryby pracy # 1
bity 0-1 = 1 dostępne tryby 0, 1, 2, 3, 4, 5, 6
adres+01 dostępne tryby pracy # 2
bity 0-7 = 1 dostępne tryby 8, 9, A, B, C, D, E, F
adres+02 dostępne tryby pracy #3
bity 0-3 = 1 dostępne tryby 10, 11, 12, 13
bity 4-7 - zarezerwowane
adres+03 do +06 zarezerwowane
adres+07 dostępne wartości roździelczości pionowej
bity 0-2 = 1 roździelczość 200, 350, 400 linie dostępne
adres+08 liczba dostępnych zbiorów znaków w tekstowych trybach pracy
adres+09 maksymalna liczba jednocześnie wyświetlanych zbiorów znaków w tekstowych trybach pracy
adres+0A opis operacji realizowanych przez Bios sterownika # 1
bit 0 - dostępne wszystkie tryby pracy
bit 1 - dostępne odcienie szarości
bit 2 - dostępne zastępowanie zbiorów znaków
bit 3 - dostępne wyłączenie standardowej palety kolorów
bit 4 - dostępna emulacja kursora
bit 5 - dostępna 64-kolorowa paleta sterownika EGA
bit 6 - dostępna zmiana wzorcu koloru
bit 7 - dostępne określanie liczby bloków wzorców kolorów
adrews+0B opis operacji realizowanych przez Bios sterownika # 2
bit 0 - obsługiwane pióro świetlne
bit 1 - dostępne zapamiętanie/odtworzenie stanu sterownika
bit 2 - dostępne przełączanie migotanie/tło
bit 3 - dostępna informacja o rodzaju sterownika
bit 4-7 - zarezerwowane
adres+0C to adres+0D zarezerwowane
adres+0E informacja o możliwościach tablicy wskaźników
bit 0 - możliwość używania zbioru 512 znaków
bit 1 - możliwość zdefiniowania tablicy kolorów
bit 2 - możliwość zmiany standartowego zbioru znaków w trybach tekstowych
bit 3 - możliwość zmiany standardowego zbioru znaków w trybach graficznych
bit 4 - możliwość zmiany standardowej palety i wzorcó koloru
bit 5 - możliwość zmiany par sterowników
bit 6-7 - zarezerwowane
adres+07 zarezerwowane
INT 10
Vide - zapamiętanie/odtworzenie stanu sterownika (PS50+, VGA)
Wejście:
AH = 1Ch
CX = rodzaj zapamiętanej informacji:
bit 0 - stan sprzętu
bit 1 - dane Bios
bit 2 - zawartość rejestrów sterownika
bit 3-7 - zarezerwowane
AL = 0: rozmiar bufora na informacje o stanie sterownika (liczba 64-bajtowych bloków)
AL = 1: zapamiętanie stanu sterownika
ES:BX = adres bufora
AL = 2: odtworzenie stanu sterownika
ES:BX = adres bufora z zapamiętanym wcześniej stanem
Powrót:
AL = 1Ch jeżeli funkcja została wykonana
INT 10
VIdeo - ustawienie graficznego trybu pracy (Hercules, Grafix)
Wejście:
AH = 40h
INT 10
Video - ustawienie tekstowego trybu pracy (Hercules, Grafix)
Wejście:
AH = 41h
INT 10
Video - wyczyszczenie aktywnej strony (Hercules, Grafix)
Wejście:
AH = 42h
INT 10
VIdeo - wybór aktywnej strony (Hercules, Grafix)
Wejście:
AH = 43h
AL = numer strony (0, 1)
INT 10
VIdeo - wybór sposobu rysowania (Hercules, Grafix)
Wejście:
AH = 44h
AL = 0: kasowanie punktu
AL = 1: zapalanie punktu
AL = 2:inwersja punktu
INT 10
Video - wybór wyświetlanej strony (Hercules, Grafix)
Wejście:
AX = 45h
AL = numer strony (0, 1)
INT 10
Video - rysowanie jednego punktu (Hercules Grafix)
Wejście:
AH = 40h
DI = x (0 - 720)
BP = y (0 - 347)
Uwaga: funkcja 44h określa sposób rysowania, a funkcja 43h stronę
INT 10
Video - odczytanie wartośći punktu (Hercules, Grafix)
Wejście:
AH = 47h
DI = x (0 - 720)
BP = y (0 - 347)
Powrót:
AL = 0 punkt nieustawiony
AL = 1 punkt zapalony
Uwaga: funkcja 43h określa stronę
INT 10
Video - przesunięcie kursora do punktu (Hercules, Grafix)
Wejście:
AH = 48h
DI = x (0 - 720)
BP = y (0 - 347)
INT 10
Video - rysowanie do punktu (Hercules, Grafix)
Wejście:
AH = 49h
DI = x (0 - 720)
BP = y (0 - 347)
Uwaga: funkcja 48h określa pierwszy punkt, funkcja 44h sposób rysowania, a 43h numer strony
INT 10
VIdeo - wypełnianie bloku (Hercules, Grafix)
Wejście:
AH = 4Ah
INT 10
Video - wyświetlanie znaku (Hercules, Grafix)
Wejście:
AH = 4Bh
AL = kod znaku
DI = x (0 - 720)
BP = y (0 - 347)
Uwaga: inaczej niż w innych funkcjach Bios związanych z wyświetlaniem znaków, pozycja jest określona w pikselach, a nie w kolumnach i wierszach
INT 10
Video - rysowanie łuku (Hercules, Grafix)
Wejście:
AH = 4Ch
INT 10
Video - rysowanie koła (Hercules, Grafix)
Wejście:
AH = 4Dh
INT 10
Vide - wypełnienie obszaru (Hercules, Grafix)
Wejście:
AH = 4Eh
INT 11
Tekst konfiguracji
Wejście:
Powrót:
AX = flaga wyposażenia
BIt 0 - zainstalowane stacje dysków
bit 1 - zainstalowany kooprocesor arytmetyczny 8087
bit 2,3 - liczba bloków pamięci 16kB na płycie głównej
bit 4,5 - tryb pracy monitora: 01 = 40*25 kolorowy; 10 = 80*25 kolorowy; 11 = 80*25 IBM monochromatyczny
bit 6,7 - liczba stacji dysków (tylko jeżeli bit 0 równa się 1): 00 = 1; 01 = 2; 10 = 3; 11 = 4
bit 8 - obecność kanału DMa: 0 = jest; 1 = nie ma
bit 9, 10, 11 - liczba sprzęgów RS232
bit 12 - karta Game Card jest obecna
bit 13 - zainstalowany wewnętrzny modem
bit 14, 15 - liczba wyjść równoległych
Uwagi: Obecność użądzenia/sprzęgu jest oznaczona ustawieniem bitu (nadaniem mu wartośći 1). Wyjątek - bit 8.
INT 12
Rozmiar dostępnej pamięci
Wejście:
Powrót:
AX = liczba 1-kilobajtowych bloków pamięci RAM
INT 13
Dysk - inicjalizacja systemu dyskowego
Wejście:
AH = 00h
INT 13
Dysk - status systemu dyskowego (ostatnio wykonywanej operacji)
Wejście:
AH = 01h
Powrót:
AL = status:
00h = zakończona poprawnie
01h = nielegalne polecenie dla sterownika dysków
02h = nie znaleziono znacznika adresu
03h = próba zabisu na zabezpieczoną dyskietkę
04h = nie znaleziono sektora
05h = inicjalizacja nie powodła się (HDD)
06h = wyjęto dyskietkę
07h = błąd wczasie ładowania bloku parametrów (HDD)
08h = błąd w kanale DMA
09h = przekroczenie granicy adresowej DMA (64KB)
0Ah = wykryto BAD SECTOR (HDD)
0Bh = wykryto uszkodzoną ścieżkę (HDD)
0Ch = unsupported track
10h = błąd sumy kontrolnej CRC
11h = poprawiono dane algorytmem EEC (HDD)
20h = uszkodzony kontroler NEC 765
40h = nie znaleziono ścieżki błąd przesuwania głowicy (HDD)
80h - przekroczony czas operacji
AAh = napęd nie jest gotowy (HDD)
BBh = błąd nie zdefiniowany (HHDD)
CCH = błąd zapisu (HDD)
E0h = błąd stanu sterownika (HDD)
INT 13
Dysk - odczyt sektorów do pamięci
Wejście:
AH = 02h
AL = liczba sektorów do odczytania
CHHH = ścieżka (dla dysku twardego, bity 8 i 9 w CL)
CL = sektor
DH = strona
DL = napęd
ES:BX = adres bufora
Powrót:
CF = ustawiony, jeżeli wystąpił błąd
ah = status operacji (patrz AH = 1)
AL = liczba przeczytanych sektorów
INT 13
Dysk - zapis sektorów z pamięci
Wejście:
AH = 03h
AL = liczba sektoró do zapisu
CH = ścieżka (dla dysku twardego, bit 8 i 9 w CL)
CL = sektor
DH = strona
DL = napęd
ES:BX = adres bufora
Powrót:
CF = ustawiony, jeżeli wystąpił błąd
AH = status (zopatrz AH = 1)
AL = liczba zapisanych sektorów
INT 113
Dysk - weryfikacja sektorów
Wejście:
AH = 04h
AL = liczba sektorów do weryfikacji
CH = track (dla dysku twardego, bity 8 i 9 w CL)
CL = sektor
DH = strona
DL = napęd
Powrót:
CF = ustawiony, jeżeli wystąpił błąd
AH = status (zopatrz AH = 1)
AL = liczba zweryfikowanych sektorów
INT 13
Dysk - formatowanie ścieżki
Wejście:
AH = 05h
AL = liczba sektorów, jaka ma być stworzona na ścieżce
CH = numer ścieżki
CL = numer sektora
DH = numer głowicy
DL = numer dysku
ES:BX = adres 4-bajtowej tablicy z informacją:
Bajt = numer ścieżki
Bajt 2 = numer głowicy
bajt 3 = numer sektora
bajt 4 = liczba bajtów na sektor:
0 = 128
1 = 256
2 = 512
3 = 124
Powrót:
CF = 1 jeżeli wystąpił błąd
AH = status (zobatrz AH = 1)
INT 13
Dysk twardy - formatowanie ścieżki
Wejście:
AH = 05h
AL = wartość przeplotu (tylko XT)
ES:BX = 512-bajtowy bufor:
Pierwsze bajty (2*liczba sektorów na ścieżkę) zawierająf,n dla każdego sektora. F = 00 dla dobrego sektora, 80h dla bad sector'a. N = numer sektora
CH = numer cylindra (bity 8,9 to górne bity CL)
CL = liczba sektorów
DH = numer głowicy
DL = numer dysku
Powrót:
AH = status (zobatrz AH = 1)
INT 13
Dysk twardy - formatowanie ścieżki i zaznaczenie jej jako Bad Sector (XT, PORT)
Wejście:
AH = 06h
AL = wartość przeplotu (tylko XT)
ES:BX = 512-bajtowy bufor
Pierwsze bajty 2*liczba sektorów na ścieżkę zawierają F,n dla każdego sektora. FF = 00 dla dobrego sektora, 80h dla bad sector'a. N = numer sektora
CH = numer cylindra (bity 8,9 to górne bity CL)
CL = liczba sektorów
DH = numer głowicy
DL = numer dysku
Powrót:
AH = status (zobatrz AH = 1)
INT 13
Dysk twardy - formatowanie dysku od podanej ścieżki (XT, PORT)
Wejście:
AH = 07h
AL = wartość przeplotu (tylko XT)
ES:BX = 512-bajtowy bufor
Pierwsze bajty 2*liczba sektorów na ścieżkę zawierają F,n dla każdego sektora. FF = 00 dla dobrego sektora, 80h dla bad sector'a. N = numer sektora
CH = numer cylindra (bity 8,9 to górne bity CL)
CL = liczba sektorów
DH = numer głowicy
DL = numer dysku
Powrót:
AH = status (zobatrz AH = 1)
INT 13
Dysk - odczytanie parametrów dysku (XT, AT, XTTT285, CONV, PS)
Wejście:
AH = 08h
DL = numer dysku
Powrót:
CF = 1, jeżeli wystąpił błąd
AH = status (zobatrz AH = 1)
DL = liczba dostępnych dysków
DH = liczba głowic
CL = liczba sektorów
ch = liczba cylindrów
INT 13
Dysk twardy - inicjalizacja dwóc tablic bazowych (XT, AT, XT286, PS)
Wejście:
AH = 09h
Powrót: CF = 1, jeżeli wystąpił błąd
AH = status (zobatrz AH = 1)
INT 41h adres tablicy dla dysku pierwszego
INT 46h adres tablicy dla dysku drugiego
INT 13
Dysk twardy - odczyt sektorów z korekcją błędów (XT, AT, XT286, PS)
Wejście:
AH = 0Ah
DL = identyfikator dysku
DH = numer głowicy
CH = numer cylindra (bity 8,9 to górne bity CL)
CL = numer sektora
ES:BX = adres bufora na odczytane dane
Powrót:
CF = 1, jeżeli wystąpił błąd
AH = status (zobatrz AH = 1)
INT 13
Dysk twardy - zapis z korekcją błędów (XT, AT, XT286, PS)
Wejście:
AH = 0Bh
DL = identyfikator dysku
DH = numer głowicy
CH = numer cylindra (bity 8,9 to górne bity CL)
CL = numer sektora
ES:BX = adres bufora zawierającego dane do zapisania
Powrót:
CF = 1, jeżeli wystąpił błąd
AH = status (zopatrz AH = 1)
INT 13
Dysk twardy - szukanie ścieżki (XT, AT, XT286, PS)
Wejście:
AH = 0Ch
DL = identyfikator dysku
DH = numer głowicy
CH = numer cylindra (bit 8,9 to górne bity CL)
Powrót:
CF = 1, jeżeli wystąpił błąd
AH = status (zobatrz AH = 1)
INT 13
Dysk twardy - alternatywna inicjacja dysku (XT, PORT, AT, XT286, PS)
Wejście:
AH = 0Dh
DL = identyfikator dysku
Powrót:
CF = 1, jeżeli wystąpił błąd
AH = status (zobatrz AH = 1)
INT 13
Dysk twardy - odcztywanie bufora sektorów (XT, PORT, PS)
Wejście:
AH = 0Eh
AL = liczba sektorów
CH = nuemer cylindra (bit 8,9, to górne bity CL)
CL = numer sektora
DH = numer głowicy
DL = numer dysku
ES:BX = adres bufora
Powrót:
AL = liczba sektorów actualy trasferred
AH = status (zobatrz AH = 1)
INT 13
Dysk twardy - zapisanie bufora sektorów (XT, PORT, PS)
Wejście:
AH = 0Fh
AL = liczba sektorów
CH = nuemer cylindra (bit 8,9, to górne bity CL)
CL = numer sektora
DH = numer głowicy
DL = numer dysku
ES:BX = adres bufora
Powrót:
AL = liczba sektorów actualy trasferred
AH = status (zobatrz AH = 1)
INT 13
Dysk twardy - testowanie gotowości napędu (XT, AT, XT286, PS)
Wejście:
AH = 10h
DL = identyfikator dysku
Powrót:
CF = 1, jeżeli wystąpił błąd
AH = status (zobatrz AH = 1)
INT 13
Dysk twardy - rekalibracja napędu (XT, PORT, AT, XT286, PS)
Wejście:
AH = 11h
DL = identyfikator dysku
Powrót:
CF = 1, jeżeli wystąpił błąd
AH = status (zobatrz AH = 1)
INT 13
Dysk twardy - diagnostyka RAM kontrolera (XT, PORT, PS)
Wejście:
AH = 12h
Powrót:
AH = status (zobatrz AH = 1)
Uwaga: używane do diagnostyki tylko w PS/2.
INT 13
Dysk twardy - diagnostyka napędu (XT, PORT, PS)
Wejście:
AH = 13h
Powrót:
AH = status (zobacz AH = 1)
Uwaga: Używane do diagnostyki tylko w PS/2.
INT 13
Dysk twardy - diagnostyka kontrolera (XT, PORT, AT, XT286, PS)
Wejście:
AH = 14h
Powrót
CF = 1 jeżeli wystąpił błąd
AH = status (zobacz AH = 1)
Uwaga: Używane do diagnostyki tylko w PS/2.
INT 13
Dysk - odczytanie typu dysku (AT, XT2, XT286, CONV, PS)
Wejście:
AH = 15h
DL = identyfikator dysku
Powrót:
AH = typ dysku:
0 = disk not dhere
1 = stacja dysków, brak sygnalizacji braku dyskietki
2 = stacja dysków, jest sygnalizacja braku dyskietki
3 = dysk twardy
CX/DX: = liczba 512-bajtowych sektorów
INT 13
Dysk - sprawdzanie statusu dysku (AT, XT2, XT286, CONV, PS)
Wejście:
AH = 16h
DL = dysk do sprawdzenia
Powrót:
AH = status dysku:
0 = brak zmiany dysku
6 = zmieniono dysk
INT 13
DYsk - ustawienie typu dysku (AT, XT2, XT286, CONV, PS)
Wejście:
AH = 17h
AL = typ dysku:
00 = brak dysku
01 = regular disk in regular drive
02 = regular disk in high - capacity drive
03 = high - capacity disk in high - capacity drive
DL = identyfikator dysku
INT 13
Dysk - ustawienie typu dysku do formatowania (AT model 3*9, XT2, XT286, PS)
Wejście:
AH = 18h
DL = numer dysku
CH = niższe 8 bitów liczby ścieżek
CL = liczba sektorów na ścieżkę (bity 0-5); dwa najwyższe bity liczby ścieżek (bity 6-7)
Powrót:
AH = 00h jeżeli wykonanie poprawne
01h funkcja nie dostępna
0Ch nieznany typ dysku
80h brak dyskietki w napędzie
ES/DI = adres 11-bajtowej tablicy informacyjnej
INT 13
DYsk twardy - parkowanie głowicy dysku (XT286, PS)
Wejście:
AH = 19h
INT 14
Port szeregowy - inicjacja złącza
Wejście:
AH = 00h
AL = parametry inicjalizacji:
bity 7-5 - szybkość transmisji: 000 = 110 bd; 001 = 150 bd; 010 = 300 bd; 011 = 600 bd; 100 = 1200 bd; 101 = 2400 bd; 110 = 4800 bd; 111 = 9600 bd (4800 w PCjr)
bity 4-3 - rodzaj bitu parzystości: 00 = brak bitu parzystości; 01 = nieparzysty; 10 = brak bitu parzystości; 11 = parzysty
bit 2 = liczba bitów stopu: 0 = jeden bit stopu; 1 = dwa bity stopu
bit 1-0 - długość słowa: 10 = 7 bitów; 11 = 8 bitów
DX = numer portu
Powrót:
AH = status złącza RS-232:
0: dane gotowe
1: błąd nałożenia
2: błąd parzystości
3: błąd ramki
4: stan 0 lini
5: rejestr wyjściowy pusty
6: rejestr transmisji pusty
7: przekroczenie czasu oczekiwania
AL = modem - status:
0: stwierdzono zmianę sygnału CTS
1: stwierdzono zmianę sygnału DDTR
2: stwierdzono zmianę sygnału RI
3: stwierdzono zmianę sygnału DCD
4: aktywny sygnał CTS
5: aktywny sygnał DTR
6: aktywny sygnał RI
7: aktywny sygnał DCD
INT 14
Port szeregowy - przesłanie znaku
Wejście:
AH = 01h
AL = kod znaku
DX = numer portu
Powrót:
AX = status portu (tak jak w AH = 00h)
INT 14
Port szeregowy - odbiór znaku
Wejście:
AH = 02h
Powrót:
AL = kod odebranego znaku
AH = status złącza RS232 (tak jak w AH = 00h)
INT 14
Port Szeregowy - odczyt statusu złącza
Wejście:
AH = 03h
Powrót:
AX = status portu (tak jak w AH = 00h)
INT 14
Port szeregowy - rozszerzona inicjalizacja złącza (PS)
Wejście:
AH = 04h
AL = reakcja na sygnał BREAK:
0 - jeżeli sygnał BREAK przyjmowany
1 - jeżeli sygnał BREAK ignorowany
BH = bit parzystości:
0 - brak parzystości
1 - nieparzysty
2 - parzysty
3 - ???
4 - ???
BL = liczba bitów stopu:
0: jeden bi786t stopu
1: dwa bity stopu (1,5 jeżeli pięcio bitowe słowo)
CH = długość słowa:
0: 5 bitów
1: 6 bitów
2: 7 bitów
3: 8 bitów
CL = prędkość w bodach:
0: 110
1: 150
2: 300
3: 600
4: 1200
5: 2400
6: 4800
7: 9600
8: 19200
Powrót:
AX = status portu (tak jak w AH = 00h)
INT 14
Port szeregowy - rozszerzona kontrola złącza (PS)
Wejście:
AH = 05h
AL = 0 odczytanie rejestru kontroli modemu
Powrót:
BL = rejestr kontroli modemu
AH = status
AL = 1 ustawienie rejestru kontroli modemu
BL = rejestr kontroli modemu:
bit 0: dane gotowe
bit 1: żądanie wysłania danych
bit 2: OUT1
bit 3: OUT2
BIT 4: LOOP
bity 5-7: zarezerwowane
Powrót:
AH = status
INT 15
Kaseta - włącz silnik magnetofonu (PC, Jr)
Wejście:
AH = 00h
Powrót:
Silnik magnetofonu włączony
INT 15
Kaseta - wyłącz silnik magnetofonu (PC, Jr)
Wejście:
AH = 01h
Powrót:
Silnik magnetofonu wyłączony
INT 15
Kaseta - odczytanie bloku danych (PC, Jr)
Wejście:
AH = 02h
CX = liczba bajtów
ES:BX = adrs obszaru danych
Powrót:
CF = 1 jeżeli wystąpił błąd
DX = liczba odczytanych bajtów
ES:BX = adres ostatniego wczytanego bajtu
INT 15
Kaseta - zapisanie bloku danych (PC, Jr)
Wejście:
AH = 03h
CX = liczba bajtów do zapisania
ES:BX = adres obszaru danych
Powrót:
ES:BX = adres ostatniego zapisanego znaku
INT 15
System - czekanie na zewnętrzne zdarzenie (CONVFERTIBLE)
Wejście:
AH = 41h
AL = typ warunku:
bit 0-2: warunek do spełnienia: 0 - jakiekolwiek zdarzenie; 1 - porównanie i powrót jeżeli równe; 2 - porównanie i powrót jeżeli różne; 3 - sprawdzenie i powrót jeżeli różne od zera; 4 - sprawdzenie i powrót jeżeli równe 0
bit 3: zarezerwowane
bit 4: 1 = adres portu, 0 = ??? bajt użytkownika
bit 5-7: zarezerwowane
BX = warunek porównania lub wartości maski
BL = wielkość timeout-u (1 - 55 ms, 2 - 110 ms, ...)
0 oznacza brak timeout-u
DX = adres portu I/O jeżeli ustawiony bit 4 w AL
ES:DI = adres bajtu użytkownika jeżeli bit 4 w AL nie ustawiony
INT 15
System - żądanie wyłączenia zasilania (CONFERTIBLE)
Wejście:
AH = 42h
AL = 0 - używane będą parametry systemowe; 1 - parametry systemowe nie będą używane
INT 15
System - odczytanie statusu systemu (CONFERTIBLE
Wejście:
AH = 43h
Powrót:
AL = status:
bit 0: odłączony LCD
bit 1: zarezerwowane
bit 2: włączony RS232 i port rónoległy
bit 3: wewnętrzny modem włączony
bit 4: zasilanie włączone przez alarm
bit 5: brak stanu czuwania
bit 6: podłączone zasilanie zewnętrzne
bit 7 - niski poziom napięcia
INT 15
System - włączanie/wyłączanie wewnętrznego modemu (CONVERTIBLE)
Wejście:
AH = 44h
AL = 0 - wyłączenie modemu; 1 - włączenie modemu
INT 15
System - przechwycenie znaku z klawiatury (AT model 3*9, XT2, XT286, PS)
Wejście:
AH = 4Fh
AL = kod klawisza
CF = 1
Powrót:
CF = 1 jeżeli AL zawiera kod klawisza; AL = kod klawisza
CF = 0 jeżeli AL nie zawiera kodu klawisza (klawisz jest ignorowany)
Uwaga: Procedura jest wywoływana przez procedurę przerwanie 9h po odczytaniu kodu klawisza.
INT 15
SYstem - czekanie na zdarzenie (AT, XT286, CONV, PS)
Wejście:
AH = 83h
AL = 0 = ustawienie przerwy
AL = 1 = skasowanie
ES:BX = adres flagi zdarzenia (bit 7, ustawiony, gdy skończyła się przerwa)
CX:DX = czas oczekiwania w us (tylko do 977 us)
Powrót:
CF = 1 jeżeli funkcja była wywoływana
INT 15
System - odczytanie stanu joystic'a (AT, XT2, XT286, PS)
Wejście:
AH = 48h
DX = 0 - odczytanie stanu przycisków;
Powrót:
AL = stan przycisków (bity 7-4)
DX = 1 - odczytanie położenia drążka;
powrót:
AX = wartość A(x)
BX = wartość A(y)
CX = wartość B(x)
DX = wartość B(y)
INT 15
System - czekanie (AT, XT2, XT286, CONV, PS)
Wejście:
AH = 86h
CX,DX = czas czekania w mikrosekundach (tylko do 977 us)
INT 15
Pamięć rozszerzona - przesłanie bloku pamięci (AT, XT286, PS)
Wejście:
Ah = 87h
CX = liczba słów do przemieszczenia
ES:SI = adres tablicy seskryptorów GDT
Powrót:
Ah = 0 - przesłanie zakończono pomyślnie
AH = 1 - wystąpił błąd parzystości;
AH = 2 - w czasie wykonywania operacji wystąpił wyjątek
AH = 3 - wystąpił błąd funkcjonowania blokady lini adresowej A20
INT 15
Pamięć rozszerzona - wielkość pamięci (AT, XT286, PS)
Wejście:
AH = 88h
Powrót:
AX = wielkość pamięci rozszerzonej w 1kB blokach
INT 15
System - przejście do trybu wirtualnego (AT, XT286, PS 50+)
Wejście:
AH = 89h
BL = numer przerwania IRQ0 (IRQ1-7 używają następnych numerów)
BH = numer przerwania IRQ8 (IRQ9-F używają następnych numerów)
DS:SI = adres tablicy deskryptorów GDT dla trybu wirtualnego: offset 0h deskryptor pusty; offset 8h deskryptor GDT; offset 10h deskryptor IDT; 18h DS; 20h ES; 28h SS; 30h CS; 38h nie inicjowany, używany do tworzenia deskryptora segmentu kodu Bios
CX = przemieszczenie początku programu wykonywanego w trybie wirtualnym
Powrót:
CF = 1 jeżeli wystąpił błąd; AH = 0FFh błąd przy odblokowywaniu lini A20
INT 15
System - odczytanie konfiguracji (XT pod 1/10/86, AT, CONV, XT286, PS)
Wejście:
AH = C0h
Powrót:
CF = 1 jeżeli Bios nie zawiera tej funkcji
ES:BX = adres tablicy zawierającej informacje o systemie:
0-1 - długość tablicy w bajtach
2 - numer modelu systemu
3 - numer wersji systemu
4 - numer wersji systemu Bios
5 - konfiguracja systemu:
bit 0 - zarezerwowane
bit 1 - komputer jest wyposarzony w szynę Micro Channel
bit 2 - system Bios wykorzystuje rozszrzony obszar danych na końcu 640kB
bit 3 - dostępna funkcja oczekiwania na zdarzenie zewnętrzne (CONVERTIBLE)
bit 4 - dostępna funkcja 4Fh przerwania 15h (przechwytywanie przerwania klawiatury)
bit 5 - w komputerze znajduje się zegar czasu rzeczywistego
bit 6 - zainstalowany drugi układ 8259
bit 7 - kanał 3 DMA jest używany przez Bios twardego dysku
bit 6-8 - zarezerwowane
INT 16
Klawiatura - odczyt znaku z klawiatury, czekanie na znak
Wejście:
AH = 00h
Powrót:
AH = kod klawisza
AL = kod znaku
INT 16
Klawiatura - sprawdzanie bufora bez czyszczenia go
Wejście:
AH = 01h
Powrót:
ZF = 0 znak w buforze; AH = kod klawisza; AL = kod znaku
ZF = 1 brak znaku w buforze
INT 16
Klawiagura - odczyt stanu klawiszy sterujących (SHIFT, CTRL, ...)
Wejście:
AH = 02h
Powrót:
AL = stan klawiszy sterujących:
bit 0 = naciśnięty prawy SHIFT
bit 1 = naciśnięty lewy SHIFt
bit 2 = naciśnięty CTRL
bit 3 = naciśnięty ALT
bit 4 = włączony SCROLL LOCK
bit 5 = włączony NUM LOCK
bit 6 = włączony CAPS LOCK
bit 7 = włączony tryb wstawiania
INT 16
Klawiatura - ustawienie szybkości powtarzania (Jr, AT model 339, PS)
Wejście:
AH = 03h
AL = podfunkcja:
0: skasowanie powtarzania (PCjr)
1: zwiększenie początkowego opóźnienia (PCjr)
2: zwiększenie opóźnienia powtarzania (PCjr)
3: zwiększenie obu opóźnień (PCjr)
4: wyłączenie powtarzania (PCjr)
5: ustawienie szybkości powtarzania (AT lub PS/2)
BH = 00-03 dla początkowego opóźnienia 250ms, 500ms, 750ms lub 1s
BL = 00-1F dla szybkości powtarzania od 30 znaków na sekundę do 2 znaków na sekundę
INT 16
Klawiatura - klikanie klawiszy (Jr, CONV)
Wejście:
AH = 04h
AL = 0 - klikanie wyłączone; 1: klikanie włączone
INT 16
Klawiatura - zapis do bufora klawiatury (AT model 339, XT2, XT286, PS)
Wejśćie:
AH = 05h
CH = kod klawiatury
CL = kod znaku
Powrót:
AL = 1 jeżeli bufor pełny
INT 16
Klawiatura - odczyt znaku z klawiatury rozszerzonej, czekanie na znak (AT model 339, XT2, XT286, PS)
Wejście:
AH = 10h
Powrót:
AH = kod klawiatury
AL = kod znaku
INT 16
Klawiatura - sprawdzenie bufora klawiatury rozszerzonej bez czytania go (AT model 339, XT2, XT286, PS)
Wejście:
AH = 11h
Powrót:
ZF = 0 jeżeli funkcja dostępna i znak w buforze: AH = kod klawiatury; AL = kod znaku
ZF = 1 jeżeli bufor jest pusty
INT 16
Klawiatura - odczytanie stanu klawiszy sterujących dla klawiatury rozszerzonej (AT model 339, XT2, XT286, PS)
Wejście:
AH = 12h
Powrót:
AL = tak samo jak w funckji 02h
AH = stan klawiszy sterujących:
bit 0 = naciśnięty lewy CTRL
bit 1 = naciśnięty lewy ALT
bit 2 = naciśnięty prawy CTRL
bit 3 = naciśnięty prawy ALT
bit 4 = naciśnięty SCROLL LOCK
bit 5 = naciśnięty NUM LOCK
bit 6 = naciśnięty CAPS LOCK
bit 7 = naciśnięty SYSREQ
INT 17
Drukarka - wydrukowanie znaku
Wejście:
AH = 00h
AL = kod znaku
DX = numer drukarki (0 = LPT1)
Powrót:
AH = stan drukarki:
bit 0 = przeterminowanie
bit 1 = nie używane
bit 2 = nie używane
bit 3 = błąd I/O
bit 4 = drukarka wybrana
bit 5 = brak papieru
bit 6 = potwierdzenie
bit 7 = drukarka wolna
INT 17
Drukarka - inicjacja drukarki
Wejście:
AH = 01h
DX = numer drukarki (0 = LPT1)
Powrót:
AH = stan drukarki (jak w funkcji 00h)
INT 17
Drukarka - status drukarki
Wejście:
AH = 02h
DX = numer drukarki (0 = LPT1)
Powrót:
AH = stan drukarki (jak w funckji 00h)
INT 18
Wywołanie interpretatora języka BASIC
Przerwanie wywołuje wbudowany interpretator języka BASIC (orginalny IBM), w innych powoduje restart systemu lub nie wywołuje żadnego efektu.
INT 19
Uruchomienie programu inicjującego system
Przerwanie wywołuje restart systemu (bez testu pamięci)
INT 1A
Zegar - odczyt czasu
Wejście:
AH = 00h
Powrót:
CX:DX = licznik zegara
AL = 0 jeżeli zegar był odczytywany lub ustawiany wciągu ostatnich 24 godzin, w przeciwnym razie AL <> 0
INT 1A
Zegar - ustawienie czasu
Wejście:
AH = 01h
CX:DX = licznik zegara
Powrót:
Procedura nie zawiera żadnych danych
INT 1A
Zegar - odczytanie czasu z zegara czasu rzecyzwistego (AT, PS)
Wejście:
AH = 02h
Powrót:
CF = 1 jeżeli zegar nie działa
CH = godziny w BCD
CL = minuty w BCD
DH = sekundy w BCD
INT 1A
Zegar - ustawienie zegara czasu żeczywistego (AT, XT286, CONV,PS)
Wejście:
AH = 03h
CH = godziny w BCD
CL = minuty w BCD
DH = sektundy w BCD
DL = 1 - jeżeli czas letni; 0 - jeżeli czas zimowy
Powrót:
CF = 1 jeżeli zegar nie działa
INT 1A
Zegar - odczytanie daty z zegara czasu rzeczywistego (AT, CONV, PS)
Wejście:
AH = 04h
Powrót:
CF = 1 jeżeli zegar nie działa
DL = dzień w BCD
DH =miesiąc w BCD
CL = rok w BCD
CH = wiek (19 lub 20) w BCD
INT 1A
Zegar - ustawienie daty zegara czasu rzeczywistego (AT, XT286, CONV,PS)
Wejście:
AH = 05h
DL = dzień w BCD
DH = miesiąc w BCD
CL = rok w BCD
CH = wiek (19 lub 20) w BCD
Powrót:
Ustawia datę w CMOS-ie
INT 1A
Zegar - ustawienie alarmu (AT, XT286, CONV, PS)
Wejście:
AH = 06h
CH = godziny
CL = minuty
DH = sekundy
Powrót:
Cf = 1 jeżeli alarm jest już ustawiony lub nie działa zegar, gdy alarm włączy się, wywołane zostanie przerwanie 4Ah
INT 1A
Zegar - skasowanie alarmu (AT, XT286, CONV,PS)
Wejście:
AH = 07h
Powrót:
INT 1A
Zegar - odczytanie ustawień alarmu zegara czasu rzeczywistego (CONV, PS30)
Wejśćie:
AH = 09h
Powrót:
CH = godziny w BCD
CL = minuty w BCD
DH = sektuny w BCD
DL = status alarmu:
0 - alarm nie dostępny
1 - alarm dostępny, ale nie włączy systemu
2 - alarm włączy system
INT 1A
Zegar - odczytanie licznika zegara systemowego (XT2, PS)
Wejście:
AH = 0Ah
???
Powrót:
???
INT 1A
Zegar - ustawienie licznika zegara systemowego (XT2, PS)
Wejście:
AH = 0Bh
???
Powrót:
???
INt 1B
Kontrola CTRL-BREAK
To przerwanie jest wywołane, gdy jednocześnie zostaną naciśnięte klawisze CTRL i BREAK, normalnie wywołuje krótką procedurę Dos'u, która ustawia flagę Ctrl-C po przez przerwanie 23h
INT 1C
Przerwanie zegarowe
To przerwanie jest wywoływane co 18,2 sekundy; normalnie jest wykonywany IRET.
INT 1D
Tablica inicjacji sterownika Video 6845
offset - typ - opis
0 - 16-bajtowa tablica - rejestry CRTC dla trybu CGA 40*25
10h - 16-bajtowa tablica - rejestry CRTC dla trybu CGA 80*25
20h - 16-bajtowa tablica - rejestry CRTC dla trybu CGA 300*200 4 kolory lub 640*200 2 kolory
30h - 16-bajtowa tablica - rejestry CRTC dla trybu MDA 80*25
40h - słowo - długość bufora video dla trybu 40*25
42h - słowo - długość bufora 80 dla trybu 40*25
44h - słowo - długość bufora video dla graficznych trybów CGA
46h - słowo - długość bufora video dla graficznych trybów CGA
48h - 8-bajtowa tablica - liczba kolumn w trybach 0-7
50h - 8-bajtowa tablica - wartości rejestry trybu CRT 3*8h dla trybów 0-7
INT 1E
Wektor do tablicy bazowej barametrów dyskietek (standartowo adres tablicy F000:EFC7)
00h - 1B - wielkość kroku i czas podniesienia głowicy
01h - 1B - czas opuszczenia głowicy
02h - 1B - czas wyłączenia silnika (w 1/8 sekundy) (typ. 36 lub 37)
03h - 1B - wielkość sektora w bajtach (0:128, 0:256, 2:512, 3:124)
04h - 1B - numer ostatniego sektora (zwykle 8 lub 9)
05h - 1B - odstęp między sektorami przy zapisie (odczycie) (typ. 42)
06h - 1B - wielkść przesyłania danych (zwykle 255)
07h - 1B - odstęp między sektorami przy formatowaniu (typowo 80)
08h - 1B - sposób wypełnienia sektora przy formatowaniu (typ. F6h)
09h - 1B - czas ustawienia głowicy w ms (typowo 25)
0Ah - 1B - czas uruchomienia silnika (w 1/8 sekundy) (typowo 4)
INT 1F
Tablica rozszerzonych znaków graficznych
Adres tablicy zawierającej znaki 129-255.
INT 20
DOs - zakończenie działania programu
Powrót do Dos'u identycznie jak INT 21 / AH = 00h.
INT 21
DOs - zakończenie dzałania programu
Wejście:
AH = 00h
INT 21
DOs - oczekiwanie na naciśnięcie klawisza
Wejście:
Ah = 01h
Powrót:
Al = kod znaku
Uwaga: Wykrywany jest CTRL-BREAK.
INT 21
Dos - wyświetlanie znaku na ekranie
Wejśćie:
AH = 02h
DDL = kod znaku
Uwaga: Wykrywany jest CTRL-BREAK
INT 21
DOs - oczekiwanie na znak z portu AUX
Wejście:
AH = 03h
Powrót:
AL = kod znaku
Uwaga: Wykrywany jest CTRL-BREAK.
INT 21h
Dos - wysłanie znaku do portu AUX
Wejśćie:
AH = 04h
DL = kod znaku
Uwaga - wykrywany jest CTRL-BREAK.
INT 21
DOS - wysyłanie znku do drukarki (LPT)
Wejście:
Ah = 05h
DL = kod znaku
Uwaga: Wykrywany jest CTRL-BREAK.
INT 21
DOs - operacja wyjścia dla konsoli
Wejśćie:
AH = 06h
DL = kod znaku FFh
Uwaga: Nie jest wykrywany CTRL-BREAK.
INT 21
Dos - operacja wejścia dla konsoli
Wejśćie:
AH = 06h
DL = 0FFh
Powrót:
ZF ustawiony = nie odczytano znaku
ZF skasowany = odczytano znak
AL = kod znaku
Uwaga: Nie jest wykrywany CTRL-BREAK.
INT 21
Dos - odczytanie znaku z konsoli, brak echa
Wejście:
AH = 07h
Uwaga: Nie jest wykrywany CTRL-BREAK.
INT 21
DOs - odczytanie znaku z klawiatury, brak echa
Wejście:
AH = 08h
Powrót:
AL = kod znaku
Uwaga: Wykrywany jest CTRL-BREAK.
INT 21
DOs - wyświetlanie łańcucha znaków
Wejśćie:
AH = 09h
DS:DX = adres łańcucha
Uwaga: Łańcuch musi być zakończony znakiem $
INT 21
DOs - odczytywanie znaków z klawiatury i gromaedzenie ich w buforze
Wejśćie:
AH = 0Ah
DS:DX = adres bufora
Uwaga: Pierwszy bajt bufora musi zawierać maksymalną długość bufora, drugi zawiera aktualną długość odczytanego ciągu znaków; wykrywany jest CTRL-BREAK
INT 21
Dos - sprawdzenie czy jest znak w buforze
Wejśćie:
AH = 0Bh
Powrót:
AL = FFh jeżeli jest znak; 00h jeżeli nie ma znaku
INT 21
Dos - wyczyszczenie bufora klawiatury
Wejście:
Ah = 0Ch
AL = 1, 6, 7, 8 lub 0Ah
Powrót:
AL = informacja zgodna z opisem odpowiedniej funkcji (0 - gdy podano numer funkcji inny niż 1, 6, 7, 8, 0Ah
INT 21
Dos - opróżnienie buforów dysków
Wejście:
AH = 0Dh
INT 21
Dos - wybór dysku bieżącego
Wejście:
AH = 0Eh
DL = nowy numer dysku (0 = A, 1 = B, ...)
Powrót:
AL = liczba dysków logicznych
INT 21
Dos - otwarcie pliku
Wejście:
AH = 0Fh
DS:DX = adres FCB
Powrót:
AL = status:
00h - plik znaleziony
FFh - plik nie znaleziony
INT 21
Dos - zamknięcie pliku
Wejście:
AH = 10h
DS:DX = adres FCB
Powrót:
AL = status:
00h - operacja wykonana pomyślnie
FFh - plik nie odnaleziony
INT 21
DOs - poszukiwanie pierwszej pozycji w katalogu
Wejście:
AH = 11h
DS:DX = adres FCB
Powrót:
AL = status:
00h - plik znaleziony
FFh - plik nie odnaleziony
Uwaga: Jeżeli plik został odnaleziony, tworzone jest FCB i ustawiane dla operacji otwarcia pliku lub skasowania go
INT 21
DOs - poszukiwanie następnej pozycji w katalogu
Wejście:
AH = 12h
DS:DX = adres FCB
Powrót:
AL = status:
00h - plik znaleziony
FFh - plik nie odnaleziony
Uwaga: Jeżeli plik został odnaleziony, tworzone jest FCB i ustawiane dla operacji otwarcia pliku lub skasowania go
INT 21
DOs - skasowanie pliku
Wejście:
AH = 13h
DS:DX = adres FCB
Powrót:
AL = status:
00h - plik znaleziony
FFh - plik nie odnaleziony
DS:DX = adres FCB
Powrót:
AL = status:
00h - plik znaleziony
FFh - plik nie odnaleziony
DS:DX = adres FCB
Powrót:
AL = status:
00h - plik znaleziony
FFh - plik nie odnaleziony
DS:DX = adres FCB
Powrót:
AL = status:
00h - plik znaleziony
FFh - plik nie odnaleziony
DS:DX = adres FCB
Powrót:
AL = status:
00h - plik znaleziony
FFh - plik nie odnaleziony
INT 21
DOs - sekfencyjne czytanie pliku
Wejście:
AH = 14h
DS:DX = adres FCB
Powrót:
AL = status:
0 - pomyślne wykonanie operacji
1 - koniec pliku
2 - bufor roboczy jest mniejszy niż rozmiar rekordu
3 - napotkano koniec plliku, ale część buforu została wypełniona
INT 21
DOs - sekfencyjne zapisywanie do pliku
Wejście:
AH = 15h
DS:DX = adres FCB
Powrót:
AL = status:
0 - pomyślne wykonanie operacji
1 - brak miejsca na dysku
2 - bufor roboczy jest mniejszy niż rozmiar rekordu
INT 21
Dos - utworzenie pliku
Wejście:
AH = 16h
DS:DX = adres FCB
Powrót:
AL = status:
00h - pomyślne wykonanie operacji
FFh - katalog pełen (nie ma miejsca na nowy plik)
INT 21
Dos - zmiana nazwy pliku
Wejście:
AH = 17h
DS:DX = adres FCB
FCB zawiera nową nazwę pliku (zapisaną od 17 bajtu)
Powrót:
AL = status:
00h - plik znaleziono
FFh - pliku nie odnaleziono
INT 21
Wewnętrzne Dos - nie używana
Wejście:
AH = 18h
Powrót:
AL = 0
INT 21
Dos - sprawdzenie bieżącego dysku
Wejście:
AH = 19h
Powrót:
AL = numer bieżącego dysku (0 = A, 1 = B, ...)
INT 21
Dos - ustawienie adresu bufora operacji dyskowych
Wejście:
AH = 1Ah
DS:DX = adres bufora
INT 21
DOs - odczyt parametrów bieżącego napędu
Wejście:
AH = 1Bh
Powrót:
DDDS:BX adres bajtu FAT ID
DX = liczba klastrów na dysku
AL = liczba sektorów na klaster
CX = liczba bajtów na sektor
INT 21
DOs - odczyt parametrów dowolnego napędu
Wejście:
AH = 1Ch
CL = numer dysku
Powrót:
DS:BX adres bajtów FAT ID
DX = liczba klastrów na dysku
AL = liczba sektorów na klaster
CX = liczba bajtów na sektor
INT 21
Wewnętrzne Dos - nie używana
Wejście:
AH = 1Dh
Powrót:
AL = 0
INT 21
Wewnętrzne DOs - nie używana
Wejście:
AH = 1Eh
Powrót:
AL = 0
INT 21
Wewnętrzne DOs - odczyt parametrów dysku bieżącego
Wejście:
AH = 1Fh
Powrót:
AL = 00h wykonanie pomyślne; FFh wystąpił błąd
DS:DX = adres bliku parametrów
Uwaga: W DOs'ie 2.x i 3.x, ta funkcja jest identyczna z funkcją 32h z DL = 0
INT 21
Wewnętrzne Dos - nie używana
Wejście:
AH = 20h
Powrót:
AL = 0
INT 21
Dos - swobodne czytanie z pliku
Wejście:
AH = 21h
DS:DX = adres FCB
Powrót:
AL = status:
0 - pomyślne wykonanie operacji
1 - koniec pliku
2 - bufor roboczy mniejszy niż rozmiar rekordu
3 - napotkano koniec pliku, ale bufor jest częściowo wypełniony
INT 21
Dos - swobodne zapisywanie do pliku
WWWWWejście:
AH = 22h
DS:DX = adres FCB
Powrót:
AL = status:
0 - pomyślne wykonanie operacji
1 - koniec pliku
2 - bufor roboczy mniejszy niż rozmiar rekordu
3 - napotkano koniec pliku, ale bufor jest częściowo wypełniony
INT 21
DOs - odczyt wielkości pliku
Wejście:
AH = 23h
DS:DX = adres FCB
Powrót:
AL = status:
00h - plik znaleziony
FFh - plik nie znaleziony
Uwaga: Ilość rekordów pliku jest wpisywana do FCB w miejsce aktualnego rekordu.
INT 21
Dos - ustawienie numer bieżącego rekordu
Wejście:
AH = 24h
DS:DX = adres FCB
Uwaga: FCB musi być wcześniej otwarte.
INT 21
Dos - ustawienie wektora przerwań
Wejśćie:
AH = 25h
AL = numer przerwania
DS:DX = nowy wektor przerwania
INT 21
Dos - utworzenie nowego PSP
Wejście:
AH = 26h
DX = numer segmentu, w którym ma być utworzone PSP
INT 21
Dos - swobodne czytanie ciągu rekordów
Wejście:
AH = 27h
DS:DX = adres FCB
CX = liczba rekordów do odczytania
Powrót:
AL = status:
0 - pomyślne wykonanie operacji
1 - koniec pliku
2 - bufor roboczy jest mniejszy niż rozmiar rekordu
3 - napotkano koniec pliku, ale bufor jest częściowo wypełniony
INT 21
DOs - swobodne zapisywanie ciągu rekordów
Wejście:
AH = 28h
DS:DX = adres FCB
CX = liczba zapisywanych rekordów; jeżeli 0, plik będzie zapisywany do rekordu ustawionego jako aktualny
Powrót:
AL = status:
0 - pomyślne wykonanie operacji
1 - brak miejsca na dysku
2 - bufor roboczy mniejszy niż rozmiar rekordu
INT 21
Dos - rozkład nazw pliku
Wejście:
AH = 29h
DS:SI = adres łańcucha do podziału
ES:DI = adres wypełnianego bloku FCB
AL = sposób rozkładu:
0 = 0: rozklad zostanie zatrzymany po natrafieniu na separator
0 = 1: ignorowanie separatorów
1 = 0: identyfikator dysku zostanie zmieniony na bieżący, jeżeli w ciągu nie podano nowego
1 = 1: identyfikator dysku pozostanie nie zmieniony
2 = 0: nazwa pliku zostanie zastąpiona spacjami, jeżeli ciąg nie zawiera nowej
2 = 1: nazwa pliku pozostanie nie zmieniona
3 = 0: rozszerzenie zostanie zastąpione spacjami, jeżeli ciąg nie zawiera nowego
3 = 1: rozszerzenie pozostanie nie zmienione
Powrót:
AL = 00: nie napotkano gwiazdki lub znaku zapytania
AL = 01: napotkano jeden z powyższych znaków
DS:SI = adres następnego bajtu po rozkładanym ciągu
ES:DI = adres FCB
INT 21
Dos - odczyt aktualnej daty
Wejście:
AH= 2Ah
Powrót:
DL = dzień
DH = miesiąc
CX = rok
AL = dzień tygodnia (0 = niedziela, 1 = poniedziałek, ...)
INT 21
DOs - ustawienie aktualnej daty
Wejście:
AH = 2Bh
DL = dzień
DH = miesiąc
CX = rok
Powrót:
AL = 00h jeżeli wykonanie pomyślne; FFh jeżeli podana była zła wartość
Uwaga: DOs 3.3 ustawia także zegar CMOS'u.
INT 21
Dos - odczyt aktualnego czasu
Wejście:
AH = 2Ch
Powrót:
CH = godziny
CL = minuty
DH = sekundy
DL = setne sekundy
Uwaga: Czas jest uaktualniany co 1/20 sekundy.
INT 21
DOS-Ustawienie aktualnego czasu
Wejście:
AH=2Dh
CH=godziny
CL=minuty
DH=sekundy
DL=setne sekundy
Powrót:
AL=00h jeżeli wykonanie pomyślnie
FFh jeżeli podana była zła wiadomość
Uwaga:DOS 3.3 ustawia także zegar CMOS-u
INT 21
DOS-Ustawienie znacznjka weryfikacji
Wejście:
AH=2Eh
DL=0
AL=1 weryfikacja włączona
0 weryfikacja wyłączona
INT 21
DOS 2+ - Odczyt adresu bufora transmisji dyskowych
Wejście:
AH=2Fh
Powrót:
ES:BX=adres DTA
INT 21
DOS 2+ - Odczyt wersji systemu
Wejście:
AH=30h
Powrót:
AL=numer główny wersji
AH=numer pomocniczy wersji
BH=numer dostawcy
00h IBM
16h DEC
BL:CX=24-bitowy numer użytkownika
INT 21
DOS 2+ - Zakokończenie procesu z pozostawieniem kodu wpamięci
Wejście:
AH=31h
AL=kod powrotu
DX=rozmiar programu w paragrafach
INT 21
DOS - Odczyt parametrów dysku
Wejście:
AH=32h
DL=numer dysku
0=bieżący,1=A, ...
Powrót:AL=0FFh jeżeli błędny numer dysku,w przeciwnym razie
DS.:BX=adres bloku z parametrami dysku.
Struktura bloku z parametrami dysku:
Adres|Rozmiar| Zawartość
00h||1||numer dysku (0=A, ...)
01h||1||numer jednostki w programie obsługi
02h||2||wielkość sektora w bajtach
04h||1||liczba sektorów w JAP - 1
05h||1||log 2 (liczba sektorów w JAP)
06h||2||liczba sektorózarezerwowanych na początku dysku
08h||1||liczba kopii tablicy FAT
09h||2||maksymalna liczba plików w katalogu głównym
0Bh||2||pierwszy sektor danych
0Dh||2||największy numer JAP
0Fh||2||liczba sektorów zajęt. przez tablicę FAT
11h||2||numer pierwszego sektora katalogu
13h||4||daleki wskaznik do programu obsługi dysku
17h||1||bajt identyfikacji nośnika
18h||1||znacznik dostępu do dysku:0FFh-dotychczas nie żądano dostępu do dysku
19h||4||daleki wskaznik do następn. bloku DPB
1Dh||2||numer pierwszej wolnej JAP na dysku
1Fh||2||liczba wolnych JAP na dysku
INT 21
DOS 2+ - Odczytanie/ustawienie zncznika CTRL-BREAK
Wejście:
AH=33h
AL=pod funkcją
00h odczytanie stanu;01h ustawienie
DL=0 dla skasowania lub 1 dla ustawienia
02h wewnętrzne,wywołane przez PRINT.COM(DOS 3.1)
Powrót:
DL=odczytany stan znacznika jeżeli AL.=00h
0 BREAK=skasowany;1BREAK=ustawiony
AL=FFh jeżeli wystąpił błąd
INT 21
DOS 4+ - Dysk,z którego załadowano system operacyjny
Wejście:
AH=33h
AL=05h
Powrót:||DL=dysk,z którego załadowano system operacyjny
INT 21
DOS 5+ - Rozszerzona informacja o systemie
Wejście:
AH=33h
AL=06h
Powrót:
BL=główny numer wersji
BH=numer pomocniczy wersji
DL=numer wydania
DH=znaczniki wersji systemu:
bit 3=1 jeżeli system zapisany w ROM
bit 3=0 jeżeli system ładowany do RAM
bit 4=1 jeżeli systemznajduje się w HMA
bit 4=0 jeżeli system znajduje się w pamięci konwencjonalnej
INT 21
DOS-Adres znacznika wykonywania funkcji systemowych
Wejście:
AH=34h
Powrót:
ES:BX adres tablicy znaczników
INT 21
DOS2+ - Odczytanie wektora przerwania
Wejście:
AH=35h
AL=numer przerwania
Powrót:
ES:BX=wektor przerwania
INT 21
DOS 2+ - Odczyt informacji o wolnym miejscu na dysku
Wejście:
AH=36h
DL=numer dysku(0=bieżący,1=A,2=B, ...)
Powrót:
AX=liczba sektorów na klaster lub 0FFFFh,gdy podano zły numer dysku
BX=liczba dostępnych sektorów
CX=liczba bajtów na klaster
DX=liczba wszystkich klasterów
INT 21
DOS 2+ - Odczyt informacji narodowej lub ustawienie kodu kraju
Wejście:
AH=38h
AL=kod kraju
BX=kod kraju
DX=0FFFFh,gdy ustawienie kodu kraju,przemieszczenie(część dalekiego wskaznika bufora),gdy odczytanie informacji narodowej
DS=segment(część dalekiego wskaznika do bufora),gdy odczytanie informacji narodowej
Powrót:
CF=0 jeżeli wykonanie poprawnie:
AL.=kod kraju(mniej znaczący bajt),gdy odczytanie informacji narodowej
BX=pełny kod kraju,gdy odczytanie informacji narodowej
CF=1 wystąpił błąd:AX=kod błędu
INT 21
DOS 2+ - Utworzenie katalogu
Wejście:
AH=39h
DS:DX=adres nazwy katalogu(w kodzie ASIIZ)
Powrót:
CF=1 jeżeli wystąpił błąd:AX=kod błędu
INT 21
DOS 2+ - Skasowanie katalogu
Wejście:
AH=3Ah
DS.:DX=adres nazwy katalogu(w kodzie ASCIZ)
Powrót:
CF=1 jeżeli wystąpił błąd:AX=kod błędu
INT 21
DOS 2+ - Zmiana katalogu bieżącego
Wejście:
AH=3Bh
DS:DX=adres nazwy katalogu( w kodzie ASCIZ)
Powrót:
CF=1 jeżeli wystąpił błąd:AX=kod błędu
INT 21
DOS 2+ - Utworzenie pliku z uchwytem
Wejście:
AH=3Ch
CX=atrybuty pliku
DS:DX=adres nazwy pliku(w kodzie ASCIZ)
Powrót:
CF=1 jeżeli wystąpił błąd:AX=kod błędu
CF=0 jeżeli operacja wykonana pomyślnie:AX=uchwyt pliku
INT 21
DOS 2+ - Otwarcie pliku z uchwytem
Wejście:
AH=3Dh
AL=tryb otwarcia pliku ;0=tylko odczyt,1=tylko zapis,2=odczyt i zapis
AL bity 7-3=(DOS 3.x)
AL bit 7=0 uchwyt dziedziczony przez proces potomny;bit 7=1 uchwyt nie jest dziedziczony
Bity 4-6=tryb dzielenia dostępu do pliku:000 tryb zdodny,001zakaz odczytu i zapisu,010 zakaz zapisu,011 zakaz odczytu,100 brak zakazów
Bit 3=zarezerwowany,powinien być skasowany
DS:DX=adres nazwy pliku(w kodzie ASCIZ)
Powrót:
CF=1 jeżeli wystąpił błąd:AX=kod błędu
CF=0 jeżeli operacja wykonana pomyślnie:AX=uchwyt pliku
INT 21
DOS 2+-Zamknięcie pliku z uchwytem
Wejście:
AH=3Eh
BX=uchwyt pliku
Powrót:
CF=1 jeżeli wystąpił błąd:AX=kod błędu
INT 21
DOS 2+ - Odczyt pliku z uchwytem
Wejście:
AH=3Fh
BX=uchwyt
CX=liczba bajtów do odczytania
DS:DX=adres bufora
Powrót:
CF=1 jeżeli wystąpił błąd:AX=kod błędu
CF=0 jeżeli wykonanie pomyślnie:AX=liczba odczytanych bajtów
INT 21
DOS 2+-Zapis do pliku z uchwytem
Wejście:
AH=40h
BX=uchwyt pliku
CX=liczba bajtów do zapisania
DS:DX=adres bufora
Powrót:
CF=1 jeżeli wystąpił błąd:AX=kod błędu
CF=0 jeżeli wykonanie pomyślne:AX=liczba zapisanych bajtów
Uwaga:Jeżeli CX=0,dane nie są zapisywane
INT 21
DOS 2+-Skasowanie pliku
Wejście:
AH=41h
DS:DX=adres nazwy pliku do skasowania(w kodzie ASCIZ)
Powrót:
CF=1 jeżeli wystąpił błąd :AX= kod błędu
INT 21
DOS 2+-Przesunuęcie wskaznika odczytu
Wejście:
AH=42h
AL=punkt odniesienia:0=od początku pliku,1=od bieżącej pozycji wskaznika,2=od końca pliku
BX=uchwyt pliku
CX:DX=przesunięcie
Powrót:
CF=1 jeżeli wystąpił błąd:AX=kod błędu
CF=0 jeżeli wykonanie pomyśne:DX:AX=nowa długość pliku
INT 21
DOS 2+-Odczyt/zmiana atrybutów pliku(plików)
Wejście:
AH=43h
AL=0=odczyt
AL=1=ustawienie
CX=atrybuty:0=tylko do odczytu,1=plik ukryty,2=pliksystemowy,3=etykita dysku,4=podkatalog,5=plik archiwalny
DS:DX=adres nazwy pliku(w kodzie ASCIZ)
Powrót:
CF=1 jeżeli wystąpił błąd:AX=kod błędu
CX=atrybuty(przy AL.=00h)
INT21
DOS 2+-Odczytanie informacji o urządzeniu(uchwycie)
Wejście:
AH=44h
AL=00h
BX=uchwyt pliku lub urządzenia znakowego
Powrót:
CF=0 jeżeli wykonanie poprawne:DX=informacja o pliku lub urządzeniu;bit 0=standardowe urządzenie wejściowe,bit 1=standardowe urządzenie wyjściowe,bit 2=urządzenie NUL,bit 3=urządzenie CLOCK$(zegar),bit5=tryb binarny=0-trybASCII,bit6=0 gdy zwrócono znak końca pliku podczas odczytu z urządzenia,bity8-15 identyczne z ośmioma bardziej znaczącymi bitami słowa atrybutów w nagłówku programu obsługi urządzenia
CF=1 jeżeli wystąpił błąd:AX=kod błędu
INT 21
DOS 2+-Zapisanie informacji o urządzeniu(uchwycie)
Wejście:
AH=44h
AL=01h
BX=uchwyt urządzenia znakowego
DX=informacje o urządzenie
Bit0=standardowe urządzenie wejściowe
Bit1=standardowe urządzenie wyjściowe
Bit2=urządzenie NUL
Bit3=urządzenie CLOCK$(zegar)
Bit5=tryb binarny,=0-tryb ASCII
Bit6=0 gdy zwrócono znak końca pliku pogczas odczytu urządzenia
Bit7=urządzenie znakowe
Bity8-15 muszą być równe 0
Powrót:
CF=0 jeżeli wykonanie pomyślne
CF=1 jeżeli wystąpił błąd:AX=kod błędu
INT 21
DOS 2+-Odczyt informacji z irządzenia znakowego
Wejście:
AH=44h
AL=02h
CX=liczba bajtów do odczytania
DS:DX=adres buforu na informację
Powrót:
AX=liczba odczytanych bajtów
INT 21
DOS 2+- Przesłanie informacji do urządzenia znakowego
Wejście:
AH=44h
AL=03h
CX=liczba bajtów do przesłania
DS:DX=adres bufora z informacją
Powrót:
AX=liczba przesłanych bajtów
INT 21
DOS 2+-Ddczyt informacji z urządzenia blokowego
Wejście:
AH=44h
AL=04h
BL=numer urządzenia
CX=liczba bajtów do odczytania
DS:DX=adres bufora na informację
Powrót:
AX=liczba odczytanych bajtów
INT 21
DOS 2+-Przesłanie informacji do urządzenia blokowego
Wejście:
AH=44h
AL=05h
BL=numer urządzenia
CX=liczba bajtów do przesłania
DS:DX=adres bufora z informacją
Powrót:
AX=liczba przesłanych bajtów
INT 21
DOS 2+-Odczyt statusu urządzenia wejściowego
Wejście:
AH=44h
AL=06h
Powrót:
AL=FFh jeżeli urządzenie gotowe
AL=00h jeżeli urządzenie niegotowe
INT 21
DOS 2+-Odczyt statusu urządzenia wyjściowego
Wejście:
AH=44h
AL=07h
Powrót:
AL=FFH jeżeli urządzenie gotowe
AL=00h jeżeli urządzenie niegotowe
INT 21
DOS 3+-Sprawdzanie czy urządzenie blokowe ma wymienny
nośnik
Wejście:
AH=44h
AL=08h
BL=numer urządzenia
Powrót:
AX=0 wymienny nośnik
AX=1niewymienny nośnik
INT 21
DOS 3+-Sprawdzenie czy urządzenie jest zdalnym urządzeniem sieciowym
Wejście:
AH=44h
AL=09h
BL=numer urządzenia
Powrót:
DX=
Bit12=0 urządzenie lokalne
Bit12=1 urządzenie sieciowe
INT 21
DOS 3+-Sprawdzanie czy uchwyt pliku jest lokalny czy sieciowy
Wejście:
AH=44h
AL=0Ah
BX=uchwyt
Powrót:
DX=
Bit 15=0 uchwyt lokalny
Bit 15=1 uchwyt sieciowy
INT 21
DOS 3+-Zmiana liczby powtórzeń prób dostępu dzielonego
Wejście:
AH=44h
AL=0Bh
CX=długość przerwy między powtórzeniami
DX=liczba powtórzeń
Powrót:
CF=0 jeżeli wykonanie pomyślne
CF=1 jeżeli wystąpił błąd:AX=kod błędu
Uwaga:Funkcja wymaga załadowania programu
SHARE.EXE.
INT 21
DOS 2+-Utworzenie duplikatu uchwytu
Wejście:
AH=45h
BX=uchwyt pliku
Powrót:
CF=1 jeżeli wystąpił błąd:AX=kod błędu
CF=0 jeżeli wykonanie pomyślne:AX=nowy uchwytpliku
INT 21
DOS 2+-Zmiana uchwytu pliku
Wejście:
AH=46h
BX=aktualny uchwyt pliku
CX=nowy uchwyt pliku
Powrót:
CF=1 jeżeli wystąpił błąd:AX=kod błędu
INT 21
DOS 2+-Odczytanie nazwy katalogu bieżącego
Wejście:
AH=47h
DL=numer dysku(0=bieżący,1=A,etc.)
DS.:SI adres 64-bajtowego bufora
Powrót:
CF=1 jeżeli wystąpił:AX=kod błędu
INT 21
DOS 2+-Przydział bloku pamięci
Wejście:
AH=48h
BX=liczba 16-bajtowych paragrafów do przydzielenia
Powrót:
CF=1 jeżeli wystąpił błąd:
AX=kod błędu
BX=rozmiar największego dostępnego bloku
CF=0 jeżeli wykonanie pomyślne:
AX=numer pierwszego segmentu przydzielonego obszaru
INT 21
DOS 2+-Zwolnienie pamięci
Wejście:
AH=49h
ES=numer pierwszego segmentu zwalnianego obszaru
Powrót:
CF=1 jeżeli wystąpił błąd:AX=kod błędu
INT 21
DOS 2+-Zmiana długości bloku pamięci
Wejście:
AH=4Ah
ES=numer pierwszego segmentu obszaru
BX=nowy rozmiar w paragrafach
Powrót:
CF=1 jeżeli wystąpił błąd:
AX=kod błędu
BX=maxsymalny możliwy rozmiar obszaru
INT 21
DOS 2+-Załadowanie do pamięci i wykonanie programu
Wejście:
AH=4Bh
AL=podfunkcja
0=załadowanie i wykonanie programu
1=załadowanie bez wykonania
3=załadowanie nakładki,bez tworzenia PSP
DS:DX=nazwa pliku
ES:BX=adres bloku parametrów
Jeżeli AL.=0 to blok parametrów ma postać następującą:
Adres|Rozmiar||Opis
0||2||adres segmentowy otoczenia
2||4||adres ciągu znaków,który ma być przekazany jako wiersz wejściowy do tworzonego PSP
6||4||FCB 1
10||4||FCB 2
jeżeli AL=3 to blok parametrów ma postać następującą:
0||2||adres segmentowy otoczenia
2||2||baza relokacji otoczenia
Powrót:
CF=1 jeżeli wystąpił błąd:AL=kod błędu
INT 21
DOS 2+-Zakończenie działania programu z kodem wyjścia
Wejście:
AH=4Ch
AL=kod wyjscia
INT 21
DOS 2+-Odczyt kodu wyjścia podprogramu
Wejście:
AH=4Dh
Powrót:
AL.=kod wyjścia podprogramu(funkcja 31h lub 4Ch)
AH=sposób zakończenia działania
0=normalne zakończenie
1=zakończenie w wyniku naciśnięcia CTRL-BREAK
2=zakończenie w wyniku błędu krytycznego
3=zakończenie przez użycie funkcji 31h(program pozostaje w pamięci)
INT 21
DOS 2+-Odszukanie pierwszego wysąpienia w katalogu
Wejście:
AH=4Eh
CX=atrybuty poszukiwanego pliku
DS:DX=adres nazwy pliku(w kodzie ASCIZ)
Powrót:
CF=1 jeżeli wystąpił błąd:AX=kod błędu
INT|21
DOS 2+-Odszukanie kolejnego wystąpienia w katalogu
Wejście:
AH=4Fh
Powrót:
CF=1 jeżeli wystąpił błąd:AX=kod błędu
INT 21
DOS -Ustawienie segmentu adresu PSP
Wejście:
AH=50h
BX=segment adresu nowego PSP
INT 21
DOS-Odczytanie segmentu adresu PSP
Wejście:
AH=51h
Powrót:
BX=aktualny segment adresu PSP
INT 21
Wewnętrzne DOS-Odczyt listy dysków
Wejście:
AH=52h
Powrót:
ES:BX adres DOS-owej "listy list"(patrz dodatek B
INT|21
Wewnętrzne DOS-Tłumaczenie BPB na DDB
Wejście:
AH=53h
DS:SI adres BPB(blok parametrów BIOS)
ES:BP adres DDB(blok parametrów dysku)
BPB
Nr.bajtu|||Zawartość
0-1|liczba bajtów na sektor
2|liczba sektorów na klaster
3-4|liczba sektorów zarezerwowanych na początku dysku
5|||liczba kopii tablicy FAT
6-7|||maksymalna liczba plików w katal.głównym
8-9|liczba wszystkich sektorów
A|||bajt identyfikacji nośnika
B-C|||liczba sektorów zajętych przez FAT
INT 21
DOS 2+-Odczytanie stanu znacznika weryfikacji
Wejście:
AH=54h
Powrót:
AL=0 jeżeli znacznik jest skasowany
AL=1 jeżeli znacznik jest ustawiony
INT 21
Wewnętrzne DOS-Utworzenie PSP
Wejście:
AH=55h
DX=adres(numer segmentu)tworzonej PSP
INT 21
DOS 2+- Zmiana nazwy pliku
Wejście:
AH=56h
DS:DX=adres starej nazwy pliku
ES:DI=adres nowej nazwy pliku
Powrót:
CF=1 jeżeli wystąpił błąd:AX=kod błędu
INT 21
DOS 2+-Odczyt/ustawienie czasu i daty utworzenia pliku
Wejście:
AH=57h
AL=kod pod funkcją
0=odczyt czasu i daty
1=ustawienie czasu igodziny
CX=nowy czas
DX=nowa data
BX=uchwyt pliku
Powrót:
CF=1 jeżeli wystąpił błąd:AX=kod błędu
CX=czas ostatniego zapisania pliku(jeżeli AL=0)
DX=data ostatniego zapisania pliku(jeżeli AL=0)
INT 21
DOS 3.x-Informacja o strategi przydziału pamięci
Wejście:
AH=58h
AL=00h
Powrót:
CF=0
AX=aktualnie stosowana strategia
INT 21
DOS 3+-Zmiana strategii przydziału pamięci
Wejście:
AH=58h
AL=01h
BX=nowa strategia:
00h=pierwszy spełniający wymagania,przy czym przeszukiwana jest tylko pamięć konwencjonalna
01h=najlepiej spełniający wymagania,przy czym
przeszukiwana jest tylko pamięć konwecjonalna
02h=ostatni spełniający wymagania,pzy czym przesz.
jest tylko pam.konw.
40h=pierwszy speł.wymag.,przy czym przesz. jest tylko
pamięć górna
40h=najlepiej speł.war.-reszta jak wyżej
40h=ostatni speł.war.-reszta j.w
80h=pierwszy speł.wymag.,przy czym najpierw przeszuk. jest
pamięć górna,potem konwencjonalna
81h=najlepiej sp.war.-reszta jak wyżej
82h=ostatni sp.war.-reszta jak wyżej
INT 21
DOS 5.0-Informacja o dołączeniu pamięci górnej
Wejście:
AH=58h
Al= 02h
Powrót:
CF=0
AL=01h-bloki pamięci górnej są dołączone
AL=00h-bloki pamięci górnej nie są dołączone
INT 21
DOS 3.x-Odczyt rozszerzonego kodu błędu
Wejście:
AH=59h
BX=poziom opisu błędu
Powrót:
AX=pełny kod błędu
BH=klasa błędu
BL= zalecane działanie
CH=miejsce wystąpienia błędu
Uwaga:Kody błędów,klasy błędów,zalecane działania i miejsca wystąpienia błędu znajdują się w dodatku B.
INT 21
DOS 3.x-Utworzenie tymczasowego pliku
Wejście:
AH=5Ah
DS:DX=adres nazwy katalogu (w kodzie ASCIZ)
CX=atrybuty pliku
Powrót:
CF=1 jeżeli wystąpił błąd:AX=kod błędu
CF=0 jeżeli wykonanie pomyśne:AX=uchwyt pliku
Uwaga:Utworzony plik nie jest naprawdę tymczasowy,musi być usunięty przez użytkownika.
INT 21
DOS 3.x Utworzenie nowego pliku
Wejście:
AH=5Bh
DS:DX=adres nazwy pliku (w kodzie ASCIZ)
CX=atrybuty pliku
Powrót:
CF=1 jeżeli wystąpił błąd:AX=kod błędu
CF=0 jeżeli wykonanie pomyślne:AX=uchwyt pliku
Uwaga:W przeciwieństwie do funkcji 3Ch,funkcja 5Bh wykaże błąd,jeżeli plik o podanej nazwie istnieje.
INT 21
DOS 3.x - Zamknięcie/odblokowanie dostępu do części pliku
Wejście:
AH=5Ch
AL=0 jeżeli zamknięcie dostępu
AL=1 jeżeli umożliwiwnie dostępu
BX=uchwyt pliku
CX:DX=początek obszaru do zablokowania/odblokowania
SI:DI=wielkość obszaru do zabl./odblok.
Powrót:
CF=1 je zeli wystąpił błąd:AX=kod błędu
Uwaga:Funkcja wymaga załadowania programu SHARE.EXE.
INT 21
DOS 3.x-Nie udokumentowana.-Odczyt adresu znacznika błędów krytycznych
Wejście:
AH=5Dh
AL=|06h
Powrót:
DS:DI=adres znacznika błędów krytycznych
INT 21
DOS 4.0-Ustawienie rozszerzonej informacji o błędzie
Wejście:
AH=5Dh
AL=|0Ah
DS:DX=wskaźnik do strukrury zawierającej informacje o błędzie oraz zawartość rejestrów w chwili wystąpienia błędu:
Adres|Rozmiar||Zawartość
00h ||1||słowo zawartość rejestru AX
02h ||1 |||j.w|||| BX
04h ||1|||j.w||||CX
06h||1|||j.w||||DX
08h||1|||j.w||||SI
0Ah||1|||j.w||||DI
0Ch ||1|||j.w||||DS
0Eh||1|||j.w||||ES
10h||1||słowo zarezerwowane
12h||1||słowo identyfikator komputera
(0=lokalny)
14h||1||słowo identyfikator komputera
(0=lokalny)
INT 21
DOS 3.1+ Microsoft Networks-Odczyt nazwy urządzenia
Wejście:
AH=5Eh
AL=00h
DS:DX-adres buforu na nazwę urządzenia(w kodzie ASCIZ)
Powrót:
CF=1 jeżeli wystąpił błąd:AX=kod błędu
CH=0 jeżeli nazwa nie zdefiniowana
CL=numer NETBIOS-u
DS:DX=adres identyfikatora (jeżeli CH< > 0)
INT 21
DOS 3.1 +Microsoft Networks-Odczyt pozycji listy przypisań
Wejście:
AH=5Fh
AL=02H
BX=indeks badanej pozycji w liście przypisań
DS:SI=adres 16-bajt.buforu na nazwę lokalną
ES:DI=adres 128-bajt.buforu na nazwę sieciową
Powrót:
CF=1 jeżeli wyst.błąd:AX=kod błędu
BL=typ urządzenia (03 drukarka,04 dysk)
CX=wartość przypisana urządzeniu
INT 21
DOS 3.1+Microsoft Netw.-Dodanie pozycji do listy przypisań
Wejście:
AH=5Fh
AL=03h
BL=rodzaj urządzenia;03=drukarka,04=dysk
CX=wartość przypisana urządzeniu
DS:SI=adres nazwy lokalnej
ES:DI=adres nazwy sieciowej + hasło(w kodzie ASCIZ)
Powrót:CF=1 jeżeli wyst.błąd:AX= kod błędu
INT 21
DOS 3.1+Micr.Netw.-Usuwanie pozycji z listy przypisań
Wejście:
AH=5Fh
AL.=04h
DS:SI=adres nazwy urządzenia lub nazwy sieciowej
Powrót:
CF=1 jeżeli wyst.błąd:AX=kod błędu
INT 21
DOS 3.1+Micr.Netw.-Ustawienie znaków sterujących drukarką
Wejście:
AH=5Eh
AL.=0Ah
BX=indeks pozycji definiującej drukarkę w liście przypisań
CX=długość łańcucha sterującego <= 64
DS:SI=adres ciągu znaków
Powrót:
CF=1 jeżeli wyst.błąd:AX=kod błędu
INT 21
DOS 3.1+Micr.Netw.-Odczyt znaków sterujących drukarką
Wejście:
AH=5Eh
AL=0Bh
BX=indeks pozycji definiującej drukarkę na liście przypisań
ES:DI=adres bufora na ciag
Powrót:
CF=1 jeżeli wyst.błąd:AX=kod błędu
CX=długość łańcucha sterującego <= 64
INT 21
DOS5+-Odczyt adresu PSP
Wejście:
AH=62h
Powrót:
BX=segment adresu PSP
INT 21
DOS 3.3-Odcztanie rozszerzonej informacji narodowej
Wejście:
AH=65h
AL=01h
BX=numer tablicy kodów(lub 0FFFFh dla aktualnej tablicy kodów)
CX=rozmiar bufora przeznaczonego na rozszerzoną informację narodową
DX=kod kraju(lub 0FFFFh dla aktualnego kodu kraju)
ES:DI=adres bufora na rozszerzoną informację narodową
Powrót:
CF=0 jeżeli wykonanie pomyślne
CF=1 jeżeli wyst.błąd:AXC=kod błędu
INT 21
DOS 3.3-Tablica wielkich liter dla kodów 128-255
Wejście:
AH=65h
AL=02h
BX=numer tablicy kodów(lub 0FFFFh dla aktualnej tablicy kodów)
CX=rozmiar bufora przeznaczonego na wskaźnik do tablicy
DX=kod kraju (lub 0FFFFh dla aktualnego kodu kraju)
ES:DI adres bufora na wskaźnik do tablicy
Powrót:
CF=0 jeżeli wykonanie pomyślne
CF=1 jeżeli wyst.błąd:AX=kod błędu
INT 21
DOS 3.3-Tablica wielkich liter stosowanych w nazwach plików
Wejście:
AH=65h
AL=04h
BX=numer tablicy kodów(lub 0FFFFh dla aktualnej tablicy kodów)
CX=rozmiar bufora przeznaczonego na wskaźnik do tablicy
DX=kod kraju (lub 0FFFFh dla aktualnego kodu kraju)
ES:DI adres bufora na wskaźnik do tablicy
Powrót:
CF=0 jeżeli wykonanie pomyślne
CF=1 jeżeli wyst.błąd:AX=kod błędu
INT 21
DOS 3.3-Tablica znaków stosowanych w nazwach plików
Wejście:
AH=65h
AL=05h
BX=numer tablicy kodów(lub 0FFFFh dla aktualnej tablicy kodów)
CX=rozmiar bufora przeznaczonego na wskaźnik do tablicy
DX=kod kraju (lub 0FFFFh dla aktualnego kodu kraju)
ES:DI adres bufora na wskaźnik do tablicy
Powrót:
CF=0 jeżeli wykonanie pomyślne
CF=1 jeżeli wyst.błąd:AX=kod błędu
INT 21
DOS 3.3-Tablica wartości kodów przydatna przy sortowaniu
Wejście:
AH=65h
AL=06h
BX=numer tablicy kodów(lub 0FFFFh dla aktualnej tablicy kodów)
CX=rozmiar bufora przeznaczonego na wskaźnik do tablicy
DX=kod kraju (lub 0FFFFh dla aktualnego kodu kraju)
ES:DI adres bufora na wskaźnik do tablicy
Powrót:
CF=0 jeżeli wykonanie pomyślne
CF=1 jeżeli wyst.błąd:AX=kod błędu
INT 21
DOS 3.3-Tablica dopuszczalnych znaków w tablicach 2-bajtowych
Wejście:
AH=65h
AL=07h
BX=numer tablicy kodów(lub 0FFFFh dla aktualnej tablicy kodów)
CX=rozmiar bufora przeznaczonego na wskaźnik do tablicy
DX=kod kraju (lub 0FFFFh dla aktualnego kodu kraju)
ES:DI adres bufora na wskaźnik do tablicy
Powrót:
CF=0 jeżeli wykonanie pomyślne
CF=1 jeżeli wyst.błąd:AX=kod błędu
INT 21
DOS 3.3-Zamiana na wielką literę
Wejście:
AH=65h
AL=20h
DL=kod znaku
Powrót:
DL=kod wielkiej litery
INT 21
DOS 3.3-Zamiana na wielką literę w ciągu znaków
Wejście:
AH=65h
AL=21h
CX=długość ciągu znaków
DS:DX=adres ciągu znaków do zmiany
INT 21
DOS 3.3- Zamiana na wielkie litery w ciągu znaków ASCIZ
Wejście:
AH=65h
AL=21h
CX=długość ciagu znaków
DS:DX=adres ciągu znaków ASCIZ do zmiany
INT 21
DOS 3.3-Odczyt/ustawienie globalnej tablicy kodów
Wejście:
AH=66h
AL=00h odczyt globalnej tablicy kodów
Powrót:
AX=kod błędu jeżeli CF ustawiony
BX=aktywna strona kodowa
DX=systemowa strona kodowa
01h ustawienie globalnej tablicy kodów
BX=numer strony kodowej
Powrót:AX=kod błędu jeżeli CF ustawiony
INT 21
DOS 3.3-Ustawienie licznika uchwytów
Wejście:
AH=67h
BX=nowa liczba uchwytów w procesie(max 255)
Powrót:
CF=0 jeżeli wyk.pomyśle
CF=1 jeżeli wyst.błąd:AX=kod błędu
INT 21
DOS 3.3-Zapisanie zawartości buforów pliku
Wejście:
AH=68h
BX=uchwyt pliku
Powrót:
CF=0 jeżeli wyk.pomyśle
CF=1 jeżeli wyst.błąd:AX=kod błędu
INT 21
DOS 3.3-Rozszerzona funkcja utworzenia-otwarcia pliku
Wejście:
AH=6Ch
BX=tryb otwarcia
CX=atrybuty pliku
DX=akcje do wykon ania w przypadku istnienia (lub nie) pliku
DS:SI=wskaźnik do specyfikacji pliku
Powrót:
CF=0 jeżeli wyk.pomyślne
AX=uchwyt pliku
CX=wynik operacji:
1-plik otwarty
2-plik utworzony i otwarty
3-plik zastąpiony i otwarty
CF=1 jeżeli wyst.błąd
Uwaga:Format danych w BX jest następujący:
Bit14=1 automatyczne zapisanie danych na dysku podczas każdej operacji zapisu do pliku
Bit13=1 w przypadku wystąpienia błędu krytycznego w czasie operacji na pliku nie jest zgłaszane
Bit7=1 uchwyt nie jest dziedziczony przez proces potomny
Bity4-6 tryb dzielenia dostępu do pliku(patrzINT 21 AH=3Dh)
Bity0-3 tryb dostępu (patrz INT 21 AH=3Dh)
INT 22
DOS-Adres powrotu po zakończeniu programu
Nigdy nie powinno być wywołane bezpośrednio.
Daleki adres procedury,do której przekazywane jest sterowanie po zakończeniu wykonywania programu.
INT 23
DOS -obsługa przerwania wykonywania programu
Wywołane automatycznie po naciśnięciu klawiszy Ctrl-Break
(CTRL-C).Procedura obsługi przerwania standartowo powoduje zakończenie programu.
INT 24
DOS-Obsługa błędów krytycznych
Przerwanie to jest automatycznie wywołane przez DOS w chwili wystąpienia błędu krytycznego urządzenia.Standardowa zawarta w COMMAND.COM pyta o sposób postępowania, procedura ta może zostać zmieniona przez użytkownika.|||| |||||
Informacja o błędzie przekazywana w rejestrach:
AH-bit 7=0 jeżeli błąd na dysku,1 jeżeli inne urządzenie (dla urządzenia znakowego kod w DI)
Bit 6 nie używany
Bit 5=1 jeżeli dopuszczone zignorowanie błędu
Bit 4=1 jeżeli dopuszczone powtórzenie
Bit 3=1 jeżeli dopuszczone zakończenie realizacji funkcji systemowej
Bity2-1 miejce wystąpienia błędu na dysku
00=błąd w obszarze systemu DOS
01=błąd w tablicy FAT
10=błąd w katalogu
11=błąd w obszarze danych
Bit 0=1 jeżeli błąd zapisu,0 jeżeli błąd odczytu
AL.= numer dysku jeżeli AH bit7=1,w przeciwnym razie zawartość AL. nie ma znaczenia
BP:SI= adres nagłówka urządzenia,które spowodowało błąd urządzenie blokowe jeżeli najwyższy bit w BP:SI+4=1
mniej znaczący bajt DI:
00h próba zapisania do zabezpieczonego urządzenia
01h nieznana jednostka
02h napęd dyskowy niegotowy
03h nieznane polecenie
04h błąd danych(CRC)
05h zła długość struktury danych polecnia
06h błąd odszukania ścieżki na dysku
07h nieznany typ nośnika
08h nie odnaleziono sektora
09h brak papieru w drukarce
0Ah błąd zapisu
0Bh błąd odczytu
0Ch uszkodzenie ogólne
Program obsługi musi przekazać wartość w AL:
00 zignorowanie błędu
01 powtórzenie operacji
02 przerwanie programu poprzez przerwanie 22h
03 powrót do programu użytkowego z sygnalizacją błędu(DOS 3.2+)
INT 25
DOS-Odczytanie sektorów z dysku(dla partycji mniejszychod 32M)
Wejście:
AL=numer dysku(0=A,1=B, etc)
DS:BX=adres bufora transmisji dyskowych
CX=liczba sektorów do odczytania
DX=pierwszy sektor do odczytania
Powrót:
CF=1 jeżeli wyst.błąd:
AL=kod błędu(identyczny z kodem błędu w mniej znaczącym bajcie DI w przerwanie 24h)
AH=80h brak gotowości napędu
40h jeżeli wystąpił błąd podczas szukania ścieżki na dysku
20h jeżeli wystąpił błąd sterownika dysku
10h jeżeli wystąpił błąd kodu CRC
08h jeżeli nastąpiło przepełnienie strony DMA
04h jeżeli poszukiwany sektor nie został odnaleziony
03h jeżeli podjęto próbę zapisu na zabezpieczonym dysku
02h jeżeli wystąpił inny błąd
Uwaga:Pozostawiane jest 16-bitowe słowo na
stosie,zawierajace poprzednie wartości flag.
INT 25
DOS-Odczytanie sektorów z dysku(dla parametrów większych od 32M)
Wejście:
AL=numer dysku(0=A,1=B,ect)
CX=FFFFh
DS:BX=adres bloku informacji:
podwójne słowo numer słowa
słowo liczba sektorów do odczytania
podwójne słowo adres bufora na odczytane sektory
Powrót:
To samo co dla partycji mniejszych od 32M???
INT 26
DOS-Zapisanie sektorów na dysku(dla partycji mniejszych od 32M)
Wejście:
AL.=numer dysku(0=A,1=B,ect)
DS:BX=adres bufora transmisji dyskowych
CX=liczba sektorów do zapisania
DX=pierwszy sektor do zapisania
Powrót:
CF=1 jeżeli wyst.błąd:
AL=kod błędu(identyczny z kodami błędu w mniej znaczącym bajcie DI w przerwaniu 24h)
AH=kod błędu(identyczny z kodami błędu w przerwaniu 25h)
Uwaga:Pozostawiane jest 16-bitowe słowo na
stosie,zawierajace poprzednie wartości flag.
INT 26
DOS-Zapisanie sektorów na dysku (dla partycji większych od 32M
Wejście:
AL=numer dysku(0=A,1=B,ect)
CX=FFFFh
DS:BX=adres bloku informacji:
podwójne słowo numer słowa
słowo liczba sektorów do odczytania
podwójne słowo adres bufora na odczytane sektory
Powrót:
To samo co dla partycji mniejszych od 32M???
INT 27
DOS -Zakończenie programu,pozostawienie kodu w pamięci(TSR)
Wejście:
CS=wskaźnik do bloku PSP
DX=ostatni bajt programu +1
INT 28
Wewnętrzne DOS-Pętla oczekiwania na naciśnięcie klawisza
To przerwanie jest wywoływane z procedury "odczyt znaku z klawiatury.Jest przechwytywane przez PRINT.COM and programy rezydentne .Programy rezydentne wykorzystujące to przerwanie nie mogą wywołać funkcji 00h-0Ch przerwania 21h.
Dopuki żaden program nie przechwyci tego przerwania,wektor przerwania wskazuje na IRET.
INT 29
Wewetrzne DOS-Szybkie wysłanie znaku
To przerwanie jest wywoływane przez procedury wyjścia DOS-u,gdy operacja wyjscia jest wykonywana dla urzadzenia,a nie pliku i bit 3 słowa atrybutów urzadzenia jest ustawiony.
INT 2A
Micr.Netw.-Sprawdzanie instalacji sieci
Wejście:
AH=00h
Powrót:
AH <> 0 jeżeli zainstalowana
INT 2A
Micr.Netw.-Sprawdzanie dostępu do urządzenia
Wejście:
AH=03h
AL.=00h
DS:SI nazwa urzadzenia (w kodzie ASCIZ)
Powrót:
CF= = 0 jeżeli urządzenie dostępne
INT 2A
Micr.Netw.-Wykonanie NETBIOS-u
Wejście:
AH=04h
AL=0 gdy w przypadku błędu operacja ma być powtórzona;
AL=1 gdy nie
ES:BX - NCB
Powrót:
AX=0 jeżeli wyk.pomyślne
AH=1 jeżeli wyst.błąd:AL.=kod błędu
INT 2B
Przerwanie wewnętrzne MSDOS(wskazuje na IRET)
INT 2C
Przerwanie wewnętrzne MSDOS(wskazuje na IRET)
INT 2D
Przerwanie wewnętrzne MSDOS(wskazuje na IRET)
INT 2E
Wewnętrzne DOD-Wykonanie polecenia
Wejście:
DS:SI - adres ciągu znaków zawierających komendę DOS-u
Uwaga:Zawartość wszystkich rejestrów jest niszczona
INT 2F
Multipleksowanie-PRINT-Sprawdzanie instalacji
Wejście:
AH=01h
AL=00h
Powrót:
AL=
FFh zainstalowane
01h nie zainstalowane,nie jest możliwa instalacja
00h nie zainst.,można zainstalować
INT 2F
Multipleksowanie-PRINT-Dodanie pliku do kolejki plików do wydrukowania
Wejście:
AH=01h
AL.=01h
DS:DXadres bloku informacji:
Bajt=poziom(dla DOS-u 3.0 zawsze zero_
Podwójne słowo=adres łańcucha ASCIZ zawierającego ścieżkę dostępu oraz nazwę pliku do drukowania
Powrót:
Cf=1 jeżeli wyst.błąd
AX=kod błędu
01h błędny numer funkcji
02h nie odnaleziono pliku
03h błędna ścieżka dostępu
04h zbyt dużo otwartych plików
05h brak dostępu
08h kolejka plików do wydrukowania pełna
09h program zajęty
0Ch nazwa pliku zbyt długa
0Fh błędna nazwa dysku
INT|2F
Multipleksowanie-PRINT-Usunięcie pliku z kolejki plików do wydrukowania
Wejście:
AH=01h
AL.=02h
DS:DXnazwa pliku
Powrót:
CF=1 jeżeli wystąpił błąd:
AX=kod łędu(taki sam jak w AL=01h)
INT 2F
Multipleksowanie-PRINT-Usunięcie wszystkich plików z kolejki plików do wydrukowania
Wejście:
AH=01h
AL=03h
Powrót:
CF=1 jeżeli wystąpił błąd:
AX=kod łędu(taki sam jak w AL=01h)
INT 2F
Multipleksowanie-PRINT-Sprawdzanie statusu
Wejście:
AH=01h
AL=04h
Powrót:
DS:SI=adres jednego lub więcej 64-bajtowych bloków zawierających pełne nazwy pliku(ze ścieżką dostępu)
DX=liczba błędów,jakie wystąpiły podczas drukowania ostatniego pliku
CF=1 jeżeli wyst.błąd:AX=kod błędu(jak w AL=01h)
Uwaga:Aby ponownie zacząć drukowanie po sprawdzenie statusu,należy wywołać funkcję AL.=05h
INT 2F
Multipleksowanie-PRINT-Powrót do drukowania
Wejście:
AH=01h
AL=05h
Powrót:
CF=1 jeżeli wyst. Błąd:AX=kod błędu
INT 2F
Multipleksowanie-ASSIGN-Sprawdzanie instalacji
Wejście:
AH=06h
AL=00h
Powrót:
AH <> 0 jeżeli zainstalowane
INT 2F
Multipleksowanie-SHARE-sprawdzanie instalacji
Wejście:
AH=10h
AL=00h
Powrót:
AH <> 0 jeżeli zainstalowane
INT 2F
Multipleksowanie-AMPI-Tryb działania programu
Wejście:
AH=16h
AL=86h
Powrót
AX=00h-praca w trybie wirtualnym pod kontrolą DMPI
AX=00h-praca wtrybie rzeczywistym lub wirtualnm 8086 albo nie są dostępne funkce DMPI
INT 2F
Multipleksowanie-DMPI-Stwierdzenie zainstalowania DMPI
Wejście:
AH=16h
AL=87h
Powrót:
AX <> 00h DMPI nie zainstalowane
AX=00h DMPI zainstalowane:
BX=słowo znaczników(bit 0=1-obsługiwany kod 32-bitowy
CL=tryb procesora(02h=80286,03h=80386,04h=i486)
DL=numer wersji DMPI
DL=numer podwersji DMPI
SI=liczba paragrafów prywatnych danych programu implementującego DMPI
ES:DI=adres wejścia do procedury realizującej przejście do trybu wirtualnego
INT 2F
Multipleksowanie-HIMEM.SYS-Sprawdzenie instalacji
Wejście:
AH=43h
AL=00h
Powrót:
AL=80h-HIMEM.SYS zainstalowany
INT 2F
Multip.-HIMEM.SYS-Uzyskanie punktu wejścia do procedury realizującej funkcje XMS
Wejście:
AH=43h
AL=10h
Powrót:
ES:BX=adres punktu wejścia
INT 2F
Mutip.-DOUBLESPACE-Informacja o wersji DOUBLESPACE
Wejście:
AH=4Ah
AL=11h
BX=00h
Powrót:
AX=0 jeżeli wykonane poprawenie
BX=444Dh("DM")-znacznik
CL=oznaczenie literowe pierwszego dysku zarządzanego przez DoubleSpace
CH =liczbas dysków zarezerwowanych dla DoubleSpace
DX=wersja DBLSPACE.BIN
AX=0 jeżeli wystąpił błąd
INT 2F
Multip.-DOUBLESPACE-Informacjia o dysku bazowym dysku skompensowanego
Wejście:
AH=4Ah
AL=11h
BX=01h
DL=numer dysku(0-A,1-B, ...)
Powrót:
AX=0 jeżeli wykon.poprawne:
BL=bity 6-0 zawierają numer dysku bazowe||| bit 7=1 jeżeli dysk wskazany przez DL,jest skompensowany
bit 7=0 jeżeli dysk nie jest skompensowany
BH=numer kolejnego dysku skompensowanego(0-254)
<> 0 jeżeli wystąpił błąd
INT 2F
Multipl.-DOULESPACE-Zmiana oznaczeń dysku bazowego
skompensowanego
Wejście:
AH=4Ah
AL=11h
BX=02h
DL=numer dysku skompensowanego
Powrót:
AX=o jeżeli wyk.popr.:
AX<>0 jeżeli wyst.błąd
INT 2F
Multip.-DOUBLESPACE-Odczyt adresów procedur strategii i przerwania
Wejście:
AH=4Ah
AL=11h
BX=03h
CL=numer dysku skompen.(0-A,1-B, ...)
Powrót:
CL<>FFh jeżeli wyk.popr.:
CL=numer jedn.w programie obsługi urządzenia blokowego odpowiadającej dyskowi bazowemu
ES:DI=adres procedury strategii programu obsługi
ES:DI=adres procedury przerwania programu obsługi
CL=FFh jeżeli dysk o podanym numerze nie jest zarządzany przez Double Space
INT 2F
Multip.-DOBLESPACE-Zapisanie adresów procedur strategii i przerwania
Wejście:
AH=4Ah
AL=11h
BX=04h
CL=numer dysku skompensow.()-A,1-B, ...)
DX=numer jednostki w programie obsługi urządzenia
ES:SI=adres nowej procedury strategii programu obsługi
ES:DI=adres nowej procedury przerwania programu obsługi
Powrót:
CL<>FFh jeżeli wyk.popr.
CL=FFh jeżeli dysk o podanym numerze nie jest zarządzany przez DoubleSpace
INT 2F
Multip.-DOUBLESPACE-Zamontowanie dysku skompensowanego
Wejście:
AH=4Ah
AL.=11h
BX=05h
DL=numer dysku skomp.(0-A,1-B, ...)
ES:SI=adres rekordu uaktywnienia dysku
Powrót:
Jeżeli wyk.popr.,to bajt 03h rekordu uaktywnienia zawiera zero
Jwzeli wystąpił błąd ,to bajt 03h rekordu uaktywnienia zawiera informację o błędzie
Struktura rekordu uaktywnienia:
Adres||Zawartość
00h||identyfikator "DM"
02h||kod operacji do wykonania :"M"-zamontowanie dysku skompens.
03h||przed wywołaniem należy zainicjować pole wartością FFh;po wykonaniu pole zawiera informację o poprawności:0-wyk.popr.,1-oznaczenie literowe poza zakresem stosowanym przez DoubleSpace,2-oznaczenie literowe już używane,3-próba przekroczenia liczby dodatkowych dysków,4-za duży stopień fragmentacji w pliku CVF
04h||numer dysku bazowego
05h||struktura DISK_UNIT(opis jednostki dyskowej)
INT 2F
Multipl.-DOUBLESPACE-Zdemontowanie dysku skompensowanego
Wejście:
AH=4Ah
AL=11h
BX=06h
DL=numer dysku skompensowanego(0-A,1-B, ...)
Powrót:
AL=0 jeżeli wyk.popr.
AL=0 jeżeli wyst.błąd
INT 2F
Multipl.-DOUBLESPACE-Informacja o pojemności dysku
Wejście:
AH=4Ah
AL=11h
BX=07h
DL=numer dysku skompensowanego(0-A,1-B, ...)
Powrót:
AX=jeżeli wyk.popr.:
DS:DI=adres tablicy składającej się z dwóch podwójnych słów;pierwsze podw.słowo zawiera ilość sektorów na stercie sektorów,drugie ilość wolnych sekt.na stercie sektorów
AX<> jeżeli wyst.błąd
INT 2F
Multipl.-DOUBLESPACE-Informacja o pojemności strefy fragmentów pliku
Wejście:
AH=4Ah
AL=11h
BX=08h
DL=numer dysku skomp.(0-A,2-B, ...)
Powrót:
AX=0 jeżeli wyk.popr.:
BX=makx.liczba elementów sterty frag.pliku
CX=liczba wolnych elem.strefy frag.pliku
AX<> jeżeli wyst.błąd
INT 2F Multiplek.-DOUBLESPACE-Informacja o liczbie dodatkowych dysków skompensowanych
Wejście:
AH=4Ah
AL=11h
BX=09h
Powrót:
AX=jeżeli wyk.popr:
CL=liczba struktur DISK_UNIT zarezerwowanych w programie DoubleSpace
AX<>0 jeżeli wyst.błąd
INT 2F
Multipl.-MRCI-Stwierdzenie obecności serwera MRCI w pamięci RAM
Wejście:
AH=4Ah
AL=12h
BX=4D52h( MR)
DX=4349h(CR)
Powrót:
Jeżeli nie wykryto serwera MRCI,to rejestry CX i DX pozostają bez zamian
Jeżeli stwierdzono obecność serwera MRCI,to:
CX=4943h(IC)
DX=524Dh(RM)
ES:DI=adres struktury MRCIFO
Uwaga:Opis struktury MRCIFO znajduje się przy opisie funkcji B001h przerwania 1Ah
INT 2F
Multipl.-APPEND-Sprawdzanie instalacji
Wejście:
AH=B7h
AL=00h
Powrót:
AH<>0 jeżeli zainsstalowane
INT 2F
Multipl.-APPEND-Sprawdzanie wersji
Wejście:
AH=B7h
AL=02h
Powrót:???
INT 2F
Multipl.-Network-Sprawdzanie instalacji
Wejście:
AH=B8h
AL=00h
Powrót:
AH<>0 jeżeli zainstalowane
INT 2F
Multipl.-Network-Odczyt aktualnego adresu POST
Wejście:
AH=B8h
AL=03h
Powrót:
ES:BX=adres POST
INT 2F
Multipl.-Network-Ustawienie nowego adresu POST
Wejście:
AH=B8h
AL=04h
ES:BX=nowy adres POST
INT 2F
Multipl.-Network -Sprawdzenie wersji
Wejście:
AH=B8h
AL=09h
Powrót:???
INT 30
Nie wektor.FAR JMP dla programów pisanych w CP/M
Dziś już praktycznie nie używane.
INT 31
DMPI-Przydzielanie deskryptorów w tablicy LDT
Wejscie:
AX=00h
CX=liczba deskryptorów do przydzielenia
Powrót:
CF=0 jeżeli wyk.popr.:AX=selektor pierwszego deskryptora
CF=1 jeżeli wyst.błąd
INT 31
DMPI-Zwolnienie deskryptorów w tablicy LDT
Wejście:
AX=01h
BX=selektor deskryptora przeznacz.do zwolnienia
Powrót:
CF=0 jeżeli wyk.popr.
CF=1 jeżeli wyst.błąd
INT 31
DMPI-Utworzenie deskryptora dla segmentu
Wejście:
AX=02h
BX=adres segmentu w trybie rzeczywistym
Powrót:
CF=0 jeżeli wyk.popr.:
AX=selektor odpowiadający segmentowi o adresie określonym w BX(wielkość 64KB)
INT 31
DMPI-Wartość przyrostu w celu otrzymania kolejnego selektora
Wejście:
AX=03h
Powrót:
CF=0 jeżeli wyk.popr.:
AX=wartość która po dodaniu do selektora umożliwia otrzymanie następnego selektora
CF=1 jeżeli wyst.błąd
INT 31
DMPI-Uzyskanie adresu bazowego segmentu z deskryptora
Wejście:
AX=06h
BX=selektor
Powrót:
CF=0 jeżeli wyk.popr.:
CX:DX=adres bazowy segmentu(liniowy)
CF=1 jeżeli wyst.błąd
INT 31
DMPI- Ustawienie adresu bazowego sergmentu w deskryptorze
Wejście:
AX=07h
BX=selektor
CX:DX=adres bazowy segmentu(liniowy)
Powrót:
CF=0 jeżeli wyk.popr.
CF=1 jeżeli wyst.błąd
INT 31
DMPI-Ustawienie wielkosci pamięci w deskryptorze
Wejście:
AX=08h
BX=selektor
CX:DX=wielkość segmentu
Powrót:
CF=0 jeżeli wyk.popr.
CF=1 jeżeli wyst.błąd
INT 31
DMPI-Ustawienie atrybutów w deskryptorze
Wejście:
AX=09h
BX=selektor
CL=bajt atrybutów
CH=pozostałe atrybuty dla 32-bajtowych implementacji DMPI
Powrót:
CF=0 jeżeli wyk.popr.
CF=1 jeżeli wyst.błąd
INT31
DMPI-Utworzenie segmentu danych równoważnego z segmentem kodu
Wejście:
AX=0Ah
BX=selektor segmentu kodu
Powrót:
CF=0 jeżeli wyk.popr.
CF=1 jeżeli wyst.błąd
INT31
DMPI-Otrzymanie deskryptora
Wejście:
AX=0Bh
BX=selektor
ES:EDI/ES:DI=adres 8-bajtowego bufora przeznaczonego na deskryptor
Powrót:
CF=0 jeżeli wyk.popr.
CF=1 jeżeli wyst.błąd
INT31
DMPI-Zapisanie deskryptora
Wejście:
AX=0Ch
BX=selektor
ES:EDI/ES:DI=adres 8-bajtowego bufora przeznaczonego na deskryptor
Powrót:
CF=0 jeżeli wyk.popr.
CF=1 jeżeli wyst.błąd
INT 31
DMPI-Przydzielenie wskazanego deskryptora w tablicy LDT
Wejście:
AX=0Dh
BX=selektor
Powrót:
CF=0 jeżeli wyk.popr.
CF=1 jeżeli wyst.błąd
INT 31
DMPI-Przydzielenie bloku pamięci systemu DOS
Wejście:
AX=0100h
BX=rozmiar bloku w paragrafach
Powrót:
CF=0 jeżeli wykonanie poprawne
AX=adres segmentowy(w trybie rzeczywistym)
przydzielonego bloku pamięci
DX=pierwszy z selektorów opisujący przydzielony blok
CF=1 jeżeli wystąpił błąd
AX=kod błędu systemu DOS
BX=rozmiar największego dostępnego bloku
INT 31
DMPI-Zwolnienie bloku pamięci systemu DOS
Wejście:
AX=0101h
DX=selektor bloku
Powrót:
CF=0 jeżeli wyk.popr.
CF=1 jeżeli wyst.błąd: AX=kod błędu systemu DOS
INT 31
DMPI-Zmiana długośći bloku pamięci systemu DOS
Wejście:
AX=0102h
BX=nowa długość bloku w paragrafach
DX=selektor bloku
Powrót:
CF=0 jeżeli wyk.popr.
CF=1 jeżeli wyst.błąd
AX=kod błędu systemu DOS
BX=rozmiar największego dostępnego bloku
INT 31
DMPI-Odczytanie wektora przerwań trybu rzeczywistego
Wejście:
AX=0200h
BX=numer przerwania
Powrót:
CF=0 jeżeli wyk.popr.
CX:DX=adres procedury obsługi przerwania o wskazanym numerze
INT 31
DMPI-Zapisanie wektora przerwań trybu rzeczywistego
Wejście:
AX=0201h
BX=numer przerwania
CX:DX=adres procedury obsługi przerwania o wskazanym numerze
Powrót:
CF=0 jeżeli wyk.popr.
CF=1 jeżeli wyst.błąd
INT 31
DMPI-Odczytanie adresu procedury obsługi wyjątku
Wejście:
AX=0202h
BL=numer wyjątku(00h-1Fh0 )
Powrót:
CF=0 jeżeli wyk.popr.
CX:DX/CX:EDX=adres procedury obsługi wyjątku o podanym numerze
CF=1 jeżeli wyst.błąd
INT 31
DMPI-Ustawienie adresu obsługi wyjątku
Wejście:
AX=0203h
BL=numer wyjątku(00h-1Fh)
Powrót:
CF=0 jeżeli wyk.popr.
CF=1 jeżeli wyst.błąd
INT 31
DMPI-Odczytanie wektora przerwań trybu wirtualnego
Wejście:
AX=0204h
BL=numer przerwania
Powrót:
CF=0 jeżeli wyk.popr.
CX:DX/CX:EDX=adres procedury przerwania o podanym numerze
CF=1 jeżeli wyst.błąd
INT 31
DMPI-Zapisanie wektora przerwań trybu wirtualnego
Wejście:
AX=0205h
BL=numer przerwania
CX:DX/CX:EDX=adres procedury przerwania o podanym numerze
Powrót:
CF=0 jeżeli wyk.popr.
CF=1 jeżeli wyst.błąd
INT 31
DMPI-Symulacja przerwania trybu rzeczywistego
Wejście:
AX=0300h
BL=numer przerwania
BH=bajt znaczników
Bit 0-jeżeli równy 1 to jest sterownik przerwań i zerowana linia A20
Bity 1-7 są równe 0
CX=liczba słów do skopiowania ze stosu trybu wirtualnego na stos trybu rzeczywistego
ES:DI/ES:EDI=adres struktury wywołania dla trybu
rzeczywistego
Powrót:
CF=0 jeżeli wyk.popr.
CF=1 jeżeli wyst.błąd
INT 31
DMPI-Wywołanie procedury trybu rzeczywistego ze stosem dostosowanym do dalekiego powrotu
Wejście:
AX=0301h
BH=bajt znaczników
Bit 0-jeżeli równy 1 to jest sterownik przerwań i zerowana linia A20
Bity 1-7 są równe 0
CX=liczba słów do skopiowania ze stosu trybu wirtualnego na stos trybu rzeczywistego
ES:DI/ES:EDI=adres struktury wywołania dla trybu
rzeczywistego
Powrót:
CF=0 jeżeli wyk.popr.
CF=1 jeżeli wyst.błąd
INT 31
DMPI-Wywołanie procedury trybu rzeczywistego ze stosem dostosowanym do powrotu przez IRET
Wejście:
AX=0302h
BH=bajt znaczników
Bit 0-jeżeli równy 1 to jest sterownik przerwań i zerowana linia A20
Bity 1-7 są równe 0
CX=liczba słów do skopiowania ze stosu trybu wirtualnego na stos trybu rzeczywistego
ES:DI/ES:EDI=adres struktury wywołania dla trybu
rzeczywistego
Powrót:
CF=0 jeżeli wyk.popr.
CF=1 jeżeli wyst.błąd
INT 31
DMPI-Przydzielenie procedurze adresu w trybie rzeczywistym
Wejście:
AX=0303h
DS:SI/DS:ESI=adres procedury do wywołania
ES:DI/ES:EDI=adres struktury wywołania dla trybu rzeczywistego
Powrót:
CF=0 jeżeli wyk.popr.:
CX:DX=adres wywołania dla trybu rzeczywistego
CF=1 jeżeli wyst.błąd
INT 31
DMPI-Zwolnienie adresu w trybie rzeczywistym
Wejście:
AX=0304h
CX:DX=adres wywołania procedury trybu wirtualnego z trybu rzeczywistego
Powrót:
CF=0 jeżeli wyk.popr.
CF=1 jeżeli wyst.błąd
INT 31
DMPI-Adres procedury zapamiętującej/odtwarzającej stan
Wejście:
AX=0305h
Powrót:
CF=0 jeżeli wyk.popr.:
AX=wielkość bufora stanu w bajtach
BX:CX=adres w trybie rzeczywistym procedury zapamiętującej/odtwarzającej stan
SI:DI/SI:EDI=adres w trybie wirtualnym procedury zapamiet./odtwarzaj.stan
CF=1 jeżeli wyst.błąd
INT 31
DMPI-Adres procedury przełączania trybu
Wejście:
AX=0306h
Powrót:
CF=0 jeżeli wyk.popr.:
BX:CX=adres procedury przełączającej procesor w tryb wirtualny
SI:DI/SI:EDI=adres procedury przełączającej procesor w tryb rzeczywisty
CF=1 jeżeli wyst.błąd
INT 31
DMPI-Numer wersji DMPI
Wejście:
AX=0400h
Powrót:
CF=0 jeżeli wyk.popr.:
AH=numer wersji DMPI
AL=numer podwersji DMPI
BL=znaczniki:
Bit 0-implementacja dla procesora 80386
Bit 1-przejście procesora do trybu rzeczywistego w celu wykonania obsługi przerwania trybu rzeczywistego
Bit 2-zaimplementowana pamięć wirtualna
Bit 3-7-zarezerwowane
CL=typ procesora
02h=80286
03h=80386
04h=80486
DL=numer pierwszego wirtualnego wektora przerwań dla nadrzędnego sterownika przerwań
DH=numer pierwszego wirt.wek. przer. Dla podrzędnego ster.przerw.
CF=1 jeżeli wyst.błąd
INT 31
DMPI-Informacja o wolnej pamięci
Wejście:
AX=0500h
ES:DI/ES:EDI=adres bufora na informację o pamięci
Powrót:
CF=0 jeżeli wyk.popr.
Zawartość bufora:
Adres+00h=długość (w bajtach)największego wolnego bloku
+04h=maksymalna przydzielona strona-nie zablokowana
+08h=max.przydz.strona-zablokowana
+0Ch=liniowa przestrzeń adresowa w stronach
+10h=całkowita liczba nie zablokow.stron
+14h=liczba wolnych stron
+18h=całkowita liczba fizycznych stron
+1Ch=wolna przestrzeń liniowa w stronach
+20h=rozmiar strefy przechowywania skasowanch stron(w stronach)
+24h-+30h=zarezerwowane
INT 21
DMPI-Przydzielenie bloku pamięci
Wejście:
AX=0501h
BX:CX=rozmiar bloku w bajtach
Powrót:
CF=0 jeżeli wyk.popr.
BX:CX=adres liniowy przydzielonego bloku pamięci
SI:DI=uchwyt bloku pamięci
CE=1 jeżeli wyst.błąd
INT 31
DMPI-Zwolnienie bloku pamięci
Wejście:
AX=0502h
SI:DI=uchwyt bloku pamięci
Powrót:
CF=0 jeżeli wyk.popr.
CF=1 jeżeli wyst.błąd
INT 31
DMPI-Zmiana długości bloku pamięci
Wejście:
AX=0503h
BX:CX=nowa długość bloku w bajtach
SI:DI=uchwyt bloku
Powrót: CF=0 jeżeli wyk.popr.
BX:CX=nowy adres liniowy bloku
SI:DI= nowy uchwyt
CF=1 jeżeli wyst.błąd
INT 31
DMPI-Zablokowanie obszaru w liniowej przestrzeni adresowej
Wejście:
AX=0600h
BX:CX=adres liniowy początku obszaru
SI:DI=rozmiar obszaru w bajtach
Powrót:
CF=0 jeżeli wyk.popr.
CF=1 jeżeli wyst.błąd
INT 31
DMPI-Odblokowanie obszaru w liniowej przestrzeni adresowej
Wejście:
AX=0601h
BX:CX=liniowy adres początku obszaru
SI:DI=rozmiar obszaru w bajtach
Powrót:
CF=0 jeżeli wyk.popr.
CF=1 jeżeli wyst.błąd
INT 31
DMPI-Zaznaczenie obszaru jako rejonu wymienialności stron
Wejście:
AX=0602h
BX:CX=liniowy adres początku obszaru
SI:DI=rozmiar obszaru w bajtach
Powrót:
CF=0 jeżeli wyk.popr.
CF=1 jeżeli wyst.błąd
INT 31
DMPI-Skasowanie własnosci wymienialności stron obszaru
Wejście:
AX=0603h
BX:CX=liniowy adres początku obszaru
SI:DI=rozmiar obszaru w bajtach
Powrót:
CF=0 jeżeli wyk.popr.
CF=1 jeżeli wyst.błąd
INT 31
DMPI-Rozmiar strony
Wejście:
AX=0604h
Powrót:
CF=0 jeżeli wyk.popr.
BX:CX=rozmiar strony w bajtach
CF=1 jeżeli wyst.błąd
INT 31
DMPI-Wskazanie strony jako kandydata do weymiany
Wejście:
AX=0702h
BX:CX=liniowy adres początku obszaru
SI:DI=rozmiar obszaru w bajtach
Powrót:
CF=0 jeżeli wyk.popr.
CF=1 jeżeli wyst.błąd
INT 31
DMPI-Usunięcie zawartości strony
Wejście:
AX=0703h
BX:CX=liniowy adres początku obszaru
SI:DI=rozmiar obszaru
Powrót:
CF=0 jeżeli wyk.popr.
CF=1 jeżeli wyst.błąd
INT 31
DMPI-Odwzorowanie adresu fizycznego
Wejście:
AX=0800h
BX:CX=liniowy adres początku obszaru
SI:DI=rozmiar obszaru
Powrót:
CF=0 jeżeli wyk.popr.
BX:CX=adres liniowy odwzorowany we wskazany adres fizyczny
CF=1 jeżeli wyst.błąd
INT 31
DMPI-Pobranie stanu i zablokowania przerwań wirtualnych
Wejście:
AX=0900h
Powrót:
CF=0 jeżeli wyk.popr.
AL=00h-przerwania były poprzednio zablokowane
AL=01h-przerwania były odblokowane
AH=bez zmian
INT 31
DMPI-Pobranie stanu i odblokowania przerwań wirtualnych
Wejście:
AX=0901h
Powrót:
CF=0 jeżeli wyk.popr.
AL=00h-przerwania były poprzednio zablokowane
AL=01h-przerwania były odblokowane
AH=bez zmian
INT 31
DMPI-Pobranie stanu przerwań wirtualnych
Wejście:
AX=0902h
Powrót:
CF=0 jeżeli wyk.popr.
AL=00h-przerwania były poprzednio zablokowane
AL=01h-przerwania były odblokowane
INT 31
DMPI-Rozszerzenie producenta implementacji DMPI
Wejście:
AX=0A00h
DS.:SI/DS.:ESI=nazwa dostawcy lub identyfikator procedury
Powrót:
CF=0 jeżeli wyk.popr.
DS.:SI/DS.:ESI=punkt wejścia do procedury dostępnej przez instrukcję dalekiego wywołania
INT 31
DMPI-Ustawienie pułapki
Wejście:
AX=0B00h
BX:CX=adres pola pułapki
DL=rozmiar pola pułapki
DH=typ pułapki
00h-wykonanie
01h-zapis
02h-zapis-odczyt
Powrót:
CF=0 jeżeli wyk.popr.
BX=uchwyt pułapki
CF=1 jeżeli wyst.błąd
INT 31
DMPI-Usunięcie pułapki
Wejście:
AX=0B01h
BX=uchwyt pułapki
Powrót:
CF=0 jeżeli wyk.popr
CF=1 jeżeli wyst.błąd
INT 31
DMPI-Odczytanie stanu pułapki
Wejście:
AX=0B02h
BX=uchwyt pułapki
Powrót:
CF=0 jeżeli wyk.popr.
AX-bit 0=1 jeżeli pułaspka była osiągnieta od czsu ostatniego wywołania funkcji 0B00h lub 0300h
CF=1 jeżeli wyst.błąd
INT 31
DMPI-Wyzerowanie stanu pułapki
Wejście:
AX=0B03h
BX=uchwyt pułapki
Powrót:
CF=0 jeżeli wyk.popr.
CF=1 jeżeli wyst.błąd
INT 32
Nie używane
INT 33
Mysz-Instalacja i sprawdzanie stanu programu obsługi myszy
Wejście:
AX=00h
Powrót:
AX=status
0 mysz nie zainstalowana
1mysz zainstalowana
BX=liczba przycisków myszy
1 dwa przyciski
0 inna liczba przycisków
INT 33
Mysz-Pokazanie kursora myszy
Wejście:
AX=01h
INT 33
Mysz-Schowanie kursora myszy
Wejście:
AX=02h
Uwaga : Aby kursor ponownie został wyświetlony,funkcja 01h musi zostać wywołana tyle razy,ile przedtem została wywołana funkcja 02h
INT 33
Mysz-Odczytanie położenia myszy i stanu przycisków
Wejście:
AX=03h
Powrót:
BX stan przycisków
Bit 0=1 jeżeli lewy przycisk wcisnięty
Bit 1=1 jeżeli prawy przycisk wcisnięty
CX=kolumna
DX=wiersz
INT 33
Mysz-Ustawienie kursora myszy
Wejście:
AX=04h
CX=kolumna
DX=wiersz
INT 33
Mysz-Odczytanie informacji o naciśnięciu przycisków
Wejście:
AX=05h
BX=przycisk
0 lewy
1 prawy
Powrót:
AX=stan przycisków
Bit 0=1 jeżeli lewy przycisk wciśnięty
Bit 1=1 jeżeli prawy przycisk wciśniety
BX=liczba naciśnięć przycisku od ostatniego wywołania tej funkcji(0-65535)
CX=kolumna,wktórej znajdował się kursor,gdy ostatnio został naciśnięty przycisk
DX=wiersz,w którym znajdował się kursor,gdy ostatnio został naciśnięty przycisk
INT 33
Mysz-Odczytanie informacji o zwolnieniu przycisków
Wejście:
AX=06h
BX=przycisk
0 lewy
1 prawy
Powrót:
AX=stan przycisków
Bit 0=1 jeżeli lewy przycisk wciśnięty
Bit 1=1 jeżeli prawy przycisk wciśniety
BX=liczba okreslająca ile razy został zwolniony przycisk od ostatniego wywołania tej funkcji(0-65535)
CX=kolumna,wktórej znajdował się kursor,gdy ostatnio został zwolniony przycisk
DX=wiersz,w którym znajdował się kursor,gdy ostatnio został zwolniony przycisk
INT 33
Mysz-Ustawienie zakresu poziomego kursora
Wejscie:
AX=07h
CX=lewa kolumna
DX=prawa kolumna
INT 33
Mysz-Ustawienie zakresu pionowego kursora
Wejście:
AX=08h
CX=najwyższy wierwsz
DX=najniższy wiersz
INT 33
Mysz-Zdefiniowanie kursora graficznego
Wejście:
AX=09h
BX=odległość w osi X punktu aktywnego kursora od lewego rogu maski kursora
CX=odległ. w osi Y punktu aktywnego kursora od górnego rogu maski kursora
ES:DX=adres tablicy zawierającej maski ekranu i kursora 16 słów,kazde słowo zawiera definicję 16 pikseli w wierszu
Młodszy bajt zawiera definicję prawej części wiersza
INT 33
Mysz-Zdefiniowanie kursora tekstowego
Wejście:
AX=0AH
BX=wybór rodzaju kursora
0 kursor programowy
CX=maska kursora
DX=maska kursora
CX=początkowa linia kursora
DX=końcowa linia kirsora
Uwga:Kiedy wybrany jest kursor programowy,na danych atrybutu i znaku z pozycji kursora jest wykonywana operacja AND z maską ekranu,a potem operacja XOR z maską kursora.
INT 33
Mysz-Odczytanie przesunięcia kursora myszy
Wejscie:
AX=0Bh
Powrót:
CX=liczba impulsów w osi poziomej od ostatniego wywołania funkcji
DX= liczba impulsów w osi pionowej od ostatniego wywołania funkcji
Uwaga Impulsy są liczone według najwyzszej czułości myszy.
INT 33
Mysz-Ustawienie maski i adresu procedury przerwania
Weście:
AX=0Ch
CX=maska przerwania
bit 0 pozycja kursora zmieniła się
bit 1 naciśniety lewy przycisk myszy
bit 2 zwolniony lewy przycisk myszy
bit 3 naciśnięty prawy przycisk myszy
bit 4 zwolniony prawy przycisk myszy
ES:DX=adres procedury przerwania
Uwaga: Kiedy przerwanie jest wywoływane,do rejestrów procesora ładowane są wartści:
AX=maska warunków (taka sama jak w wywołaniu przerwania)
BX=stan przycisków
CX=kolumna w której znajduje się kursor
DX =wiersz w którym znajduje się kursor
DI= liczba impulsów przesunięcia poziomego
SI=liczba impulsów przesunięcia pionowego
INT 33
Mysz-Włączenie emulacji pióra świetlnego
Wejście:
AX=0Dh
INT 33
Mysz-Wyłączenie emulacji pióra świetlnego
Wejście:
AX=0Eh
INT 33
Mysz-Ustawienie czułości myszy
Wejście:
AX=0Fh
CX=liczba impulsów myszy na przesunięcie kursora o 8 punktów ekranu w poziomie
DX=liczba impulsów myszy na przesunięcie kursora
o 8 punktów ekranu w pionie
INT 33
Mysz-Odświerzenie obszaru ekranu
Wejscie:
AX=10h
CX=współrzędna X górnego lewego rogu ekranu
DX=|j.w| Y|j.w
SI= j.w X dolnego prawego rogu ekranu
DI= j.w Y j.w
INT 33
Mysz-Ustawienie progu podwojenia czułości
Wejście:
AX=13h
DX=próg podwojenia czułości(liczba impulsów na sekundę)
INT 33
Mysz-Zmiana procedury obsługi przerwania
Wejście:
AX=14h
ES:DX=adres nowej procedury
CX= nowa maska procedury
Powrót:
ES:DX=adres poprzedniej procedury
CX poprzednia maska przerwań
INT 33
Mysz-Odczytanie koniecznej wielkosci bufora pamięci programu obsługi myszy
Wejście:
AX=15h
Powrót:
BX=rozmiar bufora
INT 33
Mysz-Zapamiętanie stanu programu obsługi myszy
Wejście:
AX=16h
ES:DX= adres bufora
INT 33
Mysz-Odtworzenie stanu programu obsługi myszy
Wejście:
AX=17h
ES:DX=adres bufora,w którym uprzednio zapamiętano stan programu
INT 33
Mysz-Ustawienie alternatywnej procedury obsługi przerwań i maski przerwań
Wejście:
AX=18h
ES:DX=adres nowej procedury
CX=nowa maska przerwań
Powrót:
AX=status błędu(-1 jeżeli błąd)
INT 33
Mysz-Odczytanie adresu alternatywnej procedury obsługi przerwań
Wejście:
AX=19h
CX=maska przerwań
Powrót:
AX=status błędu(-1 jeżeli błąd)
CX=maska przerwań
BX:DX=adres procedury
INT 33
Mysz-Ustawienie czułości myszy
Wejście:
AX=1Ah
BX=liczba określajaca czułość w poziomie
CX= liczba określająca czułość w pionie
DX=próg podwojenia czułości
INT 33
Mysz-Odczytanie czułości myszy
Wejście:
AX=1Bh
Powrót:
BX=liczba określajaca czułość w poziomie
CX= liczba określająca czułość w pionie
DX=próg podwojenia czułości
INT 33
Mysz- Ustalenie częstotliwosci przerwań(tylko mysz InPort)
Wejscie:
AX=1Ch
BX=częstotliwość przerwań( w przerwaniach na minutę)
INT 33-Ustawienie strony kodowej
Wejście:
AX=1Dh
BX numer strony ekranu
INT 33
Mysz-Odczytanie strony ekranu
Wejście:
AX=1Eh
BX=numer strony ekranu
INT 33
Mysz Wyłączenie programu obsługi myszy
Wejście:
AX=1Fh
Powrót:
AX=kod błędu
ES:BX=poprzedni wektor przerwania 33h
INT 33
Mysz Włączenie programu obsługi myszy
Wejście:
AX=20h
INT 33
Mysz -Innicjacja programowa
Wejście:
AX=21h
Powrót:
Ax=-1 jeżeli program obsługi zostanie zainstalowany
AX=33 jeżeli prog.obsł. nie zost. Zainst.
BX=2 jeżeli inicjacja została zakończona pomyślnie
INT 33
Mysz-Ustawienie języka komunikatów
Wejście:
AX=22h
BX=numer języka
0=angielski
1=francuski
2=holenderski
3=niemiecki
4=szwedzki
5=fiński
6=hiszpański
7=portugalski
8=włoski
IN T33
Mysz-odczytanie numeru języka
Wejscie:
AX=23h
Powrót:BX=numer języka(numery jak w 22h)
INT 33
Mysz-Odczytanie wersji programu obsługi typu myszy i numeru IRQ
Wejście:
AX=24h
Powrót:
BX=numer wersji programu obsługi
(część przed kropką w BH,po kropce w BL)
CL=numer IRQ
CH=typ myszy
1=dołączona do karty
2=dołączona do portu szeregowego
3=InPort
4=PS/2(CL=0)
5=Hewlett-Packard
INT 33
Mysz-Odczytanie informacji o programie obsługi myszy
Wejscie:
AX=25h
Powrót:
AX=słowo informacji
Bity8-11=częstotliwość przerwań
Bity12-13=rodzaj kursora myszy
00=programowy w trybie znakowym
01=sprzetowy w trybie znakowym
10=graficzny
11=graficzny
INT33 Mysz-odczytanie maksymalnych współrzednych ekranu wirtualnego
Wejście:
AX=26h
Powrót:
BX=znacznik aktywnosci prog.obsł.myszy(0=aktywny)
CX=max.współrzedna w poziomie
DX=max.wsp.w pionie
INT 33
Mysz-Odczytanie masek ekranu i kursora oraz liczby impulsów myszy
Wejście:
AX=27h
Powrót:
AX=maska ekranu lub numer pierwszej lini
BX= maska ekranu lub numer ostatniej lini
CX=liczba impulsów w poziomie
DX=licz.imp.w pionie
INT 33
Mysz-Ustawienie trybu graficznego
Wejście:
AX=28h
BX=tryb graficzny
DX=numer znaku
Powrót:
CX=znacznik powodzenia operacji(0=pomyślne zakonczenie operacji)
INT 33
Mysz-Wyliczenie dowolnych trybów wyświetlania
Wejście:
AX=29h
CX=0-pierwszy;<>0-nastepne tryby wyświetlania
Powrót:
CX=numer trybu wyświetlania
ES:DX=adres ciągu znaków
INT 33
Mysz-Odczytanie położenia aktywnego kursora
Wejście:
AX=2Ah
Powrót:
BX=współrzedna pozioma
CX=wsp.pionowa
DX=typ myszy
INT 33
Mysz-Załadowanie krzywych przyśpieszenia
Wejście:
AX=2Bh
ES:SI=adres bufora danych krzywej
Powrót:
CX=znacznik powodzenia operacji
INT 33
Mysz-Odczytanie krzywych przyśpieszenia
Wejście:
AX=2Ch
Powrót:
AX=znacznik powodzenia operacji(0-pomyslne)
BX=numer krzywej przyśpieszenia
ES:SI=adres bufor danch krzywej
INT 33
Mysz-Ustawienie/odczytanie aktywnej krzywej przyśpieszenia
Wejscie:
AX=2Eh
BX=-1-odczytanie numeru krzywej
1-4-wybieranie krzywej o numerze 1-4
Powrót:
AX=znacznik powodzenia operacji (0-pomyślne,-2-numer krzywej nie w zakresie 1-4)
BX=numer krzywej
ES:SI=adres ciągu znaków krzywej przyśpieszenia
INT 33
Mysz-Inicjacja sprzętowa myszy
Wejście:
AX=2Fh
Powrót
AX=znacznik powodzenia operacji(-1-pomyślne)
INT 33
Kot-Odczytanie/ustalenie informacji o kocie(BALLPOINT)
Wejście:
AX=30h
BX=kąt rotacji
CX=polecenie
Powrót:
AX=status
BX=kąt rotacji
CX=maska przycisków
INT 33
Mysz-Odczytanie minimalnych i maksymalnych współrzędnych wirtualnych
Wejście:
AX=31h
Powrót:
AX=minimalna współ.pozioma
BX=minimal.wsp.pionowa
CX=max.wsp.poz.
DX=max.wsp.pionowa
INT 33
Mysz-Odczytanie aktywnych funkji rozszerzonych
Wejście:
AX=32h
Powrót:
AX=znaczniki funkcji aktywnych
16-bitowe słowo,w którym bit 15 wskazuje możliwość użycia funkcji 25h,bit 14-funkcja 26h itd.;starsze wersje programów obsługi myszy realizują funkcje 0h-24h
INT 33
Mysz-Odczytanie ustawionych wartości
Wejście:
AX=33h
CX=długość bufora
ES:DX=adres bufora
Powrót:
AX=0
CX=liczba bajtów zwróconych do bufora
ES:DX=adres bufora
Zawartość bufora:
Bajt 0=typ myszy(4 mniej znaczące bity)(0-5)
Port myszy (4 bardziej znaczące bity)(0-4)
1=język komunikatów(0-10)
2=czułość w osi poziomej(0-100)
3=czułość w osi pionowej(0-100)
4=próg podwojenia wartości(0-100)
5=numer krzywej przyspieszenia(1-4)
6=częstotliwość przerwań(1-4)
7=nadrzędna maska kursora(0-255)
8=korekcja dla laptopa (0-255)
9=typ pamięci(0-2)
10=obsługa SVGA(0-1)
11=kąt rotacji(0-359)
13=przyciski pierwotne(1-4)
14=przyciski wtórne(1-4)
15=blikada przciśnięcia(0-1)
16-255=tablica krzywych przyspieszeń
INT 34
Turbo C/języki Microsoft-u
Emulacja operacji zmiennoprzecinkowych
INT 35
Turbo C/języki Microsoft-u
Emulacja operacji zmiennoprzecinkowych
To przerwanie emuluje instrukcję D9h
INT 36
Turbo C/języki Microsoft-u
Emulacja operacji zmiennoprzecinkowych
INT 37
Turbo C/języki Microsoft-u
Emulacja operacji zmiennoprzecinkowych
To przerwanie emuluje instrukcję DBh.
INT 38
Turbo C/języki Microsoft-u
Emulacja operacji zmiennoprzecinkowych
INT 39
Turbo C/języki Microsoft-u
Emulacja operacji zmiennoprzecinkowych
To przerwanie emuluje instr. DDh
INT 3A
Turbo C/języki Microsoft-u
Emulacja operacji zmiennoprzecinkowych
To przerw.emuluje istr. Deh
INT 3B
Turbo C/języki Microsoft-u
Emulacja operacji zmiennoprzecinkowych
INT 3C
Turbo C/języki Microsoft-u
Emulacja operacji zmiennoprzecinkowych
To przerw.emuluje instr. zmieniające wartości segm. ES
INT 3D
Turbo C/języki Microsoft-u
Emulacja operacji zmiennoprzecinkowych
To przerw.emuluje instr. FWAIT.
INT 3E
Turbo C/języki Microsoft-u
Emulacja operacji zmiennoprzecinkowych
INT 3F
Turbo C/języki Microsoft-u
Emulacja operacji zmiennoprzecinkowych
INT 40
Przeniesiona (przez sterownik dysku twardego)obsługa dyskietek (INT 13h)
INT 41
Wektor tablicy parametrów dysku twardego(XT,AT,PS bez dysków ESDI)
Przesunięcie|rozmiar|opis
00h|||2||liczba cylindrów
02h|||1||liczba głowic
03h|||21||początkowa ścieżka zredukowanego zapisu
05h|||2||początk.ścieżka prekompensacji zapisu
07h|||1||max.długość ECC
08h|||1||jeżeli bit 7 ustawiony-wyłączone powtarzanie operacji;jeżeli bit 6 ust.-wyłącz.korekcja ECC
09h|||1||standardowy czas operacji
0Ah|||1||stand.czas operacji odczytu
0Bh|||1||stand.czas operacji formatowania
0Ch|||1||zarezerwowane
INT 42
Przeniesiona (przez sterownik EGA)obsługa karty graficznej
(INT 10h)(EGA,VGA,PS)
INT 43
Adres zestawu znaków dla trybów graficznych(EGA,VGA,PS)
INT 44
NOVELL NETWARE API
INT 45
Zarezerwowane
INT 46
Parametry drugiego twardego dysku(AT,XT 286,PS bez dysków ESDI)
Parametry tak samo jak w INT 41h
INT 47
Zarezerwowane
INT 48
Zarezerwowane
INT 49
Zarezerwowane
INT 4A
Alarm użytkownika(AT,CONV,PS)
Przerwanie to jest wywołane przez przerwanie 1Ah,po ustawieniu alarmu.Użtkownik musi ustawić wektor tego przerwania,tak aby wskazywał procedurę obsługi alarmu
INT 4B
Zarezerwowane
INT 4C
Zarezerwowane
INT 4D
Zarezerwowane
INT 4E
Zarezerwowane
INT 4F
Zarezerwowane
INT 50-57
IRQ0-IRQ7 przeniesione przez DESQview
INT 58
Zarezerwowane
INT 59
Zarezerwowane
INT 5A
Zarezerwowane
INT 5B
Zarezerwowane
INT 5C
Zarezerwowane
INT 5D
Zarezerwowane
INT 5E
Zarezerwowane
INT 5F
Zarezerwowane
INT 60
Przerwanie zarezerwowane dla użytkownika
INT 61
Przerwanie zarezerwowane dla użytkownika
INT 62
Przerwanie zarezerwowane dla użytkownika
INT 63
Przerwanie zarezerwowane dla użytkownika
INT 64
Przerwanie zarezerwowane dla użytkownika
INT 65
Przerwanie zarezerwowane dla użytkownika
INT 66
Przerwanie zarezerwowane dla użytkownika INT 47
INT 67
LIM EMS-Odczytanie statusu menadzera pamięci EMS
Wejście:
AH=40h
Powrót:
AH=status
00h jeżeli wykonanie poprawne
80h błąd wewnętrzny
81h błąd spowodowany przez sterownik EMS
84h próba wywołania nieznanej funkcji przez aplikację
Uwaga:Ta funkcja może być wywołana po sprawdzeniu,że menadżer pamięci EMS jest zainstalowany.
INT 67
LIM EMS-Odczytanie adresu ramki stron
Wejście:
AH=41h
Powrót:
AH=00h jeżeli wyk.popr.
BX=adres segmentowy ramki stron fizycznych
AH=kod błędu(taki sam jak w AH=40h)
INT 67
LIM EMS-Odczytanie liczby wolnych stron
Wejście:
AH=42h
Powrót:
AH=00h jeżeli wyk.popr.
BX=liczba nie zaalokowanych stron logicznych
DX=liczba wszystkich stron logicznych pamięci EMS
AH= kod błędu (taki sam jak w AH=40h)
INT 67
LIM EMS-przydzielenie uchwytu pamięci
Wejście:
AH=43h
BX=liczba stron do przydzielenia
Powrót:
AH=status
00h jeżeli wyk.popr.:DX=uchwyt
80h błąd wewnętrzny
81h błąd spowodowany przez sterownik EMS
84h próba wywołania nieznanej funkcji
85h brak wolnych uchwytów
87h liczba stron do przydzielenia większa od fizycznej ilości stron
88h liczba stron do przydzielenia większa od liczby aktualniew dostępnych stron
89h|żądano przydzielenia zerowrj liczby stron
INT 67
LIM EMS-Podłączenie/odłączenie strony
W ejście:
AH=44h
AL=numer strony fizycznej(0-3)
BX=numer strony logicznej podłączonej do strony fizycznej lub FFFFh,gdy od danej strony fizycznej ma zostać odłączona strona logiczna
DX=uchwyt
Powrót:
AH=status
00h jeżeli wyk.popr.
80h błąd wewnętrzny
81h błąd spowodowany przez sterownik EMS
83h błędny uchwyt
84h próba wywołania nieznanej funkcji
8Ah błędny numer strony logicznej
8Bh błędny numer strony fizycznej
INT 67
LIM EMS-Zwolnienie uchwytu i pamięci
Wejście:
AH=45h
DX=uchwyt
Powrót:
AH=status
00h jeżeli wykonanie bezbłędne
80h błąd wewnętrzny
81h błąd wywołany przez sterownik EMS
83h błędny uchwyt
84h próba wywołania nieznanej funkcji
86h błąd przy zapamiętywaniu lub odczytywaniu stanu odwzorowania
INT 67
LIM EMS-Odczytanie wersji EMM
Wejście:
AH=46h
Powrót:
AH=status
00h jeżeli wykonanie bezbłędne
AL=numer wersji EMM
80h błąd wewnętrzny
81h błąd wywołany przez sterownik EMS
83h błędny uchwyt
84h próba wywołania nieznanej funkcji
INT 67
LIM EMS-Zachowanie stanu odwzorowania stron
Wejście:
AH=47h DX=uchwyt
Powrót:
AH=status
00h jeżeli wykonanie poprawnie
80h błąd wewnętrzny
81h błąd spowodowany przez sterownik EMS
83h błędny uchwyt
84h próba wywołania nieznanej funkcji
8Ch wewnętrzny bufor na informacje o stanach odwzorowania stron jest pełny
8Dh błąd podczas zachowywania stanu odwzorowania stron
INT 67
LIM EMS-Odtworzenie stanu odwzorowania stron
Wejście:
AH=48h DX=uchwyt
Powrót:
AH=status
00h jeżeli wykonanie poprawne
80h błąd wewnętrzny
81h błąd spowodowany przez sterownik EMS
83h błędny uchwyt
84h próba wywołania nieznanej funkcji
8Eh błąd podczas odtwarzania stanu odwzorowania stron
INT 67
LIM EMS-Zarezerwowane
Wejście:
AH=49h
Uwaga:Opisane w EMS 3.0,ale nie udokumentowane w EMS 3.2
INT 67
LIM EMS-Zarezerwowane
Wejście:
AH=4Ah
Uwaga:Opisane w EMS 3.0,ale nie udokumentowane w EMS 3.2
INT 67
LIM EMS-Odczytanie liczby uchwytów
Wejście:
AH=4Bh
Powrót:
AH=status
00h jeżeli wykonanie poprawne
BX=liczba otwartych uchwytów
80h błąd wewnętrzny
81h błąd spowodowany przez sterownik EMS
83h błędny uchwyt
84h próba wywołania nieznanej funkcji
INT 67
LIM EMS-Odczytanie liczby stron przydzielonych uchwytowi
Wejście:
AH=4Ch DX=uchwyt
Powrót:
AH=status
00h jeżeli wykonanie bezbłędne
BX=liczba stron logicznych przydzielonych uchwytowi
80h błąd wewnętrzny
81h błąd spowodowany przez sterownik EMS
83h błędny uchwyt
84h próba wywołania nieznanej funkcji
INT 67
LIM EMS-Odczytanie liczby stron dla wszystkich uchwytów
Wejście:
AH=4Dh
ES:DI=adres tablicy na informację
Powrót:
AH=status
00h jeżeli wykonanie bezbłędne
BX=liczba wykorzystanych uchwytów
Tablica zawiera bloki(po dwa słowa)zawierające uchwyt i liczbę stron przydzielonych temu uchwytowi.
80h błąd wewnętrzny
81h błąd spowodowany przez sterownik EMS
84h próba wywołania nieznanej funkcji
INT 67
LIM EMS-odczytanie/ustawienie stanu odwzorowania stron
Wejście:
AH=4Eh
AL=00h jeżeli ustawianie
01h jeżeli odczytywanie
02h jeżeli odczytywanie i ustawianie jednocześnie
03h jeżeli odczytywanie wielkości obszaru dla danych o stanie odwzorowania stron
DS:SI=adres tablicy na informację(AL=01/02)
ES:DI=adres tablicy z iformacą(AL=00/02)
Powrót:
AH=status
00 jeżeli wykonanie poprawne
AL=wielkość (w bajtach)wielkości mapy strony(tylko pofunkcja 03h)
Wielkość tablicy ES:DI(AL=00/02)
80h błąd wewnętrzny
81h błąd spowodowany przez sterownik EMS
84h próba wywołania nieznqanej funkcji
8Fh łędny numer podfukcji
A3h błędna zawartość tablicy źródłowej(EMS 4.0?)
Uwagi:Ta funkcja została stworzona dla systemów wielozadaniowych i nie powinna być wykorzystywana przez zwykłe programy.
INT 67
LIM EMS 4.0-Odczytanie/ustawienie częściowego stanu odwzorowania stron
Wejscie:
AH=4Fh
AL=podfunkcja
00h odczytanie częściowego stanu odwzorowania stron
DS:SI=adres obszaru, który zawiera dane o wybranych stronach fizycznych
ES:DI=adres obszaru,w którym zostaną zapamiętane dane o stanie odwzorowania wybranych stron fizycznych
01h ustawienie częściowego stanu odwzorowania stron
DS:SI=adres obszaru zawierającego dane o stanie odwzorowania stron
02h odczytanie rozmiaru obszaru na informację o częściowym stanie odwzorowania stron
BX=liczba wybranych stron fizycznych
Powrót:
AH=status
00h jeżeli wykonane poprawnie
80h błąd wewnętrzny
81h błąd spowodowany przez sterownik EMS
84h próba wywołania nieznanej funkcji
8Bh jeden z numerów zadanej strony fizycznej wykracza poza dopuszczalny zakres
8Fh błędny numer podfunkcji
A3h zawartość struktury danych przekazanej do funkcji została zniszczona
INT 67
LIM EMS 4.0-Podłącz/odłącz kilka stron przydzielonych uchwytowi
Wejscie:
AH=50h
AL=podfunkcja
00h metoda:strona logiczna/strona fizyczna
DX=uchwyt
CX=liczba elementów wektora wejściowego
ES:DI=adres do wektora,w którym jest zapisana informacja o numerach stron
01h metoda:strona logiczna/adres segmentowy stron
DX=uchwyt
CX=liczba elementów wektora wejściowego
DS:SI=adres do wektora,w którym jest zapisana informacja o numerach stron
Powrót:
AH=status
00h jeżeli wykonane poprawnie
80h błąd wewnętrzny
81h błąd spowodowany przez sterownik EMS
83h błędny uchwyt
84h próba wywołania nieznanej funkcji
8Ah jedna(lub więcej)strona logiczna nie istnieje
8Bh jedna(lub więcej)strona fizyczna nie istnieje
8Fh błędna podfunkcj
INT67
LIM EMS 4.0-Realokacja stron
Wejście:
AH=51h
DX=uchwyt
BX=wymagana liczba stron przydzielonych uchwytowi
Powrót:
BX=aktualna liczba stron przydzielonych uchwytowi
AH=status
00h jeżeli wykonane poprawnie
80h błąd wewnętrzny
81h błąd spowodowany przez sterownik EMS
83h błędny uchwyt
84h próba wywołania nieznanej funkcji
87h liczba stron do przydzielenia większa od fizycznej ilości stron
88h liczba stron do przydzielenia większa od liczby aktualnie dostępnych stron
INT 67
LIM EMS 4.0-Odczytanie /ustawienie atrybutów uchwytu
Wejście:
AH=52h
AL=podfunkcja
00h odczytanie atrybutów uchwytu
01h ustawienie atrybutów uchwytu
BL = nowy atrybut
02h określenie czy pamięć może być nieulotna
DX uchwyt
Powrót:
AH=status
00h jeżeli wykonanie poprawne
AL=atrybut(dla podfunkcji 00h)
00h uchwyt ulotny
01h uchwyt nieulotny
AL=określenie,czy pamięć może być nieulotna(dla pofunkcji02h)
00h pamięć zawsze ulotna
01h pamięć może być nieulotna
80h błąd wewnętrzny
81h błąd spowodowany przez sterownik EMS
83h błędny uchwyt
84h próba wywołania nieznanej funkcji
8Fh nieznana podfunkcja
90h nieznany atrybut
91h funkcja niedostępna
LIM EMS 4.0-Odczytanie /ustawienie nazwy uchwytu
Wejście:
AH=53h
AL=podfunkcja
00h odczytanie nazwy uchwytu
ES:SI=adres 8-bajtowej obszaru na odczytywaną nazwę
01h ustawienie nazwy uchwytu
DS:SI=adres 8-bajtowej nazwy uchwytu
DX uchwyt
Powrót:
AH=status
00h jeżeli wykonanie poprawne
80h błąd wewnętrzny
81h błąd spowodowany przez sterownik EMS
83h błędny uchwyt
84h próba wywołania nieznanej funkcji
8Fh nieznana podfunkcja
A1h podana nazwa uchwytu już istnieje
LIM EMS 4.0-Odczytanie katalogu uchwytów
Wejście:
AH=54h
AL=podfunkcja
00h odczytanie katalogu uchwytu
ES:SI=adres bufora na katalog uchwytów
01h szukanie uchwytu poprzez nazwę
DS:SI=adres 8-bajtowej nazwy uchwytu
02h odczytanie liczby wszystkich uchwytów
Powrót:
AH=status
00h jeżeli wykonanie poprawne
AL=liczba otwartych uchwytów(podfunkcja 00h)
DX=kod szukanego uchwytu(podfunkcja 01h)
BX=liczba wszystkich uchwytów(podfunkcja 02h)
80h błąd wewnętrzny
81h błąd spowodowany przez sterownik EMS
84h próba wywołania nieznanej funkcji
8Fh nieznana podfunkcja
A0h nie ma uchwytu o takiej nazwie
A1h uchwy znaleziony nie ma nazwy
LIM EMS 4.0-Przesłanie /wymienienie obszaru pamięci
Wejście:
AH=57h
AL=podfunkcja
00h przesłanie obszaru pamięci
01h wymienienie obszaru pamięci
DS:SI=adres struktury zawierającej opis
kopiowanych(wymienianych)obszarów pamięci:
adres||zawartość
00h||długość kopiowanego obszaru
04h||typ pamięci,gdzie są przechowywane dane źródłowe
0-jeżeli są w pamięci konwencjonalnej
1-jeżeli dane są w pamięci EMS
05h ||jeżeli dane są w pamięci EMS,to pole zawiera uchwyt:jeżeli dane są w pamięci konwencjonalnej to pole=0
07h||przemieszczenie w obszarze źródłowym
09h||zawiera adres segmentowy obszaru źródłowego lub numer źródłowej strony logicznej awiązanej z uchwytem źródłowym
0Bh||typ pamięci,gdzie zostaną skopiowane dane:0-jeżeli do pamięci konwencjonalnej,1-jeżeli do pamięci EMS
0Ch||jeżeli dane kopiowane do pamięci EMS,to pole zawiera uchwyt;jeżeli dane kopiowane do pamięci konwencjonalnej,to pole zawiera 0
0Eh||przemieszczenie w obszarze docelowym
10h||zawiera adres segmentowy obszaru docelowego lub nemer docelowej strony logicznej związanej z uchwytem docelowym
Powrót:
AH=status
00h jeżeli wykonanie poprawne
80h błąd wewnętrzny
81h błąd spowodaowany przez sterownik EMS
83h błędny uchwyt
84h próba wywołania nieznanej funkcji
8Ah numer strony logicznej wykracza poza dopuszczalny zakres numerów stron przydzielonych uchwytowi
8Fh nieznana podfunkcja
92h wykonanie poprawne,ale część obszaru źródłowego została zapisana
93h rozmiar określonego obszaru przekracza rozmiar obszaru przydzielonego uchwytowi
94h obszar pamięci bazowej nakłada się na obszar którejś ze stron fizycznych
95h przemieszczenie względem początku strony logicznej przekracza jej rozmiar
96h rozmiar obszru przekracza dopuszczalny zakres = 1MB
97h obszar źródłowy i docelowy identyfikowane są przez ten sam uchwyt i nakładają się na siebie
98h typ pamięci obszaru źródłowego lub docelowego nie jest znany
A2h zostanie przekroczona 1MB przestrzeń adresowa
INT 67
LIM EMS 4.0 - Odczytanie adresów segmentowych stron fizycznych
Wejście:
AH=58h
AL=podfunkcja
00h odczytanie adresów segmentowych stron fizycznych
ES:DI=adres wektora struktur
01h odczytanie liczby elementów wektora adresów segmentowych stron
Powrót:
CX=liczba elementów wektora
AH=status
00h jeżeli wykonanie poprawne
80h błąd wewnętrzny
81h błąd spowodowany przez sterownik EMS
84h próba wywołania nieznanej funkcji
8Fh nieznana podfunkcja
INT 67
VCPI - Stwierdzenie obecności VCPI
Wejście:
AH=DEh
AL=00h
Powrót:
AH=00h jeżeli usługi VCPI zainstalowane
BH=numer wersji
BL=numer podwersji
< > 00h obsuga VCPI nie zainstalowana
INT 67
VCPI - Adres punktu wejścia do funkcji VCPI dla trybu wirtualnego
Wejście:
AH=Deh
AL=01h
ES:DI=wskaźnik do bufora(o wielkości 4 KB)tablicy stron
DS:SI=wskaźnik do tablicy 3 deskryptorów(elementów tablicy GDT)
Powrót:
AH=00h jeżeli wykonanie poprawne
DI=numer pierwszego nie używanego elementu tablicy stron w buforze
EDX=punkt wejścia(przemieszczenia w segmencie kodu)
Do procedur VCPI dla trybu wirtualnego
00h jeżeli wystąpił błąd
INT 67
VCPI - Adres fizyczny najwyższej strony(4KB)pamięci
Wejście:
AH=DEh
AL=02h
Powrót:
AH=00h jeżeli wykonanie poprawne
EDX=adres fizyczny najwyższej strony pamięci
< > jeżeli wystąpił błąd
||
INT 67
VCPI - Liczba wolnych stron(o wielkości 4KB)
Wejście:
AH=DEh
AL=03h
Powrót:
AH=00h jeżeli wykonanie poprawne
EDX=liczba wolnych stron
< > jeżeli wystąpił błąd
INT 67
VCPI - Przydział strony
Wejście:
AH=DEh
AL=04h
Powrót:
AH=00h jeżeli wykonanie poprawne
EDX=adres fizyczny przydzielonej strony
< > jeżeli wystąpił błąd
Uwaga:Program powinien zwolnić wszystkie strony przydzielone za pomocą tej funkcji przed swoim zakończeniem
INT 67
VCPI - Zwolnienie strony
Wejście:
AH=DEh
AL=05h
EDX=adres fizyczny zwalnianej strony
Powrót:
AH=00h jeżeli wykonanie poprawne
< > jeżeli wystąpił błąd
INT 67
VCPI - Adres fizyczny strony(w pierwszm megabajcie)
Wejście:
AH=DEh
AL=06h
CX=numer strony(adres liniowy przesunięty o 12 bitów w prawo)
Powrót:
AH=00h jeżeli wykonanie poprawne
EDX=adres fizyczny strony
< > jeżeli wystąpił błąd
INT 67
VCPI - Odczytanie rejestru CR0 procesora
Wejście:
AH=DEh
AL=07h
Powrót:
AH=00h jeżeli wykonanie poprawne
EDX=zawartość rejestru CR0 procesora
< > jeżeli wystąpił błąd
INT 67
VCPI - Odczytanie rejestrów uruchomieniowych procesora
Wejście:
AH=DEh
AL=08h
EDX=adres bufora o pojemności 8 podwójnych słów
Powrót:
AH=00h jeżeli wykonanie poprawne
< > jeżeli wystąpił błąd
Uwagi:Funkcja umieszcza we wskazanym buforze zawartość rejestrów DR0 - DR7.
INT 67
VCPI - Zapisanie danych do rejestrów uruchomieniowych procesora
Wejście:
AH=DEh
AL=09h
ED:DI=adres tablicy zawierającej dane,które mają być wpisane do rejestrów DR0 - DR7 procesora
Powrót:
AH=00h jeżeli wykonanie poprawne
< > jeżeli wystąpił błąd
Uwagi:Dane dla rejestrów DR4 i DR5 są pomijane(rejestry te nie są używane.
INT 67
VCPI - Bieżące odwzorowania wektorów przerwań sprzętowych
Wejście:
AH=DEh
AL=0Ah
Powrót:
AH=00h jeżeli wykonanie poprawne
BX=numer pierwszego wektora przerwań dla nadrzędnego sterownika przerwań 8259(IRQ 0)
CX=numer pierwszego wektora przerwań dla podrzędnego sterownika przerwań 8259(IRQ 8)
< > jeżeli wystąpił błąd
Uwagi:Zawartość rejestru CX jest nieokreślona,gdy w systemie nie ma drugiego sterownika przerwań.
INT 67
VCPI - Ustawienie odwzorowania wektorów przerwań sprzętowych
Wejście:
AH=DEh
AL=0Bh
BX=numer pierwszego wektora przerwań dla nadrzędnego sterownika przerwań 8259(IRQ 0)
CX=numer pierwszego wektora przerwań dla podrzędnego sterownika przerwań 8259(IRQ 8)
Powrót:
AH=00h jeżeli wykonanie poprawne
< > jeżeli wystąpił błąd
INT 67
VCPI - Przełączanie procesora w tryb wirtualny...Powrót do trybu wirtualnego 8086
Wejście:
Wtrybie wirtualnym 8086
AH=DEh
AL=0Ch
SI=adres liniowy bloku parametrów wywołania
Powrót:Przejście do trybu wirtalnego
W trybie wirtualnym:
AH=DEh
AL=oCh
DS.=selektor segmentu z funkcji 01h
SS:ESP=położenie stosu w pierwszym megabajcie pamięci;na stosie należy umieścić następujące dane:
4 słowa adres powrotu z dalekiego wywołania procedury w segmencie 32-bitowym(tj.adres powrotu odłozony w czasie wywołania funkcji 0Ch)
2 słowa EIP
2 j.w|CS|
2 j.w zarezerwowane dla EFLAGS
2 j.w|ESP
2 j.w SS
2 j.w|DS
2 j.w|FS
2 j.w|GS
Powrót:Przejście do trybu wirtualnego 8086
INT 68
Nie używane
INT 69
Nie używane
INT 6A
Nie używane
INT 6B
Nie używane
INT 6C
Nie używane
INT 6D
Nie używane
INT 6E
Nie używane
INT 6F
Nie używane
INT 70
Przerwanie zegara czasu rzeczywistego (IRQ)
INT 71
Zarezerwowane (IRQ 9)
INT 72
Zarezerwowane (IRQ 10)
INT 73
Zarezerwowane (IRQ 11)
INT 74
Zarezerwowane (IRQ 12)
INT 75
Przerwanie kooprocesora (IRQ 13)
INT 76
Przerwanie sterownika dysku twardego (IRQ 14)
INT 77
Zarezerwowane (IRQ 15)
INT 78
Nie używane
INT 79
Nie używane
INT 7A
Nie używane
INT 7B
Nie używane
INT 7C
Nie używane
INT 7D
Nie używane
INT 7E
Nie używane
INT 7F
Nie używane
INT 80
Zarezerwowane dla BASIC'a
INT 81
Zarezerwowane dla BASIC'a
INT 82
Zarezerwowane dla BASIC'a
INT 83
Zarezerwowane dla BASIC'a
INT 84
Zarezerwowane dla BASIC'a
INT 85
Zarezerwowane dla BASIC'a
INT 86
Przeniesione (przez NETBIOS) przerwanie 18h
INT 86-F0
Używane przez interpretator BASI'a
INT F1
Przerwanie zarezerwowane dla użytkownika
INT F2
Przerwanie zarezerwowane dla użytkownika
INT F3
Przerwanie zarezerwowane dla użytkownika
INT F4
Przerwanie zarezerwowane dla użytkownika
INT F5
Przerwanie zarezerwowane dla użytkownika
INT F6
Przerwanie zarezerwowane dla użytkownika
INT F7
Przerwanie zarezerwowane dla użytkownika
INT F8
Przerwanie zarezerwowane dla użytkownika
INT F9
Przerwanie zarezerwowane dla użytkownika
INT FA
Przerwanie zarezerwowane dla użytkownika
INT FB
Przerwanie zarezerwowane dla użytkownika
INT FC
Przerwanie zarezerwowane dla użytkownika
INT FD
Przerwanie zarezerwowane dla użytkownika
INT FE
Przerwanie zarezerwowane dla użytkownika
INT FF
Przerwanie zarezerwowane dla użytkownika
Wyszukiwarka
Podobne podstrony:
2 szczegolowy opis przedm zamopwienia zal nr2Szczegółowy opis procesu instalacji patcha The Sims 3 Patch Update 1 0 631 00002cat lv 1 ch18 08 en OPIS PRG DO DOBORU ZABEZPIECZENSzczegółowy opis dziełSzczegółowy opis dziełMikrokontrolery To takie proste, cz 14 (opis układów licznikowych oraz układu przerwań 8051 c d )opis do sprawozdań 08 i 09TI 99 08 19 B M pl(1)pawlikowski, fizyka, szczególna teoria względnościOpis zawodu AnkieterOpisei 05 08 s029Wyklad 2 PNOP 08 9 zaocznewięcej podobnych podstron