## Системные вызовы дисковой подсистемы (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 - принтер не готов           |
+------------------------------------------------------------------------------------------------------------+
