On Tue, Apr 13, 2010 at 02:26:10PM +0800, Roy Tam wrote:2010/4/12 Gerhard Wiesinger <lists@wiesinger.com>:3.) There is also a problem with the reported base memory under QEMM386 (HIMEM.SYS and EMM386.EXE is correct here). It is 646kB instead of 640kB. Therefore base memory test fails. I guess that reporting memory CMOS tables/interrupt functions are not implemented correctly.- The Base Memory > 640K error seems to be SeaBIOS related. QEMU Bochs BIOS(tested with both -old-bios hack in 0.12 series and old 0.11.1) will just freeze after QEMU counted RAM.(Tested with ScriptPC and Bochs).The SeaBIOS log would really help. This can be done by adding: -chardev stdio,id=seabios -device isa-debugcon,iobase=0x402,chardev=seabios to the qemu command line. The memory can be obtained in several places (int 12, int 1588, int 15e801, int 15e820, and mem 40:13). All look fine to me from looking at the code.
MS-DOS 6.22, QEMM 8.03
QEMU
Testcase |
BDA 40h:13h |
INT 12h |
INT 15h, AX=E820h |
EBIOS DATAAREA |
Checkit 3.0 |
Plain DOS, after Boot |
634kB |
634kB |
634kB |
9E80h-A000h (6k) |
640kB |
HIMEM.SYS+EMM386.EXE |
634kB |
634kB |
634kB |
9E80h-A000h (6k) |
640kB |
QEMM |
640kB |
640kB |
634kB |
CEB5h-D035h (6k) |
646kB |
QEMURAMD + QEMM |
628kB |
628kB |
634kB |
9E80h-A000h (6k) |
634k |
VMWare
Testcase |
BDA 40h:13h |
INT 12h |
INT 15h, AX=E820h |
EBIOS DATAAREA |
Checkit 3.0 |
Plain DOS, after Boot |
638kB |
638kB |
638kB |
9F80h-A000h (2k) |
640kB |
HIMEM.SYS+EMM386.EXE |
638kB |
638kB |
638kB |
9F80h-A000h (2k) |
640kB |
QEMM |
638kB |
638kB |
638kB |
9F80h-A000h (2k) |
640kB |
QEMURAMD + QEMM |
632kB |
632kB |
632kB |
9F80h-A000h (2k) |
634kB |
Pentium 733
Testcase |
BDA 40h:13h |
INT 12h |
INT 15h, AX=E820h |
EBIOS DATAAREA |
Checkit 3.0 |
Plain DOS, after Boot |
639kB |
639kB |
639kB |
9FC0h-A000h (1k) |
640kB |
QEMM |
640B |
640kB |
639kB |
D1B5h- (1k) |
640kB |
Attached documents:
MEQEMU.TXT QEMU, no CONFIG.SYS/AUTOEXEC.BAT
MEQEMUH.TXT QEMU, HIMEM.SYS,
EMM386.EXE
MEQEMUQ1.TXT QEMU, QEMM386.EXE, NOXBDA parameter
MEQEMUQ2.TXT QEMU, QEMM386.EXE
MEVMW.TXT VMWare, no CONFIG.SYS/AUTOEXEC.BAT
MEVMWH.TXT VMWare, HIMEM.SYS, EMM386.EXE
MEVMWQ.TXT QEMU, QEMM386.EXE
(XBDA not moved to HMA!?!)
P733.TXT, Pentium 733, no CONFIG.SYS/AUTOEXEC.BAT
P733Q.TXT
Pentium 733, QEMM386.EXE
Code and Patches can
be found at (released under GPL V2):
http://www.wiesinger.com/opensource/seabios/meminfoa.asm
http://www.wiesinger.com/opensource/seabios/meminfo.c
http://www.wiesinger.com/opensource/seabios/meminfo.exe
http://www.wiesinger.com/opensource/seabios/seabios-0.6.0-gw-V01.patch
QEMURAMD: DOS Device driver, which modifies BDA reported memory by
-6kB, released later.
Build script will be released under my DOS-Tools
soon (some cleanup necessary).
Gerhard