Changeset 558 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdePioBlock.asm
- Timestamp:
- Jun 23, 2013, 3:52:31 PM (12 years ago)
- google:author:
- krille_n_@hotmail.com
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdePioBlock.asm
r545 r558 1 1 ; Project name : XTIDE Universal BIOS 2 ; Description : IDE Read/Write functions for transferring 3 ; block using PIO modes. 2 ; Description : IDE Read/Write functions for transferring block using PIO modes. 4 3 ; These functions should only be called from IdeTransfer.asm. 5 4 … … 65 64 ; 66 65 ; Parameters: 67 ; CX: Block size in 512 byte sectors68 ; DX: IDE Data port address66 ; CX: Block size in 512 byte sectors 67 ; DX: IDE Data port address 69 68 ; ES:DI: Normalized ptr to buffer to receive data 70 69 ; Returns: … … 100 99 ; 101 100 ; Parameters: 102 ; CX: Block size in 512 byte sectors103 ; DX: IDE Data port address101 ; CX: Block size in 512 byte sectors 102 ; DX: IDE Data port address 104 103 ; ES:DI: Normalized ptr to buffer to receive data 105 104 ; Returns: … … 111 110 IdePioBlock_ReadFrom16bitDataPort: 112 111 %ifdef USE_186 113 xchg 112 xchg cl, ch ; Sectors to WORDs 114 113 rep insw 115 114 ret … … 120 119 .ReadNextOword: 121 120 %rep 8 ; WORDs 122 in ax, dx ; Read BYTE123 stosw ; Store BYTEto [ES:DI]121 in ax, dx ; Read WORD 122 stosw ; Store WORD to [ES:DI] 124 123 %endrep 125 124 loop .ReadNextOword … … 152 151 ; IdePioBlock_WriteToXtideRev1 153 152 ; Parameters: 154 ; CX: Block size in 512-byte sectors155 ; DX: IDE Data port address153 ; CX: Block size in 512-byte sectors 154 ; DX: IDE Data port address 156 155 ; ES:SI: Normalized ptr to buffer containing data 157 156 ; Returns: … … 180 179 ; IdePioBlock_WriteToXtideRev2 or rev 1 with swapped A0 and A3 (chuck-mod) 181 180 ; Parameters: 182 ; CX: Block size in 512-byte sectors183 ; DX: IDE Data port address181 ; CX: Block size in 512-byte sectors 182 ; DX: IDE Data port address 184 183 ; ES:SI: Normalized ptr to buffer containing data 185 184 ; Returns: … … 191 190 IdePioBlock_WriteToXtideRev2: 192 191 UNROLL_SECTORS_IN_CX_TO_QWORDS 193 push 194 push 195 pop 192 push ds 193 push es ; Copy ES... 194 pop ds ; ...to DS 196 195 ALIGN JUMP_ALIGN 197 196 .WriteNextQword: … … 207 206 ; IdePioBlock_WriteTo8bitDataPort 208 207 ; Parameters: 209 ; CX: Block size in 512-byte sectors210 ; DX: IDE Data port address208 ; CX: Block size in 512-byte sectors 209 ; DX: IDE Data port address 211 210 ; ES:SI: Normalized ptr to buffer containing data 212 211 ; Returns: … … 225 224 %else ; If 8088/8086 226 225 UNROLL_SECTORS_IN_CX_TO_QWORDS 227 push 228 ;mov 229 ;mov 230 push 231 pop 226 push ds 227 ;mov ax, es 228 ;mov ds, ax ; move es to ds via ax (does this run faster on 8088?) 229 push es 230 pop ds 232 231 ALIGN JUMP_ALIGN 233 232 .WriteNextQword: … … 248 247 ; IdePioBlock_WriteTo32bitDataPort VLB/PCI 32-bit IDE 249 248 ; Parameters: 250 ; CX: Block size in 512-byte sectors251 ; DX: IDE Data port address249 ; CX: Block size in 512-byte sectors 250 ; DX: IDE Data port address 252 251 ; ES:SI: Normalized ptr to buffer containing data 253 252 ; Returns: … … 274 273 .WriteNextQword: 275 274 %rep 4 ; WORDs 276 lodsw ; Load BYTEfrom [DS:SI]277 out dx, ax ; Write BYTE275 lodsw ; Load WORD from [DS:SI] 276 out dx, ax ; Write WORD 278 277 %endrep 279 278 loop .WriteNextQword
Note:
See TracChangeset
for help on using the changeset viewer.