; LAST UPDATE: 14.02.2025 savelij
 
 
 
; номера функций RST 8
 
 INIT_VAR 0x40
 
 SETVAR _AY_PRN_INIT
 
 SETVAR _AY_PRN_A_
 
 SETVAR _AY_PRN_TOKEN
 
 SETVAR _AY_PRN_SCR
 
 SETVAR _TAPE_INIT
 
 SETVAR _TAPE_EMUL
 
 SETVAR _WINW
 
 SETVAR _PRINT_MESSAGE
 
 SETVAR _PRINT_A
 
 SETVAR _SCROLL_UP
 
 SETVAR _SCROLL_DOWN
 
 SETVAR _SET_MODE
 
 SETVAR _MATH
 
 SETVAR _VERSION
 
 SETVAR _FILE_BROWSER
 
 SETVAR _NMI_FB_BLOCK
 
 INIT_VAR 0x4F
 
 SETVAR _BIOS
 
 SETVAR _COM_DEV
 
 SETVAR _COM_FAT
 
 SETVAR _SORT_FINDFILES
 
 SETVAR _MOUNTER
 
 SETVAR _INST_FATBOOT
 
 SETVAR _CMOS_RW
 
 SETVAR _SETUP_PAL
 
 SETVAR _SETUP_FONT
 
 
 
; функции изменения режимов работы
 
_ZXSCR_MODE     EQU %00000001                   ; ZX SCREEN
 
_TXTSCR_MODE    EQU %00000010                   ; TXT SCREEN
 
_TURBO_LOW      EQU %00010000                   ; TURBO 3,5 MHZ
 
_TURBO_HIGH     EQU %00100000                   ; TURBO 7,0 MHZ
 
_TURBO_MAX      EQU %00110000                   ; TURBO 14,0 MHZ
 
_MEM_MODE_48    EQU %01000000                   ; MEMORY MODE 48 KB
 
_MEM_MODE_128   EQU %10000000                   ; MEMORY MODE 128 KB
 
_MEM_MODE_PENT  EQU %11000000                   ; MEMORY MODE PENT 1024 KB
 
 
 
; биты ошибок
 
 BITMASK INCORRECTFPGA,         7               ; прошивка FPGA zxevo_fw.bin не той системы
 
 
 
; функции деления, умножения, преобразования числа в текст
 
 INIT_VAR
 
 SETVAR _DIVIDE16
 
 SETVAR _MULTIPLY16
 
 SETVAR _DIVIDE32
 
 SETVAR _MULTIPLY32
 
 SETVAR _HEX4DECTXT
 
 SETVAR _HEX2DECTXT
 
 SETVAR _HEX1DECTXT
 
 
 
; функции работы с CMOS
 
 INIT_VAR
 
 SETVAR _INIT_CMOS
 
 SETVAR _READ_CMOS
 
 SETVAR _WRITE_CMOS
 
 SETVAR _CLEAR_CMOS
 
 
 
; функции монтировщика образов
 
 INIT_VAR
 
 SETVAR _OPEN_MOUNT                             ; монтирование образа
 
 SETVAR _RDWR_MOUNT                             ; чтение/запись примонтированных образов
 
 SETVAR _FIND_MOUNTED                           ; поиск монтируемых образов прописанных в IMAGE.FNT
 
 SETVAR _GET_MOUNTED                            ; получение буфера описателей примонтированных образов
 
 SETVAR _CLOSEMOUNT                             ; демонтирование образа
 
 SETVAR _LOADIMAGE                              ; загрузка образа в рамдиск
 
 SETVAR _REST_NAMELOAD                          ; получение описателя файла загруженного в рамдиск
 
 SETVAR _CMP_DRIVE                              ; проверка примонтированного образа на указанной букве
 
 SETVAR _GET_VIRT_BITS                          ; получение битов смонтированных дисков
 
 SETVAR _SET_VIRTREAL                           ; переключение реального/виртуального дисковода
 
 SETVAR _SET_REAL                               ; переключение реального дисковода
 
 SETVAR _SET_VIRT                               ; переключение виртуального дисковода
 
 
 
; номера функций менеджера устройств
 
 INIT_VAR
 
 SETVAR _DEVFIND                                ; поиск устройств
 
 SETVAR _SET_VOL                                ; выбор раздела
 
 SETVAR _KOL_VOL                                ; запрос найденого
 
 SETVAR _GET_FNDVOLUME                          ; получить таблицу найденных разделов
 
 SETVAR _TO_DRV                                 ; вызов драйвера выбранного устройства
 
 SETVAR _SET_DEVICE                             ; установка битов устройства и LBA режима
 
 SETVAR _CONTROL_SD                             ; контроль наличия SD карт
 
 SETVAR _COMHDDN                                ; прямой вызов драйвера HDD NEMO (временная функция)
 
 SETVAR _FREINIT_VOL                            ; полная переинициализация раздела
 
 SETVAR _SET_SECTOR_NUM                         ; установка номера сектора для чтения/записи
 
 
 
; номера функций вызова драйвера устройства
 
 INIT_VAR
 
 SETVAR _DEV_INIT                               ; поиск и инициализация устройства
 
 SETVAR _DEV_STATUS                             ; запрос статуса устройства. пока заглушена
 
 SETVAR _DEV_READ                               ; чтение секторов
 
 SETVAR _DEV_WRITE                              ; запись секторов
 
 SETVAR _DEV_READID                             ; чтение ID сектора
 
 
 
; номера вызываемых функций FAT драйвера
 
 INIT_VAR
 
 SETVAR _INIT_FATVARS                           ; инициализация переменных FAT
 
 SETVAR _READ_DIR                               ; получение описателя файла
 
 SETVAR _ENTER_DIR                              ; вход/выход в дир
 
 SETVAR _GET_PATH                               ; получение текущего пути
 
 SETVAR _GET_LONGNAME                           ; получение длинного имени файла
 
 SETVAR _FIND_NAME                              ; поиск по имени
 
 SETVAR _FIND_FILEITEM                          ; поиск всех описателей с выдачей номеров найденного
 
 SETVAR _SET_MASK_EXT                           ; установка маски расширений для поиска
 
 SETVAR _OPEN_FILE                              ; открытие файла
 
 SETVAR _READ_FILE                              ; последовательное чтение открытого файла
 
 SETVAR _INIT_TEKDIR                            ; создание таблицы кластеров текущей директории
 
 SETVAR _POS_FILES                              ; работа с текущей позицией
 
 SETVAR _ROOT_DIR                               ; переход в корень текущего диска
 
 
 
; подфункции функции _POS_FILES
 
 INIT_VAR
 
 SETVAR _POSTF00                                ; сохранение текущей позиции файла
 
 SETVAR _POSTF01                                ; восстановление текущей позиции файла
 
 SETVAR _POSTF02                                ; сброс текущей позиции в 0 и поиск первой "легальной" записи
 
 SETVAR _POSTF03                                ; перемотать на "B" файлов назад
 
 SETVAR _POSTF04                                ; перемотать на "B" файлов вперед
 
 SETVAR _POSTF05                                ; подсчет количества "легальных" записей
 
 SETVAR _POSTF06                                ; установить номер "легальной" записи из "BC"
 
 SETVAR _POSTF07                                ; вернуть в "BC" текущий номер "легальной" записи
 
 
 
; подфункции FILE_BROWSER
 
FB
 
 _INIT_VAR
 
 _SETVAR .SELECT_FILE                           ; вывод окна для выбора файла
 
 _SETVAR .GET_HABDLE                            ; получить описатель выбранного файла
 
 _SETVAR .GET_FILETYPE                          ; получить тип выбранного файла
 
 _SETVAR .SET_FILE_EXT                          ; установка расширений файлов
 
 
 
; номера поддерживаемых расширений для RST 8
 
; "TRDSCLFDITAPSPG$C FNTBMPROM"         ;RST 8
 
; "TRDSCLFDITAPSPG$C BMPSNA"            ;MAINMENU
 
 INIT_VAR 1
 
 SETVAR _TRD            ;TRD
 
 SETVAR _SCL            ;SCL
 
 SETVAR _FDI            ;FDI
 
 SETVAR _TAP            ;TAP
 
 SETVAR _SPG            ;SPG
 
 SETVAR _HOB            ;$C
 
 SETVAR _FNT            ;FNT
 
 SETVAR _BMP            ;BMP
 
 SETVAR _ROM            ;ROM
 
 SETVAR _HOB1           ;$??
 
 SETVAR _HOB2           ;!??
 
 
 
; внутренние номера типов разделов
 
 INIT_VAR
 
 SETVAR _NO_INIT
 
 SETVAR _FAT12                                  ; 00 = 01       FAT12
 
 SETVAR _FAT16                                  ; 01 = 04,06,0E FAT16
 
 SETVAR _FAT32                                  ; 02 = 0B,0C    FAT32
 
 SETVAR _TRDOS                                  ; 03            TR-DOS диск
 
 SETVAR _UNKNOWN                                ;               файловая система еще не определена или неизвестна
 
 
 
; описатели для рисования окна
 
 INIT_VAR
 
 SETVAR _X_COORD
 
 SETVAR _Y_COORD
 
 SETVAR _V_SIZE
 
 SETVAR _H_SIZE
 
 SETVAR _COLOR_WIN
 
 SETVAR _COLOR_CUR
 
 SETVAR _FLAGS
 
 SETVAR _NUM_PKT
 
 SETVAR _TEK_PKT_L
 
 SETVAR _TEK_PKT_H
 
 SETVAR _NUM_KOL_L
 
 SETVAR _NUM_KOL_H
 
 SETVAR _ADR_TXT_L
 
 SETVAR _ADR_TXT_H
 
 SETVAR _ADR_PRG_L
 
 SETVAR _ADR_PRG_H
 
 SETVAR _ADR_MOUSE_L
 
 SETVAR _ADR_MOUSE_H
 
 SETVAR _ADR_HOTKEY_L
 
 SETVAR _ADR_HOTKEY_H
 
 
 
 BITMASK DOWN_HEADER,           7               ; 1-есть нижний заголовок
 
 BITMASK WINFRAME,              6               ; 0-рамка окна есть
 
 BITMASK UPHEADER,              5               ; 1-есть верхний заголовок
 
 BITMASK TEXT,                  4               ; 0-есть текст для окна
 
 BITMASK MENU_FILE,             3               ; 1-файлы, 0-меню
 
; в байте текущего номера пункта _NUM_PKT
 
;   BIT 7-0 => 8-9 текущий пункт,
 
;         1 => 8-9 адрес хранения
 
;       6-0 => A-B количество пунктов
 
;         1 => A-B адрес хранения
 
 BITMASK ADR_PUNKT,             7
 
 BITMASK ADR_NUMS_PUNKT,        6
 
 
 
JUMP_SIZE       EQU 3
 
 
 
 INIT_VAR 0x100
 
 SETVAR _NEMO_RD_ID,JUMP_SIZE                   ; чтение сектора идентификации HDD с определением его наличия
 
 SETVAR _NEMO_RD_SEC,JUMP_SIZE                  ; чтение секторов HDD
 
 SETVAR _NEMO_WR_SEC,JUMP_SIZE                  ; запись секторов HDD
 
 
 
 SETVAR _ZCSD_RD_ID,JUMP_SIZE                   ; чтение сектора идентификации набортной SD карты
 
 SETVAR _ZCSD_RD_SEC,JUMP_SIZE                  ; чтение секторов набортной SD карты
 
 SETVAR _ZCSD_WR_SEC,JUMP_SIZE                  ; запись секторов набортной SD карты
 
 
 
 SETVAR _NGSSD_RD_ID,JUMP_SIZE                  ; чтение сектора идентификации SD карты NeoGS
 
 SETVAR _NGSSD_RD_SEC,JUMP_SIZE                 ; чтение секторов SD карты NeoGS
 
 SETVAR _NGSSD_WR_SEC,JUMP_SIZE                 ; запись секторов SD карты NeoGS
 
 
 
 SETVAR _INIT_KEYB_PS2,JUMP_SIZE                ; включение доступа к PS/2 клавиатуре
 
 SETVAR _READ_KEYB_PS2,JUMP_SIZE                ; считывание и декодирование сканкодов PS/2
 
 SETVAR _READ_STAT_PS2,JUMP_SIZE                ; чтение статуса и декодированных клавиш PS/2
 
 
 
 SETVAR _INIT_TABLE_MEM,JUMP_SIZE               ; получение таблицы занятых/свободных страниц памяти
 
 SETVAR _GET_TABLE_MEM,JUMP_SIZE                ; сброс всех занятых страницы памяти
 
 SETVAR _ALLOC_PAGE,JUMP_SIZE                   ; получение номера свободной страницы памяти
 
 SETVAR _FREE_PAGE,JUMP_SIZE                    ; освобождение по номеру страницы памяти