diff --git a/constants/BIOS_equ.inc b/constants/BIOS_equ.inc index c1c5995..981bc17 100644 --- a/constants/BIOS_equ.inc +++ b/constants/BIOS_equ.inc @@ -1,174 +1,170 @@ ; Строка ID бутлоадера - MACRO _mSYSID - DZ 'Starting...' ; первый символ в загрузчике ОС заменяется на номер стартового драйва, второй на номер активного загрузочного раздела + MACRO _mSYSID + DZ 'Starting...' ; первый символ в загрузчике ОС заменяется на номер стартового драйва, второй на номер активного загрузочного раздела ENDM ; -;[Вызов функций]--------------------------------; -ToBIOS EQU #08 ; для вызова из ОЗУ в SLOT0 (например из DSS) -ToBIOS_18 EQU #18 ; для вызова из 8-й страницы ПЗУ в SLOT0 -ToBIOS_3D13 EQU #3D13 ; для вызова из 8-й страницы ПЗУ в SLOT0 -ToBIOS_FromEXT EQU #3FD0 ; для вызова из 0-й страницы ПЗУ в SLOT0 -;-----------------------------------------------; -BIOS: -;[Функции работы с памятью]---------------------; -.GetMemSize EQU #C0 ;#90 ; Определение объемов ОЗУ -.InitMem EQU #C1 ;#91 ; Инициализация распределения памяти. -.GetMem EQU #C2 ; Выделение блока ОЗУ -.FreeMem EQU #C3 ; Освободить блок ОЗУ -.GetMemPage EQU #C4 ; Получить физический номер страницы из блока памяти -.GetMemBlkPages EQU #C5 ; Получить список физических страниц блока -.GetBanksPorts EQU #C6 ; Получение адресов портов окон -.GetMemPageNext EQU #C7 ; Получить номер следующей страницы блока по предыдущему № -.GET_RAMD_NUM EQU #9B ; Получить номер RAM-Disk-а (0..15) по его block id -.SWAP_RAM_DRIVES EQU #9C ; Cменить набор рамдисков ZX <-> Sp2000 -.SWAP_RAM_DRIVES.Sp2000 EQU #009C ; Режим рамдисков Sp2000 -.SWAP_RAM_DRIVES.ZX EQU #FF9C ; Режим рамдисков ZX Spectrum mode -.SWAP_RAM_DRIVES.Info EQU #FE9C ; Узнать какой режим РАМ дисков установлен -.DivMemBlocks EQU #9D ; Разделение блока -.MergeMemBlocks EQU #9E ; Слияние блоков -;-----------------------------------------------; +;[Вызов функций]----------------------------------------; +ToBIOS EQU #08 ; для вызова из ОЗУ в SLOT0 (например из DSS) +ToBIOS_18 EQU #18 ; для вызова из 8-й страницы ПЗУ в SLOT0 +ToBIOS_3D13 EQU #3D13 ; для вызова из 8-й страницы ПЗУ в SLOT0 +ToBIOS_FromEXT EQU #3FD0 ; для вызова из 0-й страницы ПЗУ в SLOT0 +;-------------------------------------------------------; -;[Работа с блоками ОЗУ, как с RAM-Disks] -.BLK_RD_WR EQU #C8 ; Чтение/запись из/в блок памяти секторами по 256 байт -.GetMemRMD EQU #92 ; Получить блок памяти N bytes для RAM-Disk'а -.FreeMemRMD EQU #93 ; Освободить блок памяти для RAM-Disk'а -.GetMemPageRMD EQU #94 ; Получить физический номер страницы RAM-Disk'а -.RAMD_CALC_PAGE EQU #98 ; Вычисление страницы и адреса в RAM-Disk по абсолютному номеру сектора -.BLK_TO_RAMD EQU #C9 ; Назначить блок памяти RAM-Disk-у -.RAMD_CLEAR EQU #CA ; Освободить RAM-Disk -.GET_RAMD_ST EQU #CE ; Получение идентификатора блока, назначенного на RAM-Disk -;-----------------------------------------------; + MODULE BIOS +;BIOS: +;[Функции работы с памятью]-----------------------------; +GetMemSize EQU #C0 ;#90 ; Определение объемов ОЗУ +InitMem EQU #C1 ;#91 ; Инициализация распределения памяти. +GetMem EQU #C2 ; Выделение блока ОЗУ +FreeMem EQU #C3 ; Освободить блок ОЗУ +GetMemPage EQU #C4 ; Получить физический номер страницы из блока памяти +GetMemBlkPages EQU #C5 ; Получить список физических страниц блока +GetBanksPorts EQU #C6 ; Получение адресов портов окон +GetMemPageNext EQU #C7 ; Получить номер следующей страницы блока по предыдущему № +GET_RAMD_NUM EQU #9B ; Получить номер RAM-Disk-а (0..15) по его block id +SWAP_RAM_DRIVES EQU #9C ; Cменить набор рамдисков ZX <-> Sp2000 +.Sp2000 EQU #009C ; Режим рамдисков Sp2000 +.ZX EQU #FF9C ; Режим рамдисков ZX Spectrum mode +.Info EQU #FE9C ; Узнать какой режим РАМ дисков установлен +DivMemBlocks EQU #9D ; Разделение блока +MergeMemBlocks EQU #9E ; Слияние блоков +;[Работа с блоками ОЗУ, как с RAM-Disks]----------------; +BLK_RD_WR EQU #C8 ; Чтение/запись из/в блок памяти секторами по 256 байт +GetMemRMD EQU #92 ; Получить блок памяти N bytes для RAM-Disk'а +FreeMemRMD EQU #93 ; Освободить блок памяти для RAM-Disk'а +GetMemPageRMD EQU #94 ; Получить физический номер страницы RAM-Disk'а +RAMD_CALC_PAGE EQU #98 ; Вычисление страницы и адреса в RAM-Disk по абсолютному номеру сектора +BLK_TO_RAMD EQU #C9 ; Назначить блок памяти RAM-Disk-у +RAMD_CLEAR EQU #CA ; Освободить RAM-Disk +GET_RAMD_ST EQU #CE ; Получение идентификатора блока, назначенного на RAM-Disk +;[Управление назначением на дисководы]------------------; +RAMD_TO_DRV EQU #CB ; Назначение RAM-Disk на дисковод TR-DOS +FDD_TO_DRV EQU #CC ; Назначение физического дисковода на логический +HDD_TO_DRV EQU #CD ; Назначение винчестера на дисковод +GET_DRV_ST EQU #CF ; Получить тип назначения на логический дисковод +;[Управление окнами и режимами экрана]------------------; +WIN_OPEN EQU #B0 ; Функция открытия окна. +WIN_CLOSE EQU #B1 ; закрытие окна +WIN_COPY EQU #B2 ; Копирование данных текстового окна в память (запоминание окна) +WIN_RESTORE EQU #B3 ; Копирование из памяти в текстовое окно (восстановление окна) +WIN_GET_SYM EQU #B4 ; Взять символ с экрана +WIN_PUT_SYM EQU #B5 ; Положить символ на экран +WIN_SET_ZG EQU #B6 ; установка знакогенератора +WIN_MOVE EQU #B7 ; Перемещение окна +WIN_GET_ZG EQU #B8 ; Получение знакогенератора +;[Функции печати и упр. режимом экрана]-----------------; +LP_OPEN_S EQU #80 ; Открытие стандартных окон. +.ZX_32x24_Default EQU #0080 ; спектрумовское окно 32x24 +.TXT_64x24_Default EQU #0180 ; текстовое окно 64x24 +.TXT_40x32_Default EQU #0280 ; текстовое окно 40x24 +.TXT_80x32_Default EQU #0380 ; текстовое окно 80x32 +.ZX_32x24 EQU #0480 ; спектрумовское окно, HL - положение окна +.TXT_64x24 EQU #0580 ; текстовое окно 64x24, HL - положение окна +.TXT_40x32 EQU #0680 ; текстовое окно 40x32, HL - положение окна +.TXT_80x32 EQU #0780 ; текстовое окно 80x32, HL - положение окна +.Graf_0 EQU #0880 ; графическое окно 0, HL - положение окна +.Graf_1 EQU #0980 ; графическое окно 1, HL - положение окна +LP_PRINT_ALL EQU #81 ; Печать символов с атрибутом +LP_PRINT_SYM EQU #82 ; Вывод символов на экран без атрибута +LP_PRINT_ATR EQU #83 ; печать атрибутов +LP_SET_PLACE EQU #84 ; Установка текущего знакоместа в окне +LP_PRINT_LINE EQU #85 ; Вывод строки символов на экран с текущего знакоместа +LP_PRINT_LINE2 EQU #86 ; Вывод строки символов на экран без атрибутов +LP_PRINT_LINE3 EQU #87 ; Вывод строки символов до разделителя +LP_PRINT_LINE4 EQU #88 ; Вывод строки символов до разделителя, без атрибутов +LP_CLS_WIN EQU #89 ; Очистка экрана +LP_SCROLL_UD EQU #8A ; Скроллинг части глобального окна вверх/вниз +LP_PRINT_LINE5 EQU #8B ; Вывод строки символов на экран до разделителя +LP_PRINT_LINE6 EQU #8C ; Вывод строки символов на экран до разделителя без атрибутов +LP_CLS_WIN2 EQU #8D ; Очистка экрана с указанием символа заполнения +LP_GET_PLACE EQU #8E ; Получить текущее положение вывода на экран +LP_PR_LINE_DIR EQU #E0 ;!TODO недоделана. Печать "в консоль" до разделителя +;[Графические функции]----------------------------------; +PIC_POINT EQU #A1 ; Установить точку +PIC_SET_PAL EQU #A4 ; Установка палитры +PIC_GET_PAL EQU #A4 ; Чтение палитры (номер такой же как у .PIC_SET_PAL) +SET_PAL_INIT EQU #A6 ; Установка внутренней палитры +;[Работа с HDD. #4X (fast)]-----------------------------; +HDD_INIT EQU #40 ; Инициализация винчестера +HDD_RECAL EQU #41 ; Рекалибровка винчестера +HDD_TEST_IDE EQU #42 ; Тест наличия интерфейса IDE +HDD_PREPARE EQU #43 ; Подготовка винчестера к операции чтения/записи +HDD_READ_BPB EQU #44 ; Читать BPB первого раздела +HDD_READ EQU #45 ; Читать сектора с винчестера +HDD_WRITE EQU #46 ; Писать сектора на винчестер +HDD_PART EQU #47 ; Настройка партиций и master/slave +HDD_READ_NEXT EQU #48 ; Читать следующий сектор (ONLY FOR LBA!) +;[Работа с HDD и дисководами. #5X]----------------------; +DRV_RESET EQU #51 ; Сброс контроллера и настройка на диск +DRV_READ_LONG EQU #52 ; Чтение с устройств в указанную страницу +DRV_WRITE_LONG EQU #53 ; Запись на устройства в указанную страницу +DRV_VERIFY EQU #54 ; Проверка секторов +DRV_READ EQU #55 ; Чтение с устройства +DRV_WRITE EQU #56 ; Запись на устройства +DRV_DETECT EQU #57 ; Определение параметров устройства +DRV_GET_PAR EQU #58 ; Получить параметры носителя +DRV_SET_PAR EQU #59 ; Установить параметры носителя +DRV_VERSION EQU #5A ; Номер версии дисковой спецификации. +DRV_EXTENDED EQU #5E ; Расширенные функции для драйвов ; [x] 21/12/2023 +.CD_Eject EQU #005E ; Открыть лоток CD +.CD_Close EQU #015E ; Закрыть лоток CD +DRV_LIST EQU #5F ; Список дисковых устройств +;-------------------------------------------------------; -;[Управление назначением на дисководы]----------; -.RAMD_TO_DRV EQU #CB ; Назначение RAM-Disk на дисковод TR-DOS -.FDD_TO_DRV EQU #CC ; Назначение физического дисковода на логический -.HDD_TO_DRV EQU #CD ; Назначение винчестера на дисковод -.GET_DRV_ST EQU #CF ; Получить тип назначения на логический дисковод -;-----------------------------------------------; - -;[Управление окнами и режимами экрана]----------; -.WIN_OPEN EQU #B0 ; Функция открытия окна. -.WIN_CLOSE EQU #B1 ; закрытие окна -.WIN_COPY EQU #B2 ; Копирование данных текстового окна в память (запоминание окна) -.WIN_RESTORE EQU #B3 ; Копирование из памяти в текстовое окно (восстановление окна) -.WIN_GET_SYM EQU #B4 ; Взять символ с экрана -.WIN_PUT_SYM EQU #B5 ; Положить символ на экран -.WIN_SET_ZG EQU #B6 ; установка знакогенератора -.WIN_MOVE EQU #B7 ; Перемещение окна -.WIN_GET_ZG EQU #B8 ; Получение знакогенератора -;-----------------------------------------------; - -;[Функции печати и упр. режимом экрана]---------; -.LP_OPEN_S EQU #80 ; Открытие стандартных окон. -.LP_OPEN_S.ZX_32x24_Default EQU #0080 ; спектрумовское окно 32x24 -.LP_OPEN_S.TXT_64x24_Default EQU #0180 ; текстовое окно 64x24 -.LP_OPEN_S.TXT_40x32_Default EQU #0280 ; текстовое окно 40x24 -.LP_OPEN_S.TXT_80x32_Default EQU #0380 ; текстовое окно 80x32 -.LP_OPEN_S.ZX_32x24 EQU #0480 ; спектрумовское окно, HL - положение окна -.LP_OPEN_S.TXT_64x24 EQU #0580 ; текстовое окно 64x24, HL - положение окна -.LP_OPEN_S.TXT_40x32 EQU #0680 ; текстовое окно 40x32, HL - положение окна -.LP_OPEN_S.TXT_80x32 EQU #0780 ; текстовое окно 80x32, HL - положение окна -.LP_OPEN_S.Graf_0 EQU #0880 ; графическое окно 0, HL - положение окна -.LP_OPEN_S.Graf_1 EQU #0980 ; графическое окно 1, HL - положение окна - -.LP_PRINT_ALL EQU #81 ; Печать символов с атрибутом -.LP_PRINT_SYM EQU #82 ; Вывод символов на экран без атрибута -.LP_PRINT_ATR EQU #83 ; печать атрибутов -.LP_SET_PLACE EQU #84 ; Установка текущего знакоместа в окне -.LP_PRINT_LINE EQU #85 ; Вывод строки символов на экран с текущего знакоместа -.LP_PRINT_LINE2 EQU #86 ; Вывод строки символов на экран без атрибутов -.LP_PRINT_LINE3 EQU #87 ; Вывод строки символов до разделителя -.LP_PRINT_LINE4 EQU #88 ; Вывод строки символов до разделителя, без атрибутов -.LP_CLS_WIN EQU #89 ; Очистка экрана -.LP_SCROLL_UD EQU #8A ; Скроллинг части глобального окна вверх/вниз -.LP_PRINT_LINE5 EQU #8B ; Вывод строки символов на экран до разделителя -.LP_PRINT_LINE6 EQU #8C ; Вывод строки символов на экран до разделителя без атрибутов -.LP_CLS_WIN2 EQU #8D ; Очистка экрана с указанием символа заполнения -.LP_GET_PLACE EQU #8E ; Получить текущее положение вывода на экран -.LP_PR_LINE_DIR EQU #E0 ;!TODO недоделана. Печать "в консоль" до разделителя -;-----------------------------------------------; - -;[Графические функции]--------------------------; -.PIC_POINT EQU #A1 ; Установить точку -.PIC_SET_PAL EQU #A4 ; Установка палитры -.PIC_GET_PAL EQU #A4 ; Чтение палитры (номер такой же как у .PIC_SET_PAL) -.SET_PAL_INIT EQU #A6 ; Установка внутренней палитры -;-----------------------------------------------; - -;[Работа с HDD. #4X (fast)]---------------------; -.HDD_INIT EQU #40 ; Инициализация винчестера -.HDD_RECAL EQU #41 ; Рекалибровка винчестера -.HDD_TEST_IDE EQU #42 ; Тест наличия интерфейса IDE -.HDD_PREPARE EQU #43 ; Подготовка винчестера к операции чтения/записи -.HDD_READ_BPB EQU #44 ; Читать BPB первого раздела -.HDD_READ EQU #45 ; Читать сектора с винчестера -.HDD_WRITE EQU #46 ; Писать сектора на винчестер -.HDD_PART EQU #47 ; Настройка партиций и master/slave -.HDD_READ_NEXT EQU #48 ; Читать следующий сектор (ONLY FOR LBA!) -;-----------------------------------------------; - -;[Работа с HDD и дисководами. #5X]--------------; -.DRV_RESET EQU #51 ; Сброс контроллера и настройка на диск -.DRV_READ_LONG EQU #52 ; Чтение с устройств в указанную страницу -.DRV_WRITE_LONG EQU #53 ; Запись на устройства в указанную страницу -.DRV_VERIFY EQU #54 ; Проверка секторов -.DRV_READ EQU #55 ; Чтение с устройства -.DRV_WRITE EQU #56 ; Запись на устройства -.DRV_DETECT EQU #57 ; Определение параметров устройства -.DRV_GET_PAR EQU #58 ; Получить параметры носителя -.DRV_SET_PAR EQU #59 ; Установить параметры носителя -.DRV_VERSION EQU #5A ; Номер версии дисковой спецификации. -.DRV_EXTENDED EQU #5E ; Расширенные функции для драйвов ; [x] 21/12/2023 -.DRV_EXTENDED.CD_Eject EQU .DRV_EXTENDED -.DRV_EXTENDED.CD_Close EQU #0100 + .DRV_EXTENDED -.DRV_LIST EQU #5F ; Список дисковых устройств -;-----------------------------------------------; - -;[Управление железом, опр. версии]--------------; -.FN_TURBO EQU #8F ; Функция управления турбо режимом и FDD 720/1440 -.FN_TURBO.OFF EQU #02 ; -.FN_TURBO.ON EQU #03 ; -.FN_TURBO.VG.OFF EQU #12 ; -.FN_TURBO.VG.ON EQU #13 ; -.CheckInit EQU #97 ; Если обнаружен первый старт, то инициализация всей памяти, системных переменных -.FullInit EQU #9F ; Инициализация всей памяти, системных переменных -.FN_CRIPT EQU #ED ; Функция идентификации материнской платы и конфигурации -.FN_CRIPT.BoardNumber EQU #01ED ; Выдача полного Board Number -.FN_CRIPT.AcexAndBitstream EQU #02ED ; Выдача модели ACEX и версии битстрима в ROM -.RST_CONF.AY8910 EQU #EE ; для совместимости с софтом Sp97, переключение в конфу AY8910 -.FN_VERSION EQU #EF ; Выдача информации о версии BIOSа и железа. В буфере будет: -.FN_VERSION.STR.FirmwareName EQU 1 ; № поля с названием прошивки -.FN_VERSION.STR.PC_Name EQU 2 ; № поля с названием компьютера -.FN_VERSION.STR.BitstreamVer EQU 3 ; № поля с версией битстрима в ПЗУ -.RST_CONF.SP97_1 EQU #F0 ; для совместимости с софтом Sp97, переключение в конфу Sprinter-1 -.RST_CONF.SP97_2 EQU #F1 ; для совместимости с софтом Sp97, переключение в конфу Sprinter-2 -.FN_SYNC EQU #F2 ; Установка синхронизации, очистка страницы режима экрана -.RST_CONF.CUSTOM EQU #F3 ; переключение конфигурации пользователя. SPRINTER_ALL -.DCP_CONFIG EQU #F4 ; Функция управления дешифратором портов. ;[x] BIOS 3.05 + новая подфункция -.CMOS_TEST EQU #F5 ; Проверить наличие CMOS -.CMOS_RD EQU #F6 ; Читать из регистра CMOS -.CMOS_WR EQU #F7 ; Писать в регистр CMOS -.SET_PORTS EQU #F8 ; Установка внутренних портов. Функция в разработке -.READ_PORTS EQU #F9 ; Чтение внутренних портов. ;[x] 26/01/2024 -.GOTO_SPECTRUM EQU #FB ;[ ] доковырять -.REINIT EQU #FD ;[x] restart, soft/hard reset, reinit RAM ID for spectrum pages -.REINIT.RESTART EQU #01 ; -.REINIT.SOFT_RESET EQU #02 ; -.REINIT.HARD_RESET EQU #03 ; -.REINIT.SET_ZXPAGES EQU #04 ; +;[Управление железом, опр. версии]----------------------; +FN_TURBO EQU #8F ; Функция управления турбо режимом и FDD 720/1440 +.OFF EQU #02 ; +.ON EQU #03 ; +.VG.OFF EQU #12 ; +.VG.ON EQU #13 ; +CheckInit EQU #97 ; Если обнаружен первый старт, то инициализация всей памяти, системных переменных +FullInit EQU #9F ; Инициализация всей памяти, системных переменных +FN_CRIPT EQU #ED ; Функция идентификации материнской платы и конфигурации +.BoardNumber EQU #01ED ; Выдача полного Board Number +.AcexAndBitstream EQU #02ED ; Выдача модели ACEX и версии битстрима в ROM +RST_CONF: ; ; ; +.AY8910 EQU #EE ; для совместимости с софтом Sp97, переключение в конфу AY8910 +.SP97_1 EQU #F0 ; для совместимости с софтом Sp97, переключение в конфу Sprinter-1 +.SP97_2 EQU #F1 ; для совместимости с софтом Sp97, переключение в конфу Sprinter-2 +.CUSTOM EQU #F3 ; переключение конфигурации пользователя. SPRINTER_ALL +; ; ; ; +FN_VERSION EQU #EF ; Выдача информации о версии BIOSа и железа. В буфере будет: +.STR.FirmwareName EQU 1 ; № поля с названием прошивки +.STR.PC_Name EQU 2 ; № поля с названием компьютера +.STR.BitstreamVer EQU 3 ; № поля с версией битстрима в ПЗУ +FN_SYNC EQU #F2 ; Установка синхронизации, очистка страницы режима экрана +DCP_CONFIG EQU #F4 ; Функция управления дешифратором портов. ;[x] BIOS 3.05 + новая подфункция +CMOS_TEST EQU #F5 ; Проверить наличие CMOS +CMOS_RD EQU #F6 ; Читать из регистра CMOS +CMOS_WR EQU #F7 ; Писать в регистр CMOS +SET_PORTS EQU #F8 ; Установка внутренних портов. Функция в разработке +READ_PORTS EQU #F9 ; Чтение внутренних портов. ;[x] 26/01/2024 +GOTO_SPECTRUM EQU #FB ;[ ] доковырять +REINIT EQU #FD ;[x] restart, soft/hard reset, reinit RAM ID for spectrum pages +.RESTART EQU #01 ; +.SOFT_RESET EQU #02 ; +.HARD_RESET EQU #03 ; +.SET_ZXPAGES EQU #04 ; ;-----------------------------------------------; ; ;----------------[ EROOR CODES ]----------------; -BIOS.Error.NoErrors EQU 0 ; -BIOS.Error.InvalidSubFunction EQU 1 ; -BIOS.Error.BadNumber EQU 2 -BIOS.Error.UnknownDevice EQU 3 -BIOS.Error.UnknownFormat EQU BIOS.Error.UnknownDevice -BIOS.Error.BadDrvNumber EQU BIOS.Error.BadNumber ; -BIOS.Error.WaitPort EQU 4 ; -BIOS.Error.WriteProtect EQU 8 ; +Error: +.NoErrors EQU 0 ; +.InvalidSubFunction EQU 1 ; +.BadNumber EQU 2 ; of drive or ramblock +.UnknownDevice EQU 3 ; +.NotReady EQU 4 ; +.Seek EQU 5 ; +.SectorNotFound EQU 6 ; or No Disk +.CRC EQU 7 ; +.WriteProtect EQU 8 ; +.Read EQU 9 ; +.Write EQU 10 ; +.Failure EQU 11 ; +.Busy EQU 12 ; DEVICE OPENED +;-----------------------------------------------; ; .NO_ERROR EQU #00 ; 00 - NO ERRORS ; .INVALID_COMMAND EQU #01 ; 01 - BAD COMMAND @@ -195,14 +191,14 @@ BIOS.Error.WriteProtect EQU 8 ; ; ..Внутренняя функция.. ; открыть графическое окно, с описателем в IX ; на месте HL, E - страница режима, седьмой бит E - режим BOND -.PIC_FN0 EQU #A0 +.PIC_FN0 EQU #A0 ;============================================================= ;============================================================= ; point 3D13h C=0A2h ; ВЫВОД ЛИНИИ 'FILL' вход: dE - вертикаль, HL - горизонталь. ; IX - длина линии в точках, A - цвет -.PIC_FN2 EQU #A2 +.PIC_FN2 EQU #A2 ;============================================================= ;============================================================= @@ -212,13 +208,13 @@ BIOS.Error.WriteProtect EQU 8 ; ; A' - страница RAM-Disk/MEM, HL' - адрес в стр.2 ; BC' - длина данных ; Выход: HL',A' - следующий байт в RAM-Disk !!! -.PIC_FN3 EQU #A3 +.PIC_FN3 EQU #A3 ;============================================================= ;============================================================= ; point 3D13h C=0A5h ; УСТАНОВКА СТРАНИЦЫ ВЫВОДА НА ЭКРАН Вход: E = 0/1 -.PIC_FN5 EQU #A5 +.PIC_FN5 EQU #A5 ;============================================================= ;============================================================= @@ -232,9 +228,9 @@ BIOS.Error.WriteProtect EQU 8 ; ; HL,C + DE,B -> HL,C ; dec H' ; jr nz,1 -.PIC_FN7 EQU #A7 +.PIC_FN7 EQU #A7 ; point 3D13h C=0A8h -.PIC_FN8 EQU #A8 +.PIC_FN8 EQU #A8 ;============================================================= ;============================================================= @@ -248,5 +244,8 @@ BIOS.Error.WriteProtect EQU 8 ; ; 2 - Восстановление картинки под временным спрайтом ; HL - Special coding data ( данные спрайта форма, цвета.. ) ; flick-подобный формат -.PIC_FN9 EQU #A9 -;============================================================= \ No newline at end of file +.PIC_FN9 EQU #A9 +;============================================================= + + ENDMODULE ; BIOS +;-----------------------------------------------------------------------; \ No newline at end of file diff --git a/macroses/macros.z80 b/macroses/macros.z80 index 3eede33..624e808 100644 --- a/macroses/macros.z80 +++ b/macroses/macros.z80 @@ -115,11 +115,13 @@ ;======================================= MACRO _mInfoALIGN num, filler -.temp equ $ +.curr EQU $ +.size EQU .temp-.curr + IF .size > 0 + DISPLAY " Free bytes: ",/D,.size, " From ",/H, .curr, " to ",/H, .temp, " address." + ENDIF ALIGN num,filler - IF (($-.temp) > 0) - DISPLAY " Free ",/D,$-.temp, " bytes at ",/H, .temp, " address." - ENDIF +.temp EQU $ ENDM ;=======================================