Changeset 243 in xtideuniversalbios
- Timestamp:
- Feb 10, 2012, 2:00:50 PM (13 years ago)
- google:author:
- aitotat@gmail.com
- Location:
- trunk/XTIDE_Universal_BIOS
- Files:
-
- 1 added
- 1 deleted
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS/Inc/BootVars.inc
r241 r243 56 56 ; STORE_POST_STACK_POINTER 57 57 ; Parameters: 58 ; DS: BDA and Interrupt Vector segment (zero)58 ; ES: BDA and Interrupt Vector segment (zero) 59 59 ; Returns: 60 60 ; Nothing … … 63 63 ;-------------------------------------------------------------------- 64 64 %macro STORE_POST_STACK_POINTER 0 65 mov [ BOOTVARS.dwPostStack], sp66 mov [ BOOTVARS.dwPostStack+2], ss65 mov [es:BOOTVARS.dwPostStack], sp 66 mov [es:BOOTVARS.dwPostStack+2], ss 67 67 %endmacro 68 68 … … 102 102 ; Restores SS and SP to initial boot loader values. 103 103 ; 104 ; Before doing any changes, see the note regarding105 ; LOAD_BDA_SEGMENT_TO in BootVars_SwitchToBootMenuStack104 ; Note! Must return with AX=0 and CF preserved. 105 ; See Int19hMenu_JumpToBootSector_or_RomBoot. 106 106 ; 107 107 ; SWITCH_BACK_TO_POST_STACK 108 108 ; Parameters: 109 ; Nothing109 ; AX: BDA and Interrupt Vector segment (zero) 110 110 ; Returns: 111 111 ; SS:SP: Ptr to POST stack 112 112 ; Corrupts registers: 113 ; Nothing 113 ; Nothing (not even FLAGS) 114 114 ;-------------------------------------------------------------------- 115 115 %macro SWITCH_BACK_TO_POST_STACK 0 116 116 %ifndef USE_386 117 cli ; Disable interrupts118 LOAD_BDA_SEGMENT_TO ss, sp117 cli 118 mov ss, ax 119 119 mov sp, [ss:BOOTVARS.dwPostStack] 120 120 mov ss, [ss:BOOTVARS.dwPostStack+2] 121 sti ; Enable interrupts121 sti 122 122 %else 123 LOAD_BDA_SEGMENT_TO ss, sp123 mov ss, ax 124 124 lss sp, [ss:BOOTVARS.dwPostStack] 125 %endif 125 %endif 126 126 %endmacro 127 127 -
trunk/XTIDE_Universal_BIOS/Inc/RomVars.inc
r242 r243 17 17 .wFlags resb 2 ; Word for ROM flags 18 18 .wDisplayMode resb 2 ; Display mode for boot menu 19 .wfDisplayBootMenu: ; Zero = no Boot Menu, non-zero = Boot Menu timeout 19 20 .wBootTimeout resb 2 ; Boot Menu selection timeout in system timer ticks 20 21 .bIdeCnt resb 1 ; Number of available IDE controllers … … 39 40 ; by holding down the ALT key at the end of drive detection. 40 41 ; (Conveniently, this is 8, a fact we exploit when testing the bit) 42 FLG_ROMVARS_MODULE_JRIDE EQU (1<<5) ; Here in case the configuration needs to know functionality is present 41 43 FLG_ROMVARS_MODULE_SERIAL EQU (1<<6) ; Here in case the configuration needs to know functionality is present 42 44 FLG_ROMVARS_MODULE_EBIOS EQU (1<<7) ; Here in case the configuration needs to know functionality is present -
trunk/XTIDE_Universal_BIOS/Src/Boot/BootMenu.asm
r241 r243 8 8 ; Displays Boot Menu and returns Drive or Function number. 9 9 ; 10 ; BootMenu_DisplayAndReturnSelection 10 ; BootMenu_DisplayAndReturnSelectionInDX 11 11 ; Parameters: 12 12 ; DS: RAMVARS segment … … 17 17 ;-------------------------------------------------------------------- 18 18 ALIGN JUMP_ALIGN 19 BootMenu_DisplayAndReturnSelection :19 BootMenu_DisplayAndReturnSelectionInDX: 20 20 call DriveXlate_Reset 21 21 call BootMenuPrint_TheBottomOfScreen … … 23 23 call BootMenuPrint_ClearScreen 24 24 call BootMenu_GetDriveToDXforMenuitemInCX 25 jnc BootMenu_DisplayAndReturnSelection 25 jnc BootMenu_DisplayAndReturnSelectionInDX 26 26 ret 27 27 -
trunk/XTIDE_Universal_BIOS/Src/Boot/BootMenuPrint.asm
r241 r243 426 426 db 2880 / FloppyTypes.rgbCapacityMultiplier ; type 5 427 427 db 2880 / FloppyTypes.rgbCapacityMultiplier ; type 6 428 429 430 431 432 433 434 435 -
trunk/XTIDE_Universal_BIOS/Src/Initialization/Initialize.asm
r229 r243 30 30 ; Install INT 19h handler (boot loader) where drives are detected 31 31 mov bx, BIOS_BOOT_LOADER_INTERRUPT_19h 32 mov si, HandlerForLateInitialization32 mov si, Int19h_BootLoaderHandler 33 33 call Interrupts_InstallHandlerToVectorInBXFromCSSI 34 34 … … 39 39 popf 40 40 retf 41 42 43 ;--------------------------------------------------------------------44 ; HandlerForLateInitialization45 ; Parameters:46 ; Nothing47 ; Returns:48 ; Never returns49 ;--------------------------------------------------------------------50 HandlerForLateInitialization:51 LOAD_BDA_SEGMENT_TO es, ax52 call Initialize_AndDetectDrives ; Installs new boot menu loader53 int BIOS_BOOT_LOADER_INTERRUPT_19h ; Display boot menu54 41 55 42 … … 103 90 ; Parameters: 104 91 ; DS: RAMVARS segment 92 ; ES: BDA and interrupt vector segment (zero) 105 93 ; Returns: 106 94 ; Nothing 107 95 ; Corrupts registers: 108 ; All 96 ; All, except DS and ES 109 97 ;-------------------------------------------------------------------- 110 98 .ResetDetectedDrives: -
trunk/XTIDE_Universal_BIOS/Src/Initialization/Interrupts.asm
r181 r243 43 43 ; 40h from 13h. That system locks to infinite loop if we copy 13h to 40h. 44 44 call FloppyDrive_IsInt40hInstalled 45 jc SHORT .In itializeInt19h45 jc SHORT .Int40hAlreadyInstalled 46 46 mov [es:BIOS_DISKETTE_INTERRUPT_40h*4], ax ; Store old INT 13h offset 47 47 mov [es:BIOS_DISKETTE_INTERRUPT_40h*4+2], dx ; Store old INT 13h segment 48 ; Fall to .InitializeInt19h 49 50 ;-------------------------------------------------------------------- 51 ; .InitializeInt19h 52 ; Parameters: 53 ; DS: RAMVARS segment 54 ; ES: BDA and Interrupt Vector segment (zero) 55 ; Returns: 56 ; Nothing 57 ; Corrupts registers: 58 ; BX, SI 59 ;-------------------------------------------------------------------- 60 .InitializeInt19h: 61 mov bx, BIOS_BOOT_LOADER_INTERRUPT_19h 62 mov si, Int19hMenu_BootLoader 63 call Interrupts_InstallHandlerToVectorInBXFromCSSI 48 .Int40hAlreadyInstalled: 64 49 ; Fall to .InitializeHardwareIrqHandlers 65 50 -
trunk/XTIDE_Universal_BIOS/Src/Main.asm
r239 r243 70 70 %endif 71 71 72 %ifdef MODULE_JRIDE 73 MAIN_FLG_MODULE_JRIDE equ FLG_ROMVARS_MODULE_JRIDE 74 %else 75 MAIN_FLG_MODULE_JRIDE equ 0 76 %endif 77 78 72 79 ;---------------------------; 73 80 ; AT Build default settings ; 74 81 ;---------------------------; 75 82 %ifdef USE_AT 76 at ROMVARS.wFlags, dw FLG_ROMVARS_FULLMODE | FLG_ROMVARS_DRVXLAT | MAIN_FLG_MODULE_SERIAL | MAIN_FLG_MODULE_EBIOS 83 at ROMVARS.wFlags, dw FLG_ROMVARS_FULLMODE | FLG_ROMVARS_DRVXLAT | MAIN_FLG_MODULE_SERIAL | MAIN_FLG_MODULE_EBIOS | MAIN_FLG_MODULE_JRIDE 77 84 at ROMVARS.wDisplayMode, dw DEFAULT_TEXT_MODE 78 85 at ROMVARS.wBootTimeout, dw 30 * TICKS_PER_SECOND ; Boot Menu selection timeout … … 117 124 ; XT and XT+ Build default settings ; 118 125 ;-----------------------------------; 119 at ROMVARS.wFlags, dw FLG_ROMVARS_DRVXLAT | MAIN_FLG_MODULE_SERIAL | MAIN_FLG_MODULE_EBIOS 126 at ROMVARS.wFlags, dw FLG_ROMVARS_DRVXLAT | MAIN_FLG_MODULE_SERIAL | MAIN_FLG_MODULE_EBIOS | MAIN_FLG_MODULE_JRIDE 120 127 at ROMVARS.wDisplayMode, dw DEFAULT_TEXT_MODE 121 128 at ROMVARS.wBootTimeout, dw 30 * TICKS_PER_SECOND ; Boot Menu selection timeout … … 178 185 179 186 ; Boot loader 180 %include "Int19h Menu.asm" ; For Int 19h, Boot Loader for Boot Menu187 %include "Int19h.asm" ; For Int 19h, Boot Loader 181 188 182 189 ; For all device types
Note:
See TracChangeset
for help on using the changeset viewer.