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/IDE/IdeCommand.asm

    r218 r238  
    1515;       AL, BX, CX, DX
    1616;--------------------------------------------------------------------
    17 IdeCommand_ResetMasterAndSlaveController:
     17IDEDEVICE%+Command_ResetMasterAndSlaveController:
    1818    ; HSR0: Set_SRST
    1919    call    AccessDPT_GetDeviceControlByteToAL
    2020    or      al, FLG_DEVCONTROL_SRST | FLG_DEVCONTROL_nIEN   ; Set Reset bit
    21     mov     dl, DEVICE_CONTROL_REGISTER_out
    22     call    IdeIO_OutputALtoIdeControlBlockRegisterInDL
     21    OUTPUT_AL_TO_IDE_CONTROL_BLOCK_REGISTER DEVICE_CONTROL_REGISTER_out
    2322    mov     ax, HSR0_RESET_WAIT_US
    2423    call    Timer_DelayMicrosecondsFromAX
     
    2827    or      al, FLG_DEVCONTROL_nIEN
    2928    and     al, ~FLG_DEVCONTROL_SRST                        ; Clear reset bit
    30     mov     dl, DEVICE_CONTROL_REGISTER_out
    31     call    IdeIO_OutputALtoIdeControlBlockRegisterInDL
     29    OUTPUT_AL_TO_IDE_CONTROL_BLOCK_REGISTER DEVICE_CONTROL_REGISTER_out
    3230    mov     ax, HSR1_RESET_WAIT_US
    3331    call    Timer_DelayMicrosecondsFromAX
     
    3533    ; HSR2: Check_status
    3634    mov     bx, TIMEOUT_AND_STATUS_TO_WAIT(TIMEOUT_MOTOR_STARTUP, FLG_STATUS_BSY)
    37     jmp     IdeWait_PollStatusFlagInBLwithTimeoutInBH
     35    jmp     IDEDEVICE%+Wait_PollStatusFlagInBLwithTimeoutInBH
    3836
    3937
     
    5149;       AL, BL, CX, DX, SI, DI, ES
    5250;--------------------------------------------------------------------
    53 IdeCommand_IdentifyDeviceToBufferInESSIwithDriveSelectByteInBH:
     51IDEDEVICE%+Command_IdentifyDeviceToBufferInESSIwithDriveSelectByteInBH:
    5452    ; Create fake DPT to be able to use Device.asm functions
    5553    call    FindDPT_ForNewDriveToDSDI
     
    6664    jnz     SHORT .SkipLongWaitSinceDriveIsNotPrimaryMaster
    6765    mov     bx, TIMEOUT_AND_STATUS_TO_WAIT(TIMEOUT_MOTOR_STARTUP, FLG_STATUS_BSY)
    68     call    IdeWait_PollStatusFlagInBLwithTimeoutInBH
     66    call    IDEDEVICE%+Wait_PollStatusFlagInBLwithTimeoutInBH
    6967.SkipLongWaitSinceDriveIsNotPrimaryMaster:
    7068
     
    10098;--------------------------------------------------------------------
    10199ALIGN JUMP_ALIGN
    102 IdeCommand_OutputWithParameters:
     100IDEDEVICE%+Command_OutputWithParameters:
    103101    push    bx                      ; Store status register bits to poll
    104102
    105103    ; Select Master or Slave drive and output head number or LBA28 top bits
    106     call    IdeCommand_SelectDrive
     104    call    IDEDEVICE%+Command_SelectDrive
    107105    jc      SHORT .DriveNotReady
    108106
     
    119117    pop     ds
    120118.DoNotSetInterruptInServiceFlag:
    121     mov     dl, DEVICE_CONTROL_REGISTER_out
    122     call    IdeIO_OutputALtoIdeControlBlockRegisterInDL
     119    OUTPUT_AL_TO_IDE_CONTROL_BLOCK_REGISTER DEVICE_CONTROL_REGISTER_out
    123120
    124121    ; Output Feature Number
    125     mov     dl, FEATURES_REGISTER_out
    126122    mov     al, [bp+IDEPACK.bFeatures]
    127     call    IdeIO_OutputALtoIdeRegisterInDL
     123    OUTPUT_AL_TO_IDE_REGISTER FEATURES_REGISTER_out
    128124
    129125    ; Output Sector Address High (only used by LBA48)
     
    138134
    139135    ; Output command
    140     mov     dl, COMMAND_REGISTER_out
    141136    mov     al, [bp+IDEPACK.bCommand]
    142     call    IdeIO_OutputALtoIdeRegisterInDL
     137    OUTPUT_AL_TO_IDE_REGISTER COMMAND_REGISTER_out
    143138
    144139    ; Wait until command completed
    145140    pop     bx                      ; Pop status and timeout for polling
    146141    cmp     bl, FLG_STATUS_DRQ      ; Data transfer started?
    147     je      SHORT IdeTransfer_StartWithCommandInAL
     142    je      SHORT IDEDEVICE%+Transfer_StartWithCommandInAL
    148143    test    BYTE [bp+IDEPACK.bDeviceControl], FLG_DEVCONTROL_nIEN
    149144    jz      SHORT .WaitForIrqOrRdy
    150     jmp     IdeWait_PollStatusFlagInBLwithTimeoutInBH
     145    jmp     IDEDEVICE%+Wait_PollStatusFlagInBLwithTimeoutInBH
    151146
    152147ALIGN JUMP_ALIGN
    153148.WaitForIrqOrRdy:
    154     jmp     IdeWait_IRQorStatusFlagInBLwithTimeoutInBH
     149    jmp     IDEDEVICE%+Wait_IRQorStatusFlagInBLwithTimeoutInBH
    155150
    156151.DriveNotReady:
    157152    pop     bx                          ; Clean stack
    158 ReturnSinceTimeoutWhenPollingBusy:
     153IDEDEVICE%+ReturnSinceTimeoutWhenPollingBusy:
    159154    ret
    160155
     
    172167;--------------------------------------------------------------------
    173168ALIGN JUMP_ALIGN
    174 IdeCommand_SelectDrive:
     169IDEDEVICE%+Command_SelectDrive:
    175170    ; Wait until neither Master or Slave Drive is busy
    176171    mov     bx, TIMEOUT_AND_STATUS_TO_WAIT(TIMEOUT_BSY, FLG_STATUS_BSY)
    177172    cmp     BYTE [bp+IDEPACK.bCommand], COMMAND_IDENTIFY_DEVICE
    178173    eCMOVE  bh, TIMEOUT_IDENTIFY_DEVICE
    179     call    IdeWait_PollStatusFlagInBLwithTimeoutInBH
    180     jc      SHORT ReturnSinceTimeoutWhenPollingBusy
     174    call    IDEDEVICE%+Wait_PollStatusFlagInBLwithTimeoutInBH
     175    jc      SHORT IDEDEVICE%+ReturnSinceTimeoutWhenPollingBusy
    181176
    182177    ; Select Master or Slave Drive
    183     mov     dl, DRIVE_AND_HEAD_SELECT_REGISTER
    184178    mov     al, [bp+IDEPACK.bDrvAndHead]
    185     call    IdeIO_OutputALtoIdeRegisterInDL
     179    OUTPUT_AL_TO_IDE_REGISTER DRIVE_AND_HEAD_SELECT_REGISTER
    186180    mov     bx, TIMEOUT_AND_STATUS_TO_WAIT(TIMEOUT_DRDY, FLG_STATUS_DRDY)
    187181    cmp     BYTE [bp+IDEPACK.bCommand], COMMAND_IDENTIFY_DEVICE
    188182    eCMOVE  bh, TIMEOUT_IDENTIFY_DEVICE
    189     jmp     IdeWait_PollStatusFlagInBLwithTimeoutInBH
     183    jmp     IDEDEVICE%+Wait_PollStatusFlagInBLwithTimeoutInBH
    190184
    191185
     
    203197;       AL, BX, DX
    204198;--------------------------------------------------------------------
     199%ifdef ASSEMBLE_SHARED_IDE_DEVICE_FUNCTIONS
    205200ALIGN JUMP_ALIGN
    206201OutputSectorCountAndAddress:
    207     mov     dl, SECTOR_COUNT_REGISTER
    208     call    IdeIO_OutputALtoIdeRegisterInDL
     202    OUTPUT_AL_TO_IDE_REGISTER SECTOR_COUNT_REGISTER
    209203
    210204    mov     al, ah
    211     mov     dl, LBA_LOW_REGISTER
    212     call    IdeIO_OutputALtoIdeRegisterInDL
     205    OUTPUT_AL_TO_IDE_REGISTER LBA_LOW_REGISTER
    213206
    214207    mov     al, cl
    215     mov     dl, LBA_MIDDLE_REGISTER
    216     call    IdeIO_OutputALtoIdeRegisterInDL
     208    OUTPUT_AL_TO_IDE_REGISTER LBA_MIDDLE_REGISTER
    217209
    218210    mov     al, ch
    219     mov     dl, LBA_HIGH_REGISTER
    220     jmp     IdeIO_OutputALtoIdeRegisterInDL
     211    JUMP_TO_OUTPUT_AL_TO_IDE_REGISTER LBA_HIGH_REGISTER
     212%endif
Note: See TracChangeset for help on using the changeset viewer.