From: Luchezar G. <lu...@ga...> - 2004-01-22 18:15:35
|
On 22 Jan 2004 12:36:54 -0500, Patrick J. LoPresti wrote: > Uh, oh. I may have spoken too soon. > > On an IBM Thinkpad T20, using HIMEM64.EXE (uncompressed) and booting > with PXELINUX+memdisk, I get a crash: > > Kernel allocated 40 Diskbuffers = 21280 Bytes in HMA > > Invalid Opcode at 3687 FFFF 0213 AA7D FFDC 0001 0E24 10A3 0000 0001 0000 0002 0001 > > Booting the same image from a physical floppy, it does not crash. > > If I use "DEVICE=fdxxms.sys ps2", instead of himem64.exe, it works fine... Here I suppose that just after the kernel has been moved to the HMA, the first far code call from it caused "invalid opcode" (note the FFFF:3687 address of the invalid opcode in the stack dump). What's probably happening here is that under these circumstances (PXE boot) your machine works better with PS/2-style A20 switching than with AT-style. And because HIMEM had tested AT-style and it worked, it assumed that it's OK to use it from that moment on. FDXXMS, on the other hand, has been expressly directed to use PS/2-style, so it works. Tom, why not do things the other way around? First test for PS/2-style A20 switching, and if it works, use it, else use AT-style swithing. This will also be more optimal for PS/2-style machines. Did you try this before? If so, what happened? Of course, the M$ HIMEM.SYS supports almost 20 different /MACHINE switches - something that FreeDOS HIMEM could hardly ever do! :-( Lucho |