Changeset 580 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src/Initialization


Ignore:
Timestamp:
Feb 19, 2015, 1:38:02 PM (10 years ago)
Author:
krille_n_@…
google:author:
krille_n_@hotmail.com
Message:

Changes:

  • XTIDECFG: Fixed a bug from r459 where the menu option for selection of default boot drive would be missing if the BIOS had been built without MODULE_HOTKEYS. The menu option is now visible if either or both of MODULE_HOTKEYS and MODULE_BOOT_MENU is available.
  • BIOS: Disabled ATA-ID validation by adding a new define (NO_ATAID_VALIDATION) and making it the default for all builds since at least two WD Caviar drive models are incompatible with it.
  • Fixed the "No Fixed Disk Present in FDISK"-bug introduced in r551 which means the Tiny build now works without including MODULE_DRIVEXLATE.
  • Fixed a bug from r528 where pressing hotkey F6 would not initiate detection of serial drives.
  • Fixed a bug from r186 in DisplayFormatCompressed.asm where the boot menu would print the IRQ in hexadecimal format when it should be in decimal format.
  • Optimizations and fixes.
Location:
trunk/XTIDE_Universal_BIOS/Src/Initialization
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/XTIDE_Universal_BIOS/Src/Initialization/AtaID.asm

    r568 r580  
    3232;       AX, BX, CX
    3333;--------------------------------------------------------------------
     34%ifndef NO_ATAID_VALIDATION
    3435AtaID_VerifyFromESSI:
    3536    ; We cannot start by reading ATA version since the ID might be
     
    8788.ValidPCHorSinOffsetBX:
    8889    ret
     90%endif ; NO_ATAID_VALIDATION
    8991
    9092
  • trunk/XTIDE_Universal_BIOS/Src/Initialization/DetectDrives.asm

    r568 r580  
    4848    call    StartDetectionWithDriveSelectByteInBHandStringInCX
    4949
     50%ifdef MODULE_HOTKEYS
     51%ifdef MODULE_SERIAL
     52    ; This is only needed for hotkey F6 (ComDtct) to work
     53    call    ScanHotkeysFromKeyBufferAndStoreToBootvars          ; Done here while CX is still protected
     54%endif
     55%endif
     56
    5057    pop     cx
    5158
     
    6875
    6976%ifdef MODULE_HOTKEYS
    70     cmp     al, COM_DETECT_HOTKEY_SCANCODE  ; Set by last call to HotkeyBar_UpdateDuringDriveDetection above
     77    cmp     al, COM_DETECT_HOTKEY_SCANCODE  ; Set by last call to ScanHotkeysFromKeyBufferAndStoreToBootvars above
    7178    je      .DriveDetectLoop
    7279%endif
     
    7683    and     al, 8                           ; 8 = alt key depressed, same as FLG_ROMVARS_SERIAL_ALWAYSDETECT
    7784    jnz     .DriveDetectLoop
    78 %endif
     85%endif ; MODULE_SERIAL
    7986
    8087.AddHardDisks:
     
    226233;--------------------------------------------------------------------
    227234CreateBiosTablesForHardDisk:
     235%ifndef NO_ATAID_VALIDATION
    228236    push    bx
    229237    call    AtaID_VerifyFromESSI
    230238    pop     bx
    231239    jnz     SHORT DetectDrives_DriveNotFound
     240%endif
    232241    call    CreateDPT_FromAtaInformation
    233242    jc      SHORT DetectDrives_DriveNotFound
  • trunk/XTIDE_Universal_BIOS/Src/Initialization/Initialize.asm

    r567 r580  
    8282    call    RamVars_Initialize
    8383    call    BootVars_Initialize
     84%ifdef MODULE_HOTKEYS
     85    ; This is a simple fix for the so called "No Fixed Disk Present in FDISK"-bug introduced in r551. MODULE_HOTKEYS includes the internal
     86    ; module MODULE_DRIVEXLATE which is needed if interrupt handlers are installed before drive detection. The reason for this is that
     87    ; Interrupts_InitializeInterruptVectors won't install our interrupt 13h handler if no drives were detected (unless MODULE_DRIVEXLATE is included).
     88    ; Since the drive detection hasn't been done yet, the handler will not be installed, causing the above mentioned bug.
    8489    call    Interrupts_InitializeInterruptVectors   ; HotkeyBar requires INT 40h so install handlers before drive detection
    8590    call    DetectDrives_FromAllIDEControllers
     91%else
     92    ; Without MODULE_HOTKEYS (or actually MODULE_DRIVEXLATE) we *must* use this call order.
     93    call    DetectDrives_FromAllIDEControllers
     94    call    Interrupts_InitializeInterruptVectors
     95%endif
    8696    mov     [RAMVARS.wDrvDetectSignature], es       ; No longer in drive detection mode (set normal timeouts)
    8797    ; Fall to .StoreDptPointersToIntVectors
  • trunk/XTIDE_Universal_BIOS/Src/Initialization/Interrupts.asm

    r558 r580  
    2222
    2323;--------------------------------------------------------------------
    24 ; Drives must be detected before this function is called!
     24; Drives must be detected before this function is called unless
     25; MODULE_DRIVEXLATE has been included in the BIOS.
    2526;
    2627; Interrupts_InitializeInterruptVectors
Note: See TracChangeset for help on using the changeset viewer.