On Wed, Mar 10, 2010 at 01:05:38PM +0800, Roy Tam wrote:
2010/3/10 Kevin O'Connor kevin@koconnor.net:
On Wed, Mar 10, 2010 at 11:49:48AM +0800, Roy Tam wrote:
http://www.drdosprojects.de/cgi-bin/download.cgi/d090723b.zip
This image fails in the same way on both qemu-0.11 and qemu-0.12, so I don't think it's a seabios issue.
You have to use MAKEBOOT.BAT to create a boot floppy (you can do it inside QEMU to write it into an image too.)
Okay - this one is interesting. The code in that image is calling int_1601 (check key) and int_1a00 (check timer) in a tight loop with irqs disabled. Bochs BIOS explicitly turns on irqs during int_16 and int_1a processing, while SeaBIOS does not. Since SeaBIOS doesn't enable irqs and the caller doesn't enable irqs, key events and timer irqs don't trigger and the code never exits the tight loop.
I'll have to investigate this one further - I'd like to look for documentation on calls where the bios is obligated to temporarily enable interrupts.
-Kevin