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


Ignore:
Timestamp:
Feb 5, 2012, 12:59:20 PM (12 years ago)
Author:
aitotat@…
google:author:
aitotat@gmail.com
Message:

Changes to XTIDE Universal BIOS:

  • Makefile now builds small (8k) and large versions.
  • Completely untested support for JR-IDE/ISA.
File:
1 edited

Legend:

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

    r218 r238  
    44; Section containing code
    55SECTION .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
    625
    726;--------------------------------------------------------------------
     
    1837%ifdef MODULE_SERIAL
    1938Device_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
    2240    jmp     IdeDPT_Finalize
    23 
    2441.FinalizeDptForSerialPortDevice:
    2542    jmp     SerialDPT_Finalize
    26 %else
     43
     44%else   ; IDE or JR-IDE/ISA
    2745    Device_FinalizeDPT EQU IdeDPT_Finalize
    2846%endif
     
    3957;       AL, BX, CX, DX
    4058;--------------------------------------------------------------------
    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
    4273Device_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
    4575    jmp     IdeCommand_ResetMasterAndSlaveController
    46 %else
     76
     77%else                                   ; IDE
    4778    Device_ResetMasterAndSlaveController EQU IdeCommand_ResetMasterAndSlaveController
     79%endif
     80
     81%ifdef MODULE_JRIDE
     82.ResetJrIDE:
     83    jmp     MemIdeCommand_ResetMasterAndSlaveController
    4884%endif
    4985
     
    6298;       AL, BL, CX, DX, SI, DI, ES
    6399;--------------------------------------------------------------------
    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
    65114Device_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
    68116    jmp     IdeCommand_IdentifyDeviceToBufferInESSIwithDriveSelectByteInBH
    69117
     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
    70128.IdentifyDriveFromSerialPort:
    71129    jmp     SerialCommand_IdentifyDeviceToBufferInESSIwithDriveSelectByteInBH
    72 %else
    73     Device_IdentifyToBufferInESSIwithDriveSelectByteInBH EQU IdeCommand_IdentifyDeviceToBufferInESSIwithDriveSelectByteInBH
    74130%endif
    75131
     
    89145;       AL, BX, CX, DX, (ES:SI for data transfer commands)
    90146;--------------------------------------------------------------------
    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
    93161Device_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
    96163    jmp     IdeCommand_OutputWithParameters
    97164
     165%else                                   ; IDE
     166    Device_OutputCommandWithParameters EQU IdeCommand_OutputWithParameters
     167%endif
     168
     169%ifdef MODULE_JRIDE
     170ALIGN JUMP_ALIGN
     171.OutputCommandToJrIDE:
     172    jmp     MemIdeCommand_OutputWithParameters
     173%endif
     174
     175%ifdef MODULE_SERIAL
    98176ALIGN JUMP_ALIGN
    99177.OutputCommandToSerialPort:
    100178    jmp     SerialCommand_OutputWithParameters
    101 %else
    102     Device_OutputCommandWithParameters EQU IdeCommand_OutputWithParameters
    103179%endif
    104180
     
    115191;       AL, BX, CX, DX
    116192;--------------------------------------------------------------------
    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
    119207Device_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
    122209    jmp     IdeCommand_SelectDrive
    123210
     211%else                                   ; IDE
     212    Device_SelectDrive EQU IdeCommand_SelectDrive
     213%endif
     214
     215%ifdef MODULE_JRIDE
     216ALIGN JUMP_ALIGN
     217.SelectJrIdeDrive:
     218    jmp     MemIdeCommand_SelectDrive
     219%endif
     220
     221%ifdef MODULE_SERIAL
     222ALIGN JUMP_ALIGN
    124223ReturnSuccessForSerialPort:
    125224    xor     ax, ax
    126225    ret
    127 %else
    128     Device_SelectDrive EQU IdeCommand_SelectDrive
    129 %endif
    130 
     226%endif
Note: See TracChangeset for help on using the changeset viewer.