Changeset 567 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src/Device


Ignore:
Timestamp:
May 26, 2014, 1:25:15 PM (11 years ago)
Author:
krille_n_@…
google:author:
krille_n_@hotmail.com
Message:

Changes:

  • Renamed MODULE_FEATURE_SETS to MODULE_POWER_MANAGEMENT.
  • Renamed MODULE_VERY_LATE_INITIALIZATION to MODULE_VERY_LATE_INIT and removed it from the official builds.
  • Removed the code that skips detection of slave drives on XT-CF controllers since slave drives can be used with Lo-tech ISA CompactFlash boards.
  • Added autodetection of the SVC ADP50L controller to XTIDECFG.
  • The autodetection of XT-CF controllers now requires MODULE_8BIT_IDE_ADVANCED in the loaded BIOS.
  • Fixed a bug in XTIDECFG from r502 where the "Base (cmd block) address" menu option would be displayed when a serial device was selected as the IDE controller.
  • XTIDECFG would display the "Enable interrupt" menu option for the XTIDE r1 but not for the XTIDE r2. It's now displayed for both controller types.
  • Disabled the "Internal Write Cache" menu option in the Master/Slave Drive menus for serial device type drives.
  • Optimizations and other fixes.
Location:
trunk/XTIDE_Universal_BIOS/Src/Device
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeDPT.asm

    r564 r567  
    3434IdeDPT_Finalize:
    3535
    36 %ifdef MODULE_FEATURE_SETS
     36%ifdef MODULE_POWER_MANAGEMENT
    3737;--------------------------------------------------------------------
    3838; .DetectPowerManagementSupport
     
    4343;       Nothing
    4444;   Corrupts registers:
    45 ;       Nothing
     45;       AL
    4646;--------------------------------------------------------------------
    4747.DetectPowerManagementSupport:
    48     test    BYTE [es:si+ATA6.wSetSup82], A6_wSetSup82_POWERMAN
    49     jz      SHORT .NoPowerManagementSupport
    50     or      BYTE [di+DPT.bFlagsHigh], FLGH_DPT_POWER_MANAGEMENT_SUPPORTED
    51 .NoPowerManagementSupport:
    52 %endif ; MODULE_FEATURE_SETS
     48    mov     al, [es:si+ATA6.wSetSup82]
     49    and     al, A6_wSetSup82_POWERMAN   ; A6_wSetSup82_POWERMAN (bit 3) is the same
     50    or      [di+DPT.bFlagsHigh], al     ; bit as FLGH_DPT_POWER_MANAGEMENT_SUPPORTED
     51%endif ; MODULE_POWER_MANAGEMENT
    5352
    5453
  • trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeDmaBlock.asm

    r558 r567  
    22; Description   :   IDE Read/Write functions for transferring block using DMA.
    33;                   These functions should only be called from IdeTransfer.asm.
    4 
    5 ; Modified JJP 05-Jun-13
    64
    75;
     
    9189    ; Calculate bytes for first page
    9290    mov     ax, di
    93     neg     ax          ; 2s compliment
     91    neg     ax          ; 2s complement
    9492
    9593    ; If DI was zero carry flag will be cleared (and set otherwise)
     
    187185    jz      SHORT .TransferNextBlock    ; All bytes transferred?
    188186%else   ; Fast DMA code - perform computed number of transfers, then check DMA status register to be sure
    189     add     cx, BYTE 15                 ; We'll divide transfers in 16-byte atomic transfers,
    190     eSHR_IM cx, 4                       ; so include any partial block, which will be terminated
    191 ALIGN JUMP_ALIGN                        ; by the DMA controller raising T/C
     187    ; We'll divide transfers in 16-byte atomic transfers, so include any partial block, which will be terminated by the DMA controller raising T/C
     188    add     cx, BYTE 15
     189
     190%ifdef USE_186
     191    shr     cx, 4
     192%else
     193    xchg    cx, ax
     194    mov     cl, 4
     195    shr     ax, cl
     196    xchg    cx, ax
     197%endif
     198
     199ALIGN JUMP_ALIGN
    192200.TransferNextDmaBlock:
    193201    out     dx, al                      ; Transfer up to 16 bytes to/from XT-CF card
  • trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeError.asm

    r566 r567  
    2020; Section containing code
    2121SECTION .text
     22
     23%ifndef CHECK_FOR_UNUSED_ENTRYPOINTS
     24    %if $ <> PollBsyOnly.End
     25        %error "IdeError.asm must come immediately after IdeWait.asm (PollBsyOnly falls into IdeError_GetBiosErrorCodeToAHfromPolledStatusRegisterInAL)!"
     26    %endif
     27%endif
    2228
    2329;--------------------------------------------------------------------
  • trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdePioBlock.asm

    r558 r567  
    1818; Visit http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
    1919;
    20 
    21 ; Modified by JJP for XT-CFv3 support, Mar-13
    2220
    2321; Section containing code
  • trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeTransfer.asm

    r558 r567  
    228228
    229229    ; Get transfer function based on bus type
    230     xchg    ax, bx                              ; Lookup table offset to AX
    231     mov     bl, [di+DPT_ATA.bDevice]
     230    mov     al, [di+DPT_ATA.bDevice]
     231    add     bx, ax
    232232%ifdef MODULE_8BIT_IDE_ADVANCED
    233     mov     dl, bl
    234 %endif
    235     add     bx, ax
     233    cmp     al, DEVICE_8BIT_XTCF_DMA
     234%endif
    236235    mov     ax, [cs:bx]                         ; Load offset to transfer function
    237236    mov     [bp+PIOVARS.fnXfer], ax
     
    239238    ; Normalize pointer for PIO-transfers and convert to physical address for DMA transfers
    240239%ifdef MODULE_8BIT_IDE_ADVANCED
    241     cmp     dl, DEVICE_8BIT_XTCF_DMA
    242240    jb      SHORT IdeTransfer_NormalizePointerInESSI
    243241
    244242    ; Convert ES:SI to physical address
    245 %ifdef USE_186          ; Bytes EU Cycles(286)
     243%ifdef USE_186
     244                        ; Bytes EU Cycles(286)
    246245    mov     ax, es      ; 2     2
    247246    rol     ax, 4       ; 3     9
     
    255254                        ; 18    24
    256255%else ; 808x
    257 
    258 %if 0
    259256                        ; Bytes EU Cycles(808x)
    260257    mov     al, 4       ; 2     4
     
    279276; In other words, we could use a real world test here.
    280277;
    281 %endif ; 0
     278%if 0
    282279                        ; Bytes EU Cycles(808x/286)
    283280    xor     dx, dx      ; 2     3/2
     
    291288    mov     es, dx      ; 2     2/2
    292289    ;------------------------------------
    293 %endif                  ; 26    29/26
    294     clc
    295     ret
     290                        ; 26    29/26
     291%endif ; 0
     292%endif
     293
     294    ret     ; With CF cleared (taken care of by the physical address conversion)
    296295%endif ; MODULE_8BIT_IDE_ADVANCED
    297296    ; Fall to IdeTransfer_NormalizePointerInESSI if no MODULE_8BIT_IDE_ADVANCED
  • trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeWait.asm

    r532 r567  
    130130    call    Timer_SetCFifTimeout                ; Update timeout counter
    131131    jnc     SHORT .PollLoop                     ; Loop if time left (sets CF on timeout)
    132     jmp     SHORT IdeError_GetBiosErrorCodeToAHfromPolledStatusRegisterInAL
     132.End:                                           ; Label used for sanity check during assembly
     133    ; Fall to IdeError_GetBiosErrorCodeToAHfromPolledStatusRegisterInAL
     134
  • trunk/XTIDE_Universal_BIOS/Src/Device/Serial/SerialCommand.asm

    r558 r567  
    2828;   Parameters:
    2929;       BH:     Non-zero if 48-bit addressing used
    30 ;               (ignored at present as 48-bit addressing is not supported)
     30;               (ignored at present as 48-bit addressing is not supported)
    3131;       BL:     IDE Status Register bit to poll after command
    32 ;               (ignored at present, since there is no IDE status register to poll)
     32;               (ignored at present, since there is no IDE status register to poll)
    3333;       ES:SI:  Ptr to buffer (for data transfer commands)
    3434;       DS:DI:  Ptr to DPT (in RAMVARS segment)
     
    122122;          wSerialPortAndBaud Non-Zero:           -> Continue with wSerialPortAndBaud (1)
    123123;          wSerialPortAndBaud Zero:
    124 ;              previous serial drive not found:   -> Scan (2)
    125 ;              previous serial drive found:       -> Continue with previous serial drive info (3)
     124;              previous serial drive not found:   -> Scan (2)
     125;              previous serial drive found:       -> Continue with previous serial drive info (3)
    126126;
    127127;    Slave:
    128128;          wSerialPortAndBaud Non-Zero:
    129 ;              previous serial drive not found:   -> Error - Not Found (4)
     129;              previous serial drive not found:   -> Error - Not Found (4)
    130130;              previous serial drive found:       -> Continue with wSerialPackedAndBaud (5)
    131 ;          wSerialPortAndBaud Zero:
    132 ;              previous serial drive not found:   -> Error - Not Found (4)
     131;          wSerialPortAndBaud Zero:
     132;              previous serial drive not found:   -> Error - Not Found (4)
    133133;              previous serial drive found:       -> Continue with previous serial drive info (6)
    134134;
  • trunk/XTIDE_Universal_BIOS/Src/Device/Serial/SerialDPT.asm

    r547 r567  
    2828;   Returns:
    2929;       CF:     Set, indicates that this is a floppy disk
    30 ;               Clear, indicates that this is a hard disk
     30;               Clear, indicates that this is a hard disk
    3131;   Corrupts registers:
    3232;       AX
     
    4949%ifndef CHECK_FOR_UNUSED_ENTRYPOINTS
    5050    %ifdef MODULE_SERIAL_FLOPPY
    51         %if FLGH_DPT_SERIAL_DEVICE != 0x4 || FLGH_DPT_SERIAL_FLOPPY != 0x10 || FLGH_DPT_SERIAL_FLOPPY_TYPE_MASK != 0xe0 || FLGH_DPT_SERIAL_FLOPPY_TYPE_FIELD_POSITION != 5
     51        %if FLGH_DPT_SERIAL_DEVICE != 0x4 || FLGH_DPT_SERIAL_FLOPPY != 0x10 || FLGH_DPT_SERIAL_FLOPPY_TYPE_FIELD_POSITION != 5
    5252            %error "The serial server passes FLGH values into SerialDPT_Finalize directly.  If the flag positions are changed, corresponding changes will need to be made in the serial server, and likely a version check put in to deal with servers talking to incompatible clients"
    5353        %endif
Note: See TracChangeset for help on using the changeset viewer.