248
9. Wykorzystanie procedur systemowych w programach użytkowych
adres pola FCB, AL - sterowanie procesem przeszukiwania. Po zakończeniu operacji: DS:S1 - adres pierwszego bajtu łańcucha ostanio przeszukiwanego, ES:DI - nie otwarte pole FCB, AL - komunikat o ewentualnym błędzie (ang.parse file name),
2AH - odczyt daty z zegara systemowego. Po wykonaniu operacji rejestry zawierają: CX - rok (1980-2099), DH - miesiąc (1 - styczeń, 2 - luty,...), DL - dzień (1-31), AL -dzień tygodnia (0 - niedziela, 1 - poniedziałek,...) (ang.get datę ),
2BH - ustawienie daty w zegarze systemowym. Rejestry CX, DH, AL (przed wywołaniem funkcji) jak dla funkcji 2AH. Po wykonaniu operacji rejestr AL informuje: 0 - data była prawidłowa, FFH - data była błędna (ang. set datę ),
2CH - odczytanie czasu z zegara systemowego. Po wykonaniu operacji rejestry zawierają: CH - godzinę (0-23), CL - minuty (0-59), DH - sekundy (0-59), DL - setne części sekundy (0-99) (ang. get time),
2DH - ustawienie czasu w zegarze systemowym. Rejestry CH, CL, DH, DL (przed wywołaniem funkcji) jak dla funkcji 2CH. Po wykonaniu operacji rejestr AL informuje: 0 - czas był prawidłowy, FFH - czas był błędny (ang. set time ),
2EH - ustawienie (zerowanie) wskaźnika weryfikacji. Jeżeli AL = 0, to operacje zapisu na dysku nie są weryfikowane. Jeżeli AL = 1, to po każdym zapisie na dysku będzie wykonana weryfikacja (ang. set/reset verify flag ),
2FH - pobranie adresu bufora DTA do operacji dyskowych. Po wykonaniu działania rejestry DS:DX zawierają adres bufora (ang. get disk transfer address ),
30H - pobranie numeru wersji systemu MS-DOS. Po wykonaniu operacji rejestry zawierają: AL - pierwszą część numeru, AH - drugą część numeru, BL:CX - numer użytkownika (24 bity), BH - numer OEM (ang.get DOS version numher),
31H - zakończenie wykonywanego programu, bez usuwania go z pamięci (por. 1NT 27H). Znaczenie rejestrów przed wywołaniem jest następujące: AL - kod zamykający, DX - rozmiar pamięci liczony mod 16 (ang. keepprocess),
32H - funkcja zarezerwowana,
33H - pobranie, ustalenie i zapisanie sposobu reakcji na naciśnięcie klawisza Ctrl-C, 34H - funkcja zarezerwowana,
35H pobranie do rejestrów ES:BX wektora przerwań. Przed wywołaniem rejestr AL powinien zawierać numer przerwania (ang.get interrupt vector),
36H - pobranie informacji o wielkości i położeniu wolnych obszarów na dysku, wskazanym w rejestrze DL (0 - A:,...). Po wykonaniu operacji rejestry zawierają: BX - liczbę dostępnych bloków (ang. cluster), DX - liczbę bloków na dysku, CX - liczbę bajtów w sektorze. AX = FFFFH oznacza, że podano błędny numer stacji dysków, w przeciwnym przypadku AX określa liczbę sektorów w bloku (ang. get disk free space ),
37H - funkcja zarezerwowana,
38H - pobranie informacji o sposobie zapisu daty i czasu zależnym od kraju. Przed wywołaniem rejestry powinny zawierać: DS:DX - adres 32-bajtowego obszaru pamięci, gdzie będą wpisane wszystkie informacje, AL zawiera 0 dla bieżącego kodu kraju lub kod kraju (ang. return country dependent Information ).
powered by
9.2. Procedury systemowe MS DOS
Funkcje zgodne z funkcjami systemu XENIX (39H... 57H)
39H - utworzenie nowego katalogu. Rejestry DS:DX powinny zawierać adres łańcucha znaków ASCII definiujących ścieżkę dostępu do katalogu. Po wykonaniu operacji: CF=1 i AX = 3 - nie znaleziono ścieżki dostępu, AX = 5 - niedozwolony dostęp; CF = 0 - operacja bezbłędna (ang. create sub-directory),
3AH - usunięcie pustego (!) katalogu. Rejestry DS:DX jak dla funkcji 39H. Po wykonaniu operacji: CF = 1 i AX = 3 - nie znaleziono ścieżki dostępu, AX = 5 - niedozwolony dostęp lub katalog nie był pusty, AX = 16 - próba usunięcia bieżącego katalogu; CF = 0 - operacja bezbłędna (ang. remove a directory entry ),
3BH - zmiana aktualnego katalogu. Rejestry DS:DX jak dla funkcji 39H. Po wykonaniu operacji: CF=1 i AX = 3 - nie znaleziono ścieżki dostępu; CF = 0 - operacja bezbłędna (ang. change the current directory),
3CH - utworzenie i otwarcie pliku oraz nadanie mu atrybutów. Jeżeli istnieje plik
0 podanej nazwie, to jego zawartość jest utracona. Rejestry DS:DX jak dla funkcji 39H, rejestr CX powinien zawierać atrybuty nadawane plikowi. Po wykonaniu operacji: CF = 1 i AX = 3 - nie znaleziono ścieżki dostępu, AX = 4 - za dużo otwartych plików, AX = 5 - niedozwolony dostęp (np. za mało miejsca) (ang. create a file ),
3DH - otwarcie istniejącego pliku. Rejestr AL definiuje: AL = 0 - plik do odczytu, AL = 1 - plik do zapisu, AL = 2 - plik do zapisu i odczytu. Po wykonaniu operacji: CF=1 i AX = 2 - nie znaleziono pliku, AX = 4 - za dużo otwartych plików, AX = 5 -niedozwolony dostęp; CF = 0 - operacja bezbłędna i rejestr AX zawiera numer kanału logicznego (ang. open a file ),
3EH - zamknięcie pliku. Rejestr BX określa numer kanału logicznego przyporządkowanego zamykanemu plikowi. Po wykonaniu operacji: CF=1 i AX = 6 - zły numer kanału; CF = 0 - operacja bezbłędna (ang. close a file handle ),
3FH - odczytanie danych z pliku lub urządzenia wejścia-wyjścia. Rejestr BX powinien zawierać numer kanału logicznego, rejestr CX natomiast liczbę bajtów do odczytu. Rejestry DS:DX wskazują adres bufora dla danych. Jeżeli wystąpił błąd to CF=1
1 rejestr AX przyjmuje wartość: AX = 5 - odczyt niemożliwy, AX = 6 - zły numer kanału. Jeżeli odczyt był poprawny, to CF = 0 i AX zawiera liczbę przeczytanych bajtów (ang. read from file or device ),
40H - zapis danych do pliku lub urządzenia wejścia-wyjścia. Znaczenie rejestrów takie samo jak dla funkcji 3FH (ang. wrile to a file ordevice ),
41H - usunięcie pliku. Rejestry DS:DX wskazują łańcuch w pamięci opisujący ścieżkę dostępu do pliku. Jeżeli po operacji CF= 1, to wystąpił błąd: AX = 2 - nie znaleziono pliku, AX = 5 - dostęp niemożliwy. Jeżeli operacja bezbłędna, to CF = 0 (ang. delete a directory?entry ),
42H - zmiana wskaźnika określającego miejsce zapisu (odczytu) w pliku. Znaczenie rejestrów przed operacją: CX:DX - przesunięcie liczone w bajtach, BX - numer logiczny kanału, AL - metoda przesunięcia: AL = 0 - przesunięcie względem początku pliku, AL = 1 - względem aktualnej pozycji,?AL = 2 - względem końca pliku. Jeżeli po wykonaniu operacji CF=* I,- to wystąpił błąd: AX = l - zła zawartość AL, AX=6 - zły