Changeset 95 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src/Handlers
- Timestamp:
- Jan 28, 2011, 11:55:34 AM (14 years ago)
- google:author:
- aitotat
- Location:
- trunk/XTIDE_Universal_BIOS/Src/Handlers
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int19h.asm
r90 r95 25 25 Int19h_TryToLoadBootSectorFromDL: 26 26 call BootPrint_TryToBootFromDL 27 call Int19h_LoadFirstSectorFromDL27 call LoadFirstSectorFromDriveDL 28 28 jc SHORT .FailedToLoadFirstSector 29 29 … … 33 33 jne SHORT .FirstHardDiskSectorNotBootable 34 34 .AlwaysBootFromFloppyDriveForBooterGames: 35 call BootPrint_BootSectorLoaded 35 mov bx, g_szFound 36 call BootPrint_BootSectorResultStringFromBX 36 37 stc 37 38 ret … … 41 42 ret 42 43 .FirstHardDiskSectorNotBootable: 43 call BootPrint_FirstSectorNotBootable 44 mov bx, g_szNotFound 45 call BootPrint_BootSectorResultStringFromBX 44 46 clc 45 47 ret 46 48 47 49 ;-------------------------------------------------------------------- 48 ; Reads first sector (boot sector) from drive DL. 49 ; 50 ; Int19h_LoadFirstSectorFromDL 50 ; LoadFirstSectorFromDriveDL 51 51 ; Parameters: 52 52 ; DL: Drive to boot from (translated, 00h or 80h) … … 60 60 ;-------------------------------------------------------------------- 61 61 ALIGN JUMP_ALIGN 62 Int19h_LoadFirstSectorFromDL:62 LoadFirstSectorFromDriveDL: 63 63 LOAD_BDA_SEGMENT_TO es, bx ; ES:BX now points to... 64 64 mov bx, BOOTVARS.rgbBootSect ; ...boot sector location 65 mov di, B_READ_RETRY_TIMES ; Retry counter65 mov di, B_READ_RETRY_TIMES ; Initialize retry counter 66 66 ALIGN JUMP_ALIGN 67 67 .ReadRetryLoop: … … 90 90 xor ax, ax ; AH=0h, Disk Controller Reset 91 91 test dl, 80h ; Floppy drive? 92 jz SHORT .ResetDriveFromDL ; If so, jump to reset 93 mov ah, 0Dh ; AH=Dh, Reset Hard Disk (Alternate reset) 94 .ResetDriveFromDL: 92 eCMOVNZ ah, 0Dh ; AH=Dh, Reset Hard Disk (Alternate reset) 95 93 int INTV_DISK_FUNC 96 94 ret … … 155 153 mov es, ax 156 154 ret 157 158 159 ;--------------------------------------------------------------------160 ; Calls INT 18h (ROM Basic or Boot Failure). Called after booting from161 ; floppy drive or hard disk fails.162 ;163 ; Int19h_BootFailure164 ; Parameters:165 ; Nothing166 ; Returns:167 ; Should never return (but might)168 ;--------------------------------------------------------------------169 ALIGN JUMP_ALIGN170 Int19h_BootFailure:171 call Int19h_ClearSegmentsForBoot172 int INTV_BOOT_FAILURE173 ret -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int19hMenu.asm
r90 r95 53 53 ALIGN JUMP_ALIGN 54 54 Int19hMenu_ProcessMenuSelectionsUntilBootable: 55 call Int19hMenu_GetDriveOrFunctionFromBootMenu56 jc SHORT Int19hMenu_ExecuteSelectedFunction55 call BootMenu_DisplayAndReturnSelection 56 call DriveXlate_ToOrBack ; Translate drive number 57 57 call Int19h_TryToLoadBootSectorFromDL 58 jnc SHORT Int19hMenu_ProcessMenuSelectionsUntilBootable ; Boot failure 58 jnc SHORT Int19hMenu_ProcessMenuSelectionsUntilBootable ; Boot failure, show menu again 59 59 call BootVars_SwitchBackToPostStack 60 jmp SHORTInt19h_JumpToBootSector60 jmp Int19h_JumpToBootSector 61 61 62 62 63 63 ;-------------------------------------------------------------------- 64 ; Selects Floppy or Hard Disk Drive to boot from or some function. 65 ; 66 ; Int19hMenu_GetDriveOrFunctionFromBootMenu 64 ; Int19hMenu_RomBoot 67 65 ; Parameters: 68 66 ; DS: RAMVARS segment 69 67 ; Returns: 70 ; DX: Drive number (translated, 00h or 80h) or 71 ; Function ID 72 ; CF: Cleared if drive selected 73 ; Set if function selected 74 ; Corrupts registers: 75 ; All non segment regs 68 ; Never returns 76 69 ;-------------------------------------------------------------------- 77 70 ALIGN JUMP_ALIGN 78 Int19hMenu_GetDriveOrFunctionFromBootMenu: 79 call BootMenu_DisplayAndReturnSelection 80 jc SHORT .ReturnFunction 81 call DriveXlate_ToOrBack ; Translate drive number 82 clc 83 ALIGN JUMP_ALIGN 84 .ReturnFunction: 85 ret 86 87 88 ;-------------------------------------------------------------------- 89 ; Executes any function (non-drive) selected from Boot Menu. 90 ; 91 ; Int19hMenu_ExecuteSelectedFunction 92 ; Parameters: 93 ; DX: Function ID (selected from Boot Menu) 94 ; DS: RAMVARS segment 95 ; Returns: 96 ; Nothing 97 ; Corrupts registers: 98 ; All non segment regs 99 ;-------------------------------------------------------------------- 100 ALIGN JUMP_ALIGN 101 Int19hMenu_ExecuteSelectedFunction: 102 ePUSH_T ax, Int19hMenu_ProcessMenuSelectionsUntilBootable 103 test dx, dx ; 0, IDF_BOOTMNU_ROM 104 jz SHORT .Int18hRomBoot 105 ret 106 ALIGN JUMP_ALIGN 107 .Int18hRomBoot: 71 Int19hMenu_RomBoot: 108 72 call BootVars_SwitchBackToPostStack 109 jmp Int19h_BootFailure ; Never returns 73 call Int19h_ClearSegmentsForBoot 74 int INTV_BOOT_FAILURE ; Never returns
Note:
See TracChangeset
for help on using the changeset viewer.