246
9. Wykorzystanie procedur systemowych w programach użytkowych
06H - bezpośrednie odczytanie (wysłanie) znaku z (na) klawiatury (ekran). Jeżeli przed wywołaniem DL = FFH i klawisz został naciśnięty, to jego kod pozostaje w AL, a ZF = 0. Jeżeli klawisz nie został wciśnięty, to ZF = 1. Jeśli przed wywołaniem DL FFH, zostaje wyświetlony znak z rejestru DL (ang. direct console //O),
07H - oczekiwanie na naciśnięcie klawisza i odczytanie znaku z klawiatury bez wysłania echa i rozpoznawania Ctrl-C. Kod znaku pozostaje w AL. (ang. direct console input ), 08H - opis jak dla funkcji 07H, jednak po rozpoznaniu Ctrl-C jest wykonywane INT 23H (ang. read keyboard),
09H - wyświetlenie na ekranie łańcucha znaków (tekstu). Początek łańcucha musi być określony adresem podanym w rejestrach DS:DX, tekst kończy się znakiem dolara ($), który nie jest wyświetlany (ang. display string ).
OAH - oczekiwanie na kolejne znaki z klawiatury i wprowadzanie ich kodów do bufora. Bufor rozpoczyna się od adresu określonego przez rejestry DS:DX i zawiera: 1 bajt z maksymalną liczbą znaków wł buforze wraz z CR; 2 bajt z aktualną liczbą wprowadzonych znaków; bajty 3...n - właściwy bufor (ang. buffered keyboard input),
OBH - sprawdzenie czy w buforze (ang. type-ahead buffer ) jest podany znak z klawiatury. Jeżeli tak, to AL = FFH, w przeciwnym przypadku AL = 0 (ang. check keyboard status),
OCH - usunięcie wszystkich znaków z bufora klawiatury zakończone wywołaniem jednej z funkcji: 1, 6, 7, 8 lub OAH, której numer znajduje się w rejestrze AL. Umieszczenie innego numeru powoduje powrót (z AL = 0) do programu bez dalszego wywołania (ang.jlush buffer, read keyboard),
ODH - zerowanie wewnętrznych buforów pamięciowych do przechowywania plików, zerowanie stacji dysków. Funkcja nie zamyka plików i powinna być zasadniczo wywołana po funkcji 10H lub 3EH (ang. reset disk flush buffers ),
OEH - wybór stacji dysków. Numer stacji jest pobierany z rejestru DL (0 = A:,
1 = B:,...). Po wykonaniu procedury w AL zostaje informacja o liczbie stacji dyskowych w systemie (ang. select disk),
OFH - otwarcie pliku dyskowego. Rejestry DS:DX wskazują nie otwarte pole FCB (zob. tabl. 8.3). Jeżeli zostaje znalezione wejście do właściwego katalogu i plik zostanie otwarty, to rejestr AL = 0, w przeciwnym przypadku AL = FFH (ang. open file),
10H - zamknięcie pliku dyskowego. Rejestry DS:DX wskazują otwarte pole FCB (zob. tabl. 8.3). Jeżeli zostaje znalezione wejście do właściwego katalogu, to rejestr AL = 0, w przeciwnym przypadku AL = FFH (ang. close file ),
11H - poszukiwanie pierwszej nazwy pliku, zgodnej z podanym wzorcem. Rejestry DS:DX wskazują nie otwarte pole FCB (zob. tabl. 8.3). Jeżeli nazwa zostanie znaleziona, to rejestr AL = 0, w przeciwnym przypadku AL = FFH. Jest możliwe stosowanie symboli ogólnych (*, ?) (ang. search forftrst entry ),
12H - poszukiwanie kolejnej nazwy pliku, zgodnej z wzorcem, przy czym poszukiwanie rozpoczyna siÄ™ za nazwÄ… znalezionÄ… ostatnio za pomocÄ… funkcji 11H lub 12H. Rejestry DS:DX i AL, jak dla funkcji 11H (ang. search for next entryf),
13H - usunięcie pliku dyskowego. Rejestry DS:DX i AL jak dla 11H (ang. delete file ), 14H - odczytanie kolejnego rekordu z pliku sekwencyjnego. Rejestry DS:DX wskazują
powered by
9.2. Procedury systemowe MS DOS
otwarte pole FCB. Po wykonaniu operacji pole FCB zostaje uaktualnione, a rejestr AL przyjmuje wartość: 0 - odczyt zakończony poprawnie, 1 - koniec pliku i brak danych w rekordzie, 2 - obszar DTA zbyt mały i anulowanie operacji, 3 - koniec pliku, odczytano część rekordu i uzupełniono resztę zerami (ang. seąuential read),
15H - zapisanie kolejnego rekordu do pliku sekwencyjnego. Rejestry DS:DX wskazują otwarte pole FCB. Po wykonaniu operacji pole FCB zostaje uaktualnione, rejestr AL przyjmuje wartość: 0 - zapis zakończony poprawnie, 1 - dysk pełny i anulowanie operacji, 2 - obszar DTA zbyt mały (ang. seąuential write ),
16H - utworzenie nowego pliku dyskowego. Rejestry DS:DX wskazują nie otwarte pole FCB. Po wykonaniu operacji pole FCB zostaje uaktualnione, rejestr AL przyjmuje wartość: 0 - katalog znaleziony, FFH - żądany katalog niedostępny (ang. create file ),
17H - zmiana nazwy pliku. Rejestry DS:DX wskazują zmodyfikowane pole FCB. Po wykonaniu operacji rejestr AL przyjmuje wartość: 0 - operacja wykonana prawidłowo, FFH - nie znaleziono pliku lub nazwa istnieje już w katalogu (ang. rename file ),
18H - funkcja zarezerwowana,
19H - test, która ze stacji dysków została ostatnio wybrana za pomocą funkcji OEH. Rejestr AL przekazuje informację: 0 - A:, 1 - B:,... (ang. current disk ),
1AH - zmiana adresu bufora służącego do wprowadzania (wyprowadzania) na (z) dysku. Rejestry DS:DX wskazują adres bufora (ang. set disk transfer address ),
1BH-20H - funkcje zarezerwowane przez firmÄ™ Microsoft. (1BH, ICH - informacje
0 pojemności i organizacji stacji dysków, identyfikacja listy zawartości dysku),
21H - odczytanie wskazanego rekordu z pliku o dostępie swobodnym. Rejestry DS:DX
1 AL jak dla funkcji 14H (ang. random read single record),
22H - zapisanie wskazanego rekordu do pliku o dostępie swobodnym. Rejestry DS:DX i AL jak dla funkcji 15H (ang. random write single record),
23H - określenie wielkości pliku. Rejestry DS:DX i AL jak dla 16H (ang.getfile size ), 24H - określenie numeru rekordu przy dostępie swobodnym dla zwrotu parametru przy dostępie sekwencyjnym. Rejestry DS:DX wskazują otwarte pole FCB (ang. set relative record).
Funkcje zwiÄ…zane z systemem MS-DOS (25H-38H)
25H - ładowanie wektora przerwań. Przed wywołaniem rejestr AL powinien zawierać numer przerwania, a rejestry DS:DX adres procedury obsługi przerwania (ang. set in-terrupt vector),
26H - utworzenie nowego bloku PSP (ang. create newprogram segment prefuc),
27H - odczytanie wielu rekordów z pliku o dostępie swobodnym. Rejestry DS:DX i AL jak dla funkcji 14H. Rejestr CX powinien zawierać liczbę rekordów do odczytania (ang. random błock read ),
28H - zapisanie wielu rekordów do pliku o dostępie swobodnym. Rejestry DS:DX i AL jak dla funkcji 15H. Rejestr CX zawierać powinien liczbę rekordów do zapisania, (ang. random błock write ),
29H - poszukiwanie łańcucha znaków w nazwie pliku. Znaczenie rejestrów przed wywołaniem funkcji jest następujące: DS:SI - adres poszukiwanego łańcucha, ES:DI -