- Timestamp:
- Nov 3, 2012, 9:05:48 PM (12 years ago)
- google:author:
- aitotat@gmail.com
- Location:
- trunk/XTIDE_Universal_BIOS/Src
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeDmaBlock.asm
r482 r486 75 75 TransferBlockToOrFromXTCF: 76 76 ; 8-bit DMA transfers must be done withing 64k physical page. 77 ; We support maximum of 128 sectors (65536 bytes) per one INT 13h call78 ; so we might need to separate transfer to2 separate DMA operations.77 ; XT-CF support maximum of 64 sector (32768 bytes) blocks in DMA mode 78 ; so we never need to separate transfer to more than 2 separate DMA operations. 79 79 80 80 ; Load XT-CF Control Register port to DX … … 110 110 ; Parameters: 111 111 ; BL: Byte for DMA Mode Register 112 ; CX: Number of BYTEs to transfer 112 ; CX: Number of BYTEs to transfer (1...32768 since max block size is limited to 64) 113 113 ; DX: XTCF Control Register 114 114 ; Returns: … … 151 151 152 152 153 %if 0 ; Slow DMA code 153 154 ; XT-CF transfers 16 bytes at a time. We need to manually 154 155 ; start transfer for every block. … … 163 164 test al, FLG_CH3_HAS_REACHED_TERMINAL_COUNT 164 165 jz SHORT .TransferNextBlock ; All bytes transferred? 166 %endif ; Slow DMA code 167 168 169 %if 1 ; Fast DMA code 170 push cx 171 add cx, BYTE 15 ; Include any partial DMA block (since we had to divide transfer to 64k physical pages) 172 eSHR_IM cx, 4 ; Drive Block size to 16 Byte DMA Block Size 173 174 .JustOneMoreDmaBlock: 175 mov al, RAISE_DRQ_AND_CLEAR_XTCF_XFER_COUNTER 176 ALIGN JUMP_ALIGN 177 .TransferNextDmaBlock: 178 out dx, al ; Transfer 16 bytes to/from XT-CF card 179 loop .TransferNextDmaBlock 180 181 inc cx ; set up CX, in case we need to do an extra iteration 182 in al, STATUS_REGISTER_DMA8_in 183 test al, FLG_CH3_HAS_REACHED_TERMINAL_COUNT 184 jz SHORT .JustOneMoreDmaBlock ; it wasn't set so get more bytes 185 pop cx 186 %endif ; Fast DMA code 187 165 188 166 189 ; Restore XT-CF to normal operation -
trunk/XTIDE_Universal_BIOS/Src/Strings.asm
r473 r486 120 120 g_szDeviceTypeValues_16bit: db " 16",NULL 121 121 g_szDeviceTypeValues_32bit: db " 32",NULL 122 g_szDeviceTypeValues_8bit: db " 8",NULL 122 123 g_szDeviceTypeValues_XTIDEr1: db "D8 ",NULL ; Dual 8-bit 123 124 g_szDeviceTypeValues_XTIDEr2: db "X8 ",NULL ; A0<->A3 swapped 8-bit … … 136 137 %error "g_szDeviceTypeValues Displacement Incorrect 1" 137 138 %endif 138 %if g_szDeviceTypeValues_32bit <> g_szDeviceTypeValues + g_szDeviceTypeValues_Displacement139 %if g_szDeviceTypeValues_32bit <> g_szDeviceTypeValues_16bit + g_szDeviceTypeValues_Displacement 139 140 %error "g_szDeviceTypeValues Displacement Incorrect 2" 140 141 %endif 141 %if g_szDeviceTypeValues_XTIDEr1 <> g_szDeviceTypeValues_32bit + g_szDeviceTypeValues_Displacement 142 %if g_szDeviceTypeValues_8bit <> g_szDeviceTypeValues_32bit + g_szDeviceTypeValues_Displacement 143 %error "g_szDeviceTypeValues Displacement Incorrect 2" 144 %endif 145 %if g_szDeviceTypeValues_XTIDEr1 <> g_szDeviceTypeValues_8bit + g_szDeviceTypeValues_Displacement 142 146 %error "g_szDeviceTypeValues Displacement Incorrect 3" 143 147 %endif -
trunk/XTIDE_Universal_BIOS/Src/StringsCompressed.asm
r473 r486 226 226 db 20h, 2dh, 0ch ; compressed 227 227 228 g_szDeviceTypeValues_8bit: ; db " 8",NULL 229 ; db 20h, 20h, 38h, 00h ; uncompressed 230 db 20h, 20h, 11h ; compressed 231 228 232 g_szDeviceTypeValues_XTIDEr1: ; db "D8 ",NULL ; Dual 8-bit 229 233 ; db 44h, 38h, 20h, 00h ; uncompressed … … 263 267 %error "g_szDeviceTypeValues Displacement Incorrect 1" 264 268 %endif 265 %if g_szDeviceTypeValues_32bit <> g_szDeviceTypeValues + g_szDeviceTypeValues_Displacement269 %if g_szDeviceTypeValues_32bit <> g_szDeviceTypeValues_16bit + g_szDeviceTypeValues_Displacement 266 270 %error "g_szDeviceTypeValues Displacement Incorrect 2" 267 271 %endif 268 %if g_szDeviceTypeValues_XTIDEr1 <> g_szDeviceTypeValues_32bit + g_szDeviceTypeValues_Displacement 272 %if g_szDeviceTypeValues_8bit <> g_szDeviceTypeValues_32bit + g_szDeviceTypeValues_Displacement 273 %error "g_szDeviceTypeValues Displacement Incorrect 2" 274 %endif 275 %if g_szDeviceTypeValues_XTIDEr1 <> g_szDeviceTypeValues_8bit + g_szDeviceTypeValues_Displacement 269 276 %error "g_szDeviceTypeValues Displacement Incorrect 3" 270 277 %endif … … 489 496 ;; translated usage stats 490 497 ;; 33:1 491 ;; 32:2 7498 ;; 32:29 492 499 ;; 181:1 493 500 ;; 53:2 … … 504 511 ;; 34:3 505 512 ;; 49:1 506 ;; 56: 6513 ;; 56:7 507 514 ;; 45:1 508 515 ;; 175:1
Note:
See TracChangeset
for help on using the changeset viewer.