source: xtideuniversalbios/trunk/XTIDE_Universal_BIOS/Src/Handlers/Int19hMenu.asm @ 90

Last change on this file since 90 was 90, checked in by aitotat, 13 years ago

Changes to XTIDE Universal BIOS:

  • Removed INT 13h format and diagnostics functions.
  • Removed INT 18h callback handler.
  • Removed configuration for early/late initialization. Now XT builds always use late and AT build early initialization.
  • Reduced number of supported IDE controllers from 5 to 4.
  • Removed reserved configuration bytes.
  • Removed simple and system boot loaders.
File size: 3.4 KB
Line 
1; Project name  :   XTIDE Universal BIOS
2; Description   :   Int 19h BIOS functions for Boot Menu.
3
4; Section containing code
5SECTION .text
6
7;--------------------------------------------------------------------
8; Initial Boot Menu Loader.
9; Prepares BOOTVARS for displaying Boot Menu and accepting
10; callbacks from INT 18h and 19h.
11;
12; Int19hMenu_BootLoader
13;   Parameters:
14;       Nothing
15;   Returns:
16;       Jumps to Int19hMenu_Display, then never returns
17;--------------------------------------------------------------------
18ALIGN JUMP_ALIGN
19Int19hMenu_BootLoader:
20    LOAD_BDA_SEGMENT_TO ds, ax
21    call    BootVars_StorePostStackPointer
22
23    ; Install new INT 19h handler now that BOOTVARS has been initialized
24    mov     WORD [INTV_BOOTSTRAP*4], Int19hMenu_Display
25    mov     WORD [INTV_BOOTSTRAP*4+2], cs
26    ; Fall to Int19hMenu_Display
27
28;--------------------------------------------------------------------
29; Displays Boot Menu so user can select drive to boot from.
30;
31; Int19hMenu_Display
32;   Parameters:
33;       Nothing
34;   Returns:
35;       Never returns
36;--------------------------------------------------------------------
37ALIGN JUMP_ALIGN
38Int19hMenu_Display:
39    sti                                 ; Enable interrupts
40    call    BootVars_SwitchToBootMenuStack
41    call    RamVars_GetSegmentToDS
42    ; Fall to Int19hMenu_ProcessMenuSelectionsUntilBootable
43
44;--------------------------------------------------------------------
45; Processes user menu selections until bootable drive is selected.
46;
47; Int19hMenu_ProcessMenuSelectionsUntilBootable
48;   Parameters:
49;       DS:     RAMVARS segment
50;   Returns:
51;       Never returns
52;--------------------------------------------------------------------
53ALIGN JUMP_ALIGN
54Int19hMenu_ProcessMenuSelectionsUntilBootable:
55    call    Int19hMenu_GetDriveOrFunctionFromBootMenu
56    jc      SHORT Int19hMenu_ExecuteSelectedFunction
57    call    Int19h_TryToLoadBootSectorFromDL
58    jnc     SHORT Int19hMenu_ProcessMenuSelectionsUntilBootable ; Boot failure
59    call    BootVars_SwitchBackToPostStack
60    jmp     SHORT Int19h_JumpToBootSector
61
62
63;--------------------------------------------------------------------
64; Selects Floppy or Hard Disk Drive to boot from or some function.
65;
66; Int19hMenu_GetDriveOrFunctionFromBootMenu
67;   Parameters:
68;       DS:     RAMVARS segment
69;   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
76;--------------------------------------------------------------------
77ALIGN JUMP_ALIGN
78Int19hMenu_GetDriveOrFunctionFromBootMenu:
79    call    BootMenu_DisplayAndReturnSelection
80    jc      SHORT .ReturnFunction
81    call    DriveXlate_ToOrBack         ; Translate drive number
82    clc
83ALIGN 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;--------------------------------------------------------------------
100ALIGN JUMP_ALIGN
101Int19hMenu_ExecuteSelectedFunction:
102    ePUSH_T ax, Int19hMenu_ProcessMenuSelectionsUntilBootable
103    test    dx, dx                      ; 0, IDF_BOOTMNU_ROM
104    jz      SHORT .Int18hRomBoot
105    ret
106ALIGN JUMP_ALIGN
107.Int18hRomBoot:
108    call    BootVars_SwitchBackToPostStack
109    jmp     Int19h_BootFailure          ; Never returns
Note: See TracBrowser for help on using the repository browser.