Changeset 580 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src/Device/IDE
- Timestamp:
- Feb 19, 2015, 1:38:02 PM (10 years ago)
- google:author:
- krille_n_@hotmail.com
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdePioBlock.asm
r567 r580 49 49 ALIGN JUMP_ALIGN 50 50 .InswLoop: 51 %rep 8 51 %rep 8 ; WORDs 52 52 XTIDE_INSW 53 53 %endrep … … 76 76 rep insb 77 77 ret 78 %else ; If 8088/808678 %else ; 808x 79 79 UNROLL_SECTORS_IN_CX_TO_OWORDS 80 80 ALIGN JUMP_ALIGN … … 112 112 ret 113 113 114 %else ; If 8088/8086114 %else ; 808x 115 115 UNROLL_SECTORS_IN_CX_TO_OWORDS 116 116 ALIGN JUMP_ALIGN … … 130 130 db 0C1h ; SHL 131 131 db 0E1h ; CX 132 db 7 ; 7 132 db 7 ; 7 (Sectors to DWORDs) 133 133 rep 134 134 db 66h ; Override operand size to 32-bit … … 155 155 ; Nothing 156 156 ; Corrupts registers: 157 ; AX, BX, CX , DX157 ; AX, BX, CX 158 158 ;-------------------------------------------------------------------- 159 159 ALIGN JUMP_ALIGN … … 162 162 UNROLL_SECTORS_IN_CX_TO_QWORDS 163 163 mov bl, 8 ; Bit mask for toggling data low/high reg 164 push es ; Copy ES...165 pop ds ; ...to DS164 push es 165 pop ds 166 166 ALIGN JUMP_ALIGN 167 167 .OutswLoop: … … 183 183 ; Nothing 184 184 ; Corrupts registers: 185 ; AX, BX, CX , DX185 ; AX, BX, CX 186 186 ;-------------------------------------------------------------------- 187 187 ALIGN JUMP_ALIGN … … 189 189 UNROLL_SECTORS_IN_CX_TO_QWORDS 190 190 push ds 191 push es ; Copy ES...192 pop ds ; ...to DS191 push es 192 pop ds 193 193 ALIGN JUMP_ALIGN 194 194 .WriteNextQword: 195 195 %rep 4 ; WORDs 196 XTIDE_MOD_OUTSW ; special macro196 XTIDE_MOD_OUTSW 197 197 %endrep 198 198 loop .WriteNextQword … … 210 210 ; Nothing 211 211 ; Corrupts registers: 212 ; AX, BX, CX , DX212 ; AX, BX, CX 213 213 ;-------------------------------------------------------------------- 214 214 ALIGN JUMP_ALIGN … … 220 220 ret 221 221 222 %else ; If 8088/8086 223 UNROLL_SECTORS_IN_CX_TO_QWORDS 224 push ds 225 ;mov ax, es 226 ;mov ds, ax ; move es to ds via ax (does this run faster on 8088?) 222 %else ; 808x 223 UNROLL_SECTORS_IN_CX_TO_QWORDS 224 push ds 227 225 push es 228 226 pop ds … … 231 229 %rep 8 ; BYTEs 232 230 lodsb ; Load BYTE from [DS:SI] 233 out dx, al; Write BYTE231 out dx, al ; Write BYTE 234 232 %endrep 235 233 loop .WriteNextQword … … 251 249 ; Nothing 252 250 ; Corrupts registers: 253 ; AX, BX, CX , DX251 ; AX, BX, CX 254 252 ;-------------------------------------------------------------------- 255 253 ALIGN JUMP_ALIGN … … 261 259 ret 262 260 263 %else ; If 8088/8086 264 UNROLL_SECTORS_IN_CX_TO_QWORDS 265 push ds 266 ;mov ax, es 267 ;mov ds, ax ; move es to ds via ax (does this run faster on 8088?) 261 %else ; 808x 262 UNROLL_SECTORS_IN_CX_TO_QWORDS 263 push ds 268 264 push es 269 265 pop ds … … 272 268 %rep 4 ; WORDs 273 269 lodsw ; Load WORD from [DS:SI] 274 out dx, ax; Write WORD270 out dx, ax ; Write WORD 275 271 %endrep 276 272 loop .WriteNextQword 277 273 pop ds 278 274 ret 279 %endif ; if/else USE_186275 %endif 280 276 281 277 ;-------------------------------------------------------------------- … … 284 280 db 0C1h ; SHL 285 281 db 0E1h ; CX 286 db 7 ; 7 282 db 7 ; 7 (Sectors to DWORDs) 287 283 es ; Source is ES segment 288 284 rep
Note:
See TracChangeset
for help on using the changeset viewer.