Changeset 96 in xtideuniversalbios
- Timestamp:
- Jan 28, 2011, 4:29:42 PM (14 years ago)
- google:author:
- aitotat
- Location:
- trunk/XTIDE_Universal_BIOS
- Files:
-
- 1 added
- 1 deleted
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS/Inc/BootVars.inc
r90 r96 4 4 %ifndef BOOTVARS_INC 5 5 %define BOOTVARS_INC 6 7 8 BOOT_READ_RETRY_TIMES EQU 3 6 9 7 10 -
trunk/XTIDE_Universal_BIOS/Src/Boot/BootMenuPrint.asm
r92 r96 19 19 BootMenuPrint_TitleStrings: 20 20 mov si, ROMVARS.szTitle 21 call PrintNullTerminatedStringFromCSSIandSetCF22 call BootMenuPrint_Newline21 call BootMenuPrint_NullTerminatedStringFromCSSIandSetCF 22 CALL_DISPLAY_LIBRARY PrintNewlineCharacters 23 23 mov si, ROMVARS.szVersion 24 jmp PrintNullTerminatedStringFromCSSIandSetCF25 26 27 ;-------------------------------------------------------------------- 28 ; BootMenuPrint_ Newline24 jmp BootMenuPrint_NullTerminatedStringFromCSSIandSetCF 25 26 27 ;-------------------------------------------------------------------- 28 ; BootMenuPrint_ClearScreen 29 29 ; Parameters: 30 30 ; Nothing … … 35 35 ;-------------------------------------------------------------------- 36 36 ALIGN JUMP_ALIGN 37 BootMenuPrint_Newline:38 CALL_DISPLAY_LIBRARY PrintNewlineCharacters39 ret40 41 42 ;--------------------------------------------------------------------43 ; BootMenuPrint_ClearScreen44 ; Parameters:45 ; Nothing46 ; Returns:47 ; Nothing48 ; Corrupts registers:49 ; AX50 ;--------------------------------------------------------------------51 ALIGN JUMP_ALIGN52 37 BootMenuPrint_ClearScreen: 53 push di54 38 mov ax, ' ' | (MONO_NORMAL<<8) 55 39 CALL_DISPLAY_LIBRARY ClearScreenWithCharInALandAttrInAH 56 pop di57 ret58 59 60 ;--------------------------------------------------------------------61 ; Translates and prints drive number.62 ;63 ; BootMenuPrint_TranslatedDriveNumber64 ; Parameters:65 ; DL: Untranslated drive number66 ; DS: RAMVARS segment67 ; Returns:68 ; Nothing69 ; Corrupts registers:70 ; AX, DI71 ;--------------------------------------------------------------------72 ALIGN JUMP_ALIGN73 BootMenuPrint_TranslatedDriveNumber:74 push dx75 push bx76 77 call DriveXlate_ToOrBack78 eMOVZX ax, dl ; Drive number to AL79 CALL_DISPLAY_LIBRARY PrintWordFromAXwithBaseInBX80 mov al, ' ' ; Print space81 CALL_DISPLAY_LIBRARY PrintCharacterFromAL82 83 pop bx84 pop dx85 40 ret 86 41 … … 155 110 .HardDiskMenuitemForForeignDrive: 156 111 mov si, g_szforeignHD 157 jmp PrintNullTerminatedStringFromCSSIandSetCF112 jmp BootMenuPrint_NullTerminatedStringFromCSSIandSetCF 158 113 159 114 … … 365 320 366 321 ;-------------------------------------------------------------------- 367 ; PrintNullTerminatedStringFromCSSIandSetCF322 ; BootMenuPrint_NullTerminatedStringFromCSSIandSetCF 368 323 ; Parameters: 369 324 ; CS:SI: Ptr to NULL terminated string to print … … 374 329 ;-------------------------------------------------------------------- 375 330 ALIGN JUMP_ALIGN 376 PrintNullTerminatedStringFromCSSIandSetCF:331 BootMenuPrint_NullTerminatedStringFromCSSIandSetCF: 377 332 CALL_DISPLAY_LIBRARY PrintNullTerminatedStringFromCSSI 378 333 stc -
trunk/XTIDE_Universal_BIOS/Src/Boot/BootMenuPrintCfg.asm
r88 r96 20 20 ALIGN JUMP_ALIGN 21 21 BootMenuPrintCfg_ForOurDrive: 22 call BootMenuPrintCfg_HeaderAndChangeLine 22 mov si, g_szCfgHeader 23 call BootMenuPrint_NullTerminatedStringFromCSSIandSetCF 23 24 call BootMenuPrintCfg_GetPointers 24 call BootMenuPrintCfg_PushAndFormatCfgString 25 jmp BootMenuPrint_Newline 25 ; Fall to PushAndFormatCfgString 26 26 27 27 28 28 ;-------------------------------------------------------------------- 29 ; Prints configuration header and changes for printing values. 30 ; 31 ; BootMenuPrintCfg_HeaderAndChangeLine 32 ; Parameters: 33 ; Nothing 34 ; Returns: 35 ; Nothing 36 ; Corrupts registers: 37 ; AX, SI, DI 38 ;-------------------------------------------------------------------- 39 ALIGN JUMP_ALIGN 40 BootMenuPrintCfg_HeaderAndChangeLine: 41 mov si, g_szCfgHeader 42 call PrintNullTerminatedStringFromCSSIandSetCF 43 jmp BootMenuPrint_Newline 44 45 46 ;-------------------------------------------------------------------- 47 ; Return all necessary pointers to drive information structs. 48 ; 49 ; BootMenuPrintCfg_GetPointers 50 ; Parameters: 51 ; DS:DI: Ptr to DPT 52 ; Returns: 53 ; DS:DI: Ptr to DPT 54 ; ES:BX: Ptr to BOOTNFO 55 ; CS:SI: Ptr to IDEVARS 56 ; Corrupts registers: 57 ; AX, DL 58 ;-------------------------------------------------------------------- 59 ALIGN JUMP_ALIGN 60 BootMenuPrintCfg_GetPointers: 61 mov dl, [di+DPT.bDrvNum] ; Load Drive number to DL 62 call BootInfo_GetOffsetToBX ; ES:BX now points... 63 LOAD_BDA_SEGMENT_TO es, ax ; ...to BOOTNFO 64 mov al, [di+DPT.bIdeOff] 65 xchg si, ax ; CS:SI now points to IDEVARS 66 ret 67 68 69 ;-------------------------------------------------------------------- 70 ; Pushes all string formatting parameters and prints 71 ; formatted configuration string. 72 ; 73 ; BootMenuPrintCfg_PushAndFormatCfgString 29 ; PushAndFormatCfgString 74 30 ; Parameters: 75 31 ; DS:DI: Ptr to DPT … … 82 38 ;-------------------------------------------------------------------- 83 39 ALIGN JUMP_ALIGN 84 BootMenuPrintCfg_PushAndFormatCfgString:40 PushAndFormatCfgString: 85 41 push bp 86 87 42 mov bp, sp 88 43 ; Fall to first push below … … 97 52 ; Nothing (jumps to next push below) 98 53 ; Corrupts registers: 99 ; AX , DX54 ; AX 100 55 ;-------------------------------------------------------------------- 101 56 PushAddressingMode: 102 mov dx, bx ; Backup BX to DX57 xchg ax, bx 103 58 mov bx, MASK_DPT_ADDR ; Load addressing mode mask 104 59 and bl, [di+DPT.bFlags] ; Addressing mode now in BX 105 60 push WORD [cs:bx+.rgszAddressingModeString] 106 mov bx, dx61 xchg bx, ax 107 62 jmp SHORT .NextPush 108 63 ALIGN WORD_ALIGN … … 208 163 209 164 ;-------------------------------------------------------------------- 210 ; Prints formatted configuration string from parameters pushed to stack. 211 ; 212 ; BootMenuPrintCfg_ValuesFromStack 165 ; PrintValuesFromStack 213 166 ; Parameters: 214 167 ; Stack: All formatting parameters … … 218 171 ; AX, SI, DI 219 172 ;-------------------------------------------------------------------- 220 BootMenuPrintCfg_ValuesFromStack:173 PrintValuesFromStack: 221 174 mov si, g_szCfgFormat 222 jmp PrintNullTerminatedStringFromCSSIandSetCF 175 jmp BootMenuPrint_NullTerminatedStringFromCSSIandSetCF 176 177 178 ;-------------------------------------------------------------------- 179 ; BootMenuPrintCfg_GetPointers 180 ; Parameters: 181 ; DS:DI: Ptr to DPT 182 ; Returns: 183 ; DS:DI: Ptr to DPT 184 ; ES:BX: Ptr to BOOTNFO 185 ; CS:SI: Ptr to IDEVARS 186 ; Corrupts registers: 187 ; AX, DL 188 ;-------------------------------------------------------------------- 189 ALIGN JUMP_ALIGN 190 BootMenuPrintCfg_GetPointers: 191 mov dl, [di+DPT.bDrvNum] ; Load Drive number to DL 192 call BootInfo_GetOffsetToBX ; ES:BX now points... 193 LOAD_BDA_SEGMENT_TO es, ax ; ...to BOOTNFO 194 mov al, [di+DPT.bIdeOff] 195 xchg si, ax ; CS:SI now points to IDEVARS 196 ret -
trunk/XTIDE_Universal_BIOS/Src/Boot/BootVars.asm
r90 r96 62 62 cli ; Disable interrupts 63 63 LOAD_BDA_SEGMENT_TO ss, sp 64 ; eLSS sp, ss:BOOTVARS.dwPostStack ; Expanded macro to remove65 ; unneeded CLI instruction66 64 %ifndef USE_386 67 65 mov sp, [ss:BOOTVARS.dwPostStack] -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int19hMenu.asm
r95 r96 22 22 23 23 ; Install new INT 19h handler now that BOOTVARS has been initialized 24 mov WORD [INTV_BOOTSTRAP*4], Int19hMenu_Display24 mov WORD [INTV_BOOTSTRAP*4], DisplayBootMenu 25 25 mov WORD [INTV_BOOTSTRAP*4+2], cs 26 ; Fall to Int19hMenu_Display26 ; Fall to DisplayBootMenu 27 27 28 28 ;-------------------------------------------------------------------- 29 ; Displays Boot Menu so user can select drive to boot from. 30 ; 31 ; Int19hMenu_Display 29 ; DisplayBootMenu 32 30 ; Parameters: 33 31 ; Nothing … … 36 34 ;-------------------------------------------------------------------- 37 35 ALIGN JUMP_ALIGN 38 Int19hMenu_Display: 39 sti ; Enable interrupts 36 DisplayBootMenu: 40 37 call BootVars_SwitchToBootMenuStack 41 38 call RamVars_GetSegmentToDS 42 ; Fall to Int19hMenu_ProcessMenuSelectionsUntilBootable39 ; Fall to .ProcessMenuSelectionsUntilBootable 43 40 44 41 ;-------------------------------------------------------------------- 45 ; Processes user menu selections until bootable drive is selected. 46 ; 47 ; Int19hMenu_ProcessMenuSelectionsUntilBootable 42 ; .ProcessMenuSelectionsUntilBootable 48 43 ; Parameters: 49 44 ; DS: RAMVARS segment … … 52 47 ;-------------------------------------------------------------------- 53 48 ALIGN JUMP_ALIGN 54 Int19hMenu_ProcessMenuSelectionsUntilBootable:49 .ProcessMenuSelectionsUntilBootable: 55 50 call BootMenu_DisplayAndReturnSelection 56 51 call DriveXlate_ToOrBack ; Translate drive number 57 call Int19h_TryToLoadBootSectorFromDL58 jnc SHORT Int19hMenu_ProcessMenuSelectionsUntilBootable ; Boot failure, show menu again52 call BootSector_TryToLoadFromDriveDL 53 jnc SHORT .ProcessMenuSelectionsUntilBootable ; Boot failure, show menu again 59 54 call BootVars_SwitchBackToPostStack 60 jmp Int19h_JumpToBootSector 55 ; Fall to JumpToBootSector 56 57 ;-------------------------------------------------------------------- 58 ; JumpToBootSector 59 ; Parameters: 60 ; DL: Drive to boot from (translated, 00h or 80h) 61 ; ES:BX: Ptr to boot sector 62 ; Returns: 63 ; Never returns 64 ;-------------------------------------------------------------------- 65 ALIGN JUMP_ALIGN 66 JumpToBootSector: 67 push es ; Push boot sector segment 68 push bx ; Push boot sector offset 69 call ClearSegmentsForBoot 70 xor dh, dh ; Device supported by INT 13h 71 retf 61 72 62 73 … … 71 82 Int19hMenu_RomBoot: 72 83 call BootVars_SwitchBackToPostStack 73 call Int19h_ClearSegmentsForBoot84 call ClearSegmentsForBoot 74 85 int INTV_BOOT_FAILURE ; Never returns 86 87 88 ;-------------------------------------------------------------------- 89 ; ClearSegmentsForBoot 90 ; Parameters: 91 ; Nothing 92 ; Returns: 93 ; DS=ES: Zero 94 ; Corrupts registers: 95 ; AX 96 ;-------------------------------------------------------------------- 97 ALIGN JUMP_ALIGN 98 ClearSegmentsForBoot: 99 xor ax, ax 100 mov ds, ax 101 mov es, ax 102 ret -
trunk/XTIDE_Universal_BIOS/Src/Initialization/DetectPrint.asm
r88 r96 104 104 .PrintDriveNotFound: 105 105 mov si, g_szNotFound 106 call PrintNullTerminatedStringFromCSSIandSetCF106 call BootMenuPrint_NullTerminatedStringFromCSSIandSetCF 107 107 pop di 108 108 ret -
trunk/XTIDE_Universal_BIOS/Src/Main.asm
r93 r96 124 124 %include "BootMenuEvent.asm" ; For menu library event handling 125 125 %include "FloppyDrive.asm" ; Floppy Drive related functions 126 %include "BootSector.asm" ; For loading boot sector 127 %include "BootPrint.asm" ; For printing boot information 126 128 %include "BootMenuPrint.asm" ; For printing Boot Menu strings 127 129 %include "BootMenuPrintCfg.asm" ; For printing hard disk configuration … … 140 142 ; Include .asm files (Interrupt handlers) 141 143 %include "Int13h.asm" ; For Int 13h, Disk functions 142 %include "Int19h.asm" ; For Int 19h, Boot Loader143 144 %ifndef USE_AT 144 145 %include "Int19hLate.asm" ; For late initialization 145 146 %endif 146 147 %include "Int19hMenu.asm" ; For Int 19h, Boot Loader for Boot Menu 147 %include "BootPrint.asm" ; For printing boot information148 148 149 149 ; Include .asm files (Hard Disk BIOS functions) -
trunk/XTIDE_Universal_BIOS/Src/Strings.asm
r95 r96 35 35 g_szSizeSingle: db "%s%u.%u %ciB",NULL 36 36 g_szSizeDual: db "%s%u.%u %ciB / %u.%u %ciB",NULL 37 g_szCfgHeader: db "Addr.",SINGLE_VERTICAL,"Block",SINGLE_VERTICAL,"Bus", SINGLE_VERTICAL,"IRQ", SINGLE_VERTICAL,"Reset", NULL37 g_szCfgHeader: db "Addr.",SINGLE_VERTICAL,"Block",SINGLE_VERTICAL,"Bus", SINGLE_VERTICAL,"IRQ", SINGLE_VERTICAL,"Reset",CR,LF,NULL 38 38 g_szCfgFormat: db "%s" ,SINGLE_VERTICAL,"%5u", SINGLE_VERTICAL,"%c%2u",SINGLE_VERTICAL," %c%c",SINGLE_VERTICAL,"%5x", NULL 39 39 g_szLCHS: db "L-CHS",NULL
Note:
See TracChangeset
for help on using the changeset viewer.