Changeset 95 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src
- Timestamp:
- Jan 28, 2011, 11:55:34 AM (14 years ago)
- google:author:
- aitotat
- Location:
- trunk/XTIDE_Universal_BIOS/Src
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS/Src/Boot/BootMenu.asm
r93 r95 12 12 ; DS: RAMVARS segment 13 13 ; Returns: 14 ; DX: Untranslated drive number to be used for booting (if CF cleared) 15 ; Function number (if CF set) 16 ; CF: Cleared if drive selected 17 ; Set if function selected 14 ; DX: Untranslated drive number to be used for booting 18 15 ; Corrupts registers: 19 16 ; All General Purpose Registers … … 26 23 call BootMenuPrint_ClearScreen 27 24 cmp cx, BYTE NO_ITEM_SELECTED 28 je SHORT BootMenu_DisplayAndReturnSelection 25 je SHORT BootMenu_DisplayAndReturnSelection ; Clear screen and display menu 29 26 jmp SHORT BootMenu_ConvertMenuitemFromCXtoDriveInDX 30 27 -
trunk/XTIDE_Universal_BIOS/Src/Boot/BootMenuEvent.asm
r93 r95 108 108 cmp ah, ROM_BOOT_HOTKEY_SCANCODE 109 109 jne SHORT .CheckDriveHotkeys 110 int INTV_BOOT_FAILURE ; ROM Boot, never returns110 jmp Int19hMenu_RomBoot 111 111 ALIGN JUMP_ALIGN 112 112 .CheckDriveHotkeys: -
trunk/XTIDE_Universal_BIOS/Src/Boot/BootPrint.asm
r88 r95 20 20 mov bp, sp 21 21 22 mov ax, g_szH ardDrv22 mov ax, g_szHDD 23 23 test dl, 80h 24 eCMOVZ ax, g_szF loppyDrv25 push ax ; "Hard Drive" or "Floppy Drive"24 eCMOVZ ax, g_szFDD 25 push ax 26 26 27 27 call DriveXlate_ToOrBack … … 35 35 36 36 ;-------------------------------------------------------------------- 37 ; BootPrint_BootSector Loaded37 ; BootPrint_BootSectorResultStringFromBX 38 38 ; Parameters: 39 ; Nothing39 ; CS:BX: Ptr to "found" or "not found" 40 40 ; Returns: 41 41 ; Nothing … … 44 44 ;-------------------------------------------------------------------- 45 45 ALIGN JUMP_ALIGN 46 BootPrint_BootSector Loaded:46 BootPrint_BootSectorResultStringFromBX: 47 47 push bp 48 48 mov bp, sp 49 49 ePUSH_T ax, g_szBootSector 50 ePUSH_T ax, g_szFound 51 jmp SHORT PrintBootSectorResult 52 53 ;-------------------------------------------------------------------- 54 ; BootPrint_FirstSectorNotBootable 55 ; Parameters: 56 ; Nothing 57 ; Returns: 58 ; Nothing 59 ; Corrupts registers: 60 ; AX, SI 61 ;-------------------------------------------------------------------- 62 ALIGN JUMP_ALIGN 63 BootPrint_FirstSectorNotBootable: 64 push bp 65 mov bp, sp 66 ePUSH_T ax, g_szBootSector 67 ePUSH_T ax, g_szNotFound 68 PrintBootSectorResult: 50 push bx ; "found" or "not found" 69 51 mov si, g_szSectRead 70 52 jmp BootMenuPrint_FormatCSSIfromParamsInSSBP … … 78 60 ; Nothing 79 61 ; Corrupts registers: 80 ; AX, CX, SI62 ; AX, BX, SI 81 63 ;-------------------------------------------------------------------- 82 64 ALIGN JUMP_ALIGN … … 84 66 push bp 85 67 mov bp, sp 86 eMOVZX cx, ah ; Error code to CX87 push cx ; Push INT 13h error code68 eMOVZX bx, ah 69 push bx ; Push INT 13h error code 88 70 mov si, g_szReadError 89 71 jmp BootMenuPrint_FormatCSSIfromParamsInSSBP -
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 -
trunk/XTIDE_Universal_BIOS/Src/Strings.asm
r92 r95 13 13 14 14 ; Boot loader strings 15 g_szFloppyDrv: db "Floppy Drive",NULL 16 g_szHardDrv: db " Hard Drive ",NULL 17 g_szTryToBoot: db "Booting from %s %x",ANGLE_QUOTE_RIGHT,"%x ... ",NULL 18 g_szBootSector: db "Boot Sector",NULL 15 g_szTryToBoot: db "Booting from %s %x",ANGLE_QUOTE_RIGHT,"%x",CR,LF,NULL 16 g_szBootSector: db "Boot sector",NULL 19 17 g_szFound: db "found",NULL 20 18 g_szSectRead: db "%s %s!",CR,LF,NULL … … 30 28 ; Boot Menu menuitem strings 31 29 g_szFDLetter: db "%s %c",NULL 30 g_szFloppyDrv: db "Floppy Drive",NULL 32 31 g_szforeignHD: db "Foreign Hard Disk",NULL 33 32
Note:
See TracChangeset
for help on using the changeset viewer.