Changeset 593 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Inc/RomVars.inc
- Timestamp:
- Jun 30, 2018, 8:27:04 AM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS/Inc/RomVars.inc
r592 r593 22 22 %define ROMVARS_INC 23 23 24 ; ROM Variables. Written to the ROM image before flashing. 25 struc ROMVARS 26 .wRomSign resb 2 ; ROM Signature (AA55h) 27 .bRomSize resb 1 ; ROM size in 512 byte blocks 28 .rgbJump resb 3 ; First instruction to ROM init (jmp) 29 30 .rgbSign resb 8 ; Signature for XTIDE Configurator Program 31 .szTitle resb 31 ; BIOS title string 32 .szVersion resb 25 ; BIOS version string 33 34 .wFlags resb 2 ; Word for ROM flags 35 .wDisplayMode resb 2 ; Display mode for boot menu 36 .wBootTimeout resb 2 ; Boot Menu selection timeout in system timer ticks 37 .pColorTheme resb 2 ; Ptr to the color attribute struc used by the boot menu and hotkey bar 38 .bIdeCnt resb 1 ; Number of available IDE controllers 39 .bBootDrv resb 1 ; Default drive to boot from 40 .bMinFddCnt resb 1 ; Minimum number of Floppy Drives 41 .bStealSize resb 1 ; Number of 1kB blocks stolen from 640kB base RAM 42 .bIdleTimeout resb 1 ; Standby timer value 43 44 .ideVarsBegin: 45 .ideVars0 resb IDEVARS_size 46 .ideVars1 resb IDEVARS_size 47 .ideVars2 resb IDEVARS_size 48 .ideVars3 resb IDEVARS_size 49 50 %ifdef MODULE_SERIAL 51 .ideVarsSerialAuto resb IDEVARS_size 52 %endif 53 54 .ideVarsEnd: 24 25 ; Master/Slave drive specific parameters 26 struc DRVPARAMS 27 .wFlags resb 2 ; Drive flags 28 .dwMaximumLBA: ; User specified maximum number of sectors 29 .wCylinders resb 2 ; User specified cylinders (1...16383) 30 .wHeadsAndSectors: 31 .bHeads resb 1 ; User specified Heads (1...16) 32 .bSect resb 1 ; User specified Sectors per track (1...63) 55 33 endstruc 56 34 57 %ifndef CHECK_FOR_UNUSED_ENTRYPOINTS 58 %if ROMVARS.ideVarsEnd & 0xff00 <> 0 59 %error ".ideVars structures must fit within the first 256 bytes of the ROM image" 60 %endif 61 %if (ROMVARS.ideVarsEnd - ROMVARS.ideVarsBegin) = 0 62 %error "there must be at least one .ideVars structure, it would be bizarre if this were not true, but it is assumed in the ah0h reset code." 63 %endif 64 %endif 65 66 NUMBER_OF_IDEVARS EQU ((ROMVARS.ideVarsEnd - ROMVARS.ideVarsBegin) / IDEVARS_size) 67 68 ; Bit defines for ROMVARS.wFlags 69 FLG_ROMVARS_FULLMODE EQU (1<<0) ; Full operating mode (steals base RAM, supports EBIOS etc.) 70 FLG_ROMVARS_SERIAL_SCANDETECT EQU (1<<3) ; Scan COM ports at the end of drive detection. Can also be invoked 71 ; by holding down the ALT key at the end of drive detection. 72 ; (Conveniently, this is 8, a fact we exploit when testing the bit) 73 74 ; Here in case the configuration needs to know functionality is present. Note! Changing the order/location of these flags 75 ; also requires changes elsewhere as they are usually tested using byte-accesses for efficiency. 76 FLG_ROMVARS_MODULE_POWER_MANAGEMENT EQU (1<<5) 77 FLG_ROMVARS_MODULE_8BIT_IDE EQU (1<<6) 78 FLG_ROMVARS_MODULE_8BIT_IDE_ADVANCED EQU (1<<7) 79 FLG_ROMVARS_MODULE_ADVANCED_ATA EQU (1<<8) 80 FLG_ROMVARS_MODULE_BOOT_MENU EQU (1<<9) 81 FLG_ROMVARS_MODULE_EBIOS EQU (1<<10) 82 FLG_ROMVARS_MODULE_HOTKEYS EQU (1<<11) 83 FLG_ROMVARS_MODULE_IRQ EQU (1<<12) 84 FLG_ROMVARS_MODULE_SERIAL EQU (1<<13) 85 FLG_ROMVARS_MODULE_SERIAL_FLOPPY EQU (1<<14) 86 FLG_ROMVARS_MODULE_STRINGS_COMPRESSED EQU (1<<15) 87 88 89 ; Boot Menu Display Modes (see Assembly Library Display.inc for standard modes) 90 DEFAULT_TEXT_MODE EQU 4 35 ; Bit defines for DRVPARAMS.wFlags - these flags are accessed as bytes so changes here might require changes elsewhere 36 MASK_DRVPARAMS_WRITECACHE EQU (3<<0) ; Bits 0...1, Drive internal write cache settings (must start at bit 0) 37 DEFAULT_WRITE_CACHE EQU 0 ; Must be 0 38 DISABLE_WRITE_CACHE EQU 1 39 ENABLE_WRITE_CACHE EQU 2 40 MASK_DRVPARAMS_TRANSLATEMODE EQU (3<<TRANSLATEMODE_FIELD_POSITION) ; Bits 2...3, Position shared with DPT 41 TRANSLATEMODE_FIELD_POSITION EQU 2 42 TRANSLATEMODE_NORMAL EQU 0 ; Must be zero 43 TRANSLATEMODE_LARGE EQU 1 44 TRANSLATEMODE_ASSISTED_LBA EQU 2 ; 28-bit or 48-bit LBA 45 TRANSLATEMODE_AUTO EQU 3 ; Only available in ROMVARS, not in DPTs 46 FLG_DRVPARAMS_BLOCKMODE EQU (1<<4) ; Enable Block mode transfers 47 FLG_DRVPARAMS_USERCHS EQU (1<<5) ; User specified P-CHS values 48 MAX_PCHS_CYLINDERS EQU 16383 49 MAX_PCHS_HEADS EQU 16 50 MAX_PCHS_SECTORS_PER_TRACK EQU 63 51 MAX_PCHS_TOTAL_SECTOR_COUNT EQU (MAX_PCHS_CYLINDERS * MAX_PCHS_HEADS * MAX_PCHS_SECTORS_PER_TRACK) ; 16,514,064 52 FLG_DRVPARAMS_USERLBA EQU (1<<6) ; User specified LBA value 91 53 92 54 … … 173 135 XTCF_DEVICE_OFFSET EQU FIRST_XTCF_DEVICE ; Used for XT-CF device <--> mode conversion 174 136 175 ; Master/Slave drive specific parameters 176 struc DRVPARAMS 177 .wFlags resb 2 ; Drive flags 178 .dwMaximumLBA: ; User specified maximum number of sectors 179 .wCylinders resb 2 ; User specified cylinders (1...16383) 180 .wHeadsAndSectors: 181 .bHeads resb 1 ; User specified Heads (1...16) 182 .bSect resb 1 ; User specified Sectors per track (1...63) 137 138 ; ROM Variables. Written to the ROM image before flashing. 139 struc ROMVARS 140 .wRomSign resb 2 ; ROM Signature (AA55h) 141 .bRomSize resb 1 ; ROM size in 512 byte blocks 142 .rgbJump resb 3 ; First instruction to ROM init (jmp) 143 144 .rgbSign resb 8 ; Signature for XTIDE Configurator Program 145 .szTitle resb 31 ; BIOS title string 146 .szVersion resb 25 ; BIOS version string 147 148 .wFlags resb 2 ; Word for ROM flags 149 .wDisplayMode resb 2 ; Display mode for boot menu 150 .wBootTimeout resb 2 ; Boot Menu selection timeout in system timer ticks 151 .pColorTheme resb 2 ; Ptr to the color attribute struc used by the boot menu and hotkey bar 152 .bIdeCnt resb 1 ; Number of available IDE controllers 153 .bBootDrv resb 1 ; Default drive to boot from 154 .bMinFddCnt resb 1 ; Minimum number of Floppy Drives 155 .bStealSize resb 1 ; Number of 1kB blocks stolen from 640kB base RAM 156 .bIdleTimeout resb 1 ; Standby timer value 157 158 .ideVarsBegin: 159 .ideVars0 resb IDEVARS_size 160 .ideVars1 resb IDEVARS_size 161 .ideVars2 resb IDEVARS_size 162 .ideVars3 resb IDEVARS_size 163 164 %ifdef MODULE_SERIAL 165 .ideVarsSerialAuto resb IDEVARS_size 166 %endif 167 168 .ideVarsEnd: 183 169 endstruc 184 170 185 ; Bit defines for DRVPARAMS.wFlags - these flags are accessed as bytes so changes here might require changes elsewhere 186 MASK_DRVPARAMS_WRITECACHE EQU (3<<0) ; Bits 0...1, Drive internal write cache settings (must start at bit 0) 187 DEFAULT_WRITE_CACHE EQU 0 ; Must be 0 188 DISABLE_WRITE_CACHE EQU 1 189 ENABLE_WRITE_CACHE EQU 2 190 MASK_DRVPARAMS_TRANSLATEMODE EQU (3<<TRANSLATEMODE_FIELD_POSITION) ; Bits 2...3, Position shared with DPT 191 TRANSLATEMODE_FIELD_POSITION EQU 2 192 TRANSLATEMODE_NORMAL EQU 0 ; Must be zero 193 TRANSLATEMODE_LARGE EQU 1 194 TRANSLATEMODE_ASSISTED_LBA EQU 2 ; 28-bit or 48-bit LBA 195 TRANSLATEMODE_AUTO EQU 3 ; Only available in ROMVARS, not in DPTs 196 FLG_DRVPARAMS_BLOCKMODE EQU (1<<4) ; Enable Block mode transfers 197 FLG_DRVPARAMS_USERCHS EQU (1<<5) ; User specified P-CHS values 198 MAX_PCHS_CYLINDERS EQU 16383 199 MAX_PCHS_HEADS EQU 16 200 MAX_PCHS_SECTORS_PER_TRACK EQU 63 201 MAX_PCHS_TOTAL_SECTOR_COUNT EQU (MAX_PCHS_CYLINDERS * MAX_PCHS_HEADS * MAX_PCHS_SECTORS_PER_TRACK) ; 16,514,064 202 FLG_DRVPARAMS_USERLBA EQU (1<<6) ; User specified LBA value 171 %ifndef CHECK_FOR_UNUSED_ENTRYPOINTS 172 %if ROMVARS.ideVarsEnd & 0xff00 <> 0 173 %error ".ideVars structures must fit within the first 256 bytes of the ROM image" 174 %endif 175 %if (ROMVARS.ideVarsEnd - ROMVARS.ideVarsBegin) = 0 176 %error "there must be at least one .ideVars structure, it would be bizarre if this were not true, but it is assumed in the ah0h reset code." 177 %endif 178 %endif 179 180 NUMBER_OF_IDEVARS EQU ((ROMVARS.ideVarsEnd - ROMVARS.ideVarsBegin) / IDEVARS_size) 181 182 ; Bit defines for ROMVARS.wFlags 183 FLG_ROMVARS_FULLMODE EQU (1<<0) ; Full operating mode (steals base RAM, supports EBIOS etc.) 184 FLG_ROMVARS_IGNORE_MOTHERBOARD_DRIVES EQU (1<<1) ; Ignores drives configured in motherboard BIOS setup. 185 ; For now it is a hack to get Windows 95 IDE drivers working 186 ; but it will be needed later when XTUB supports dynamic drive overlay. 187 ; Because of that this must be included into AT builds and cannot be a 188 ; module (any AT or 386 must be installable to the hard drive so 189 ; there won't be need for even more different builds). 190 FLG_ROMVARS_SERIAL_SCANDETECT EQU (1<<3) ; Scan COM ports at the end of drive detection. Can also be invoked 191 ; by holding down the ALT key at the end of drive detection. 192 ; (Conveniently, this is 8, a fact we exploit when testing the bit) 193 194 ; Here in case the configuration needs to know functionality is present. Note! Changing the order/location of these flags 195 ; also requires changes elsewhere as they are usually tested using byte-accesses for efficiency. 196 FLG_ROMVARS_MODULE_POWER_MANAGEMENT EQU (1<<5) 197 FLG_ROMVARS_MODULE_8BIT_IDE EQU (1<<6) 198 FLG_ROMVARS_MODULE_8BIT_IDE_ADVANCED EQU (1<<7) 199 FLG_ROMVARS_MODULE_ADVANCED_ATA EQU (1<<8) 200 FLG_ROMVARS_MODULE_BOOT_MENU EQU (1<<9) 201 FLG_ROMVARS_MODULE_EBIOS EQU (1<<10) 202 FLG_ROMVARS_MODULE_HOTKEYS EQU (1<<11) 203 FLG_ROMVARS_MODULE_IRQ EQU (1<<12) 204 FLG_ROMVARS_MODULE_SERIAL EQU (1<<13) 205 FLG_ROMVARS_MODULE_SERIAL_FLOPPY EQU (1<<14) 206 FLG_ROMVARS_MODULE_STRINGS_COMPRESSED EQU (1<<15) 207 208 209 ; Boot Menu Display Modes (see Assembly Library Display.inc for standard modes) 210 DEFAULT_TEXT_MODE EQU 4 211 203 212 204 213 %endif ; ROMVARS_INC
Note:
See TracChangeset
for help on using the changeset viewer.