Changeset 520 in xtideuniversalbios


Ignore:
Timestamp:
Mar 9, 2013, 3:36:37 PM (11 years ago)
Author:
aitotat@…
google:author:
aitotat@gmail.com
Message:

Changes to XTIDE Universal BIOS:

  • Slave drives are again initialized properly
  • Delay for Hotkeybar now works properly
Location:
trunk/XTIDE_Universal_BIOS
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/XTIDE_Universal_BIOS/Inc/BootVars.inc

    r500 r520  
    4545%endif
    4646
    47     .clearToZeroFromThisPoint:
     47   
    4848%ifdef MODULE_HOTKEYS
    4949    .hotkeyVars             resb    HOTKEYVARS_size
     50%else
     51    .clearToZeroFromThisPoint:
    5052%endif
    5153
     
    5355endstruc
    5456
     57
    5558%ifdef MODULE_HOTKEYS
    5659
    5760struc HOTKEYVARS
    5861    .wTimeToClose       resb    2       ; Earliest system time when Hotkey Bar can be closed
     62.clearToZeroFromThisPoint:
    5963    .wFddAndHddLetters:
    6064    .bFddLetter         resb    1       ; Floppy Drive letter hotkey (upper case)
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH0h_HReset.asm

    r507 r520  
    122122
    123123    mov     si, ControllerResetForDPTinDSDI
    124     call    .CallSIforEveryDrive                        ; Reset all drives to power on settings
    125     mov     si, AH9h_InitializeDriveForUse
    126     ; Fall to .CallSIforEveryDrive                      ; Initialize all drives
    127 
    128 .CallSIforEveryDrive:                                   ; BH will be garbage on exit if this entry point is used,
     124    call    .CallSIforEveryController                   ; Reset all drives to power on settings
     125    mov     si, ControllerInitForMasterOrSingleDPTinDSDI
     126    ; Fall to .CallSIforEveryController                 ; Initialize all controllers (Master and Slave drives)
     127
     128.CallSIforEveryController:                              ; BH will be garbage on exit if this entry point is used,
    129129                                                        ; but reset of all drives will still happen
    130130
     
    166166;   Returns:
    167167;       AH:     Int 13h return status
    168 ;       CF:     0 if successful, 1 if error
    169168;   Corrupts registers:
    170169;       AL, BX, CX, DX
     
    180179    jmp     Device_ResetMasterAndSlaveController
    181180%endif
     181
     182
     183;--------------------------------------------------------------------
     184; ControllerInitForMasterOrSingleDPTinDSDI
     185;   Parameters:
     186;       DS:DI:  Ptr to DPT for Master or Single Drive (initializes both Master and Slave drive)
     187;       SS:BP:  Ptr to IDEPACK
     188;   Returns:
     189;       AH:     Int 13h return status
     190;   Corrupts registers:
     191;       AL, BX, CX, DX
     192;--------------------------------------------------------------------
     193ControllerInitForMasterOrSingleDPTinDSDI:
     194    call    AH9h_InitializeDriveForUse          ; Init Master or Single drive
     195    push    ax                                  ; Store error code
     196
     197    eMOVZX  ax, BYTE [di+DPT.bIdevarsOffset]    ; Clear AH
     198    add     di, BYTE LARGEST_DPT_SIZE           ; Slave drive or next controller
     199    cmp     [di+DPT.bIdevarsOffset], al
     200    jne     SHORT .NoSlaveDrivePresent
     201
     202    call    AH9h_InitializeDriveForUse          ; Init Slave drive
     203.NoSlaveDrivePresent:
     204    pop     bx
     205    MAX_U   ah, bh                              ; Return error code from either drive
     206    ret
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int19h.asm

    r505 r520  
    8080%ifdef MODULE_HOTKEYS
    8181    call    TimerTicks_ReadFromBdaToAX
    82     add     ax, MIN_TIME_TO_DISPLAY_HOTKEY_BAR
     82    add     ax, BYTE MIN_TIME_TO_DISPLAY_HOTKEY_BAR
    8383    mov     [es:BOOTVARS.hotkeyVars+HOTKEYVARS.wTimeToClose], ax
    8484%endif
  • trunk/XTIDE_Universal_BIOS/Src/Initialization/AdvancedAta/AdvAtaInit.asm

    r507 r520  
    101101;       DS:DI:  Ptr to DPT for Single or Slave Drive
    102102;   Returns:
    103 ;       DS:DI:  Ptr to DPT for Single or Slave Drive
    104103;       SI:     Offset to Master DPT if Slave Drive present
    105104;               Zero if Slave Drive not present
  • trunk/XTIDE_Universal_BIOS/Src/VariablesAndDPTs/BootVars.asm

    r500 r520  
    3939    mov     al, DRVDETECTINFO_size
    4040    mul     BYTE [cs:ROMVARS.bIdeCnt]
    41     mov     di, BOOTVARS.clearToZeroFromThisPoint   ; We must not initialize anything before this!
     41%ifdef MODULE_HOTKEYS ; We must not initialize anything before this!
     42    mov     di, BOOTVARS.hotkeyVars + HOTKEYVARS.clearToZeroFromThisPoint   
     43%else
     44    mov     di, BOOTVARS.clearToZeroFromThisPoint
     45%endif
    4246    add     ax, BOOTVARS_size
    4347    sub     ax, di
Note: See TracChangeset for help on using the changeset viewer.