Hi!

23-Авг-2006 07:57 [EMAIL PROTECTED] (Joris van Rantwijk) wrote to
freedos-devel@lists.sourceforge.net:

JvR> MEM.EXE 1.9a2 seems to crash on a 8086.

     Where you get this version? CVS contains 1.6 (or is it 1.7? MEM_MINOR
contains 7).

JvR> I believe the crash is caused by a bug in the 386-detection code
JvR> inside MEM.EXE. The detection always gives false positive results
JvR> on 8086 systems, leading MEM.EXE to execute a subroutine which
JvR> contains 386-specific instructions.
JvR> The 386-detection code basically tests whether it can set flag bits 12-14.
JvR> On a 8086 however, bits 12-15 are always set. It may be possible to fix

     Yes, looks like you right: I check MEM 1.6 (1.7?) and found, that its
386 detection code is buggy, because tries to set 0x7000 in flags and
expects, that both bits will be set only in 386+ (whereas bits 12-15 always
set in 8086/80186; in 80286 bits 12-14 are IOPL and NT and always cleared in
real mode). Right code should be (excerpt from my MEMA):

/* try to change bits 12-15 (0xF000) in the FLAGS register...   */
I pushf; I pushf; I pop ax; _AH ^= 0xF0;
I push ax; I popf; I pushf; I pop bx; I popf;
/* ...then check whether any bit was changed */
count
type = 3; if (_AH ^ _BH) return type;
type = 2; if (_BH & 0xF0) type = 0;
return type;

-------------------------------------------------------------------------
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