Changeset 584 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src
- Timestamp:
- Apr 25, 2015, 7:17:41 PM (10 years ago)
- google:author:
- aitotat
- Location:
- trunk/XTIDE_Universal_BIOS/Src
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeCommand.asm
r545 r584 89 89 90 90 %ifdef MODULE_8BIT_IDE 91 ; Enable 8-bit PIO mode for 8-bit ATA and XT-CF92 91 push si 92 93 ; Enable 8-bit PIO for DEVICE_8BIT_ATA (no need to verify device type here) 93 94 call AH9h_Enable8bitModeForDevice8bitAta 95 96 ; Set XT-CF mode. No need to check here if device is XT-CF or not. 94 97 %ifdef MODULE_8BIT_IDE_ADVANCED 95 mov al, XTCF_8BIT_PIO_MODE ; initialise with most basic transfer mode96 call AH9h_SetModeFromALtoXTCF 98 call AH1Eh_GetCurrentXTCFmodeToAX ; Reads from DPT_ATA.bDevice that we just stored 99 call AH9h_SetModeFromALtoXTCF ; Enables/disables 8-bit mode when necessary 97 100 %endif ; MODULE_8BIT_IDE_ADVANCED 98 101 pop si … … 106 109 107 110 ; Clean stack and return 108 .FailedToSet8bitMode:109 111 lea sp, [bp+SIZE_OF_IDEPACK_WITHOUT_INTPACK] ; This assumes BP hasn't changed between Idepack_FakeToSSBP and here 110 112 pop bp -
trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeTransfer.asm
r568 r584 350 350 dw IdePioBlock_ReadFromXtideRev1 ; 3, DEVICE_8BIT_XTIDE_REV1 351 351 dw IdePioBlock_ReadFrom16bitDataPort ; 4, DEVICE_8BIT_XTIDE_REV2 352 %ifdef MODULE_8BIT_IDE_ADVANCED 352 353 dw IdePioBlock_ReadFrom8bitDataPort ; 5, DEVICE_8BIT_XTCF_PIO8 353 354 dw IdePioBlock_ReadFrom16bitDataPort ; 6, DEVICE_8BIT_XTCF_PIO8_WITH_BIU_OFFLOAD 354 %ifdef MODULE_8BIT_IDE_ADVANCED355 dw IdeDmaBlock_ReadFromXTCF ; 7, DEVICE_8BIT_XTCF_DMA355 dw IdePioBlock_ReadFrom16bitDataPort ; 7, DEVICE_8BIT_XTCF_PIO16_WITH_BIU_OFFLOAD 356 dw IdeDmaBlock_ReadFromXTCF ; 8, DEVICE_8BIT_XTCF_DMA 356 357 %endif ; MODULE_8BIT_IDE_ADVANCED 357 358 %endif ; MODULE_8BIT_IDE … … 365 366 dw IdePioBlock_WriteToXtideRev1 ; 3, DEVICE_8BIT_XTIDE_REV1 366 367 dw IdePioBlock_WriteToXtideRev2 ; 4, DEVICE_8BIT_XTIDE_REV2 368 %ifdef MODULE_8BIT_IDE_ADVANCED 367 369 dw IdePioBlock_WriteTo8bitDataPort ; 5, DEVICE_8BIT_XTCF_PIO8 368 370 dw IdePioBlock_WriteTo16bitDataPort ; 6, DEVICE_8BIT_XTCF_PIO8_WITH_BIU_OFFLOAD 369 %ifdef MODULE_8BIT_IDE_ADVANCED370 dw IdeDmaBlock_WriteToXTCF ; 7, DEVICE_8BIT_XTCF_DMA371 dw IdePioBlock_WriteTo16bitDataPort ; 7, DEVICE_8BIT_XTCF_PIO16_WITH_BIU_OFFLOAD 372 dw IdeDmaBlock_WriteToXTCF ; 8, DEVICE_8BIT_XTCF_DMA 371 373 %endif ; MODULE_8BIT_IDE_ADVANCED 372 374 %endif ; MODULE_8BIT_IDE -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH1Eh_XTCF.asm
r567 r584 111 111 ; Selected transfer mode is stored in BIOS variable (DPT_ATA.bDevice). 112 112 113 ; Note that when selecting 'DEVICE_8BIT_ PIO_MODE_WITH_BIU_OFFLOAD' mode,113 ; Note that when selecting 'DEVICE_8BIT_XTCF_PIO8_WITH_BIU_OFFLOAD' mode, 114 114 ; the ATA device (i.e. CompactFlash card) will operate in 8-bit mode, but 115 115 ; data will be transferred from its data register using 16-bit CPU instructions … … 134 134 dec ax ; XTCF_8BIT_PIO_MODE_WITH_BIU_OFFLOAD = 1 135 135 jz SHORT .Set8bitPioModeWithBIUOffload 136 dec ax 137 jz SHORT .Set16bitPioModeWithBIUOffload 136 138 137 139 ; XTCF_DMA_MODE = 2 (allow 3 as well for more optimized code) … … 144 146 mov al, XTCF_DMA_MODE_MAX_BLOCK_SIZE 145 147 jmp SHORT AH24h_SetBlockSize 148 149 .Set16bitPioModeWithBIUOffload: 150 pop bx ; Do not enable 8-bit PIO... 151 ePUSH_T bx, AH23h_Disable8bitPioMode ; ...disable it instead 152 mov al, DEVICE_8BIT_XTCF_PIO16_WITH_BIU_OFFLOAD 153 SKIP2B bx 146 154 147 155 .Set8bitPioMode: -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH23h_HFeatures.asm
r526 r584 78 78 ;-------------------------------------------------------------------- 79 79 ; AH23h_Enable8bitPioMode 80 ; AH23h_Disable8bitPioMode 80 81 ; Parameters: 81 82 ; DS:DI: Ptr to DPT (in RAMVARS segment) … … 91 92 mov si, FEATURE_ENABLE_8BIT_PIO_TRANSFER_MODE 92 93 jmp SHORT AH23h_SetControllerFeatures 94 AH23h_Disable8bitPioMode: 95 mov si, FEATURE_DISABLE_8BIT_PIO_TRANSFER_MODE 96 call AH23h_SetControllerFeatures 97 xor ah, ah ; Clear error since modern drives might not understand the command and are 98 ret ; always in 16-bit mode anyway 93 99 %endif -
trunk/XTIDE_Universal_BIOS/Src/Main.asm
r567 r584 136 136 %ifdef MODULE_8BIT_IDE_ADVANCED 137 137 at ROMVARS.ideVars0+IDEVARS.wBasePort, dw DEVICE_XTIDE_DEFAULT_PORT ; Controller Command Block base port 138 at ROMVARS.ideVars0+IDEVARS.bDevice, db DEVICE_8BIT_XTCF_PIO8138 at ROMVARS.ideVars0+IDEVARS.bDevice, db XTCF_8BIT_PIO_MODE_WITH_BIU_OFFLOAD 139 139 %else 140 140 at ROMVARS.ideVars0+IDEVARS.wBasePort, dw DEVICE_XTIDE_DEFAULT_PORT ; Controller Command Block base port
Note:
See TracChangeset
for help on using the changeset viewer.