Changeset 152 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Inc/IDE_8bit.inc
- Timestamp:
- May 1, 2011, 10:42:58 AM (14 years ago)
- google:author:
- aitotat
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS/Inc/IDE_8bit.inc
r150 r152 6 6 7 7 ;-------------------------------------------------------------------- 8 ; Emulates INSW for XTIDE dual (8-bit) data port.8 ; Emulates INSW for XTIDE. 9 9 ; 10 ; eDUAL_BYTE_PORT_INSW10 ; XTIDE_INSW 11 11 ; Parameters: 12 12 ; 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 14 14 ; ES:DI: Ptr to destination buffer 15 15 ; Returns: … … 18 18 ; AL, FLAGS 19 19 ;-------------------------------------------------------------------- 20 %macro eDUAL_BYTE_PORT_INSW 020 %macro XTIDE_INSW 0 21 21 %ifdef USE_186 ; INS instruction available 22 22 insb ; Load low byte from port DX to [ES:DI] … … 36 36 37 37 ;-------------------------------------------------------------------- 38 ; Emulates OUTSW for XTIDE dual (8-bit) data port.38 ; Emulates OUTSW for XTIDE. 39 39 ; 40 ; eDUAL_BYTE_PORT_OUTSW40 ; XTIDE_OUTSW 41 41 ; Parameters: 42 42 ; 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 44 44 ; DS:SI: Ptr to source buffer 45 45 ; Returns: … … 48 48 ; AX, FLAGS 49 49 ;-------------------------------------------------------------------- 50 %macro eDUAL_BYTE_PORT_OUTSW 050 %macro XTIDE_OUTSW 0 51 51 %ifdef USE_186 ; OUTS instruction available 52 52 lodsb ; Load low byte from [DS:SI] to AL 53 53 xor dx, bx ; IDE Data Reg to XTIDE Data High Reg 54 54 outsb ; Output high byte from [DS:SI] 55 xor dx, bx ; IDE Data Reg to XTIDEData Low Reg55 xor dx, bx ; XTIDE Data High Reg to Data Low Reg 56 56 out dx, al ; Output low byte from AL 57 57 %else ; If 8088/8086 … … 60 60 xchg al, ah ; => AL=high byte, AH=low byte 61 61 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 63 94 mov al, ah ; Copy low byte to AL 64 95 out dx, al ; Output low byte
Note:
See TracChangeset
for help on using the changeset viewer.