Changeset 597 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS
- Timestamp:
- Jul 11, 2018, 9:44:43 AM (6 years ago)
- Location:
- trunk/XTIDE_Universal_BIOS/Src
- Files:
-
- 4 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
Note:
See TracChangeset
for help on using the changeset viewer.