[SeaBIOS] Bochs cvs + SeaBIOS git master + FreeDOS = slow load + invalid opcode

Kevin O'Connor kevin at koconnor.net
Tue Jan 12 05:12:37 CET 2010


On Mon, Jan 11, 2010 at 10:28:49PM +0100, Sebastian Herbszt wrote:
> The problem occurs on
> COMMAND: [e6] [04] [03] [01] [01] [02] [12] [00] [ff]
> 
> Debug output with Bochs BIOS
> 
[...]
> 00131978879d[FDD  ] read!
> 00131978879d[FDD  ] floppy_xfer: drive=0, offset=64512, bytes=512, direction=from floppy
[...]
> 00135765306d[FDD  ] floppy_xfer: drive=0, offset=73216, bytes=512, direction=from floppy
> 00135988037d[FDD  ] <<READ DONE>>

I'm guessing the first column is a timer - it shows a delta of 4009158
from floppy start to end.

> Debug output with SeaBIOS
> 
> 01484895591d[FDD  ] read!
[...]
> 01484895591d[FDD  ] floppy_xfer: drive=0, offset=64512, bytes=512, direction=from floppy
[...]
> 01643752509d[FDD  ] floppy_xfer: drive=0, offset=70656, bytes=512, direction=from floppy
> 01646422786d[FDD  ] read(): during command 0xe6, port 0x03f2 returns 0x1c

The delta here is 161527195.

Also, if you count the "loop" reports you'll see there are 37 of them
- the same number as FLOPPY_MOTOR_TICKS in src/floppy.c.

So, at first glance it looks like Bochs isn't doing floppy DMA when
the cpu is in the "hlt" state.  This causes SeaBIOS to timeout the
transfer.

-Kevin



More information about the SeaBIOS mailing list