PRZERWANIE 21H
Tabela zawiera spis większości funkcji przerwania 21h.
Funkcja |
Opis |
||
00H |
Nazwa:
Zakończenie programu |
||
01H |
Nazwa:
Czytanie znaku z echem |
||
02H |
Nazwa:
Wypisywanie znaku |
||
03H |
Nazwa:
Czytanie znaku z urządzenia dodatkowego |
||
04H |
Nazwa:
Wypisywanie znaku do
urządzenia dodatkowego |
||
05H |
Nazwa:
Drukowanie znaku |
||
06H |
Nazwa:
Bezpośrednie korzystanie z konsoli |
||
07H |
Nazwa:
Bezpośrednie czytanie z konsoli |
||
08H |
Nazwa:
Czytanie
znaku |
||
09H |
Nazwa:
Wypisywanie tekstu |
||
0AH |
Nazwa:
Czytanie wiersza z klawiatury |
||
0BH |
Nazwa:
Sprawdzanie stanu klawiatury |
||
0CH |
Nazwa:
Opóźnienie bufora czytanie z klawiatury |
||
0DH |
Nazwa:
Stabilizowanie stanu dysku |
||
0EH |
Nazwa:
Ustalenie dysku bieżącego |
||
0FH |
Nazwa:
Otwieranie pliku Jeśli numer stacji dysków [00H] miał wartość 0(dysk bieżący) to wartość ta jest zmieniana na numer dysku bieżącego (1-A, 2-B itd.) Numer bloku bieżącego (0CH) jest zerowany Rozmiar pliku (10H), data (14H) i czas (16H) są ustawiane zgodnie z danymi katalogu. |
||
10H |
Nazwa:
Zamykanie pliku |
||
11H |
Nazwa:
Znajdowanie pierwszej pozycji w katalogu |
||
12H |
Nazwa:
Znajdowanie kolejnej pozycji w katalogu |
||
13H |
Nazwa:
Usuwanie pliku |
||
14H |
Nazwa:
Sekwencyjne czytanie pliku 00H – Czytanie zakończone sukcesem 01H – Napotkano koniec pliku 02H - Zbyt mało miejsca w buforze roboczym 03H – Napotkano koniec pliku. Przeczytano część rekordu, resztę wypełniono zerami. |
||
15H |
Nazwa:
Sekwencyjne pisanie w pliku |
||
16H |
Nazwa:
Tworzenie pliku |
||
17H |
Nazwa:
Zmiana nazwy pliku |
||
19H |
Nazwa:
Pytanie o dysk bieżący |
||
1AH |
Nazwa:
Ustalenie bufora roboczego |
||
1BH |
Nazwa:
Pytanie o charakterystykę
dysku bieżącego |
||
1CH |
Nazwa:
Pytanie o charakterystykę urządzenia blokowego |
||
1FH |
Nazwa:
Pytanie o adres bloku informacji o urządzeniach dla bieżącego
dysku |
||
offset |
rozmiar |
Opis |
|
0 |
1 |
numer dysku (0-A) |
|
1 |
1 |
Numer urządzenia w programie |
|
2 |
2 |
Rozmiar sektora w bajtach |
|
4 |
1 |
Liczba sektorów na blok przydziału (cluster) |
|
5 |
1 |
n (blokprzydziału=2*liczba sektorów) |
|
6 |
2 |
Liczba zarezerwowanych sektorów na dysku |
|
8 |
1 |
Liczba tablic FAT na dysku |
|
9 |
2 |
Ilość pozycji w katalogu głównym |
|
0BH |
2 |
Numer pierwszego sektora z danymi |
|
0DH |
2 |
Liczba bloków przydziału na dysku |
|
0FH |
1 |
Rozmiar FAT w sektorach |
|
10H |
2 |
sektor, w którym znajduje się katalog główny |
|
12H |
4 |
Adres nagłówka urządzenia |
|
16H |
1 |
Bajt identyfikujący postać dysku (FAT) |
|
17H |
1 |
Znacznik dostępu |
|
18H |
4 |
Adres następnego bloku informacji (FFFFH gdy ostatni) |
|
21H |
Nazwa:
Swobodne czytanie pliku |
||
22H |
Nazwa:
Swobodne pisanie w pliku |
||
23H |
Nazwa:
Pytanie o rozmiar pliku |
||
24H |
Nazwa:
Wybieranie
rekordu |
||
25H |
Nazwa:
Ustalenie adresu kodu obsługi przerwania |
||
26H |
Nazwa:
Tworzenie nowego PSP |
||
27H |
Nazwa:
Swobodne czytanie ciągu rekordów |
||
28H |
Nazwa:
Swobodne pisanie ciągu rekordów |
||
29H |
Nazwa: Rozkład nazwy pliku |
||
2AH |
Nazwa: Pytanie o datę |
||
2BH |
Nazwa: Ustalenie daty |
||
2CH |
Nazwa: Pytanie o czas |
||
2DH |
Nazwa: Ustalenie czasu |
||
2EH |
Nazwa: Ustalenie sygnalizatora weryfikacji |
||
2FH |
Nazwa: Pytanie o bufor roboczy |
||
30H |
Nazwa :Pytanie o numer wersji systemu |
||
31H |
Nazwa: Usypianie procesu |
||
32H |
Nazwa: Pytanie o adres bloku informacji o urządzeniu |
||
33H |
Nazwa: Pytanie o wrażliwość na znak CTRL + C lub je ustalenie |
||
34H |
Nazwa: Pytanie o adres sygnalizatora pracy systemu |
||
35H |
Nazwa: Pytanie o adres obsługi przerwania |
||
36H |
Nazwa: Pytanie o rozmiar wolnego miejsca na dysku |
||
37H |
Nazwa: Ustaw / Pobierz znak przekazywania parametrów |
||
38H |
Nazwa: Pytanie o kod kraju lub go ustalenie |
||
39H |
Nazwa: Tworzenie katalogu |
||
3AH |
Nazwa: Usuwanie katalogu |
||
3BH |
Nazwa: Ustalenie katalogu bieżącego |
||
3CH |
Nazwa: Tworzenie dojścia |
||
3DH |
Nazwa: Otwieranie dojścia |
||
3EH |
Nazwa: Zamykanie dojścia |
||
3FH |
Nazwa: Czytanie przez dojście |
||
40H |
Nazwa: Pisanie przez dojście |
||
41H |
Nazwa: Usuwanie pozycji z katalogu |
||
42H |
Nazwa: Ustawianie wskaźnika w pliku |
||
43H |
Nazwa: Sprawdzenie lub zmiana atrybutów pliku |
||
4400H i 4401H |
Nazwa: Pytanie / Ustalenie opisu urządzenia |
||
4402H i 4403H |
Nazwa: Wysłanie polecenia/ Odbieranie informacji od urządzenia znakowego |
||
4403H i 4404H |
Nazwa: Wysłanie polecenia/ Odbieranie informacji od urządzenia blokowego |
||
4406H i 4407H |
Nazwa: Pytanie o stan urządzenia wejścia / wyjścia |
||
4408H |
Nazwa: Pytanie, czy urządzenie ma wymienny nośnik |
||
4409H |
Nazwa: Pytanie, czy urządzenie blokowe jest dostępne przez sieć |
||
440AH |
Nazwa: Pytanie, czy plik lub rządzenie jest dostępne przez sieć |
||
440BH |
Nazwa: Ustalenie liczby nawrotów |
||
440CH |
Nazwa: Ustalenie matrycy znaków urządzeń |
||
440DH |
Nazwa: Ogólna kontrola urządzeń blokowych |
||
440EH i 440FH |
Nazwa: Pobierz / Ustaw mapę urządzenia |
||
45H |
Nazwa: Kopiowanie dojścia |
||
46H |
Nazwa: Zmiana dojścia |
||
47H |
Nazwa: Pytanie o katalog bieżący |
||
48H |
Nazwa: Przydzielenie pamięci procesowi |
||
49H |
Nazwa: Zwalnianie pamięci |
||
4AH |
Nazwa: Zmiana wielkości przydzielonej pamięci |
||
4B00H |
Nazwa: Ładowanie i uruchomienie programu |
||
4B03H |
Nazwa: Ładowanie nakładki |
||
4CH |
Nazwa: Zakończenie procesu |
||
4DH |
Nazwa: Pobieranie kodu powrotu procesu potomnego |
||
4EH |
Nazwa: Znajdowanie pierwszego pliku w katalogu |
||
4FH |
Nazwa: Znajdowanie kolejnego pliku w katalogu |
||
50H |
Nazwa: Ustawia segment PSP |
||
51H |
Nazwa: Pobierz segment PSP |
||
52H |
Nazwa: Pobierz adres listy adresów MS-DOS |
||
54H |
Nazwa: Pytanie o stan sygnalizatora weryfikacji |
||
55H |
Nazwa: Utwórz PSP |
||
56H |
Nazwa: Zmiana pozycji w katalogu |
||
57H |
Nazwa: Sprawdzanie lub zmiana daty i czasu modyfikacji pliku |
||
58H |
Nazwa: Pytanie o strategię przydziału pamięci lub ustalenie jej |
||
59H |
Nazwa: Pytanie o pełny kod błędu |
||
5AH |
Nazwa: Tworzenie pliku roboczego |
||
5BH |
Nazwa: Tworzenie nowego pliku |
||
5CH |
Nazwa: Rezerwowanie lub zwalnianie części pliku |
||
5E00H |
Nazwa: Pytanie o nazwę stanowiska roboczego |
||
5E02H |
Nazwa: Ustalenie znaków sterujących drukarką |
||
5F02H |
Nazwa: Pytanie o pozycję listy przypisań |
||
5F03H |
Nazwa: |
||
5F04H |
Nazwa: Usunięcie pozycji z listy przypisań |
||
62H |
Nazwa: Pobieranie adresu PSP |
||
65H |
Nazwa: Pobieranie rozszerzonych informacji o kraju |
||
66H |
Nazwa:
Ustalenie / Pobranie globalnej matrycy znaków |
||
67H |
Nazwa:
Ustawienie maksymalnej liczby otwartych dojść |
||
68H |
Nazwa:
Stabilizowanie pliku |
||
6CH |
Nazwa:
Rozszerzone otwieranie dojścia funkcja
kończy działanie sygnalizując błędem go
tworzy zawartość,
w przeciwnym razie zostaje otworzony |
Funkcje int 21 są wywoływane z numerem funkcji w AH Rejestr AX może być zmieniony, jego zawartość nie jest gwarantowana. Jeśli pojawi się błąd, CF jest ustawiona na 1 i AX zawiera kod błędu; INT 21,59 może być użyte do określenia przyczyny. Większość funkcji INT 21 nie przywraca flag do stanu przed przerwaniem aby umożliwić zwracanie informacji przez rejestr flag.
Przerwanie
21h funkcja 01h - Wczytanie z klawiatury z echem
AH
= 01
przerwanie
zwraca:
AL
= Znak z standardowego urządzenia wejścia
czeka na dane z STDIN i wyświetla na STDOUT
zwraca 0 dla rozszerzonych klawiszy, później funkcja musi być wywołana ponownie by odczytać skankod
jeśli wciśnięto ~Ctrl-Break~, uruchamiane jest INT 23h
Przerwanie
21h funkcja 02h - Wyświetlanie znaku
AH
= 02
DL
= znak
do wyświetlenia
przerwanie
nie zwraca nic
wyświetla znak na STDOUT
backspace jest traktowany jak niedestruktywne przesunięcie kursora w lewo
jeśli wciśnięto ~Ctrl-Break~, uruchamiane jest INT 23H
Przerwanie
21h funkcja 05h - Wydruk znaku na drukarce
AH
= 05
DL
= znak do wypisania
przerwanie
nie zwraca nic
wysyła znak w DL do STDPRN
przed drukowaniem czeka aż STDPRN jest gotowe
Przerwanie
21h funkcja 09h - Wypisz łańcuch
AH
= 09
DS:DX
= wskaźnik do łańcucha zakończonego znakiem "$"
przerwanie
nie zwraca
nic
wyświetla łańcuch znaków na STDOUT
backspace jest traktowane jako znak niedestruktywny
jeśli wciśnięto ~Ctrl-Break~, uruchamiane jest ~INT 23~
Przerwanie
21h funkcja 0Ah - Wpisz łańcuch z klawiatury
AH
= 0AH
Przerwanie
21h funkcja 0Ch - Czyść bufor klawiatury, uruchom funkcję
wczytania
AH
= 0CH
AL
= 01, 06, 07, 08 lub 0A (funkcje wczytania INT 21)
przerwanie zwraca:
zob. wartości powrotu z INT 21,AL gdzie AL jest 1, 6, 7, 8 lub A
główną funkcją jest wyczyszczenie bufora klawiatury i wywołanie INT 21 z określoną (w AL) funkcją
Przerwanie
21h funkcja 0Eh - Wybierz dysk
AH
= 0Eh
DL
= numer dysku (0-25, A: - Z:)
przerwanie
zwraca:
AL
= łączna liczba napędów logicznych włącznie z twardymi dyskami
(1-26)
dla DOS 3.x+, ta funkcja przerwania zwraca liczbę napędów logicznych lub wartość LASTDRIVE z CONFIG.SYS
Przerwanie
21h funkcja 19h - Pobierz aktualny napęd
AH
= 19h
przerwanie
zwraca:
AL
= aktualny napęd (0=A,1=B,etc)
określa aktualny napęd
Przerwanie
21h funkcja 2Ah - Pobierz datę
AH
= 2Ah
przerwanie
zwraca:
AL
= dzień tygodnia (0=Niedziela)
CX
= rok (1980-2099)
DH
= miesiąc (1-12)
DL
= dzień (1-31)
odczytuje datę systemu z zegara DOS
aktualizuje obszar biosu pod adresem 0040:0070
Przerwanie
21h funkcja 2Ch - Pobierz czas
AH
= 2Ch
przerwanie
zwraca:
CH
= godzina (0-23)
CL
= minuta (0-59)
DH
= sekunda (0-59)
DL
= setna sekundy (0-99)
odczytuje czas z zegara DOS
Przerwanie
21h funkcja 36h - Pobierz ilość wolnego miejsca na dysku
AH
= 36h
DL
= numer dysku (0=bieżący, 1=A:)
przerwanie
zwraca:
AX
= liczba sektorów w klastrze (= FFFF jeśli napęd jest
niewłaściwy)
BX
= liczba dostępnych klasterów
CX
= liczba bajtów w sektorze
DX
= liczba klasterów na dysku
używane do określenia wolnej przestrzeni na dysku
Przerwanie
21h funkcja 39h - Utwórz katalog
AH
= 39h
DS:DX
= wskaźnik do nazwy ścieżki jako łańcucha zakończonego
zerem
przerwanie
zwraca:
CF
= 0 jeśli operacja się powiodła (= 1 jeśli błąd)
AX = kod błędu
tworzy podkatalog
zwraca błąd jeśli katalog już istnieje, element ścieżki nie został znaleziony, pełny katalog lub dysk zabezpieczony przed zapisem
Przerwanie
21h funkcja 3Ah - Usuń katalog
AH
= 3Ah
DS:DX
= wskaźnik do nazwy ścieżki jako łańcucha zakończonego przez
00h
przerwanie
zwraca:
CF
= 0 jeśli sukces (= 1 jeśli błąd)
AX
= kod błędu DOS
pozwala skasować katalog jeśli istnieje, jest pusty i nie aktualny
Przerwanie
21h funkcja 3Bh - Zmień katalog
AH
= 3Bh
DS:DX
= wskaźnik do ścieżki jako łańcucha zakończonego 00h
przerwanie
zwraca:
CF
= 0 jeśli sukces (= 1 jeśli błąd)
AX = kod błędu jeśli CF ustawiona
zmienia bieżący katalog na katalog określony przez wskaźnik DS:DX