; LAST UPDATE: 28.04.2025 savelij DSSF ; Функции идентификации системы .VERSION EQU 0x00 ; (Версия DSS) ; Функции для работы с диском .CHDISK EQU 0x01 ; (Смена текущего диска) .CURDISK EQU 0x02 ; (Номер текущего диска) .DSKINFO EQU 0x03 ; (Информация о диске) .G_ENTRY EQU 0x04 .RESCANDRIVES EQU 0x08 .BOOTDSK EQU 0x09 ; (Номер системного диска) ; Функции для работы с файлами .CREATE EQU 0x0A ; (Создание файла) .CREAT_N EQU 0x0B ; (Создание нового файла) .DELETE EQU 0x0E ; (Удаление файла) .RENAME EQU 0x10 ; (Переименование файла) .OPEN EQU 0x11 ; (Открытие файла) .CLOSE EQU 0x12 ; (Закрытие файла) .READ EQU 0x13 ; (Чтение из файла) .WRITE EQU 0x14 ; (Запись в файл) .MOVE_FP EQU 0x15 ; (Перемещение указателя в файле) .ATTRIB EQU 0x16 ; (Получение/изменение атрибута файла) .GET_D_T EQU 0x17 ; (Информация о дате и времени файла) .PUT_D_T EQU 0x18 ; (Изменение даты и времени файла) .F_FIRST EQU 0x19 ; (Поиск первого совпадающего файла) .F_NEXT EQU 0x1A ; (Поиск следующего совпадающего файла) .MKDIR EQU 0x1B ; (Создание каталога) .RMDIR EQU 0x1C ; (Устранение каталога) .CHDIR EQU 0x1D ; (Смена текущего каталога) .CURDIR EQU 0x1E ; (Информация о текущем каталоге) ; Функции для работы с датой и временем .GETTIME EQU 0x21 ; (Текущая дата и время) .SETTIME EQU 0x22 ; (Установить текущую дату и время) ; Функции управления памятью .SETWIN EQU 0x38 ; (Подключение страницы памяти) .SETWIN1 EQU 0x39 ; (Подключение страницы памяти в первое окно) .SETWIN2 EQU 0x3A ; (Подключение страницы памяти во второе окно) .SETWIN3 EQU 0x3B ; (Подключение страницы памяти в третье окно) .INFOMEM EQU 0x3C ; (Информация о памяти) .GETMEM EQU 0x3D ; (Выделение блока памяти) .FREEMEM EQU 0x3E ; (Освобождение блока памяти) .SETMEM EQU 0x3F ; (Изменение блока памяти) ; Функции ввода с клавиатуры .WAITKEY EQU 0x30 ; (Ожидание символа с клавиатуры) .SCANKEY EQU 0x31 ; (Опрос клавиатуры без ожидания) .ECHOKEY EQU 0x32 ; (Ожидание символа с клавиатуры с печатью) .CTRLKEY EQU 0x33 ; (Получить состояние клавиатуры) .EDIT EQU 0x34 .K_CLEAR EQU 0x35 ; (Очистить буфер клавиатуры и выполнить функцию) .K_SETUP EQU 0x36 ; (Управление настройками клавиатуры) .TESTKEY EQU 0x37 ; (Опрос буфера клавиатуры) ; Функции для исполнения программ .EXEC EQU 0x40 ; (Выполнить файл) .EXIT EQU 0x41 ; (Завершение программы) .GET_ERR EQU 0x42 ; (Получить код завершения программы) ; Функции для работы со строками и командной строкой .GSWITCH EQU 0x43 ; (Выделить параметр командной строки) .DOSNAME EQU 0x44 ; (Преобразовать имя файла) .EX_PATH EQU 0x45 ; (Разбор командной строки) ; Функции для работы с переменными .ENVIRON EQU 0x46 ; (Системное окружение) .APPINFO EQU 0x47 ; (Получение информации приложения) ; Функции работы с экраном .SETVMOD EQU 0x50 ; (Выбор режима экрана) .GETVMOD EQU 0x51 ; (Получить текущий режим экрана) .LOCATE EQU 0x52 ; (Установить позицию курсора) .CURSOR EQU 0x53 ; (Получить текущую позицию курсора) .SELPAGE EQU 0x54 ; (Выбрать активную страницу экрана) .SCROLL EQU 0x55 ; (Прокрутка окна) .CLEAR EQU 0x56 ; (Очистка окна) .RDCHAR EQU 0x57 ; (Считать символ с экрана) .WRCHAR EQU 0x58 ; (Напечатать символ на экране) .WINCOPY EQU 0x59 ; (Запомнить окно экрана) .WINREST EQU 0x5A ; (Восстановить окно экрана) .PUTCHAR EQU 0x5B ; (Напечатать символ в текущей позиции курсора) .PCHARS EQU 0x5C ; (Напечатать строку символов в текущей позиции курсора) .LIB_SUB EQU 0x5D ; [ ] 11/02/2024 - Функция с пополняемыми подфункциями))) ; Функции для печати на принтере .PRINT EQU 0x5F ; (Вывод символа на принтер без ожидания) EX_PATH .GET_ALL EQU 0x00 ; Подфункция 0 - Разобрать строку .GET_DRIVE EQU 0x01 ; Подфункция 1 - Выделить имя диска .GET_PATH EQU 0x02 ; Подфункция 2 - Выделить директорию .GET_NAME EQU 0x03 ; Подфункция 3 - Выделить имя файла .GET_TYPE EQU 0x04 ; Подфункция 4 - Выделить расширение файла .GET_ALL_EX EQU 0x05 ; Подфункция 5 - Выделить имя диска, путь к файлу, имя файла и расширение файла .GSWITCH EQU 0x07 ; Подфункция 7 - Выделить параметр командной строки .GETNAME EQU 0x08 ; Подфункция 8 - Преобразовать из 11 символьного формата в формат ДОС .MASK EQU 0x09 ; Подфункция 9 - Преобразовать из формата ДОС в 11 символьный формат SETVMOD .SCREEN_0 EQU 0 .SCREEN_1 EQU 1 .TXT40X32 EQU 2 ; текстовый 40x32x16 цветов .TXT80X32 EQU 3 ; текстовый 80x32x16 цветов .GRF320X256 EQU 0x81 ; графический 320x256x256 цветов .GRF640X256 EQU 0x82 ; графический 640x256x16 цветов FILEMODE .RW EQU 0 .R EQU 1 .W EQU 2 ENVIRON .INIT EQU 0xFF .READ EQU 0 .GET EQU 1 .SET EQU 2 EXPATH .GET_ALL EQU 0x00 ; Разобрать строку .GET_DRIVE EQU 0x01 ; Выделить имя диска .GET_PATH EQU 0x02 ; Выделить директорию .GET_NAME EQU 0x03 ; Выделить имя файла .GET_TYPE EQU 0x04 ; Выделить расширение файла .GET_ALL_EX EQU 0x05 ; Выделить имя диска, путь к файлу, имя файла и расширение файла .RESERVED EQU 0x06 ; Зарезервировано .GSWITCH EQU 0x07 ; Выделить параметр командной строки .GETNAME EQU 0x08 ; Преобразовать из 11 символьного формата в формат ДОС .MASK EQU 0x09 ; Преобразовать из формата ДОС в 11 символьный формат ; файловая спецификация поиска первого совпадающего файла F_FIRST FFIRST _INIT_VAR _SETVAR .MaskName, 8 ; маска имени для поиска _SETVAR .MaskExt, 3 ; маска расширения для поиска _SETVAR .MaskAttr, BYTE ; маска аттрибутов для поиска _SETVAR .NTRes, BYTE ; 1 зарезервированно _SETVAR .CrtTimeTenth, BYTE ; 1 миллисекунды времени создания файла _SETVAR .CrtTime, WORD ; 2 время создания файла _SETVAR .CrtDate, WORD ; 2 дата создания файла _SETVAR .LstAccDate, WORD ; 2 дата последнего обращения к файлу _SETVAR .FstClusHI, WORD ; 2 старшее слово номера кластера _SETVAR .WrtTime, WORD ; 2 время последней записи _SETVAR .WrtDate, WORD ; 2 дата последней записи _SETVAR .FstClusLO, WORD ; 2 младшее слово номера кластера _SETVAR .FileSize, DWORD ; 4 размер файла _SETVAR .Attr, BYTE ; аттрибуты найденного файла _SETVAR .Name, 8 ; имя найденного файла _SETVAR .Ext, 3 ; расширение найденого файла _SETVAR .SIZE, 0 ; размер структуры ; статусы клавиатуры KEYBSTAT ; C - режим клавиатуры _BITMASK RUSLAT, 7 ; RUS/LAT _BITMASK NUMLOCK, 3 ; Num Lock _BITMASK SCROLLLOCK, 2 ; Scroll Lock _BITMASK INSERT, 1 ; Insert _BITMASK CAPSLOCK, 0 ; Caps Lock ; B - состояние шифтов _BITMASK LEFTSHIFT, 7 ; Left Shift _BITMASK RIGHTSHIFT, 6 ; Right Shift _BITMASK CTRL, 5 ; Ctrl _BITMASK ALT, 4 ; Alt _BITMASK LEFTCTTRL, 3 ; Left Ctrl _BITMASK LEFTALT, 2 ; Left Alt _BITMASK RIGHTCTRL, 1 ; Right Ctrl _BITMASK RIGHTALT, 0 ; Right Alt ; раскладка клавиатуры KEYBMAP _INIT_VAR _SETVAR .NORMAL ; Normal _SETVAR .SHIFT ; Shift _SETVAR .CAPSLOCK ; Caps Lock _SETVAR .CAPSSHIFT ; Caps Lock + Shift _SETVAR .NORMALALTK ; Normal (альтернативная клавиатура) _SETVAR .SHIFTALTK ; Shift (альтернативная клавиатура) _SETVAR .CAPSLOCKALTK ; Caps Lock (альтернативная клавиатура) _SETVAR .CAPSHIFTALTK ; Caps Lock + Shift (альтернативная клавиатура) ; Приложение Б. Таблица позиционных кодов SC ; возвращаемые скан коды _INIT_VAR ; key ASCII/SCAN _SETVAR .APOSTROF ; ` #00 #00 _SETVAR .ESC ; Esc #1B #01 _SETVAR .1 ; 1 #31 #02 _SETVAR .2 ; 2 #32 #03 _SETVAR .3 ; 3 #33 #04 _SETVAR .4 ; 4 #34 #05 _SETVAR .5 ; 5 #35 #06 _SETVAR .6 ; 6 #36 #07 _SETVAR .7 ; 7 #37 #08 _SETVAR .8 ; 8 #38 #09 _SETVAR .9 ; 9 #39 #0A _SETVAR .0 ; 0 #30 #0B _SETVAR .MINUS ; - #2D #0C _SETVAR .EQUAL ; = #3D #0D _SETVAR .BKSP ; BackSpace #08 #0E _SETVAR .TAB ; Tab #09 #0F _SETVAR .Q ; Q #51 #10 _SETVAR .W ; W #57 #11 _SETVAR .E ; E #45 #12 _SETVAR .R ; R #52 #13 _SETVAR .T ; T #54 #14 _SETVAR .Y ; Y #59 #15 _SETVAR .U ; U #55 #16 _SETVAR .I ; I #49 #17 _SETVAR .O ; O #4F #18 _SETVAR .P ; P #50 #19 _SETVAR .QSKOBKAL ; [ #5B #1A _SETVAR .QSKOBKAR ; ] #5D #1B _SETVAR .CAPSLOCK ; CapsLock #00 #1C _SETVAR .A ; A #41 #1D _SETVAR .S ; S #53 #1E _SETVAR .D ; D #44 #1F _SETVAR .F ; F #46 #20 _SETVAR .G ; G #47 #21 _SETVAR .H ; H #48 #22 _SETVAR .J ; J #4A #23 _SETVAR .K ; K #4B #24 _SETVAR .L ; L #4C #25 _SETVAR .DOTZAP ; ; #3B #26 _SETVAR .KAVYCH ; ' #27 #27 _SETVAR .ENTER ; Enter #0D #28 _SETVAR .LSHIFT ; LShift --- #29 _SETVAR .Z ; Z #5A #2A _SETVAR .X ; X #58 #2B _SETVAR .C ; C #43 #2C ; key ASCII/SCAN _SETVAR .V ; V #56 #2D _SETVAR .B ; B #42 #2E _SETVAR .N ; N #4E #2F _SETVAR .M ; M #4D #30 _SETVAR .ZAP ; , #2C #31 _SETVAR .DOT ; . #2E #32 _SETVAR .DIV ; / #2F #33 _SETVAR .RSHIFT ; RShift --- #34 _SETVAR .BSLASH ; #5C #35 _SETVAR .LCTRL ; LCtrl --- #36 _SETVAR .LALT ; LAlt --- #37 _SETVAR .SPACE ; Space #20 #38 _SETVAR .RALT ; RAlt --- #39 _SETVAR .RCTRL ; RCtrl --- #3A _SETVAR .F1 ; F1 #00 #3B _SETVAR .F2 ; F2 #00 #3C _SETVAR .F3 ; F3 #00 #3D _SETVAR .F4 ; F4 #00 #3E _SETVAR .F5 ; F5 #00 #3F _SETVAR .F6 ; F6 #00 #40 _SETVAR .F7 ; F7 #00 #41 _SETVAR .F8 ; F8 #00 #42 _SETVAR .F9 ; F9 #00 #43 _SETVAR .F10 ; F10 #00 #44 _SETVAR .F11 ; F11 #00 #45 _SETVAR .F12 ; F12 #00 #46 _SETVAR .PRTSCRN ; PrScrn --- #47 _SETVAR .SCRLLOCK ; ScrlLock #00 #48 _SETVAR .NUMLOCK ; NumLock #00 #49 _SETVAR .XDIV ; / #2F #4A _SETVAR .XMUL ; * #2A #4B _SETVAR .XMINUS ; - #2D #4C _SETVAR .XDOTZAP ; + #2B #4D _SETVAR .XENTER ; enter #0D #4E _SETVAR .XDEL ; Del . #00 #4F _SETVAR .X0 ; Ins 0 #00 #50 _SETVAR .X1 ; End 1 #00 #51 _SETVAR .X2 ; Down 2 #00 #52 _SETVAR .X3 ; PgDw 3 #00 #53 _SETVAR .X4 ; Left 4 #00 #54 _SETVAR .X5 ; 5 #00 #55 _SETVAR .X6 ; Right 6 #00 #56 _SETVAR .X7 ; Home 7 #00 #57 _SETVAR .X8 ; Up 8 #00 #58 _SETVAR .X9 ; PgUp 9 #00 #59 _INIT_VAR 0x80 _SETVAR .RUS