; LAST UPDATE: 07.05.2025 savelij ; Вызов функций TOBIOS EQU 0x08 ; для вызова из ОЗУ в SLOT0 (например из DSS) TOBIOS_18 EQU 0x18 ; для вызова из 8-й страницы ПЗУ в SLOT0 TOBIOS_3D13 EQU 0x3D13 ; для вызова из 8-й страницы ПЗУ в SLOT0 TOBIOS_FROMEXT EQU 0x3FD0 ; для вызова из 0-й страницы ПЗУ в SLOT0 BIOSF ; Функции работы с памятью .GETMEMSIZE EQU 0xC0 ; Определение объемов ОЗУ .INITMEM EQU 0xC1 ; Инициализация распределения памяти .GETMEM EQU 0xC2 ; Выделение блока ОЗУ .FREEMEM EQU 0xC3 ; Освободить блок ОЗУ .GETMEMPAGE EQU 0xC4 ; Получить физический номер страницы из блока памяти .GETMEMBLKPAGES EQU 0xC5 ; Получить список физических страниц блока .GETBANKSPORTS EQU 0xC6 ; Получение адресов портов окон .GETMEMPAGENEXT EQU 0xC7 ; Получить номер следующей страницы блока .MERGEMEMBLOCKS EQU 0x9E ; Слияние блоков .DIVMEMBLOCKS EQU 0x9D ; Разделение блока .GET_RAMD_NUM EQU 0x9B ; Получить номер RAM-Disk-а (0..15) по его block id .SWAP_RAM_DRIVES EQU 0x9C ; Cменить набор рамдисков ZX <-> Sp2000 ; Работа с блоками ОЗУ, как с RAM-Disks .BLK_RD_WR EQU 0xC8 ; Чтение/запись из/в блок памяти секторами по 256 байт .GETMEMRMD EQU 0x92 ; Получить блок памяти N bytes для RAM-Disk'а .FREEMEMRMD EQU 0x93 ; Освободить блок памяти для RAM-Disk'а .GETMEMPAGERMD EQU 0x94 ; Получить физический номер страницы RAM-Disk'а .RAMD_CALC_PAGE EQU 0x98 ; Вычисление страницы и адреса в RAM-Disk по абсолютному номеру сектора .BLK_TO_RAMD EQU 0xC9 ; Назначить блок памяти RAM-Disk-у .RAMD_CLEAR EQU 0xCA ; Освободить RAM-Disk .GET_RAMD_ST EQU 0xCE ; Получение идентификатора блока, назначенного на RAM-Disk ; Управление назначением на дисководы .SET_DISK_REDIR EQU 0x99 ; Назначение на текущий логический дисковод TR-DOS заданного драйва (старая функция для TR-DOS!) .GET_DISK_REDIR EQU 0x9A ; Получить тип назначения на текущий логический дисковод TR-DOS (старая функция для TR-DOS!) .RAMD_TO_DRV EQU 0xCB ; Назначение RAM-Disk на дисковод TR-DOS .FDD_TO_DRV EQU 0xCC ; Назначение физического дисковода на логический TR-DOS .HDD_TO_DRV EQU 0xCD ; Назначение винчестера на дисковод TR-DOS .GET_DRV_ST EQU 0xCF ; Получить тип назначения на логический дисковод TR-DOS ; Функции управления окнами и режимами экрана .WIN_OPEN EQU 0xB0 ; Функция открытия окна .WIN_CLOSE EQU 0xB1 ; Закрытие окна .WIN_COPY EQU 0xB2 ; Копирование данных текстового окна в память (запоминание окна) .WIN_RESTORE EQU 0xB3 ; Копирование из памяти в текстовое окно (восстановление окна) .WIN_GET_SYM EQU 0xB4 ; Взять символ с экрана .WIN_PUT_SYM EQU 0xB5 ; Положить символ на экран .WIN_SET_ZG EQU 0xB6 ; Установка знакогенератора .WIN_MOVE EQU 0xB7 ; Перемещение окна .WIN_GET_ZG EQU 0xB8 ; Получение знакогенератора ; Функции вывода текста на экран .LP_OPEN_S EQU 0x80 ; Открытие стандартных окон .LP_PRINT_ALL EQU 0x81 ; Печать символов с атрибутом .LP_PRINT_SYM EQU 0x82 ; Вывод символов на экран без атрибута .LP_PRINT_ATR EQU 0x83 ; печать атрибутов .LP_SET_PLACE EQU 0x84 ; Установка текущего знакоместа в окне .LP_PRINT_LN EQU 0x85 ; Вывод строки символов на экран с текущего знакоместа .LP_PRINT_LN2 EQU 0x86 ; Вывод строки символов на экран без атрибутов .LP_PRINT_LN3 EQU 0x87 ; Вывод строки символов до разделителя .LP_PRINT_LN4 EQU 0x88 ; Вывод строки символов до разделителя, без атрибутов .LP_CLS_WIN EQU 0x89 ; Очистка экрана .LP_SCROLL_UD EQU 0x8A ; Скроллинг части глобального окна вверх/вниз .LP_PRINT_LN5 EQU 0x8B ; Вывод строки символов на экран до разделителя .LP_PRINT_LN6 EQU 0x8C ; Вывод строки символов на экран до разделителя без атрибутов .LP_CLS_WIN2 EQU 0x8D ; Очистка экрана с указанием символа заполнения .LP_GET_PLACE EQU 0x8E ; Получить текущее положение вывода на экран .LP_PR_LINE_DIR EQU 0xE0 ; !TODO недоделана. Печать "в консоль" до разделителя ; Графические функции .PIC_POINT EQU 0xA1 ; Установить точку .PIC_SET_PAL EQU 0xA4 ; Установка палитры .PIC_GET_PAL EQU 0xA4 ; Чтение палитры (номер такой же как у .PIC_SET_PAL) .SET_PAL_INIT EQU 0xA6 ; Установка внутренней палитры ; Работа с HDD (fast) .HDD_INIT EQU 0x40 ; Инициализация винчестера .HDD_RECAL EQU 0x41 ; Рекалибровка винчестера .HDD_TEST_IDE EQU 0x42 ; Тест наличия интерфейса IDE .HDD_PREPARE EQU 0x43 ; Подготовка винчестера к операции чтения/записи .HDD_READ_BPB EQU 0x44 ; Читать BPB первого раздела .HDD_READ EQU 0x45 ; Читать сектора с винчестера .HDD_WRITE EQU 0x46 ; Писать сектора на винчестер .HDD_PART EQU 0x47 ; Настройка партиций и master/slave .HDD_READ_NEXT EQU 0x48 ; Читать следующий сектор (ONLY FOR LBA!) ; Функции работы с жесткими дисками и дисководами .DRV_RESET EQU 0x51 ; Сброс контроллера и настройка на диск .DRV_READ_LONG EQU 0x52 ; Чтение с устройств в указанную страницу .DRV_WRITE_LONG EQU 0x53 ; Запись на устройства в указанную страницу .DRV_VERIFY EQU 0x54 ; Проверка секторов .DRV_READ EQU 0x55 ; Чтение с устройства .DRV_WRITE EQU 0x56 ; Запись на устройства .DRV_DETECT EQU 0x57 ; Определение параметров устройства .DRV_GET_PAR EQU 0x58 ; Получить параметры носителя .DRV_SET_PAR EQU 0x59 ; Установить параметры носителя .DRV_VERSION EQU 0x5A ; Номер версии дисковой спецификации .DRV_EXTENDED EQU 0x5E ; Расширенные функции для драйвов ; [x] 21/12/2023 .DRV_LIST EQU 0x5F ; Список дисковых устройств ; Функции управления 'железом' .FN_TURBO EQU 0x8F ; Функция управления турбо режимом и FDD 720/1440 .CheckInit EQU 0x97 ; Если обнаружен первый старт, то инициализация всей памяти, системных переменных .FullInit EQU 0x9F ; Инициализация всей памяти, системных переменных .FN_CRIPT EQU 0xED ; Функция идентификации материнской платы и конфигурации .RST_CONF_AY8910 EQU 0xEE ; Для совместимости с софтом Sp97, переключение в конфу AY8910 .FN_VERSION EQU 0xEF ; Выдача информации о версии BIOSа и железа .RST_CONF_SP97_1 EQU 0xF0 ; Для совместимости с софтом Sp97, переключение в конфу Sprinter-1 .RST_CONF_SP97_2 EQU 0xF1 ; Для совместимости с софтом Sp97, переключение в конфу Sprinter-2 .FN_SYNC EQU 0xF2 ; Установка синхронизации, очистка страницы режима экрана .RST_CONF_CUSTOM EQU 0xF3 ; Переключение конфигурации пользователя. SPRINTER_ALL .DCP_CONFIG EQU 0xF4 ; Функция управления дешифратором портов. ;[x] BIOS 3.05 + новая подфункция .CMOS_TEST EQU 0xF5 ; Проверить наличие CMOS .CMOS_RD EQU 0xF6 ; Читать из регистра CMOS .CMOS_WR EQU 0xF7 ; Писать в регистр CMOS .SET_PORTS EQU 0xF8 ; Установка внутренних портов. Функция в разработке .READ_PORTS EQU 0xF9 ; Чтение внутренних портов. ;[x] 26/01/2024 .GOTO_SPECTRUM EQU 0xFB ; [ ] доковырять .REINIT EQU 0xFD ; [x] restart, soft/hard reset, reinit RAM ID for spectrum pages SWAP_RAM_DRIVES .SP2000 EQU 0x00 ; Режим рамдисков Sp2000 .ZX EQU 0xFF ; Режим рамдисков ZX Spectrum mode .INFO EQU 0xFE ; Узнать какой режим РАМ дисков установлен FN_TURBO .OFF EQU 0x02 ; .ON EQU 0x03 ; .VG.OFF EQU 0x12 ; .VG.ON EQU 0x13 ; FN_VERSION ; Выдача информации о версии BIOSа и железа. В буфере будет: .STR_FIRMWARENAME EQU 1 ; № поля с названием прошивки .STR_PC_NAME EQU 2 ; № поля с названием компьютера .STR_BITSTREAMVER EQU 3 ; № поля с версией битстрима в ПЗУ REINITMODE .RESTART EQU 1 .SOFT_RESET EQU 2 .HARD_RESET EQU 3 .SET_ZXPAGES EQU 4 DRV_EXTENDED .ATAPI_Eject EQU 0x00 ; Открыть лоток CD .ATAPI_Close EQU 0x01 ; Закрыть лоток CD .ATAPI_Request_Sense EQU 0x02 .ATAPI_Custom_PCMD EQU 0x03 FN_CRIPT .BOARDNUMBER EQU 0x01 ; Выдача полного Board Number .ACEXANDBITSTREAM EQU 0x02 ; Выдача модели ACEX и версии битстрима в ROM LP_VIDEOMODE .ZX_32X24_DEFAULT EQU 0x00 ; спектрумовское окно 32x24 .TXT_64X24_DEFAULT EQU 0x01 ; текстовое окно 64x24 .TXT_40X32_DEFAULT EQU 0x02 ; текстовое окно 40x24 .TXT_80X32_DEFAULT EQU 0x03 ; текстовое окно 80x32 .ZX_32X24 EQU 0x04 ; спектрумовское окно, HL - положение окна .TXT_64X24 EQU 0x05 ; текстовое окно 64x24, HL - положение окна .TXT_40X32 EQU 0x06 ; текстовое окно 40x32, HL - положение окна .TXT_80X32 EQU 0x07 ; текстовое окно 80x32, HL - положение окна .GRAF_0 EQU 0x08 ; графическое окно 0, HL - положение окна .GRAF_1 EQU 0x09 ; графическое окно 1, HL - положение окна