Hello,
I am unable to have my 5.25 1.2M floppy drive properly recognized with ide_xt and ide_xtp. The drive is considered by the OS as a 360K one when such a bios is present. The drive works fine with ide_tiny, but then, no CF.
My setup is:
- PC Epson Equity II (NEC V30, 640 KB RAM, one 5.25 HD floppy, no extension board)
- XT-CF Lite V4.1 (Address C800h, port 320h)
- MS-DOS 6.2
- Transcend CompactFlash Industrial CF300 128MB (TS128MCF300)
- XTIDE bios r602 and previous (r528 customized from Sergey, r588...)
Tests performed, without success:
- Many changes of address and port on the XT-CF-Lite card, flashing both ide_xt and ide_xtp accordingly to port after running auto-configure in xtidecfg.
- Build r602 on Linux with minimum DEFINES_COMMON in the makefile (progressively down to the options of DEFINES_XT_TINY). The floppy drive doesn't work as soon as MODULE_8BIT_IDE_ADVANCED is included, which is mandatory for CF support.
When the drive is wrongly recognized, the same error as Drew noticed in #528 appears (unable to format the floppy).
The functions 08h and 15h of int13 seem to be involved in floppy drives detection, so I tried calling them with debug utility. I'm not sure whether these functions are the only ones.
Code I used for calling function 15h:
xor ax, ax
mov es, ax
mov di, ax
mov ah, 15
mov dl, 00
int 13
int 3
Function 15h result with drive recognized as HD (ide_tiny in ROM or ROM disabled):
AX=0200 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=16AD ES=16AD SS=16AD CS=16AD IP=0108 NV UP EI PL NZ NA PE NC
Result with ide_xt or ide_xtp in ROM:
AX=0200 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=166E ES=166E SS=166E CS=166E IP=0109 NV UP EI NG NZ AC PE CY
3 flags are different. I understand that the carry flag here means an error occurred in the function call.
Function 08h with drive recognized as HD:
AX=0140 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=16AD ES=16AD SS=16AD CS=16AD IP=0108 NV UP EI NG NZ AC PO CY
Function 08h with drive recognized as 360K:
AX=0100 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=166E ES=166E SS=166E CS=166E IP=0108 NV UP EI NG NZ AC PO CY
AX contains 0140 when the drive is fine, 0100 when ide_xt or ide_xtp is in the ROM.
Thanks for your help!
Freddy