; Procedury Obsługi Przerwań
; Opracował: Marcin Kowalski
INT 0h dzielenie przez zero
INT 1h praca krokowa-stosowane do pracy z uruchamiaczem
INT 2h przerwanie niemaskowane NMI nie można go zablokować
INT 3h pułapka -punkt wstrzymawania pracy programu (breakpoint,1- byte interrupt)
INT 4h przepełnienie przy operacjach matematycznych (overlow)
INT 5h print screen
INT 6h zarezerwowane dla IBM AT niedostępna jednostka matematyczna
INT 8h zegar systemu
INT 9h klawiatura
INT 0Ah AT
INT 0Bh obsługa COM2(RS232 interrupt)
INT 0Ch obsługa COM1(RS232 interrupt)
INT 0Dh AT\XT
INT 0Eh AT\XT
INT 0Fh przerwanie od sygnału ACK drukarki
INT 10h Obsługa wideo
funkcje w rejestrze AH
00h set video mode
we: AL=0 tekst 40*25 mono
1 tekst 40*25 kolor
2 tekst 80*25 mono
3 tekst 80*25 kolor CGA
4 grafika 320*200 kolor
5 grafika 320*200 mono
6 grafika 640*200 mono
7 tekst
8/9/10 tryb dla PCjr
11/12 przewidziane dla EGA Bios
13 grafika 320*200 16 kolor
14 grafika 640*200 16 kolor
15 grafika 640*350 3 kolory
16 grafika 640*350 16 kolor EGA
19 grafika 320*200 256 kolor MCGA
01h set cursor characteristics
we: CH (bity 4-0) linia początku kursora
CH (bity 4-0) linia końca kursora
CH (bity 5=1) kursor niewidoczny
CH (bity 6=1) przyśpieszone migotanie
02h set cursor position
we:
DH wiersz (0-24)
DL kolumna (0-39/79)
BH strona (0- dla trybu graficznego)
03h read cursor position
we:
BH strona (0- dla trybu graficznego)
wy:
DH wiersz (0-24)
CL kolumna (0-39/79)
CX rozmiary kursora (CH i CL)
04h czytaj pozycję pióra świetlnego
wy:
AH=0 nie włączone
AH=1 włączone
DH wiersz (0-24)
DL kolumna (0-39/79)
CH liczba pixeli w osi Y (0-199)
BX liczba pixeli w osi X (0-319/639)
05h ustaw aktywną stronę w trybie tekstowym
we:
AL numer strony (0-7 dla trybów 0,1 lub 0-3 dla trybów 2,3)
06h przewiń aktywną stronę w górę
we:
AL liczba linii (linie na dole okna są spacjowane)
AL=0 spacjuj całe okno
CH wiersz górnego lewego narożnika
CL kolumna górnego lewego narożnika
DH wiersz dolnego prawego narożnika
DL kolumna dolnego prawego narożnika
BH atrybut spacjowania
07h przewiń aktywną stronę w dół
we:
AL liczba linii (linie na górze okna są spacjowane)
AL=0 spacjuj całe okno
CH wiersz górnego lewego narożnika
CL kolumna górnego lewego narożnika
DH wiersz dolnego prawego narożnika
DL kolumna dolnego prawego narożnika
BH atrybut spacjowania
08h czytaj znak i atrybut z pozycji kursora
we:
BH numer strony
wy:
AL znak
AH atrybut (kolor) znaku
0 czarny
1 niebieski
2 zielony
3 zielono niebiski (cyan)
4 czerwony
5 fioletowy
6 brązowy
7 jasno-szary
8 ciemno-szary
9 jasno-niebiski
10 jasno zielony
11 jasnozielono-niebieski
12 jasno-czerwony
13 jasno-fioletowy
14 żółty
15 jasno-biały
128 migotanie
09h pisz znak z atrybutem na pozycji kursora bez zmiany jego pozycji
we:
BH numer strony
CX liczba znaków
AL znak
BL atrybut (kolor) znaku
BL (bit 7=1) ustaw kolor XOR z kolorem aktualnym
0Ah pisz znak na pozycji kursora bez zmiany jego pozycji, atrybut znaku pozostaje niezmieniony
we:
BH numer strony
CX liczba znaków
AL znak
0Bh ustaw paletę klorów lub kolor tła
we:
BH=0 tło
BL kod koloru (0-15,31)
BH=1 paleta
BL numer palety
0: green\red\yellow
1: cyan\magneta\white
0Ch rysuj punkt w trybie graficznym
we:
DX wiersz
CX kolumna
AL kolor punktu
AL=0 ustaw kolor: XOR z kolorem aktualnym
0Dh
we:
DX wiersz
CX kolumna
wy:
AL kolor punktu
0Eh pisz znak na aktywną stronę ze zmianą pozycji kursora -tryb TTY (TTY write)
we:
AL znak
BL kolor znaku w trybie graficznym; w trybie tekstowym atrybut jest niezmieniany,
znak z rejsetru AL jest pisany w pozycji kursora,następnie kursor jest przesuwany
do następnej pozycji, gdy kursor opuszcza ostatnią kolumnę wykonywane jest
przewinięcie całej strony
0Fh czytaj aktualny status wideo
wy:
AL tryb (jak w AH=00h)
AH liczba kolumn znakowych na ekranie
BH numer aktywnej strony
12h podfunkcja bh=36h
Wygaszacz ekranu
Al 1 wygazenie ekranu
0 przywrócenie ekranu
10h-1Ch funkcje dla kart EGA\VGA
40h-4Eh funkcje dla grafiki karty Herkules
Przy pisaniu lub czytaniu znaków w trybie graficznym używany jest generator znaków
zapisany w pamięci ROM (CGA, EGA i VGA).
Umieszczone są tam wzorce znaków dla kodów ASCII (0-127).
W celu uzyskania pozostałych znaków należy uprzednio zainicjować wektor przerwania 1Fh
tak aby wskazywał adres 1kB tablicy wzorców znaków. Przy pisaniu znaków w trybie
graficznym licznik zawarty w rej. CX daje rezultaty poprawne tylko do końca linii.
Przy wywoływaniu przerwania przechowywane są rejsetry CS SS DS ES BX CX DX.
INT 11h Konfiguracja sprzętowa komputera
Informacje z rejestru AX
wy:
AX (bity 15,14) liczba drukarek (maksymalnie 3)
AX (bit 12) wskazuje na istnienie portu gier
AX (bity 11-9) liczba portów RS232 (maksymalnie 7)
AX (bity 7,6) liczba napędów dysków elastycznych
00 1 przy AX (bit 0=1)
01 2
10 3
11 4
AX (bity 5,4) tryb wideo ustalony po inicjalizacji
01 40*25 kolorowy
10 80*25 kolorowy
11 80*25 monochromatyczny
AX (bity 3,2) rozmiar pamięci planarnej RAM
00 16kB
01 32kB
10 48kB
11 64kB
AX (bit 1) koprocesor arytmetyczny
AX (bit 0) start systemu z dyskietki
INT 12h Ustalenie rozmiaru pamięci RAM
Informacje z rejestru AX
wy:
AX liczba ciągłych 16kB bloków pamięci
INT 13h Operacje dyskowe
Funkcje w rejestrze AH
00h wyzeruj system dysku\dyskietki
01h czytaj status ostatniej operacji dyskowej
wy:
AL status
80h przekroczony czas
40h błąd szukania
20h błąd sterownika
10h błąd sumy kontrolnej- CRC
09h błąd DMA (direct memory access- układ bezpośredniego dostępu do RAM)
- przekroczenie obszaru 64kB
08h błąd DMA- przepełnienie (overlow)
04h nieodnaleziony sektor
03h próba naruszenia ochrony przed zapisem
02h nieznaleziony marker adresu
01h błędna komenda
00h operacja poprawna
Parametry dla operacji czytania, pisania, weryfikacji i formatowania:
we:
DL numer napędu (0-3)
DH numer głowicy (0-1)
CH numer ścieżki (0-39)
CL numer sektora (1-8) - nieużywany dla formatowania
AL liczba sektorów (maks. 8) - nieużywany dla formatowania
ES:BH adres bufora danych - nieużywany dla weryfikacji
wy:
AH status operacji:
CF=0 operacja zakończona poprawnie (AH=0)
CF=1 operajca zakończona błędnie
AL numer aktualnego sektora - może być niepoprawny przy błędzie time out(przekroczony czas)
02h czytaj wskazane sektory do pamięci
03h pisz wskazane sektory z pamięci
04h weryfikuj wskazane sektory
05h formatuj wskazane ścieżki - dla operacji formatowania adres bufora (ES:BX) musi wskazywać na
zestawienie pól adresowych ścieżki, każde pole składa się z 4 bajtów (P,H,S,N), gdzie:
P - numer ścieżki
H - numer głowicy
S - numer sektora
N - liczba bajtów w sektorze zależna od typu dysku
00=128B
01=256B
02=512B
03=1024B
oraz musi istnieć tylko jedno pole dla każdego sektora w ścieżce]
06h-1Ah poszerszenie funkcji pomocniczych dla operacji dyskowych
Przy wywoływaniu przerwania przechowywane są rejsetry DS BX DX CX. Po pojawieniu się
błędu operacji dyskowej należy wykonać:
- wyzerownaie systemu dysku
- powtórzenie operacji przy zapisie
- przy czytaniu dokonać jeszcze dwu powtórzeń
wtedy mamy pewność, że błąd nie jest związany ze startem silnika tylko uszkodzeniem
dysku lub stacji.
INT 14h Interfejs szeregowy(i/o)
Funkcje w rejestrze AH
00h inicjalizuj parametry portu dla transmisji synchronicznej
we:
AL (bity 7-5) szybkość transmisji
000 110 bodów
001 150 bodów
010 300 bodów
011 600 bodów
100 1200 bodów
101 2400 bodów
110 4800 bodów
111 9600 bodów
AL (bity 4-3) parzystość\nieparzystość
x0 nie kontrolowana
01 nieparzysta
10 parzysta
Al bit 2 liczba bitów stopu
0- 1 bit
1- 2bity
AL (bity 1-0) długość znaku
00 5 bitów
01 6
10 7
11 8
DX numer portu szeregowego(0,1)
wy:
AX status portu
01h pisz znak na linię portu
we:
AL znak
DX numer kanału szeregowego(0,1)
wy:
AL przechowywany znak
AH (7=1) znak przesłany
AH (7=0) znak nieprzesłany
AH (6-0) status linii portu
02h czytaj znak z linii portu
we:
DX numer kanału szeregowego (0,1)
wy:
AL znak
AH (7=1) znak przesłany
AH (7=0) znak nieprzesłany
AH (6-0) status linii z wyjątkiem bitów 6,5 i 0
03h Czytaj status portu -po operacji
we:
DX numer portu szeregowego (0,1)
wy:
AH status linii (nadajnika)
bity:
7 urządzenie niegotowe
6 pusty rejestr przesuwany nadajnika
5 pusty rejestr buforujący nadajnika
4 odebrano sygnał przerywający transmisję
3 błąd ramki
2 błąd parzystości
1 zagubiono znak
0 dane gotowe do odczytu
AL status modemu (odbiornika)
7 stan linii RLSD
6 stan linii RI
5 stan linii DSR
4 stan linii CTS
3 nastąpiła zmiana stanu na linii RLSD
2 wykryto narastające zbocze na linii HRI
1 nastąpiła zmiana stanu na linii DSR
0 nastąpiła zmiana stanu na linii CTS
(00h) 04h-15h poszerszenia funkcji komunikacyjnych
POdczas wywoływania wszystkie prócz AX rejestry są przechowywane.
Bajt F000:007C (BIOS) zawiera licznik pętli zewnętrznej oczekiwania
na poprawność operacji (stand.1).
INT 15h Obsługa magnetofonu (cassette I/O) oraz funkcje dla IBM AT
funkcje w rejestrze AH
84h status joysticka tylko dla AT
we:
DX=00 odczyt przełącznika
DX=01 odczyt położenia
wy:
AL stan przełącznika lub
AX poł X joya I
BX poł Y joya I
CX poł X joya II
DX poł Y joya II
87h przerzut bloków w zakresie pamięci rozszerzonej
88h rozmiar pamięci rozszerszonej
INT 16h Obsługa klawiatury
funkcje w rejestrze AH
00h czytaj znak z bufora klawiatury
wy:
AL kod znaku (ASCII)
Gdy AL=0 wtedy kod znaków jest poszerzony i otrzymujemy go w AH:
0 Ctrl-Break
1..14 ESC..BS
15..27 Tab..]
28 enter
30-41 A..'
43-53 \../
55 [*]
57 space
59-68 F1-F10
82 Ins
83 Del
71 Home
72 Up
73 pgup
74 [-]
75 left
76 [5]
77 right
78 [+] -kl.bocz.
79 End
80 Down
81 pgdown
84-93 Shift F1..F10
94-103 ctrl f1-f10
104-113 alt f1-f10
114 ctrl [*]
115 ctrl left
116 ctrl right
117 ctrl end
118 ctrl pg down
119 ctrl home
120-131 alt 1..
132 ctrl pg up
01h test obecności znaku w buforze klawiatury
wy:
ZF=1 bufor pusty
ZF=0 znak przekazany do AX (ale pozostaje w buforze)
02h czytaj status klawisz kontrolnych
wy:
AL kod klawiszy
80h Ins
40h Caps lock
20h num lock
10h scroll lock
8h alt
4h ctrl
2h left shift
1h right shift
03h-05h, 10h-12h poszerszenie funkcji klawiatury
Podczas wywoływania przerwania rejestry są przechowywane.
INT 17h Obsługa drukarki
funkcje w AH
00h drukuj znak
we:
AL znak
DX numer portu drukarki (0,1) [1]
wy:
AH status
AH (bit 0=1) za duży czas oczekiwania
01h inicjalizacja portu drukarki
we:
DX numer drukarki (0,1)
wy:
AH status
02h czytaj status
we:
DX numer portu drukarki
wy:
AH status bity
7 nie zajęta
6 potwierdzenie
5 brak papieru
4 drukarka wybrana
3 błąd wejścia\wyjścia
0 przekroczenie czasu
Przy wywołaniu wszystkie prócz AH rejestry są przechowywane.
Bajt F000:0078 (Bios) zawiera licznik pętli zewnętrznego oczekiwania
na poprawność operacji(stand. 20).
INT 18h wywołanie Basic-a z Rom (transfer to ROM basic)
INT 19h Załadowanie kodu "bootstrap" z dysku systemowego
INT 1Ah Zegar i data systemowa.
funkcje w AH
00h czytaj stan zegara
wy:
CX starsza MSW część licznika
DX młodsza LSW część licznika
AL=0 ostatni odczyt był w ciągu 24 godz.
01h ustaw zegar
CX st. część licz.
DX mł. część licz.
02h-0Bh funkcje dla AT
Cykl licznika wynosi 1193180/65536 sek. (ok. 18,2 ms)
INT 1Ch impuls zegara systemowego (gen. razem z 08h)
INT 1Dh tablica parametrów kontrolera CRT 6845
INT 1Eh podstawowa tablica parametrów dyskietki
INT 1Fh drugi zestaw znaków graficznych
INT 20h DOS-zakończenie programu lub funkcje komunikacyjne dla Minix
INT 21h Funkcje DOS-a
Funkcje w rejestrze AH
00h zakończenie programu
we:
CS segment PSP(PSP- "przedrostek" programu, zawiera istotne informacje
umożliwiający Dos'owi uruchomienie programu np. wielkość dostępnej
pamięci, adresy procedur zakończenia i obsługi błędów,listę parametrów)
zakończonego procesu, zeruje wektory 22h-24h czyści bufory dyskowe, ale
nie zamyka pliku
01h Pobranie znaku z klawiatury
wy:
AL znak uzyskany z standardowego wejścia- CON, znaki rozeszerzone uzyskuje
się po otrzymaniu AL=0 i powtórnym wywołaniu przerwania z tą funkcją
02h Wysłanie znaku na monitor
we:
DL znak do wysłania na standardowe wejście- CON
03h Pobranie znaku z portu szeregowego
wy:
AL znak odebrany ze standardowego szeregowego urządzenia COM1 (AUX)
odczyt w trybie pooling bez wykorzystania przerwań, po inicjalizacji
DOS przyjmuje następujący protokół transmisji COM1 2400 bodów bez
parzystości, 1 bit stopu 1 8 danych
04h wysłanie znaku na port szeregowy
we:
DL znak do wysłania ze standardowego szeregowego urządzenia COM1
05h Wysłanie znaku na port drukarki
we:
DL znak do wysłania ze standardowego portu drukarki
06h Pobranie lub wysłanie znaku z konsolety
we:
DL znaki z zakresu [00h-FEh] w wypadku wysłania znaku, i FFhw przypadku
próby odbioru z urządzenia I/O
wy:
podobnie jak w 01h
07h Wprowadzenie znaku z konsoli bez echa na ekranie
wy: jak w 1h
08h Wproawdzenie znaku z konsoli bez echa na monitorze
wy:
jak w 1h
09h Wysłanie napisu na monitor
we:
DS:DX adres napisu zakończonego znakiem $
0Ah buforowane wejście z klawiatury
we:
DS:DX adres bufora na wprowadzane znaki, pierwszy bajt w buforze
ustala maks. liczbę znaków do odebrani, koniec odbierania po
naciśnięciu Enter (CR=#13)
0Bh Pobranie statusu z klawiatury
wy:
AL status dostępności znaku przez standardowe I/0 CON, AL=FFh znak dostępny
a AL=00 brak znaku
0Ch Czyszczenie bufora i pobranie znaku z klawiatury
we:
AL 01,06h wpierw jest zerowany bufor standardowego
07,08h I/O a następnie realizowana jest
i 0Ah funkcja odpowiadająca wywołaniu funkcji AH 01h itd.
0Dh zerowanie systemu dysku, oczyszcza wszystkie bufory plikowe
(wcześniej należy pomiętać o zamknięciu odpowiednich plików)
0Eh ustaw aktualny dysk dla DOS
we:
DL numer dysku(0=A, 1=B, 128=C)
wy:
AL liczba wszystkich dysków dostępnych w systemie
0Fh przygotuj blok kontroli pliku
we:
DS:DX adres bloku kontrolnego pliku(FCB) do otwarcia- blok zawiera inf.
o mumerrze dysku, nazwie pliku z rozszerzeniem, długość oraz datę
wy:
AL 0- operacja wykonana poprawnie; FFh - niepoprawnie
10h Zamknij plik wg FCB
we:
DS:DX adres bloku do zamknięcia
wy:
AL 0- operacja wykonana poprawnie; FFh - niepoprawnie
11h Znajdź pierwszy plik wg FCB
we:
DS:DX adres bloku kon. pliku
wy:
AL 0- operacja wykonana poprawnie (wtedy wypełnia się tablica DTA (disk
transfer adres- 43 bajtowej tablicy wspomagającej działanie funkcji
plikowych AH 11h 12h 4Eh 4Fh) FFh - niepoprawnie
12h Znajdź następny plik
we:
DS:DX adres bloku kon. pliku
wy:
AL 0- operacja wykonana poprawnie (wtedy wypełnia się tablica DTA (disk
transfer adres- 43 bajtowej tablicy wspomagającej działanie funkcji
plikowych AH 11h 12h 4Eh 4Fh) FFh - niepoprawnie
13h Usuń plik
we:
DS:DX adres bloku kon. pliku
wy:
AL 0- operacja wykonana poprawnie (wtedy wypełnia się tablica DTA (disk
transfer adres- 43 bajtowej tablicy wspomagającej działanie funkcji
plikowych AH 11h 12h 4Eh 4Fh) FFh - niepoprawnie
14h odczyt sekwencyjny z wg FCB
we:
DS:DX adres bloku pliku do odczytu sekwencyjnego
wy:
AL 0- operacja wykonana poprawnie inaczej wystąpił błąd
15h zapis sekwencyjny wg FCB
we:
DS:DX adres bloku pliku do zapisu sekwencyjnego
wy:
AL 0- operacja wykonana poprawnie inaczej wystąpił błąd
16h Otwórz plik
we:
DS:DX adres bloku kont. do otwarcia
wy:
AL 0- operacja wykonana poprawnie; FFh - niepoprawnie
17h Zmieź nazwę pliku wg FCB
we:
DS:DX adres specjalnego bloku kontrolnego pliku do zmiany nazwy
wy:
AL 0- operacja wykonana poprawnie; FFh - niepoprawnie
18h nieużywane
19h Pobiersz bumer aktualnego dysku
wy:
AL numer dysku
1Ah Ustaw tablicę danych do transmisji dyskowych (DTA)
we:
DS:DX adres dla DTA
1Bh pobierz DTA
wy:
DS:DX adres bajtu FAT ID wskazującego na tym dysku
DX całkowita liczba jednostek alokacji (klastrów)
AL sektorów na klaster
CX bajtów na sektor
rozmiar dysku to DX*AL*CX (longint)
1Ch Pobierz tablicę alokacji dysku aktualnego dysku
we:
DL numer dysku
wy: jak 1Bh
1Dh nieużywane
1Eh nieużywane
1Fh pobierz adres bloku informacji o wybranym dysku
20h nieużywane
21h czytaj dowolne sektory dysku
we:
DS:DX adres bloku kontrolnego pliku otwartego do odczytu
wy:
AL 0-poprawnie ;inaczej wystąpił błąd
22h zapisz dowolne sektory na dysk
we:
DS:DX adres bloku kontrolnego pliku otwartego do zapisu
wy:
AL 0-poprawnie ;inaczej wystąpił błąd
23h ustal długość pliku wg FCB
we:
DS:DX adres bloku kontrolnego pliku do otwarcia
24h ustaw plik dp otwarcia
we:
DS:DX adres bloku kontrolnego pliku do otwarcia
25h Pobierz adres procedury obsługi przerwania
we:
AL numer przerwania
DS:DX adres procedury do obsługi przerwania
26h utwórz PSP programu
we:
DX adres seg. dla nowego PSP
CS adres seg. dla starego PSP
27h czytaj dowolne bloki z pliku
we:
DS:DX adres bloku kontrolnego pliku otwartego do odczytu
CX liczba rekordów do odczytu
wy:
AL status operacji (j.w.0,FF)
CX aktualnie przeczytana liczba rekordów
28h zapisz dowolne bloki do pliku
we:
DS:DX adres bloku kontrolnego pliku otwartego do ozapisu
CX liczba rekordów do zapisu
wy:
AL status operacji (j.w.0,FF)
CX aktualnie zapisana liczba rekordów
29h Porówanie dwóch plików
2Ah pobierz datę systemową
wy:
AL dzień tyg. (0=niedz...)
CX rok (1980-2099)
DH miesiąc
DL dzień
2Bh ustal datę systyemową
we:
CX rok (1980-2099)
DH miesiąc
DL dzień
wy:
AL status operacji (j.w.)
2Ch Pobierz czas systemowy
wy:
CH godz
CL min
DH sek
DL set sek
2Dh Ustal czas systemowy
we:
CH godz
CL min
DH sek
DL set sek
wy:
AL status (j.w.)
2Eh ustaw wskaźnik weryfikacji zapisu
we:
AL wskaźnik weryfikacji po zapisie ba dysk każdego sektora
0, weryfikacja wyłączona a 1 włączona
2Fh Pobierz adres DTA
wy:
ES:BX adres początku aktualnego DTA, zawartość tej tablicy
znajduje się także od adresu 0:80h w PSP
30h pobierz wersję DOS
wy:
AL główny numer wersji DOS (np. 6.xx)
AH poboczny numer DOS (np. x.2)
BX,CX poszerszenia numeru
31h Utwórz procedurę rezydentną
we:
AL kod zakończenia (0- normalnie)
DX rozmiar pamięci w 16 bitowych pargrafach na procedurę rezydentną
32h pobierz adres informacji od dysku
we:
DL numer dysku
wy:
AL status op. (j.w.)
DS:BX adres DIB (tablica z informacjami o danym dysku)
33h ustawienie lub pobranie statusu Ctrl-Break
we:
AL pytanie o status klawisza (AL=0) lub (AL=1) ustawienie stanu klawisza
DL żądany stan klawisz (Ctrl- Break)
wy:
DL aktualny stan klawisza 0- włączony 1- niewłączony
34h pobranie flagi aktywności DOS
wy:
ES:BX adres flagi aktywności DOS, która wskazuje na to, czy w danej chwili
jest wykonywana DOS-a (np. I/O pliku). Gdy flaga jest nieówna zeru
nie należy wywływać w programie rezydentnym funkcji DOS'a
35h Pobierz adres procedury obsługującej przerwanie
we:
AL numer przerwania
wy:
ES:BX adres procedury obsługi przerwania zmienia wartość rejestru EX
36h Wolne miejsce na dysku
we:
DL numer dysku
wy:
AX FFFFh błędne parametry wywołania lub liczba sektorów na klaster
DX całkowita liczba alokacji jednostek (klastrów)
BX liczba dostępnych klastrów
CX liczba bajtów na sektor
rozmiar dysku (longint) AX*CX*DX
wolne miejsce AX*BX*CX
37h zmiana znaków na polecenia DOS np. z '\' na '*'
38h Pobranie lub ustawianie informacji o sposobie wyświetlania daty i czasu systemowego
39h Utwórz katalog
we:
DS:DX adres nazwy nowego katalogu
wy:
AX kod błędu wg DOS
00h brak błędu
01h niepoprawny numer funkcji
02h nie odnaleziono pliku
03h nie odnaleziono ścieżki
04h za dużo otwartych plików
05h zabroniony dostęp
06h niepoprawny uchwyt
07h uszkodzone bloki kontrolne pamięci
08h za mało pamięci RAM
09h niepoprawny adres bloku pamięci
0Ah niepoprawne środowisko
0Bh niepoprawny format
0Ch niepoprawny kod dostępu
0Dh niepoprawne dane
0Eh nie używany
0Fh zła specyfikacja dysku
10h niemożność usunięcia aktualnego katalogu
11h nieodpowidenie urządzenie
12h brak wskazanych plików
13h dostęp do zabezpieczonego dysku
14h nieznana jednostka ID
15h niegotowy dysk
16h nieznane polecenie
17h błąd danych dyskowych (CRC error)
18h złe żądanie o długości struktury
19h błąd pozycjonowania na dysku
1Ah nieznany typ medium dysku
1Bh nieodnaleziono sektoru dysku
1Ch brak papieru w drukarce
1Dh niepomyślny zapis
1Eh niepomyślny odczyt
1Fh całkowite uszkodzenie sprzętu
20h kontrola przydziału pliku
21h kontrola dostępu do pliku
22h niepoprawna zmiana dysku
23h brak dostępu do nowego FCB
24-49h zarezerwowane
50h plik już istnieje
51h zarezerwowane
52h niemożność wykonania polecenia
53h niepowodzenie obsługi INT 24h
3Ah Usuń katalog
we:
DS:DX adres katalogu
wy:
AX kod błędu wg DOS
3Bh zmień katalog
we:
DS:DX adres katalogu do zmiany
wy:
AX kod błędu wg DOS
3Ch Utwórz plik
we:
DS:DX adres pliku ze ścieżką
CX atrybut pliku
bity:
0=1 read only
1=1 hidden
2=1 system
3=1 katalog podstawowy
4=1 podkatalog
5=1 plik archiwum
3Dh otwórz plik
we:
DS:DX adres nazwy pliku ze ścieżką
AL tryb otwarcia
bity:
7=1
6,5,4 001 czytanie lub zapis
010 czytanie
011 zapis
3=1 system
2=1 katalog podst.
1=1 podkatalog
0=1 archiwum
wy:
AX kod błędu
3Eh zamknij plik
we:
BX uchwyt pliku
0 standardowe urządzenie wejściowe CON - klawiatura
1 standardowe urządzenie wyjściowe CON - monitor kod błędu wg DOS
2 standardowe urządzenie wyjściowe dla komunikaów błędów CON - monitor
3 standardowe urządzenie transmisji szeregowej COM1 (AUX)
4 standardowy port drukarki
wy:
AX kod błędu
3Fh czytaj dane z pliku
we:
BX uchwyt pliku
DS:DX adres bufora na odczytane dane
CX liczba bajtów do odczytu
wy:
AX kod błędu
40h Zapisz dane do pliku
we:
BX uchwyt pliku
DS:DX adres bufora z danymi do zapisu
CX liczba bajtów do zapisu
wy:
AX kod błędu
41h Usuń plik
we:
DS:DX adres nazwy pliku do usunięcia
wy:
AX kod błędu
42h Przesunięcie na pozycję pliku
43h Zmień atrybut pliku
44h kontrolowanie urządzenia wejścia wyjścia
45h Duplikat uchwytu pliku
46h Zmiana uchwytu pliku
47h Pobierz aktualny katalog
we:
DS:SI adres bufora na nazwę katalogu
DL numer dysku
wy:
AX kod błędu
48h alokacja pamięci RAM
we:
BX żądana liczba paragrafów (16 bajtowych) w pamięci
wy:
AX kod błędu
49h Zwolnienie pamięci
we:
ES adres segmentu (paragrafu) blokowanej pamięci do zwolnienia
wy:
AX kod błędu
4Ah Ustal blok pamięci
we:
ES adres segmentu (paragrafu) alokowanej pamięci do zwolnienia
BX żadany rozmiar dla bloku w paragrafach
wy:
AX kod błędu
4Bh Wykonaj program (EXEC) lub załaduj nakładkę
4Ch zakończ program
4Dh pobierz kod wyjścia ostatniego programu
4Eh find first
4Fh find next
50h ustaw segment PSP
51h pobierz PSP
52h pobierz listę dysków
53h utwórz uproszczony blok informacji
54h pobierz stan weryfikacji zapisu na dysk
55h ustórz nowy PSP
56h zmień nazwę pliku
we:
DS:DX plik do zmiany
ES:DI nowa nazwa
wy:
AX kod błędu
57h ustaw lub pobierz czas i datę powstania pliku
58h pobierz lub ustaw sposób przydzielanie pamięci
59h rozszerzony kod błędu DOS
5Ah utwórz plik chwilowy
5Bh utwórz nowy plik
we:
DS:DX plik
CX atrybut pliku
wy:
AX kod błędu
5Ch blokuj lub odblokuj dostęp do pliku lub jego fragmentu
5Dh pobierz adres flagi błędu krytycznego
5Eh funkcje dla pracy w sieci
5Fh funkcje dla pracy w sieci
60h rozłóż napis oznaczający ścieżkę na napis nadający się do poprawnego użycia
61h nieużywane
62h pobierz adres PSP
wy:
BX adres segmentu PSP aktualnie wykonywanego programu
63h nieużywane dla DOS 3.x
64h nieużywane
65h pobieranie rozszerzonej informacji o sposobie wyświetlania daty i czasu
66h pobierz lub ustaw stronę tablicy kodów znaków
67h ustaw licznik uchwytu pliku
68h zapisz wszystkie bufory danych na dysk
69h do D9h nieużywane
DAh
przewidziane dla systemów wielozadaniowych
EEh
EFh
nieużywane
FFh
INT 22h DOS- adres zakończenia programu
INT 23h Adres wyjścia z programu po Ctrl+C
INT 24h Dos-adres procedury błędów fatalnych
wy:
AL=0 zignoruj powstały błąd
AL=1 powtórz operację
AL=2 przerwij operację (np. po &23)
AL=3 powróć do wykonanej z niepowodzeniem aplikacji wskazanej przez DOS
INT 15h DOS bezwzględne czytanie zawartości dysku
INT 26h DOS bezwzględny zapis danych na dysku
INT 27h DOS zakończ program i pozostaw go w pamięci rezydentnym
INT 28h DOS pętla zajętości klawiatury
Przerwanie to jest wywoływane kiedy DOS czeka na naciśnięcie klawisza
(odpowiada to $21 dla funkcji 00-0Ch). W tym czasie nie należy wywoływać
w programie rezydentnym funkcji Dos-a.
INT 29h Szybkie wysyłanie znaku.
INT 2Ah Funkcje Microsoft Networks
INT 2Bh Wewnętrzna procedura powrotu (MS-DOS Iret)
INT 2Dh ???
INT 2Eh Wykonaj polecenie.
INT 2Fh Rozdzielacz i kontroler zadań. Przerwanie to jest organizowane przez
użytkownika procesu.
Funkcje w rejestrze AH
01h Dla rezydentnej części polecenia PRINT
we:
AL=00h pobierz stan instalacji
AL=01h przyporządkuj plik do kolejki
AL=02h kasuj plik z kolejki
AL=03h kasuj wszystkie pliki z kolejki
AL=04h status operacji
AL=05h koniec statusu
02h Dla rezydentnej części polecenia ASSIGN
03h-07h zarezerwowane
10h dla rezydentnej części polecenia SHARE
11h sygnały rozdzielenia zadań przez DOS'a
80h-FFh dla rezydentnych programów użytkownika
wy:
AX kod błędu w/g Dos-a
AL stan instalacji programu
00h niezainstalowany, instnieje możliwość instalacji
01h niezainstalowany, nie instnieje możliwość instalacji
FFh już zainstalowany
INT 31h Docelowe po długim skoku.
INT 33h Obsługa myszy
Funkcje w rejestrze AL (AH=0)
00h inicjalizuj program obsługi i czytaj status myszy
wy:
AX=0 brak programu obsługi
AX<>0 zainstalowano program
BX liczba przycisków myszy
01h Pokaż kursor myszy
02h Ukryj kursor myszy
03h Wskaż polożenie myszy i naciśnięty klawisz
wy:
CX położenie X myszy
DX położenie Y myszy
BX status przyciśniętego klawisza myszy
bit 0=1 lewy
bit 1=1 prawy
bit 3=1 środkowy
04h Ustaw pozycję kursora myszy
we:
CX położenie X myszy
DX położenie Y myszy
05h Flaga naciśniętego klawisza myszy
we:
BX=0 informacje o lewym naciśniętym klawiszu
BX=1 informacje o prawym naciśniętym klawiszu
wy:
BX liczba naciśnięć klawisza myszy
CX ostatnie położenie X myszy
DX ostatnie położenie Y myszy
06h Flaga puszczonego po naciśnięciu klawisza myszy
we:
BX=0 informacje o lewym naciśniętym klawiszu
BX=1 informacje o prawym naciśniętym klawiszu
wy:
BX liczba zwolnień klawisza myszy
CX ostatnie położenie X myszy
DX ostatnie położenie Y myszy
07h Ustaw poziomy zakres poruszania się myszy
we:
CX minimalne położenie myszy w X
DX max. jak wyżej
08h Ustaw pionowy zakres poruszania się myszy
we:
CX minimalne położenie myszy w Y
DX maksym. jak wyżej
09h Zdefiniuj kształt kursora graficznego myszy
we:
BX poł. X kursora po zdefiniowaniu
CX poł. Y kursora po zdefiniowaniu
DX:EX adres tablicy bitowej ze kształtem kursora graf.
0Ah Zadaj kształt tekstowego kursora myszy
we:
BX=0 ustaw sprzętowo kształt
BX=1 ustaw programowo kształt kursora myszy wtedy:
CX maska dla ekranu (znak i atrybut)
DX maska dla kursora j. w.
0Bh-24h poszerszenia funkcji dla myszy
INT 34h emulacja zmiennoprzecinkowa dla MS Turbo C
INT 3Eh
INT 3Fh przerwanie zarządzania nakładek(link.exe)
INT 40h relokacja przerwania 13h dla dysków miękkich
INT 41h wskaźnik bloku parametrów dysku
INT 42h relokacja przerwania 10h dla EGA
INT 43h parametry inicjalizacji kart EGA lub VGA
INT 44h zestaw zanków dla EGA lub VGA #0..#128
INT 46h drugi wskaźnik bloku parametrów dysku
INT 50h przerwanie zegara CMOS
INT 59h funkcje GSS CGI
INT 5Ah informacje o klastrach otrzymanych po 19h
INT 6Ch wektor charakterystyk systemu
INT 86h relokowane przez NETBIOS INT 18h
INT E4h funckje dla Modula 2.0