Changeset 238 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src/Device/Device.asm
- Timestamp:
- Feb 5, 2012, 12:59:20 PM (13 years ago)
- google:author:
- aitotat@gmail.com
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS/Src/Device/Device.asm
r218 r238 4 4 ; Section containing code 5 5 SECTION .text 6 7 8 %macro TEST_USIGN_DPT_AND_JUMP_IF_SERIAL_DEVICE 1 9 test BYTE [di+DPT.bFlagsHigh], FLGH_DPT_SERIAL_DEVICE 10 jnz SHORT %1 11 %endmacro 12 13 %macro CMP_USING_DPT_AND_JUMP_IF_JRIDE_DEVICE 1 14 eMOVZX bx, [di+DPT.bIdevarsOffset] 15 cmp BYTE [cs:bx+IDEVARS.bDevice], DEVICE_JRIDE_ISA 16 je SHORT %1 17 %endmacro 18 19 %macro CMP_USING_IDEVARS_IN_CSBP_AND_JUMP_IF 2 20 cmp BYTE [cs:bp+IDEVARS.bDevice], %1 21 je SHORT %2 22 %endmacro 23 24 6 25 7 26 ;-------------------------------------------------------------------- … … 18 37 %ifdef MODULE_SERIAL 19 38 Device_FinalizeDPT: 20 test BYTE [di+DPT.bFlagsHigh], FLGH_DPT_SERIAL_DEVICE 21 jnz SHORT .FinalizeDptForSerialPortDevice 39 TEST_USIGN_DPT_AND_JUMP_IF_SERIAL_DEVICE .FinalizeDptForSerialPortDevice 22 40 jmp IdeDPT_Finalize 23 24 41 .FinalizeDptForSerialPortDevice: 25 42 jmp SerialDPT_Finalize 26 %else 43 44 %else ; IDE or JR-IDE/ISA 27 45 Device_FinalizeDPT EQU IdeDPT_Finalize 28 46 %endif … … 39 57 ; AL, BX, CX, DX 40 58 ;-------------------------------------------------------------------- 41 %ifdef MODULE_SERIAL 59 %ifdef MODULE_JRIDE 60 %ifdef MODULE_SERIAL ; IDE + JR-IDE/ISA + Serial 61 Device_ResetMasterAndSlaveController: 62 TEST_USIGN_DPT_AND_JUMP_IF_SERIAL_DEVICE ReturnSuccessForSerialPort 63 CMP_USING_DPT_AND_JUMP_IF_JRIDE_DEVICE .ResetJrIDE 64 jmp IdeCommand_ResetMasterAndSlaveController 65 66 %else ; IDE + JR-IDE/ISA 67 Device_ResetMasterAndSlaveController: 68 CMP_USING_DPT_AND_JUMP_IF_JRIDE_DEVICE .ResetJrIDE 69 jmp IdeCommand_ResetMasterAndSlaveController 70 %endif 71 72 %elifdef MODULE_SERIAL ; IDE + Serial 42 73 Device_ResetMasterAndSlaveController: 43 test BYTE [di+DPT.bFlagsHigh], FLGH_DPT_SERIAL_DEVICE 44 jnz SHORT ReturnSuccessForSerialPort 74 TEST_USIGN_DPT_AND_JUMP_IF_SERIAL_DEVICE ReturnSuccessForSerialPort 45 75 jmp IdeCommand_ResetMasterAndSlaveController 46 %else 76 77 %else ; IDE 47 78 Device_ResetMasterAndSlaveController EQU IdeCommand_ResetMasterAndSlaveController 79 %endif 80 81 %ifdef MODULE_JRIDE 82 .ResetJrIDE: 83 jmp MemIdeCommand_ResetMasterAndSlaveController 48 84 %endif 49 85 … … 62 98 ; AL, BL, CX, DX, SI, DI, ES 63 99 ;-------------------------------------------------------------------- 64 %ifdef MODULE_SERIAL 100 %ifdef MODULE_JRIDE 101 %ifdef MODULE_SERIAL ; IDE + JR-IDE/ISA + Serial 102 Device_IdentifyToBufferInESSIwithDriveSelectByteInBH: 103 CMP_USING_IDEVARS_IN_CSBP_AND_JUMP_IF DEVICE_SERIAL_PORT, .IdentifyDriveFromSerialPort 104 CMP_USING_IDEVARS_IN_CSBP_AND_JUMP_IF DEVICE_JRIDE_ISA, .IdentifyDriveFromJrIde 105 jmp IdeCommand_IdentifyDeviceToBufferInESSIwithDriveSelectByteInBH 106 107 %else ; IDE + JR-IDE/ISA 108 Device_IdentifyToBufferInESSIwithDriveSelectByteInBH: 109 CMP_USING_IDEVARS_IN_CSBP_AND_JUMP_IF DEVICE_JRIDE_ISA, .IdentifyDriveFromJrIde 110 jmp IdeCommand_IdentifyDeviceToBufferInESSIwithDriveSelectByteInBH 111 %endif 112 113 %elifdef MODULE_SERIAL ; IDE + Serial 65 114 Device_IdentifyToBufferInESSIwithDriveSelectByteInBH: 66 cmp BYTE [cs:bp+IDEVARS.bDevice], DEVICE_SERIAL_PORT 67 je SHORT .IdentifyDriveFromSerialPort 115 CMP_USING_IDEVARS_IN_CSBP_AND_JUMP_IF DEVICE_SERIAL_PORT, .IdentifyDriveFromSerialPort 68 116 jmp IdeCommand_IdentifyDeviceToBufferInESSIwithDriveSelectByteInBH 69 117 118 %else ; IDE 119 Device_IdentifyToBufferInESSIwithDriveSelectByteInBH EQU IdeCommand_IdentifyDeviceToBufferInESSIwithDriveSelectByteInBH 120 %endif 121 122 %ifdef MODULE_JRIDE 123 .IdentifyDriveFromJrIde: 124 jmp MemIdeCommand_IdentifyDeviceToBufferInESSIwithDriveSelectByteInBH 125 %endif 126 127 %ifdef MODULE_SERIAL 70 128 .IdentifyDriveFromSerialPort: 71 129 jmp SerialCommand_IdentifyDeviceToBufferInESSIwithDriveSelectByteInBH 72 %else73 Device_IdentifyToBufferInESSIwithDriveSelectByteInBH EQU IdeCommand_IdentifyDeviceToBufferInESSIwithDriveSelectByteInBH74 130 %endif 75 131 … … 89 145 ; AL, BX, CX, DX, (ES:SI for data transfer commands) 90 146 ;-------------------------------------------------------------------- 91 %ifdef MODULE_SERIAL 92 ALIGN JUMP_ALIGN 147 %ifdef MODULE_JRIDE 148 %ifdef MODULE_SERIAL ; IDE + JR-IDE/ISA + Serial 149 Device_OutputCommandWithParameters: 150 TEST_USIGN_DPT_AND_JUMP_IF_SERIAL_DEVICE .OutputCommandToSerialPort 151 CMP_USING_DPT_AND_JUMP_IF_JRIDE_DEVICE .OutputCommandToJrIDE 152 jmp IdeCommand_OutputWithParameters 153 154 %else ; IDE + JR-IDE/ISA 155 Device_OutputCommandWithParameters: 156 CMP_USING_DPT_AND_JUMP_IF_JRIDE_DEVICE .OutputCommandToJrIDE 157 jmp IdeCommand_OutputWithParameters 158 %endif 159 160 %elifdef MODULE_SERIAL ; IDE + Serial 93 161 Device_OutputCommandWithParameters: 94 test BYTE [di+DPT.bFlagsHigh], FLGH_DPT_SERIAL_DEVICE 95 jnz SHORT .OutputCommandToSerialPort 162 TEST_USIGN_DPT_AND_JUMP_IF_SERIAL_DEVICE .OutputCommandToSerialPort 96 163 jmp IdeCommand_OutputWithParameters 97 164 165 %else ; IDE 166 Device_OutputCommandWithParameters EQU IdeCommand_OutputWithParameters 167 %endif 168 169 %ifdef MODULE_JRIDE 170 ALIGN JUMP_ALIGN 171 .OutputCommandToJrIDE: 172 jmp MemIdeCommand_OutputWithParameters 173 %endif 174 175 %ifdef MODULE_SERIAL 98 176 ALIGN JUMP_ALIGN 99 177 .OutputCommandToSerialPort: 100 178 jmp SerialCommand_OutputWithParameters 101 %else102 Device_OutputCommandWithParameters EQU IdeCommand_OutputWithParameters103 179 %endif 104 180 … … 115 191 ; AL, BX, CX, DX 116 192 ;-------------------------------------------------------------------- 117 %ifdef MODULE_SERIAL 118 ALIGN JUMP_ALIGN 193 %ifdef MODULE_JRIDE 194 %ifdef MODULE_SERIAL ; IDE + JR-IDE/ISA + Serial 195 Device_SelectDrive: 196 TEST_USIGN_DPT_AND_JUMP_IF_SERIAL_DEVICE ReturnSuccessForSerialPort 197 CMP_USING_DPT_AND_JUMP_IF_JRIDE_DEVICE .SelectJrIdeDrive 198 jmp IdeCommand_SelectDrive 199 200 %else ; IDE + JR-IDE/ISA 201 Device_SelectDrive: 202 CMP_USING_DPT_AND_JUMP_IF_JRIDE_DEVICE .SelectJrIdeDrive 203 jmp IdeCommand_SelectDrive 204 %endif 205 206 %elifdef MODULE_SERIAL ; IDE + Serial 119 207 Device_SelectDrive: 120 test BYTE [di+DPT.bFlagsHigh], FLGH_DPT_SERIAL_DEVICE 121 jnz SHORT ReturnSuccessForSerialPort 208 TEST_USIGN_DPT_AND_JUMP_IF_SERIAL_DEVICE ReturnSuccessForSerialPort 122 209 jmp IdeCommand_SelectDrive 123 210 211 %else ; IDE 212 Device_SelectDrive EQU IdeCommand_SelectDrive 213 %endif 214 215 %ifdef MODULE_JRIDE 216 ALIGN JUMP_ALIGN 217 .SelectJrIdeDrive: 218 jmp MemIdeCommand_SelectDrive 219 %endif 220 221 %ifdef MODULE_SERIAL 222 ALIGN JUMP_ALIGN 124 223 ReturnSuccessForSerialPort: 125 224 xor ax, ax 126 225 ret 127 %else 128 Device_SelectDrive EQU IdeCommand_SelectDrive 129 %endif 130 226 %endif
Note:
See TracChangeset
for help on using the changeset viewer.