[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