MEM.EXE 1.9a2 seems to crash on a 8086.
I believe the crash is caused by a bug in the 386-detection code
inside MEM.EXE. The detection always gives false positive results
on 8086 systems, leading MEM.EXE to execute a subroutine which
contains 386-specific instructions.

The 386-detection code basically tests whether it can set flag bits 12-14.
On a 8086 however, bits 12-15 are always set. It may be possible to fix
this issue by simultaneously testing whether flag bit 15 remains cleared:

 * In is_386_ : after "or ax,0x7000", add "and ax,0x07fff"
 * In is_386 : replace the test "((is_386_() & 0x7000) == 0x7000)"
   by "(is_386_() & 0xf000) == 0x7000)"

It may be safer even to move to a commonly published detection algorithm
which explicitly first tests which flag bits can be cleared, then tests
which flag bits can be raised.

This issue may be related to bug #1907 in the FreeDOS bugzilla,
but bugzilla seems to be in an un-usable state (it does not send
confirmation emails for new accounts).

Joris.

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Freedos-devel mailing list
Freedos-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-devel

Reply via email to