Changeset 152 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Inc/IDE_8bit.inc


Ignore:
Timestamp:
May 1, 2011, 10:42:58 AM (13 years ago)
Author:
aitotat
google:author:
aitotat
Message:

Changes to XTIDE Universal BIOS:

  • XTIDE mod should now be supported (untested).
  • Interrupt Service Routine no longer requires variable from RAMVARS.
  • Some small improvements.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/XTIDE_Universal_BIOS/Inc/IDE_8bit.inc

    r150 r152  
    66
    77;--------------------------------------------------------------------
    8 ; Emulates INSW for XTIDE dual (8-bit) data port.
     8; Emulates INSW for XTIDE.
    99;
    10 ; eDUAL_BYTE_PORT_INSW
     10; XTIDE_INSW
    1111;   Parameters:
    1212;       BX:     Bit mask for toggling XTIDE data low/high reg
    13 ;       DX:     Port address (must be IDE Data Register)
     13;       DX:     XTIDE Data Low Register address
    1414;       ES:DI:  Ptr to destination buffer
    1515;   Returns:
     
    1818;       AL, FLAGS
    1919;--------------------------------------------------------------------
    20 %macro eDUAL_BYTE_PORT_INSW 0
     20%macro XTIDE_INSW 0
    2121%ifdef USE_186  ; INS instruction available
    2222    insb                        ; Load low byte from port DX to [ES:DI]
     
    3636
    3737;--------------------------------------------------------------------
    38 ; Emulates OUTSW for XTIDE dual (8-bit) data port.
     38; Emulates OUTSW for XTIDE.
    3939;
    40 ; eDUAL_BYTE_PORT_OUTSW
     40; XTIDE_OUTSW
    4141;   Parameters:
    4242;       BX:     Bit mask for toggling XTIDE data low/high reg
    43 ;       DX:     Port address (must be IDE Data Register)
     43;       DX:     XTIDE Data Low Register address
    4444;       DS:SI:  Ptr to source buffer
    4545;   Returns:
     
    4848;       AX, FLAGS
    4949;--------------------------------------------------------------------
    50 %macro eDUAL_BYTE_PORT_OUTSW 0
     50%macro XTIDE_OUTSW 0
    5151%ifdef USE_186  ; OUTS instruction available
    5252    lodsb                       ; Load low byte from [DS:SI] to AL
    5353    xor     dx, bx              ; IDE Data Reg to XTIDE Data High Reg
    5454    outsb                       ; Output high byte from [DS:SI]
    55     xor     dx, bx              ; IDE Data Reg to XTIDE Data Low Reg
     55    xor     dx, bx              ; XTIDE Data High Reg to Data Low Reg
    5656    out     dx, al              ; Output low byte from AL
    5757%else   ; If 8088/8086
     
    6060    xchg    al, ah              ; => AL=high byte, AH=low byte
    6161    out     dx, al              ; Output high byte
    62     xor     dx, bx              ; XTIDE Data High Reg to IDE Data Reg
     62    xor     dx, bx              ; XTIDE Data High Reg to Data Low Reg
     63    mov     al, ah              ; Copy low byte to AL
     64    out     dx, al              ; Output low byte
     65%endif
     66%endmacro
     67
     68
     69;--------------------------------------------------------------------
     70; Emulates OUTSW for modified XTIDE.
     71;
     72; XTIDE_MOD_OUTSW
     73;   Parameters:
     74;       DX:     XTIDE Data Low Register address
     75;       DS:SI:  Ptr to source buffer
     76;   Returns:
     77;       SI:     Incremented/decremented for next word
     78;   Corrupts registers:
     79;       AX, FLAGS
     80;--------------------------------------------------------------------
     81%macro XTIDE_MOD_OUTSW 0
     82%ifdef USE_186  ; OUTS instruction available
     83    lodsb                       ; Load low byte from [DS:SI] to AL
     84    inc     dx                  ; IDE Data Reg to XTIDE MOD Data High Reg
     85    outsb                       ; Output high byte from [DS:SI]
     86    dec     dx                  ; XTIDE Data High Reg to Data Low Reg
     87    out     dx, al              ; Output low byte from AL
     88%else   ; If 8088/8086
     89    lodsw                       ; Load word from [DS:SI]
     90    inc     dx                  ; IDE Data Reg to XTIDE MOD Data High Reg
     91    xchg    al, ah              ; => AL=high byte, AH=low byte
     92    out     dx, al              ; Output high byte
     93    dec     dx                  ; XTIDE Data High Reg to Data Low Reg
    6394    mov     al, ah              ; Copy low byte to AL
    6495    out     dx, al              ; Output low byte
Note: See TracChangeset for help on using the changeset viewer.