source: xtideuniversalbios/trunk/XTIDE_Universal_BIOS/Src/Initialization/Initialize.asm @ 194

Last change on this file since 194 was 194, checked in by gregli@…, 12 years ago

ifdef'd out more unused code. Also added a tool for looking through the listing and the output of the precompiler to aid in finding dead code. Some changes in the files are to add annotations for the tool to avoid false positives.

File size: 3.2 KB
RevLine 
[90]1; Project name  :   XTIDE Universal BIOS
[3]2; Description   :   Functions for initializing the BIOS.
3
4; Section containing code
5SECTION .text
6
7;--------------------------------------------------------------------
8; Initializes the BIOS.
9; This function is called from main BIOS ROM search routine.
10;
11; Initialize_FromMainBiosRomSearch
12;   Parameters:
13;       Nothing
14;   Returns:
15;       Nothing
16;   Corrupts registers:
17;       Nothing
18;--------------------------------------------------------------------
[194]19Initialize_FromMainBiosRomSearch:             ; unused entrypoint ok
[3]20    pushf
21    push    es
22    push    ds
23    ePUSHA
24
[90]25    LOAD_BDA_SEGMENT_TO es, ax
[3]26    call    Initialize_ShouldSkip
[90]27    jnz     SHORT .SkipRomInitialization
[3]28
[90]29%ifdef USE_AT   ; Early initialization on AT build
30    call    Initialize_AndDetectDrives
31%else           ; Late initialization on XT builds
32    call    Int19hLate_InitializeInt19h
33%endif
34.SkipRomInitialization:
[3]35    ePOPA
36    pop     ds
37    pop     es
38    popf
39    retf
40
41
42;--------------------------------------------------------------------
43; Checks if user wants to skip ROM initialization.
44;
45; Initialize_ShouldSkip
46;   Parameters:
[90]47;       ES:     BDA segment
[3]48;   Returns:
[90]49;       ZF:     Cleared if ROM initialization is to be skipped
50;               Set to continue ROM initialization
[3]51;   Corrupts registers:
[90]52;       Nothing
[3]53;--------------------------------------------------------------------
54Initialize_ShouldSkip:
[90]55    sti                                     ; Enable interrupts
56    test    BYTE [es:BDA.bKBFlgs1], (1<<2)  ; Clear ZF if CTRL is held down
[3]57    ret
58
59
60;--------------------------------------------------------------------
61; Initializes the BIOS variables and detects IDE drives.
62;
63; Initialize_AndDetectDrives
64;   Parameters:
[90]65;       ES:     BDA Segment
[3]66;   Returns:
[97]67;       DS:     RAMVARS segment
[3]68;   Corrupts registers:
[97]69;       All
[3]70;--------------------------------------------------------------------
71Initialize_AndDetectDrives:
[130]72    call    BootMenuPrint_InitializeDisplayContext
[3]73    call    DetectPrint_RomFoundAtSegment
74    call    RamVars_Initialize
[33]75    call    Interrupts_InitializeInterruptVectors
[3]76    call    DetectDrives_FromAllIDEControllers
[98]77    ; Fall to .StoreDptPointersToIntVectors
[97]78
79;--------------------------------------------------------------------
[98]80; .StoreDptPointersToIntVectors
[97]81;   Parameters:
82;       DS:     RAMVARS segment
83;       ES:     BDA and interrupt vector segment (zero)
84;   Returns:
85;       Nothing
86;   Corrupts registers:
87;       DX, DI
88;--------------------------------------------------------------------
[98]89.StoreDptPointersToIntVectors:
[97]90    mov     dl, 80h
[152]91    call    RamVars_IsDriveHandledByThisBIOS
92    jnc     SHORT .FindForDrive81h  ; Store nothing if not our drive
[97]93    call    FindDPT_ForDriveNumber  ; DPT to DS:DI
[152]94    mov     [es:HD0_DPT_POINTER_41h*4], di
95    mov     [es:HD0_DPT_POINTER_41h*4+2], ds
[97]96.FindForDrive81h:
97    inc     dx
[152]98    call    RamVars_IsDriveHandledByThisBIOS
99    jnc     SHORT .ResetDetectedDrives
[97]100    call    FindDPT_ForDriveNumber
[152]101    mov     [es:HD1_DPT_POINTER_46h*4], di
102    mov     [es:HD1_DPT_POINTER_46h*4+2], ds
[33]103    ; Fall to .ResetDetectedDrives
[3]104
105;--------------------------------------------------------------------
[97]106; .ResetDetectedDrives
[3]107;   Parameters:
108;       DS:     RAMVARS segment
109;   Returns:
110;       Nothing
111;   Corrupts registers:
[150]112;       All
[3]113;--------------------------------------------------------------------
[33]114.ResetDetectedDrives:
[150]115    call    Idepack_FakeToSSBP
116    call    AH0h_ResetHardDisksHandledByOurBIOS
[158]117    add     sp, BYTE EXTRA_BYTES_FOR_INTPACK
[150]118    ret
Note: See TracBrowser for help on using the repository browser.