[ros-kernel] floppy.sys and BOCHS

Mike Nordell tamlin at algonet.se
Sun Jul 4 16:31:21 CEST 2004


Hartmut Birr wrote:

> currently our floppy driver doesn't work within bochs. It seems that bochs
> doesn't reset the ST1 and ST2 registers if ST0 returns success.

Is that expected? Is it defined that ST1&2 error-bits shall be cleared if
ST0 reports normal termination (I've tried to find floppy specifications,
but so far came up empty handed)?

> This occurs
> also for the READ-ID command. If I remove the check for the MA bit in ST1
> for READ-ID the floppy driver will work within bochs.

MA, is that bit 0 - a.k.a. address mark?

There is also a more serious matter I have informed Fabrice of QEMU, but not
the BIOS maintainer (simply because I don't know who it is nowadays) about:
The "diskette_param_table" in rombios.c is wrong. If you have access to NT
(4+ should do) you can see what's expected in the more-than-long path:

HKLM\Hardware\DESCRIPTION\System\MultifunctionAdapter\0\DiskController\0\Flo
ppyDiskPeripheral\0\Configuration Data

If you compare rombios.c with the last of the numbers value, you'll find
that rombios.c lacks two entries, of which the first is _vital_.

To make a long story short, the first missing byte is cylinder count, which
is in the (bad) BIOS the binary rep. of "push ds", which just happens to be
0x1e - and therefore NT believe the floppy, even that it's a 3 1/2" only has
got 31 tracks. (don't ask how long it took me to find this problem)

/Mike



More information about the Ros-kernel mailing list