Changeset 400 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src/Device/Device.asm


Ignore:
Timestamp:
Apr 20, 2012, 2:30:16 PM (12 years ago)
Author:
aitotat@…
google:author:
aitotat@gmail.com
Message:

Changes to XTIDE Universal BIOS:

  • Moved 8-bit device support to MODULE_8BIT_IDE.
  • JR-IDE/ISA support requires a lot less bytes.
  • AT builds now always use full operating mode.
File:
1 edited

Legend:

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

    r376 r400  
    2727%endmacro
    2828
    29 %macro CMP_USING_DPT_AND_JUMP_IF_JRIDE_DEVICE 1
    30     xchg    ax, bx
    31     eMOVZX  bx, [di+DPT.bIdevarsOffset]
    32     cmp     BYTE [cs:bx+IDEVARS.bDevice], DEVICE_JRIDE_ISA
    33     xchg    bx, ax              ; Restore BX
    34     je      SHORT %1
    35 %endmacro
    36 
    3729%macro CMP_USING_IDEVARS_IN_CSBP_AND_JUMP_IF 2
    3830    cmp     BYTE [cs:bp+IDEVARS.bDevice], %1
     
    5345;       AX, BX, CX, DX
    5446;--------------------------------------------------------------------
    55 %ifdef MODULE_SERIAL
     47%ifdef MODULE_SERIAL    ; IDE + Serial
    5648Device_FinalizeDPT:
    5749    ; needs to check IDEVARS vs. checking the DPT as the serial bit in the DPT is set in the Finalize routine
    58     CMP_USING_IDEVARS_IN_CSBP_AND_JUMP_IF DEVICE_SERIAL_PORT, .FinalizeDptForSerialPortDevice
     50    CMP_USING_IDEVARS_IN_CSBP_AND_JUMP_IF   DEVICE_SERIAL_PORT, .FinalizeDptForSerialPortDevice
    5951    jmp     IdeDPT_Finalize
    6052.FinalizeDptForSerialPortDevice:
    6153    jmp     SerialDPT_Finalize
    6254
    63 %else   ; IDE or JR-IDE/ISA
    64     Device_FinalizeDPT EQU IdeDPT_Finalize
     55%else                   ; IDE
     56    Device_FinalizeDPT      EQU     IdeDPT_Finalize
    6557%endif
    6658
     
    7668;       AL, BX, CX, DX
    7769;--------------------------------------------------------------------
    78 %ifdef MODULE_JRIDE
    79     %ifdef MODULE_SERIAL                ; IDE + JR-IDE/ISA + Serial
    80     Device_ResetMasterAndSlaveController:
    81         TEST_USING_DPT_AND_JUMP_IF_SERIAL_DEVICE ReturnSuccessForSerialPort
    82         CMP_USING_DPT_AND_JUMP_IF_JRIDE_DEVICE .ResetJrIDE
    83         jmp     IdeCommand_ResetMasterAndSlaveController
    84 
    85     %else                               ; IDE + JR-IDE/ISA
    86     Device_ResetMasterAndSlaveController:
    87         CMP_USING_DPT_AND_JUMP_IF_JRIDE_DEVICE .ResetJrIDE
    88         jmp     IdeCommand_ResetMasterAndSlaveController
    89     %endif
    90 
    91 %elifdef MODULE_SERIAL                  ; IDE + Serial
     70%ifdef MODULE_SERIAL    ; IDE + Serial
    9271Device_ResetMasterAndSlaveController:
    93     TEST_USING_DPT_AND_JUMP_IF_SERIAL_DEVICE ReturnSuccessForSerialPort
     72    TEST_USING_DPT_AND_JUMP_IF_SERIAL_DEVICE    ReturnSuccessForSerialPort
    9473    jmp     IdeCommand_ResetMasterAndSlaveController
    9574
    96 %else                                   ; IDE
    97     Device_ResetMasterAndSlaveController EQU IdeCommand_ResetMasterAndSlaveController
    98 %endif
    99 
    100 %ifdef MODULE_JRIDE
    101 .ResetJrIDE:
    102     jmp     MemIdeCommand_ResetMasterAndSlaveController
     75%else                   ; IDE
     76    Device_ResetMasterAndSlaveController    EQU     IdeCommand_ResetMasterAndSlaveController
    10377%endif
    10478
     
    11791;       AL, BL, CX, DX, SI, DI, ES
    11892;--------------------------------------------------------------------
    119 %ifdef MODULE_JRIDE
    120     %ifdef MODULE_SERIAL                ; IDE + JR-IDE/ISA + Serial
    121     Device_IdentifyToBufferInESSIwithDriveSelectByteInBH:
    122         CMP_USING_IDEVARS_IN_CSBP_AND_JUMP_IF DEVICE_SERIAL_PORT, .IdentifyDriveFromSerialPort
    123         CMP_USING_IDEVARS_IN_CSBP_AND_JUMP_IF DEVICE_JRIDE_ISA, .IdentifyDriveFromJrIde
    124         jmp     IdeCommand_IdentifyDeviceToBufferInESSIwithDriveSelectByteInBH
    125 
    126     %else                               ; IDE + JR-IDE/ISA
    127     Device_IdentifyToBufferInESSIwithDriveSelectByteInBH:
    128         CMP_USING_IDEVARS_IN_CSBP_AND_JUMP_IF DEVICE_JRIDE_ISA, .IdentifyDriveFromJrIde
    129         jmp     IdeCommand_IdentifyDeviceToBufferInESSIwithDriveSelectByteInBH
    130     %endif
    131 
    132 %elifdef MODULE_SERIAL                  ; IDE + Serial
     93%ifdef MODULE_SERIAL    ; IDE + Serial
    13394Device_IdentifyToBufferInESSIwithDriveSelectByteInBH:
    134     CMP_USING_IDEVARS_IN_CSBP_AND_JUMP_IF DEVICE_SERIAL_PORT, .IdentifyDriveFromSerialPort
     95    CMP_USING_IDEVARS_IN_CSBP_AND_JUMP_IF   DEVICE_SERIAL_PORT, .IdentifyDriveFromSerialPort
    13596    jmp     IdeCommand_IdentifyDeviceToBufferInESSIwithDriveSelectByteInBH
    136 
    137 %else                                   ; IDE
    138     Device_IdentifyToBufferInESSIwithDriveSelectByteInBH EQU IdeCommand_IdentifyDeviceToBufferInESSIwithDriveSelectByteInBH
    139 %endif
    140 
    141 %ifdef MODULE_JRIDE
    142 .IdentifyDriveFromJrIde:
    143     jmp     MemIdeCommand_IdentifyDeviceToBufferInESSIwithDriveSelectByteInBH
    144 %endif
    145 
    146 %ifdef MODULE_SERIAL
    14797.IdentifyDriveFromSerialPort:
    14898    jmp     SerialCommand_IdentifyDeviceToBufferInESSIwithDriveSelectByteInBH
     99
     100%else                   ; IDE
     101    Device_IdentifyToBufferInESSIwithDriveSelectByteInBH    EQU     IdeCommand_IdentifyDeviceToBufferInESSIwithDriveSelectByteInBH
    149102%endif
    150103
     
    165118;       AL, BX, (CX), DX, (ES:SI for data transfer commands)
    166119;--------------------------------------------------------------------
    167 %ifdef MODULE_JRIDE
    168     %ifdef MODULE_SERIAL                ; IDE + JR-IDE/ISA + Serial
    169     Device_OutputCommandWithParameters:
    170         TEST_USING_DPT_AND_JUMP_IF_SERIAL_DEVICE .OutputCommandToSerialPort
    171         CMP_USING_DPT_AND_JUMP_IF_JRIDE_DEVICE .OutputCommandToJrIDE
    172         jmp     IdeCommand_OutputWithParameters
    173 
    174     %else                               ; IDE + JR-IDE/ISA
    175     Device_OutputCommandWithParameters:
    176         CMP_USING_DPT_AND_JUMP_IF_JRIDE_DEVICE .OutputCommandToJrIDE
    177         jmp     IdeCommand_OutputWithParameters
    178     %endif
    179 
    180 %elifdef MODULE_SERIAL                  ; IDE + Serial
     120%ifdef MODULE_SERIAL    ; IDE + Serial
     121ALIGN JUMP_ALIGN
    181122Device_OutputCommandWithParameters:
    182123    TEST_USING_DPT_AND_JUMP_IF_SERIAL_DEVICE .OutputCommandToSerialPort
    183124    jmp     IdeCommand_OutputWithParameters
    184125
    185 %else                                   ; IDE
    186     Device_OutputCommandWithParameters EQU IdeCommand_OutputWithParameters
    187 %endif
    188 
    189 %ifdef MODULE_JRIDE
    190 ALIGN JUMP_ALIGN
    191 .OutputCommandToJrIDE:
    192     jmp     MemIdeCommand_OutputWithParameters
    193 %endif
    194 
    195 %ifdef MODULE_SERIAL
    196126ALIGN JUMP_ALIGN
    197127.OutputCommandToSerialPort:
    198128    jmp     SerialCommand_OutputWithParameters
     129
     130%else                   ; IDE
     131    Device_OutputCommandWithParameters      EQU     IdeCommand_OutputWithParameters
    199132%endif
    200133
     
    211144;       AL, BX, CX, DX
    212145;--------------------------------------------------------------------
    213 %ifdef MODULE_JRIDE
    214     %ifdef MODULE_SERIAL                ; IDE + JR-IDE/ISA + Serial
    215     Device_SelectDrive:
    216         TEST_USING_DPT_AND_JUMP_IF_SERIAL_DEVICE ReturnSuccessForSerialPort
    217         CMP_USING_DPT_AND_JUMP_IF_JRIDE_DEVICE .SelectJrIdeDrive
    218         jmp     IdeCommand_SelectDrive
    219 
    220     %else                               ; IDE + JR-IDE/ISA
    221     Device_SelectDrive:
    222         CMP_USING_DPT_AND_JUMP_IF_JRIDE_DEVICE .SelectJrIdeDrive
    223         jmp     IdeCommand_SelectDrive
    224     %endif
    225 
    226 %elifdef MODULE_SERIAL                  ; IDE + Serial
     146%ifdef MODULE_SERIAL    ; IDE + Serial
    227147Device_SelectDrive:
    228     TEST_USING_DPT_AND_JUMP_IF_SERIAL_DEVICE ReturnSuccessForSerialPort
     148    TEST_USING_DPT_AND_JUMP_IF_SERIAL_DEVICE    ReturnSuccessForSerialPort
    229149    jmp     IdeCommand_SelectDrive
    230150
    231 %else                                   ; IDE
    232     Device_SelectDrive EQU IdeCommand_SelectDrive
     151%else                   ; IDE
     152    Device_SelectDrive      EQU     IdeCommand_SelectDrive
    233153%endif
    234154
    235 %ifdef MODULE_JRIDE
    236 ALIGN JUMP_ALIGN
    237 .SelectJrIdeDrive:
    238     jmp     MemIdeCommand_SelectDrive
    239 %endif
    240155
    241156%ifdef MODULE_SERIAL
Note: See TracChangeset for help on using the changeset viewer.