Changeset 595 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src
- Timestamp:
- Jul 7, 2018, 9:53:24 AM (6 years ago)
- Location:
- trunk/XTIDE_Universal_BIOS/Src/Handlers
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13hBiosInit.asm
r566 r595 21 21 ; Section containing code 22 22 SECTION .text 23 24 TEMPORARY_VECTOR_FOR_SYSTEM_INT13h EQU 32h ; Unused by BIOS25 23 26 24 -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int19h.asm
r593 r595 200 200 %endif 201 201 clc 202 ;; fall through to Int19 _JumpToBootSectorOrRomBoot203 204 ;-------------------------------------------------------------------- 205 ; Int19 _JumpToBootSectorOrRomBoot202 ;; fall through to Int19h_JumpToBootSectorOrRomBoot 203 204 ;-------------------------------------------------------------------- 205 ; Int19h_JumpToBootSectorOrRomBoot 206 206 ; 207 207 ; Switches back to the POST stack, clears the DS and ES registers, … … 213 213 ; CF: Set for Boot Sector Boot 214 214 ; Clear for ROM Boot 215 ; ES:BX: (if CF set) Ptr to boot sector 215 ; ES:BX: (if CF set) Ptr to boot sector (ES = zero) 216 216 ; 217 217 ; Returns: 218 218 ; Never returns 219 219 ;-------------------------------------------------------------------- 220 Int19 _JumpToBootSectorOrRomBoot:221 mov cx, es ; Preserve MBR segment (can't push because of stack change)222 mov ax, 0; NOTE: can't use XOR (LOAD_BDA_SEGMENT_TO) as it impacts CF220 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 223 223 SWITCH_BACK_TO_POST_STACK 224 224 225 225 ; clear segment registers before boot sector or rom call 226 226 mov ds, ax 227 mov es, ax228 227 %ifdef USE_386 229 228 mov fs, ax … … 233 232 234 233 ; jump to boot sector 235 push cx ; sgment address for MBR234 push ax ; sgment address for MBR 236 235 push bx ; offset address for MBR 237 236 retf ; NOTE: DL is set to the drive number -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int19h/BootSector.asm
r568 r595 35 35 BootSector_TryToLoadFromDriveDL_AndBoot: 36 36 call DetectPrint_TryToBootFromDL 37 call LoadFirstSectorFromDriveDL37 call BootSector_LoadFirstSectorFromDriveDL 38 38 jnc SHORT .FirstSectorLoadedToESBX 39 39 … … 60 60 .AlwaysBootFromFloppyDriveForBooterGames: 61 61 stc ; Boot Sector loaded successfully 62 jmp SHORT Int19 _JumpToBootSectorOrRomBoot62 jmp SHORT Int19h_JumpToBootSectorOrRomBoot 63 63 64 64 .FirstHardDiskSectorNotBootable: … … 71 71 72 72 ;-------------------------------------------------------------------- 73 ; LoadFirstSectorFromDriveDL73 ; BootSector_LoadFirstSectorFromDriveDL 74 74 ; Parameters: 75 75 ; DL: Drive to boot from (translated, 00h or 80h) … … 82 82 ; AL, CX, DH, DI 83 83 ;-------------------------------------------------------------------- 84 LoadFirstSectorFromDriveDL:84 BootSector_LoadFirstSectorFromDriveDL: 85 85 LOAD_BDA_SEGMENT_TO es, bx ; ES:BX now points to... 86 86 mov bx, BOOTVARS.rgbBootSect ; ...boot sector location -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int19h/Int19hReset.asm
r526 r595 32 32 ;-------------------------------------------------------------------- 33 33 Int19hReset_Handler: 34 ; Try to boot from drive A. 35 ; This is needed if INT 19h is used to launch booter games while 36 ; preserving interrupt vector table (for example to hook interrupt 10h) 37 xor dx, dx ; Drive 00h 38 call BootSector_LoadFirstSectorFromDriveDL 39 jc SHORT .Reboot 40 41 xor ax, ax 42 mov ds, ax 43 %ifdef USE_386 44 mov fs, ax 45 mov gs, ax 46 %endif 47 cmp WORD [bx+510], 0AA55h ; Valid boot sector? 48 jne SHORT .Reboot 49 push es ; Zero 50 push bx 51 retf 52 53 ; Do warm reset since boot from floppy drive failed 54 .Reboot: 34 55 mov ax, BOOT_FLAG_WARM ; Skip memory tests 35 56 jmp Reboot_ComputerWithBootFlagInAX
Note:
See TracChangeset
for help on using the changeset viewer.