> JEMM386 5.68: exception 8 (Pentium 4 "Northwood")
>
> CS:EIP = 3206:00000008
> ERRC = 00110B40
> SS:ESP = 0010:F8004E04
the cause of this error is known in the meantime, as well as a workaround.
This is my mail to Eric Auer and Mateusz Viste:
-----------------------------------------------------------------
Hello,
> > How can I resolve that problem?
>
> You cannot, there seems to be a bug in JEMM386.
> Maybe your PC is slower than JEMM386 expects,
> or has an interrupt controller hardware which
> is not compatible to a classic PC 8259...?
I checked the address 00110B40 which has been reported. This address contains a F4h byte, which is the HLT opcode. Jemm emulates HLT executed in v86 mode by running it in protected-mode with interrupts enabled. Indeed this is one of just two places where interrupts are allowed to be enabled in Jemm. Jemm knows very well the addresses of those 2 places and this allows it to decide whether an IRQ or an exception has occured in protected-mode.
The problem is that in Mateusz case the interrupt seems to occur when EIP points exactly AT the HLT opcode, while usually the interrupt occurs when EIP points just BEHIND the HLT. Only the latter case is covered by Jemm, so it erroneously assumes an exception.
> Why is my system working okay with EMM386?
The old FD Emm386 handles HLT differently and doesn't have this problem. For Jemm the FD Emm386 way is no option, however.
The next version of Jemm is more liberal concerning interrupts and uses a different way to distinguish IRQs and exceptions in protected-mode, so there is no need for a "fix".
What can now be done?
1. don't use the program which runs HLT. Usually these are "power-saving" programs (FDAPM?)
2. adjust the Jemm source
3. use the preliminary Jemm v5.69, can be found at http://www.japheth.de/Download/Jemm569b.zip
----------------------------------------------------------------- --- MS-DOS forever! |