; LAST UPDATE: 15.04.2024 savelij WITH_BUILD EQU 1 ; BIOS NUMBER INCLUDED BUILD NUMBER WITH_2IDE EQU 1 ; SECONDARY IDE DSS_MAX_DRIVES_AMOUNT EQU 26 CLASSIC_CURSOR EQU 0 TABisSPACES EQU 0 EnoughtOnly_LF EQU 0 RAM_ATAPI_PK EQU 0xFEE0 RAM_ATAPI_READ EQU 0xFEF0 SIZESEC EQU 0x0800 PKTSIZE EQU 12 RAMD_KEY_NUM EQU 16 HDR_EXE_SIZE EQU 512 HDR_EXE_SHORT EQU 512 - 490 CL0 EQU 200 CL1 EQU 240 CPU0 EQU 0x0000 CPU1 EQU 0x4000 CPU2 EQU 0x8000 CPU3 EQU 0xC000 ;Version EQU 0x020D ; Version BIOS RESTARTS EQU 0FFE0H D_TBON EQU 3 ; данные для включения TURBO D_TBOFF EQU 2 ; данные для включения TURBO D_ROM16ON EQU 1 D_ROM16OFF EQU 0 BIOS_SCR_X EQU 128 BIOS_SCR_Y EQU 72 AUTO .HDD EQU 1 .CDROM EQU 2 CONF .CNF_0 EQU 0x04 .CNF_1 EQU 0x0C .CNF_2 EQU 0x14 .CNF_3 EQU 0x1C .CNF_512 EQU 0x80 ; включение Pentagon 128 ; RAM PAGES PAGE .CONFIG EQU 0x40 .PG50 EQU 0x50 .PGA0 EQU 0xA0 .MODE EQU 0xFC .SYSTEM EQU 0xFE .LAST EQU 0xFF SPECTRUM .PAGE0 EQU 0 .PAGE1 EQU 1 .PAGE2 EQU 2 .PAGE3 EQU 3 .PAGE4 EQU 4 .PAGE5 EQU 5 .PAGE6 EQU 6 .PAGE7 EQU 7 ; функции драйверов IDE, FDD ... DRIVER .INIT EQU 0x00 .OPEN EQU 0x01 .CLOSE EQU 0x02 .MEDIA_CHECK EQU 0x03 .GET_BPB EQU 0x04 .INPUT EQU 0x05 .OUTPUT EQU 0x06 .REMOVABLE EQU 0x07 .IOCTL EQU 0x08 .READ_LONG EQU 0x09 .WRITE_LONG EQU 0x0A ; ошибки драйверов DRV_ERR .OK EQU 0x00 .BAD_COMMAND EQU 0x01 .BAD_DRIVE EQU 0x02 .UNKNOW_FORMAT EQU 0x03 .NOT_READY EQU 0x04 .SEEK_ERROR EQU 0x05 .SEC_NOT_FOUND EQU 0x06 .CRC_ERROR EQU 0x07 .WRITE_PROTECT EQU 0x08 .READ_ERROR EQU 0x09 .WRITE_ERROR EQU 0x0A .FAILURE EQU 0x0B .BUSY EQU 0x0C .RESERVED EQU 0x0D ; цвета поллитры BIOS INIT_VAR SETVAR BLACK SETVAR BLUE SETVAR GREEN SETVAR CYAN SETVAR RED SETVAR MAGENTA SETVAR BROWN SETVAR LGRAY SETVAR DGRAY SETVAR LBLUE SETVAR LGREEN SETVAR LCYAN SETVAR LRED SETVAR LMAGENT SETVAR YELLOW SETVAR WHITE ; ячейки CMOS INIT_VAR SETVAR CMOS.SECUND ; 00 SETVAR CMOS.SECUND_ALARM ; 01 SETVAR CMOS.MINUTE ; 02 SETVAR CMOS.MINUTE_ALARM ; 03 SETVAR CMOS.HOUR ; 04 SETVAR CMOS.HOUR_ALARM ; 05 SETVAR CMOS.DAY_WEEK ; 06 SETVAR CMOS.DAY_MONTH ; 07 SETVAR CMOS.MONTH ; 08 SETVAR CMOS.YEAR ; 09 SETVAR CMOS.REG_A ; 0A SETVAR CMOS.REG_B ; 0B SETVAR CMOS.REG_C ; 0C SETVAR CMOS.REG_D ; 0D ; Sprinter DATA SETVAR CMOS.OPTIONS ; 0E OPTIONS BITMASK MEMORY_TEST, 7 ; MEMORY TEST BITMASK SAFE_RAMDISK, 6 ; SAFE RAM DISKS BITMASK UPDATE_BIOS, 5 ; UPDATE BIOS M_START_DELAY EQU %00011000 ; START DELAY BITMASK LANGUAGE, 2 ; LANGUAGE BITMASK QUICK_START, 0 ; QUICK START SETVAR CMOS.YA0F ; 0F KEYBOARD BITMASK TYPEMATIC, 7 ; TYPEMATIC ON/OFF M_TYPEMATIC_DELAY EQU %01100000 ; TYPEMATIC DELAY 00-250, 01-500, 10-750, 11-1000 M_TYPEMATIC_RATE EQU %00011111 ; TYPEMATIC RATE 0-6, 1-8, 2-10, 3-12, 4-15, 5-20, 6-24, 7-30 SETVAR CMOS.YA10 ; 10 SYSTEM DISKS M_SYSTEM_DISK EQU %00000111 ; SYSTEM DISK M_ALT_DISK EQU %01110000 ; ALT SYSTEM DISK SETVAR CMOS.YA11 ; 11 FDD & HDD M_FDD_FIRST EQU %00000011 ; FDD FIRST 720 / 1.44 / NONE M_FDD_SECOND EQU %00001100 ; FDD SECOND 720 / 1.44 / NONE M_IDE_MASTER_MODE EQU %00110000 ; IDE MASTER AUTO / SETUP / DISABLED M_IDE_SLAVE_MODE EQU %11000000 ; IDE SLAVE AUTO / SETUP / DISABLED SETVAR CMOS.MS_CYL_LOW ; 12 CYLINDERS LOW MASTER SETVAR CMOS.MS_CYL_HIGH ; 13 CYLINDERS HIGH MASTER SETVAR CMOS.MS_HEADS ; 14 HEADS MASTER SETVAR CMOS.MS_SECTORS ; 15 SECTORS MASTER SETVAR CMOS.SL_CYL_LOW ; 16 CYLINDERS LOW SLAVE SETVAR CMOS.SL_CYL_HIGH ; 17 CYLINDERS HIGH SLAVE SETVAR CMOS.SL_HEADS ; 18 HEADS SLAVE SETVAR CMOS.SL_SECTORS ; 19 SECTORS SLAVE SETVAR CMOS.COLOR_STYLE ; 1A COLOR STYLE M_COLOR_STYLE EQU %00001111 ; COLOR STYLE SETVAR CMOS.YA1B ; 1B HARDWARE CONFIGURATION M_COMPUTER EQU %00011000 ; COMPUTER ; 0-SPRINTER ; 1-SPECTRUM 256 ; 2-PENTAGON 128 ; 3-OTHER BITMASK PORT_EXCHG, 2 ; PORT EXCHANGE ON/OFF - 1 BITMASK TURBO_EXCHG, 1 ; TURBO EXCHANGE ON/OFF - 1 BITMASK TURBO_MODE, 0 ; TURBO MODE (D0..D3 - 6 OR 7) SETVAR CMOS.YA1C ; 1C RESET MODE ; 0-RESET 128 Basic ; 1-RESET 48 Basic & 128 mem ; 2-RESET TR-DOS & 128 mem ; 3-RESET EXPANSION (Disabled) ; 4-RESET TR-DOS & 48 mem ; 5-RESET 48 Basic SETVAR CMOS.YA1D ; 1D REBOOT MSG, HDD W/P BITMASK REBOOT_MSG, 1 ; Reboot message BITMASK HDD_WR_DISABLE, 0 ; HDD Write protect SETVAR CMOS.YA1E ; 1E TRDOS M_TRDOS_A EQU %00000011 ; TR DOS A: Default / FDD / HDD / RMD M_TRDOS_B EQU %00001100 ; TR DOS B: Default / FDD / HDD / RMD M_TRDOS_C EQU %00110000 ; TR DOS C: Default / FDD / HDD / RMD M_TRDOS_D EQU %11000000 ; TR DOS A: Default / FDD / HDD / RMD SETVAR CMOS.SCR_POS ; 1F SCREEN POSITION M_X_SCREEN_POS EQU %11110000 ; X-Screen position M_Y_SCREEN_POS EQU %00001111 ; Y-Screen position SETVAR CMOS.YA20 SETVAR CMOS.YA21 SETVAR CMOS.YA22 SETVAR CMOS.YA23 SETVAR CMOS.YA24 SETVAR CMOS.YA25 SETVAR CMOS.YA26 SETVAR CMOS.YA27 SETVAR CMOS.YA28 SETVAR CMOS.YA29 SETVAR CMOS.YA2A SETVAR CMOS.YA2B SETVAR CMOS.YA2C SETVAR CMOS.YA2D SETVAR CMOS.YA2E SETVAR CMOS.YA2F SETVAR CMOS.YA30 SETVAR CMOS.YA31 SETVAR CMOS.CENTURY ; CENTURY SETVAR CMOS.YA33 SETVAR CMOS.YA34 SETVAR CMOS.YA35 SETVAR CMOS.YA36 SETVAR CMOS.YA37 SETVAR CMOS.YA38 SETVAR CMOS.YA39 SETVAR CMOS.YA3A SETVAR CMOS.YA3B SETVAR CMOS.YA3C SETVAR CMOS.YA3D SETVAR CMOS.YA3E SETVAR CMOS.CHECKSUM ; CHECKSUM ; пока не понятно SM_CYLL EQU 0x2F SM_CYLH EQU 0x30 SM_HEAD EQU 0x31 SM_SECT EQU 0x32 SS_CYLL EQU 0x33 SS_CYLH EQU 0x34 SS_HEAD EQU 0x35 SS_SECT EQU 0x36 M_CYLL EQU 0x37 M_CYLH EQU 0x38 M_HEAD EQU 0x39 M_SECT EQU 0x3A S_CYLL EQU 0x3B S_CYLH EQU 0x3C S_HEAD EQU 0x3D S_SECT EQU 0x3E ; GLOBAL VARS ??? ROM_BLOCK EQU 0x1000 RAM_BLOCK EQU 0x8000 SETUP_TXT_ADR EQU 0x8005 ADR4SPECTRUM EQU 0x8200 BASIC_START EQU 0x5B00 DCP_FLEX EQU 0x1400 FONT_ROM_ADR EQU 0x2800 FN_TABL_ADR EQU 0x3000 SPVARS ;.L_B00B EQU 0xB00B ;.L_B03F EQU 0xB03F .L_B4B2 EQU 0xB4B2 .L_B6B2 EQU 0xB6B2 .L_C124 EQU 0xC124 .L_C180 EQU 0xC180 .L_C200 EQU 0xC200 .L_C400 EQU 0xC400 .RESTART EQU 0xF000 .POWERON_DATE EQU 0xF008 .REBOOT_DATE EQU 0xF010 .COPY_CPU0 EQU 0xFFF0 .COPY_CPU1 EQU 0xFFF1 .COPY_CPU2 EQU 0xFFF2 .COPY_CPU3 EQU 0xFFF3 .ADDR EQU 0xFFF4 .SYM_Z EQU 0xFFFE .SYM_X EQU 0xFFFF ; переменные по страницам ; коды клавиатуры PSKEY ; считанные с клавиатуры ._A EQU 0x1C ._B EQU 0x32 ._C EQU 0x21 ._D EQU 0x23 ._E EQU 0x24 ._F EQU 0x2B ._G EQU 0x34 ._H EQU 0x33 ._I EQU 0x43 ; возвращаемые в программу