Estex-DSS/DSS/DSS_API.TXT
Tolik b38d6ccd48 removed #55aa for GenIOCTL
new subfunction GetMoreParams for GenIOCTL
2026-03-27 00:16:01 +10:00

804 lines
96 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## Системные вызовы дисковой подсистемы (DSS) v1.71
Вызов функций DSS в системе Estex выполняется из ассемблера.
Необходимые параметры указываются в различных регистрах, регистр **C**
используется для указания номера функции.
Так, наша программа для Estex будет выглядеть наподобие:
ORG #8100 ;адрес точки входа
LD HL,MSG ;сообщение для вывода
LD C,5Ch ;номер системного вызова (PCHARS)
RST 10h ;вызов подсистемы
LD C,41h ;номер системного вызова (EXIT)
RST 10h ;вызов подсистемы
MSG db "Hello, world!",0Dh,0Ah ;наша строка
db 0 ;конец строки
Следом за таблицей есть пояснение по двум новым функциям 0Ch и 0Dh.
+------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------+
| **Функции идентификации системы** |
+------------------------------------------------------------------------------------------------------------+
| **00h (00) VERSION (Версия DSS)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| C - 00h | D - номер версии |
| | E - модификация |
| | BC - номер сборки |
+----------------------------------------------------------------------+-------------------------------------+
| **Функции для работы с диском** |
+------------------------------------------------------------------------------------------------------------+
| **01h (01) CHDISK (Смена текущего диска)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| A - номер диска (0-A,1-B...) | A - код ошибки, если CF=1 |
| C - 01h | A - максимальный номер диска, если |
| | CF=0 |
+----------------------------------------------------------------------+-------------------------------------+
| **02h (02) CURDISK (Номер текущего диска)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| C - 02h | A - код ошибки, если CF=1 |
| | A - текущий номер диска |
| | (0-A,1-B...), если CF=0 |
| | C - максимальный номер диска, |
| | если CF=0 |
+----------------------------------------------------------------------+-------------------------------------+
| **03h (03) DSKINFO (Информация о диске) добавить описание** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| A - номер диска (0-A,1-B...#FF-текущий) | A - код ошибки, если CF=1 |
| C - 03h | A - размер кластера в секторах, |
| | если CF=0 |
| Если A bit7 = 1 и A != #FF: | HL':HL - общее кол-во кластеров |
| | DE':DE - свободных кластеров |
| HL - буфер (256 байтов) для расширенных данных: | BC - размер сектора в байтах |
| | |
| Формат полей - длина поля (1 байт), данные поля. | |
| | |
| Файловая система; **string** | |
| | |
| Серийный номер диска; **dword** | |
| | |
| Метка диска; **string** | |
| | |
| Физический номер диска, номер раздела; **word** | |
| | |
| **Остальные поля зарезервированы** | |
| | |
| B -- если равен нулю, то подсчёт свободных кластеров на разделе | |
| осуществляться не будет | |
+----------------------------------------------------------------------+-------------------------------------+
| **09h (09) BOOTDSK (Номер системного диска)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| C - 09h | A - код ошибки, если CF=1 |
| B = 0 | A - номер системного диска |
| | (0-A,1-B...), если CF=0 |
+----------------------------------------------------------------------+-------------------------------------+
| **Функции для работы с файлами** |
+------------------------------------------------------------------------------------------------------------+
| **0Ah (10) CREATE (Создание файла)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| HL - указатель на файловую спецификацию | A - код ошибки, если CF=1 |
| A - атрибут файла | A - файловый манипулятор, если CF=0 |
| C - 0Ah | |
+----------------------------------------------------------------------+-------------------------------------+
| **0Bh (11) CREATE NEW FILE (Создание нового файла)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| HL - указатель на файловую спецификацию | A - код ошибки, если CF=1 |
| A - атрибут файла | A - файловый манипулятор, если CF=0 |
| C - 0Bh | |
+----------------------------------------------------------------------+-------------------------------------+
| **0Eh (14) DELETE (Удаление файла)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| HL - указатель на файловую спецификацию | A - код ошибки, если CF=1 |
| C - 0Eh | |
+----------------------------------------------------------------------+-------------------------------------+
| **10h (16) RENAME (Переименование файла)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| HL - указатель на старое имя файла | A - код ошибки, если CF=1 |
| DE - указатель на новое имя файла | |
| C - 10h | |
+----------------------------------------------------------------------+-------------------------------------+
| **11h (17) OPEN (Открытие файла)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| HL - указатель на файловую спецификацию | A - код ошибки, если CF=1 |
| A - режим доступа | A - файловый манипулятор, если CF=0 |
| A=0 чтение/запись | |
| A=1 чтение | |
| A=2 запись | |
| C - 11h | |
+----------------------------------------------------------------------+-------------------------------------+
| **12h (18) CLOSE (Закрытие файла)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| A - файловый манипулятор | A - код ошибки, если CF=1 |
| C - 12h | |
+----------------------------------------------------------------------+-------------------------------------+
| **13h (19) READ (Чтение из файла)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| A - файловый манипулятор | A - код ошибки, если CF=1 |
| HL - адрес в памяти | если CF=0: |
| DE - количество читаемых байт | DE - реальное количество |
| C - 13h | прочитанных байт |
| | A = 0 прочитаны все байты |
| | A = #FF прочитано меньшее число |
| | байт или конец файла |
+----------------------------------------------------------------------+-------------------------------------+
| **14h (20) WRITE (Запись в файл)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| A - файловый манипулятор | A - код ошибки, если CF=1 |
| HL - адрес в памяти | DE - реальное количество записанных |
| DE - количество записываемых байт | байт |
| C - 14h | |
+----------------------------------------------------------------------+-------------------------------------+
| **15h (21) MOVE_FP (Перемещение указателя в файле)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| A - файловый манипулятор | A - код ошибки, если CF=1 |
| HL:IX - смещение указателя в файле | HL:IX - новое значение указателя |
| B - способ перемещения: | |
| B=0 от начала файла | |
| B=1 от текущего значения указателя | |
| B=2 от конца файла | |
| C - 15h | |
+----------------------------------------------------------------------+-------------------------------------+
| **16h (22) ATTRIB (Получение/изменение атрибута файла)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| HL - указатель на файловую спецификацию | A - код ошибки, если CF=1 |
| B - режим доступа | A - атрибут файла, если CF=0 |
| B = 0 получить атрибут | |
| B = 1 установить атрибут | |
| A - атрибут файла | |
| C - 16h | |
+----------------------------------------------------------------------+-------------------------------------+
| **17h (23) GET_D_T (Информация о дате и времени файла)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| A - файловый манипулятор | A - код ошибки, если CF=1 |
| C - 17h | D - день |
| | E - месяц |
| | IX - год |
| | H - час |
| | L - минуты |
| | B - секунды |
+----------------------------------------------------------------------+-------------------------------------+
| **18h (24) PUT_D_T (Изменение даты и времени файла)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| A - файловый манипулятор | A - код ошибки, если CF=1 |
| D - день | |
| E - месяц | |
| IX - год | |
| H - час | |
| L - минуты | |
| B - секунды | |
| C - 18h | |
+----------------------------------------------------------------------+-------------------------------------+
| **19h (25) F_FIRST (Поиск первого совпадающего файла)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| A - атрибуты, используемые при поиске | A - код ошибки, если CF=1 |
| HL - указатель на файловую спецификацию | |
| DE - рабочий буфер 44 байта, если B=0, если B=1, то максимум 46 байт | |
| B = 0 - имя найденного файла в формате 11 байт "FilenameExt" | |
| B = 1 - имя найденного файла в формате DOS "filename.ext",0 | |
| C - 19h | |
+----------------------------------------------------------------------+-------------------------------------+
| **1Ah (26) F_NEXT (Поиск следующего совпадающего файла)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| DE - указатель на рабочий буфер | A - код ошибки, если CF=1 |
| C - 1Ah | |
+----------------------------------------------------------------------+-------------------------------------+
| **1Bh (27) MKDIR (Создание каталога)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| HL - указатель на файловую спецификацию | A - код ошибки, если CF=1 |
| C - 1Bh | |
+----------------------------------------------------------------------+-------------------------------------+
| **1Ch (28) RMDIR (Устранение каталога)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| HL - указатель на файловую спецификацию | A - код ошибки, если CF=1 |
| C - 1Ch | |
+----------------------------------------------------------------------+-------------------------------------+
| **1Dh (29) CHDIR (Смена текущего каталога)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| HL - указатель на файловую спецификацию | A - код ошибки, если CF=1 |
| C - 1Dh | |
+----------------------------------------------------------------------+-------------------------------------+
| **1Eh (30) CURDIR (Информация о текущем каталоге)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| HL - буфер в памяти 256 байт | A - код ошибки, если CF=1 |
| C - 1Eh | |
+----------------------------------------------------------------------+-------------------------------------+
| **Функции для работы с датой и временем** |
+------------------------------------------------------------------------------------------------------------+
| **21h (33) SYSTIME (Текущая дата и время)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| C - 21h | D - день |
| | E - месяц |
| | IX - год |
| | H - час |
| | L - минуты |
| | B - секунды |
| | C - день недели |
+----------------------------------------------------------------------+-------------------------------------+
| **22h (34) SETTIME (Установить текущую дату и время)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| D - день | A - код ошибки, если CF=1 |
| E - месяц | |
| IX - год | |
| H - час | |
| L - минуты | |
| B - секунды | |
| C - 22h | |
+----------------------------------------------------------------------+-------------------------------------+
| **Функции управления памятью** |
+------------------------------------------------------------------------------------------------------------+
| **38h (56) SETWIN (Подключение страницы памяти)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| A - идентификатор блока памяти | A - код ошибки, если CF=1 |
| B - номер страницы в блоке (0,1,2...) | A - номер замещенной страницы, если |
| H - биты 6 и 7 задают номер окна, в которое будет подключена | CF=0 |
| страница | |
| C - 38h | |
+----------------------------------------------------------------------+-------------------------------------+
| **39h (57) SETWIN1 (Подключение страницы памяти в первое окно)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| A - идентификатор блока памяти | A - код ошибки, если CF=1 |
| B - номер страницы в блоке (0,1,2...) | A - номер замещенной страницы, если |
| C - 39h | CF=0 |
+----------------------------------------------------------------------+-------------------------------------+
| **3Ah (58) SETWIN2 (Подключение страницы памяти во второе окно)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| A - идентификатор блока памяти | A - код ошибки, если CF=1 |
| B - номер страницы в блоке (0,1,2...) | A - номер замещенной страницы, если |
| C - 3Ah | CF=0 |
+----------------------------------------------------------------------+-------------------------------------+
| **3Bh (59) SETWIN3 (Подключение страницы памяти в третье окно)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| A - идентификатор блока памяти | A - код ошибки, если CF=1 |
| B - номер страницы в блоке (0,1,2...) | A - номер замещенной страницы, если |
| C - 3Bh | CF=0 |
+----------------------------------------------------------------------+-------------------------------------+
| **3Ch (60) INFOMEM (Информация о памяти)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| C - 3Ch | HL - общее количество страниц |
| | BC - количество свободных страниц |
+----------------------------------------------------------------------+-------------------------------------+
| **3Dh (61) GETMEM (Выделение блока памяти)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| B - размер блока в страницах по 16 килобайт | A - код ошибки, если CF=1 |
| C - 3Dh | A - идентификатор блока памяти, |
| | если CF=0 |
+----------------------------------------------------------------------+-------------------------------------+
| **3Eh (62) FREEMEM (Освобождение блока памяти)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| A - идентификатор блока памяти | A - код ошибки, если CF=1 |
| C - 3Eh | |
+----------------------------------------------------------------------+-------------------------------------+
| **3Fh (63) SETMEM (Изменение блока памяти)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| A - идентификатор блока памяти | A - код ошибки, если CF=1 |
| B - новый размер блока | |
| C - 3Fh | |
+----------------------------------------------------------------------+-------------------------------------+
| **Функции ввода с клавиатуры** |
+------------------------------------------------------------------------------------------------------------+
| **30h (48) WAITKEY (Ожидание символа с клавиатуры)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| C - 30h | A - код символа |
| | D - позиционный код |
| | E - ASCII код |
| | C - режим клавиатуры: |
| | bit7 - RUS/LAT |
| | bit3 - Num Lock |
| | bit2 - Scroll Lock |
| | bit1 - Insert |
| | bit0 - Caps Lock |
| | B - состояние shift'ов: |
| | bit7 - Left Shift |
| | bit6 - Right Shift |
| | bit5 - Ctrl |
| | bit4 - Alt |
| | bit3 - Left Ctrl |
| | bit2 - Left Alt |
| | bit1 - Right Ctrl |
| | bit0 - Right Alt |
+----------------------------------------------------------------------+-------------------------------------+
| **31h (49) SCANKEY (Опрос клавиатуры без ожидания)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| C - 31h | ZF = 1 - нет клавиш |
| | A - код символа |
| | D - позиционный код |
| | E - ASCII код |
| | C - режим клавиатуры: |
| | bit7 - RUS/LAT |
| | bit3 - Num Lock |
| | bit2 - Scroll Lock |
| | bit1 - Insert |
| | bit0 - Caps Lock |
| | B - состояние shift'ов: |
| | bit7 - Left Shift |
| | bit6 - Right Shift |
| | bit5 - Ctrl |
| | bit4 - Alt |
| | bit3 - Left Ctrl |
| | bit2 - Left Alt |
| | bit1 - Right Ctrl |
| | bit0 - Right Alt |
+----------------------------------------------------------------------+-------------------------------------+
| **32h (50) ECHOKEY (Ожидание символа с клавиатуры с печатью без скролла)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| C - 32h | A - код символа |
| | D - позиционный код |
| | E - ASCII код |
| | C - режим клавиатуры: |
| | bit7 - RUS/LAT |
| | bit3 - Num Lock |
| | bit2 - Scroll Lock |
| | bit1 - Insert |
| | bit0 - Caps Lock |
| | B - состояние shift'ов: |
| | bit7 - Left Shift |
| | bit6 - Right Shift |
| | bit5 - Ctrl |
| | bit4 - Alt |
| | bit3 - Left Ctrl |
| | bit2 - Left Alt |
| | bit1 - Right Ctrl |
| | bit0 - Right Alt |
+----------------------------------------------------------------------+-------------------------------------+
| **33h (51) CTRLKEY (Получить состояние клавиатуры)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| C - 33h | A = 0 - нет символов в буфере |
| | C - режим клавиатуры: |
| | bit7 - RUS/LAT |
| | bit3 - Num Lock |
| | bit2 - Scroll Lock |
| | bit1 - Insert |
| | bit0 - Caps Lock |
| | B - состояние shift'ов: |
| | bit7 - Left Shift |
| | bit6 - Right Shift |
| | bit5 - Ctrl |
| | bit4 - Alt |
| | bit3 - Left Ctrl |
| | bit2 - Left Alt |
| | bit1 - Right Ctrl |
| | bit0 - Right Alt |
+----------------------------------------------------------------------+-------------------------------------+
| **35h (53) K_CLEAR (Очистить буфер клавиатуры и выполнить функцию)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| B - номер функции 30h, 31h, 32h, 33h или 34h | В зависимости от указанной функции |
| C - 35h | в регистре B. |
+----------------------------------------------------------------------+-------------------------------------+
| **36h (54) K_SETUP (Управление настройками клавиатуры)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| B - номер подфункции | В зависимости от указанной функции |
| C - 36h | в регистре B. |
| | |
| B = 0, установить раскладку клавиатуры | |
| A - номер раскладки | |
| | |
| > 0 - normal | |
| > 1 - shift | |
| > 2 - caps lock | |
| > 3 - caps lock + shift | |
| > 4 - normal (альтернативная кл.) | |
| > 5 - shift (альтернативная кл.) | |
| > 6 - caps lock (альтернативная кл.) | |
| > 7 - caps lock + shift (альтернативная кл.) | |
| | |
| -------------------------------------------------------------------- | |
| | |
| B = 1, получить состояние звуковых переменных | |
| B = 2, установить звуковые переменные | |
| A - значение переменной | |
| bit0 - сигнал переполнения буфера клавиатуры | |
| bit1 - сигнал переключения на альтернативную раскладку клавиатуры | |
| | |
| ------------------------------------------------------------------- | |
| | |
| B = 3, включить отображение курсора | |
| | |
| B = 4, выключить отображение курсора | |
+----------------------------------------------------------------------+-------------------------------------+
| **37h (55) TESTKEY (Опрос буфера клавиатуры)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| C - 37h | ZF = 1 - нет символов в буфере |
| | A - код символа |
| | D - позиционный код |
| | E - ASCII код |
| | C - режим клавиатуры: |
| | bit7 - RUS/LAT |
| | bit3 - Num Lock |
| | bit2 - Scroll Lock |
| | bit1 - Insert |
| | bit0 - Caps Lock |
| | B - состояние shift'ов: |
| | bit7 - Left Shift |
| | bit6 - Right Shift |
| | bit5 - Ctrl |
| | bit4 - Alt |
| | bit3 - Left Ctrl |
| | bit2 - Left Alt |
| | bit1 - Right Ctrl |
| | bit0 - Right Alt |
+----------------------------------------------------------------------+-------------------------------------+
| **Функции для исполнения программ** |
+------------------------------------------------------------------------------------------------------------+
| **40h (64) EXEC (Выполнить файл)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| HL - указатель на файловую спецификацию | A - код ошибки, если CF=1 |
| B = 0 - загрузить и выполнить программу с поиском в PATH | A - код завершения, если CF=0 |
| B = 1 - загрузить и выполнить программу без поиска в PATH | |
| C - 40h | |
+----------------------------------------------------------------------+-------------------------------------+
| **41h (65) EXIT (Завершение программы)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| B - код завершения | A - код ошибки, если CF=1 |
| C - 41h | A - код завершения, если CF=0 |
+----------------------------------------------------------------------+-------------------------------------+
| **42h (66) GET_ERR (Получить код завершения программы)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| C - 42h | A - код завершения |
+----------------------------------------------------------------------+-------------------------------------+
| **Функции для работы со строками и командной строкой** |
+------------------------------------------------------------------------------------------------------------+
| **43h (67) GSWITCH (Выделить параметр командной строки)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| HL - указатель командной строки | HL - указатель на следующий |
| DE - буфер для выделяемого параметра | параметр командной строки |
| C - 43h | CF = 0 - конец строки не достигнут |
| | (есть другие параметры) |
| | CF = 1 - конец строки (в буфер |
| | перенесён последний параметр или |
| | ноль) |
+----------------------------------------------------------------------+-------------------------------------+
| **44h (68) DOSNAME (Преобразовать имя файла)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| C - 44h | A - код ошибки, если CF=1 |
| B = 0, преобразовать из 11 символьного формата в формат ДОС | |
| HL - 11 символов имени файла | |
| DE - буфер для имени в формате ДОС | |
| B = 1, преобразовать из формата ДОС в 11 символьный формат | |
| HL - имя файла в формате ДОС | |
| DE - 11 символов имени файла | |
+----------------------------------------------------------------------+-------------------------------------+
| **45h (69) EXCMDLN (Разбор командной строки)** |
+------------------------------------------------------------------------------------------------------------+
| Входные значения: |
| HL - указатель командной строки |
| DE - указатель на буфер пользователя |
| C - 45h |
| B - номер подфункции: |
| |
| 0 - Разобрать строку; |
| 1 - Выделить имя диска; |
| 2 - Выделить директорию; |
| 3 - Выделить имя файла; |
| 4 - Выделить расширение файла; |
| 5 - Выделить имя диска, путь к файлу, имя файла и расширение файла; |
| 6 - Зарезервирована; |
| 7 - Выделить параметр командной строки; |
| 8 - Преобразовать из 11 символьного формата в формат ДОС; |
| 9 - Преобразовать из формата ДОС в 11 символьный формат; |
+------------------------------------------------------------------------------------------------------------+
| |
| +---------------------------------------------------------------------------------------+ |
| | **Подфункция 0 - Разобрать строку:** | |
| +--------------------------------------+------------------------------------------------+ |
| | Входные значения: | Выходные значения: | |
| | HL - указатель командной строки | A - код ошибки, если CF=1 | |
| | C - 45h | A - результат разбора, если CF=0 | |
| | B = 0 - Разобрать строку | bit7 - В строке обнаружены символы ? или * | |
| | | bit3 - В строке указано имя диска; | |
| | | bit2 - В строке указан путь к файлу; | |
| | | bit1 - В строке указано расширение файла; | |
| | | bit0 - В строке указано имя файла; | |
| +--------------------------------------+------------------------------------------------+ |
| | **Подфункция 1 - Выделить имя диска:** | |
| +--------------------------------------+------------------------------------------------+ |
| | Входные значения: | Выходные значения: | |
| | HL - указатель командной строки | A - код ошибки, если CF=1 | |
| | DE - буфер (макс. 13 байт) | A - номер диска (0 - A, 1 - B, 2 - C и т.д.), | |
| | C - 45h | если CF=0 | |
| | B = 1 - Выделить имя диска | буфер - имя диска "A:",0 | |
| +--------------------------------------+------------------------------------------------+ |
| | **Подфункция 2 - Выделить директорию:** | |
| +--------------------------------------+------------------------------------------------+ |
| | Входные значения: | Выходные значения: | |
| | HL - указатель командной строки | A - код ошибки, если CF=1 | |
| | DE - буфер (макс. 256 байт) | A - результат разбора, если CF=0 | |
| | C - 45h | bit7 - В строке обнарxужены символы ? или * | |
| | B = 2 - Выделить директорию | bit3 - В строке указано имя диска; | |
| | | bit2 - В строке указан путь к файлу; | |
| | | bit1 - В строке указано расширение файла; | |
| | | bit0 - В строке указано имя файла; | |
| | | буфер - директория "DIR1\DIR2\DIR3\",0 | |
| +--------------------------------------+------------------------------------------------+ |
| | **Подфункция 3 - Выделить имя файла:** | |
| +--------------------------------------+------------------------------------------------+ |
| | Входные значения: | Выходные значения: | |
| | HL - указатель командной строки | A - код ошибки, если CF=1 | |
| | DE - буфер (макс. 13 байт) | A - результат разбора, если CF=0 | |
| | C - 45h | bit7 - В строке обнаружены символы ? или * | |
| | B = 3 - Выделить имя файла | bit3 - В строке указано имя диска; | |
| | | bit2 - В строке указан путь к файлу; | |
| | | bit1 - В строке указано расширение файла; | |
| | | bit0 - В строке указано имя файла; | |
| | | буфер - имя файла "FILE.EXT",0 | |
| +--------------------------------------+------------------------------------------------+ |
| | **Подфункция 4 - Выделить расширение файла:** | |
| +--------------------------------------+------------------------------------------------+ |
| | Входные значения: | Выходные значения: | |
| | HL - указатель командной строки | A - код ошибки, если CF=1 | |
| | DE - буфер (макс. 4 байт) | A - результат разбора, если CF=0 | |
| | C - 45h | bit7 - В строке обнаружены символы ? или * | |
| | B = 4 - Выделить расширение файла | bit3 - В строке указано имя диска; | |
| | | bit2 - В строке указан путь к файлу; | |
| | | bit1 - В строке указано расширение файла; | |
| | | bit0 - В строке указано имя файла; | |
| | | буфер - расширение "TXT",0 или "C ",0 | |
| +--------------------------------------+------------------------------------------------+ |
| | **Подфункция 5 - Выделить имя диска, путь к файлу, имя файла и расширение файла:** | |
| +--------------------------------------+------------------------------------------------+ |
| | Входные значения: | Выходные значения: | |
| | HL - указатель командной строки | A - код ошибки, если CF=1 | |
| | DE - буфер (макс. 8 байт) | A - результат разбора, если CF=0 | |
| | DE+0 адрес буфера для имени диска | bit7 - В строке обнаружены символы ? или * | |
| | (макс. 13 байт) | bit3 - В строке указано имя диска; | |
| | DE+2 адрес буфера для директории | bit2 - В строке указан путь к файлу; | |
| | (макс. 256 байт) | bit1 - В строке указано расширение файла; | |
| | DE+3 адрес буфера для имени файла | bit0 - В строке указано имя файла; | |
| | (макс. 13 байт) | | |
| | DE+4 адрес буфера для расширения | | |
| | файла (макс. 4 байта) | | |
| | C - 45h | | |
| | B = 5 - Выделить имя диска, путь к | | |
| | файлу, имя файла и расширение файла | | |
| +--------------------------------------+------------------------------------------------+ |
| | **Подфункция 7 - Выделить параметр командной строки** | |
| +--------------------------------------+------------------------------------------------+ |
| | Входные значения: | Выходные значения: | |
| | HL - указатель командной строки | HL - указатель на следующий параметр командной | |
| | DE - буфер для выделяемого | строки | |
| | параметра | CF = 0 - конец строки не достигнут (есть | |
| | C - 45h | другие параметры) | |
| | B = 7 - Выделить параметр командной | CF = 1 - конец строки (в буфер перенесён | |
| | строки | последний параметр или ноль) | |
| +--------------------------------------+------------------------------------------------+ |
| | **Подфункция 8 - Преобразовать из 11 символьного формата в формат ДОС** | |
| +--------------------------------------+------------------------------------------------+ |
| | Входные значения: | Выходные значения: | |
| | C - 45h | A - код ошибки, если CF=1 | |
| | B = 8 - преобразовать из 11 | | |
| | символьного формата в формат ДОС | | |
| | HL - 11 символов имени файла | | |
| | DE - буфер для имени в формате ДОС | | |
| +--------------------------------------+------------------------------------------------+ |
| | **Подфункция 9 - Преобразовать из формата ДОС в 11 символьный формат** | |
| +--------------------------------------+------------------------------------------------+ |
| | Входные значения: | Выходные значения: | |
| | C - 45h | A - код ошибки, если CF=1 | |
| | B = 9 - преобразовать из формата | | |
| | ДОС в 11 символьный формат | | |
| | HL - имя файла в формате ДОС | | |
| | DE - буфер для 11 символов имени | | |
| | файла | | |
| +--------------------------------------+------------------------------------------------+ |
| |
+------------------------------------------------------------------------------------------------------------+
| **Функции для работы с переменными** |
+------------------------------------------------------------------------------------------------------------+
| **46h (70) ENVIRON (Системное окружение)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| B - номер подфункции | A - состояние, если CF=0 |
| C - 46h | A=0 - переменная обнаружена |
| B=0 **Получение системного | A=#FF - переменная не обнаружена |
| окружения** | DE - указывает на конец буфера |
| HL - буфер | A - код ошибки, если CF=1 |
| B=1 **Получить переменную | |
| окружения** | |
| HL - имя переменной | |
| DE - буфер для значения переменной | |
| B=2 **Установить/удалить переменную | |
| окружения** | |
| HL - имя переменной и значение, | |
| разделенные символом '=', | |
| (ПЕРЕМЕННАЯ=ЗНАЧЕНИЕ) | |
+----------------------------------------------------------------------+-------------------------------------+
| **47h (71) APPINFO (Получение информации приложения) -- функция глючная, |
| информацию берёт из CLP_Buffer страницы загрузки кода приложения** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| B - номер подфункции | A - код ошибки, если CF=1 |
| C - 47h | |
| HL - буфер данных | |
| B=0 - получение параметров | |
| командной строки | |
| B=1 - получение полного пути к | |
| каталогу программы | |
| B=2 - получение полного пути и | |
| имени файла программы | |
+----------------------------------------------------------------------+-------------------------------------+
| **Функции работы с экраном** |
+----------------------------------------------------------------------+-------------------------------------+
| **50h (80) SETVMOD (Выбор режима экрана) -- изменяет на обоих экранах** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| A - режим экрана | A - код ошибки, если CF=1 |
| 02h - текстовый 40x32x16 цветов | |
| 03h - текстовый 80x32x16 цветов | |
| 81h - графический 320x256x256 | |
| цветов | |
| 82h - графический 640x256x16 | |
| цветов | |
| B - страница активного экрана на | |
| выходе 0/1 | |
| C - 50h | |
+----------------------------------------------------------------------+-------------------------------------+
| **51h (81) GETVMOD (Получить текущий режим экрана)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| C - 51h | A - код ошибки, если CF=1 |
| | A - текущий режим экрана, если CF=0 |
| | B - страница экрана 0/1 |
+----------------------------------------------------------------------+-------------------------------------+
| **52h (82) LOCATE (Установить позицию курсора) [Сразу прыгает в биос]** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| D - строка курсора | нет |
| E - столбец курсора | |
| C - 52h | |
+----------------------------------------------------------------------+-------------------------------------+
| **53h (83) CURSOR (Получить позицию курсора) [Сразу прыгает в биос]** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| C - 53h | D - строка курсора |
| | E - столбец курсора |
+----------------------------------------------------------------------+-------------------------------------+
| **54h (84) SELPAGE (Выбрать активную страницу экрана)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| B - страница экрана 0/1 | A - код ошибки, если CF=1 |
| C - 54h | |
+----------------------------------------------------------------------+-------------------------------------+
| **55h (85) SCROLL (Прокрутка окна)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| D - строка левого верхнего угла | нет |
| окна | |
| E - столбец левого верхнего угла | |
| окна | |
| H - высота окна | |
| L - ширина окна | |
| B = 1 - прокрутка вверх | |
| B = 2 - прокрутка вниз | |
| A = 0 - очищать строку | |
| C - 55h | |
+----------------------------------------------------------------------+-------------------------------------+
| **56h (86) CLEAR (Очистка окна) [Сразу прыгает в биос]** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| D - строка левого верхнего угла | нет |
| окна | |
| E - столбец левого верхнего угла | |
| окна | |
| H - высота окна | |
| L - ширина окна | |
| B - атрибут заполнитель | |
| A - символ заполнитель | |
| C - 56h | |
+----------------------------------------------------------------------+-------------------------------------+
| **57h (87) RDCHAR (Считать символ с экрана) почти [Сразу прыгает в биос] |
| лучше использовать WIN_GET_SYM** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| D - строка | A - символ |
| E - столбец | B - атрибут |
| C - 57h | |
+----------------------------------------------------------------------+-------------------------------------+
| **58h (88) WRCHAR (Напечатать символ на экране)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| D - строка | нет |
| E - столбец | |
| A - символ | |
| B - атрибут | |
| C - 58h | |
+----------------------------------------------------------------------+-------------------------------------+
| **59h (89) WINCOPY (Запомнить окно экрана)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| D - строка | нет |
| E - столбец левого верхнего угла | |
| окна | |
| H - высота окна | |
| L - ширина окна | |
| B - страница буфера для IX > | |
| #C000 | |
| IX - адрес буфера | |
| C - 59h | |
+----------------------------------------------------------------------+-------------------------------------+
| **5Ah (90) WINREST (Восстановить окно экрана)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| D - строка | нет |
| E - столбец левого верхнего угла | |
| окна | |
| H - высота окна | |
| L - ширина окна | |
| B - страница буфера для IX > | |
| #C000 | |
| IX - адрес буфера | |
| C - 5Ah | |
+----------------------------------------------------------------------+-------------------------------------+
| **5Bh (91) PUTCHAR (Напечатать символ в текущей позиции курсора)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| A - символ | нет |
| C - 5Bh | |
+----------------------------------------------------------------------+-------------------------------------+
| **5Ch (92) PCHARS (Напечатать строку символов в текущей позиции курсора)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| HL - указатель на начало строки | HL - указатель на следующую строку |
| символов | символов |
| C - 5Ch | |
+----------------------------------------------------------------------+-------------------------------------+
| **Функции для печати на принтере** |
+----------------------------------------------------------------------+-------------------------------------+
| **5Fh (95) PRINT (Вывод символа на принтер без ожидания)** |
+----------------------------------------------------------------------+-------------------------------------+
| Входные значения: | Выходные значения: |
| A - символ | B - символ |
| C - 5Fh | CF = 1 - принтер не готов |
+------------------------------------------------------------------------------------------------------------+