- Timestamp:
- Jul 11, 2018, 9:44:43 AM (6 years ago)
- Location:
- trunk
- Files:
-
- 1 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int19h.asm
r596 r597 199 199 call DriveXlate_Reset ; Clean up any drive mappings before Rom Boot 200 200 %endif 201 clc202 ;; fall through to Int19h_JumpToBootSector OrRomBoot203 204 ;-------------------------------------------------------------------- 205 ; Int19h_JumpToBootSector OrRomBoot201 stc 202 ;; fall through to Int19h_JumpToBootSectorInESBXOrRomBoot 203 204 ;-------------------------------------------------------------------- 205 ; Int19h_JumpToBootSectorInESBXOrRomBoot 206 206 ; 207 207 ; Switches back to the POST stack, clears the DS and ES registers, … … 211 211 ; Parameters: 212 212 ; DL: Drive to boot from (translated, 00h or 80h) 213 ; CF: Setfor Boot Sector Boot214 ; Clearfor ROM Boot215 ; ES:BX: (if CF set) Ptr to boot sector (ES = zero)213 ; CF: Clear for Boot Sector Boot 214 ; Set for ROM Boot 215 ; ES:BX: (if CF clear) Ptr to boot sector (ES = zero) 216 216 ; 217 217 ; Returns: 218 218 ; Never returns 219 219 ;-------------------------------------------------------------------- 220 Int19h_JumpToBootSectorOrRomBoot: 221 mov ax, es ; Preserve MBR segment (can't push because of stack change) 222 ; NOTE: can't use XOR (LOAD_BDA_SEGMENT_TO) as it impacts CF 220 Int19h_JumpToBootSectorInESBXOrRomBoot: 221 mov ax, es ; Clear AX. NOTE: can't use XOR (LOAD_BDA_SEGMENT_TO) as it impacts CF 223 222 SWITCH_BACK_TO_POST_STACK 224 223 225 224 ; clear segment registers before boot sector or rom call 225 Int19h_JumpToBootSectorInESBXOrRomBootWithoutStackChange: 226 mov ax, es ; Clear AX and preserve CF 226 227 mov ds, ax 227 228 %ifdef USE_386 … … 229 230 mov gs, ax 230 231 %endif 231 j nc SHORT .RomBoot232 jc SHORT .RomBoot 232 233 233 234 ; jump to boot sector 234 push ax; sgment address for MBR235 push es ; sgment address for MBR 235 236 push bx ; offset address for MBR 236 237 retf ; NOTE: DL is set to the drive number -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int19h/BootSector.asm
r595 r597 59 59 jne SHORT .FirstHardDiskSectorNotBootable 60 60 .AlwaysBootFromFloppyDriveForBooterGames: 61 stc ; Boot Sector loaded successfully62 jmp SHORT Int19h_JumpToBootSector OrRomBoot61 clc ; Boot Sector loaded successfully 62 jmp SHORT Int19h_JumpToBootSectorInESBXOrRomBoot 63 63 64 64 .FirstHardDiskSectorNotBootable: -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int19h/Int19hReset.asm
r595 r597 38 38 call BootSector_LoadFirstSectorFromDriveDL 39 39 jc SHORT .Reboot 40 41 xor ax, ax42 mov ds, ax43 %ifdef USE_38644 mov fs, ax45 mov gs, ax46 %endif47 40 cmp WORD [bx+510], 0AA55h ; Valid boot sector? 48 jne SHORT .Reboot 49 push es ; Zero 50 push bx 51 retf 41 je SHORT Int19h_JumpToBootSectorInESBXOrRomBootWithoutStackChange 52 42 53 43 ; Do warm reset since boot from floppy drive failed -
trunk/XTIDE_Universal_BIOS/Src/Initialization/DetectDrives.asm
r596 r597 118 118 jnz SHORT .ClearBdaDriveCount ; Unsupported BIOS, use plan B 119 119 120 ; Now we can alter CMOS location 12h 120 ; Now we can alter CMOS location 12h. Important! We set type for drive 1 121 ; (primary slave) and not for drive 0! Award BIOS locks if we set drive 0 type to Fh. 122 ; We cannot set it to less either since that will fully set predefined hard drive type to the BIOS. 123 ; Windows 95 only cares that the CMOS location 12h is non-zero. 121 124 mov dl, HARD_DISK_TYPES 122 mov al, 0F 0h ; Drive 0 type 16...47 but Windows doesn't care as long as this is not zero125 mov al, 0Fh ; Drive 1 type 16...47 (defined elsewhere in the CMOS) 123 126 call CMOS_WriteALtoIndexInDL 124 127 call CMOS_StoreNewChecksumFor10hto2Dh -
trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/BootMenuSettingsMenu.asm
r592 r597 26 26 at MENUPAGE.fnEnter, dw BootMenuSettingsMenu_EnterMenuOrModifyItemVisibility 27 27 at MENUPAGE.fnBack, dw ConfigurationMenu_EnterMenuOrModifyItemVisibility 28 at MENUPAGE.wMenuitems, dw 728 at MENUPAGE.wMenuitems, dw 8 29 29 iend 30 30 … … 134 134 at MENUITEM.itemValue + ITEM_VALUE.wMaxValue, dw 1092 135 135 iend 136 137 g_MenuitemBootMnuStngsClearBdaDriveCount: 138 istruc MENUITEM 139 at MENUITEM.fnActivate, dw Menuitem_ActivateMultichoiceSelectionForMenuitemInDSSI 140 at MENUITEM.fnFormatValue, dw MenuitemPrint_WriteLookupValueStringToBufferInESDIfromShiftedItemInDSSI 141 at MENUITEM.szName, dw g_szItemClearBdaDriveCount 142 at MENUITEM.szQuickInfo, dw g_szNfoClearBdaDriveCount 143 at MENUITEM.szHelp, dw g_szHelpClearBdaDriveCount 144 at MENUITEM.bFlags, db FLG_MENUITEM_FLAGVALUE 145 at MENUITEM.bType, db TYPE_MENUITEM_MULTICHOICE 146 at MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset, dw ROMVARS.wFlags 147 at MENUITEM.itemValue + ITEM_VALUE.szDialogTitle, dw g_szDlgClearBdaDriveCount 148 at MENUITEM.itemValue + ITEM_VALUE.szMultichoice, dw g_szMultichoiceBooleanFlag 149 at MENUITEM.itemValue + ITEM_VALUE.rgszValueToStringLookup, dw g_rgszValueToStringLookupForFlagBooleans 150 at MENUITEM.itemValue + ITEM_VALUE.wValueBitmask, dw FLG_ROMVARS_IGNORE_MOTHERBOARD_DRIVES 151 iend 152 136 153 137 154 g_rgwChoiceToValueLookupForDisplayModes: … … 241 258 call .EnableOrDisableColorThemeSelection 242 259 call .EnableOrDisableBootMenuSelectionTimeout 260 call .EnableOrDisableClearBdaDriveCount 243 261 mov si, g_MenupageForBootMenuSettingsMenu 244 262 jmp Menupage_ChangeToNewMenupageInDSSI … … 310 328 mov bx, g_MenuitemBootMnuStngsSelectionTimeout 311 329 test ax, FLG_ROMVARS_MODULE_BOOT_MENU 330 jmp SHORT .DisableMenuitemFromCSBXifZFset 331 332 333 ;-------------------------------------------------------------------- 334 ; .EnableOrDisableClearBdaDriveCount 335 ; Parameters: 336 ; AX: ROMVARS.wFlags 337 ; SS:BP: Menu handle 338 ; Returns: 339 ; Nothing 340 ; Corrupts registers: 341 ; BX 342 ;-------------------------------------------------------------------- 343 ALIGN JUMP_ALIGN 344 .EnableOrDisableClearBdaDriveCount: 345 mov bx, g_MenuitemBootMnuStngsClearBdaDriveCount 346 call Buffers_IsXTbuildLoaded 312 347 .DisableMenuitemFromCSBXifZFset: 313 348 jz SHORT .DisableMenuitemFromCSBX -
trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Strings.asm
r592 r597 426 426 g_szItemBootFloppyDrvs: db "Number of Floppy Drives",NULL 427 427 g_szItemSerialDetect: db "Scan for Serial Drives",NULL 428 g_szItemClearBdaDriveCount: db "Remove other hard drives",NULL 428 429 429 430 g_szDlgBootTimeout: db "Enter Boot Menu selection timeout in BIOS timer ticks (2...1092).",NULL … … 433 434 g_szDlgBootFloppyDrvs: db "Select number of Floppy Drives in system.",NULL 434 435 g_szDlgSerialDetect: db "Scan for serial drives?",NULL 436 g_szDlgClearBdaDriveCount: db "Remove existing INT 13h hard drives during drive detection?",NULL 435 437 436 438 g_szNfoBootTimeout: db "Menu item selection timeout in BIOS timer ticks. 1 tick = 54.9 ms.",NULL … … 441 443 g_szNfoSerialDetect: db "Scans all standard COM ports for serial drives." 442 444 db " This can also be invoked by holding down ALT at the end of normal drive detection.",NULL 445 g_szNfoClearBdaDriveCount: db "Can be used to remove duplicate hard drives.",NULL 443 446 444 447 g_szHelpBootTimeout: db "Boot Menu selection timeout in BIOS timer ticks (1 second = 18.2 ticks)." … … 460 463 db " of normal drive detection. Note that if any serial drives are detected during the normal drive detection," 461 464 db " no scan will take place (to avoid finding the same drive twice).",NULL 465 g_szHelpClearBdaDriveCount: db "Set to NO for normal operation. Set to YES to get Windows 95 drivers to work when " 466 db "MODULE_WIN95_CMOS_HACK is not included (dummy drive needs to be defined in system BIOS setup).",NULL 462 467 463 468 g_szMultichoiceBootDispMode: db "Default",LF
Note:
See TracChangeset
for help on using the changeset viewer.