Back to home page

DOS ain't dead

Forum index page

Log in | Register

Back to index page
Thread view  Board view
Rugxulo

Homepage

Usono,
03.01.2008, 06:44
 

JEMM386 crash report (DOSX)

Okay, probably another useless example of my P4's stupidity (i.e. CMD BIOS extension), but I'm reporting it anyways just in case it's actually a bug:

(BTW, I had something like "critical error: floppy not ready" immediately preceding, could that be related?)

JEMM386 5.68: exception 8 (Pentium 4 "Northwood")

CS:EIP = 3206:00000008
ERRC = 00110B40
SS:ESP = 0010:F8004E04
EBP = 00000A5E
EFL = 4B415453
CR0 = 80000011
CR2 = 00000000
EAX = 02690200
EBX = 00050A6A
ECX = 00000A6A
EDX = 07BD0006
ESI = 00030001
EDI = 0005362A

This was all under FreeDOS 386+ OpenWatcom C kernel "Sep. 15" (not that it probably matters).

---
Know your limits.h

Japheth

Homepage

Germany (South),
03.01.2008, 08:32

@ Rugxulo
 

JEMM386 crash cause and workaround

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

Rugxulo

Homepage

Usono,
04.01.2008, 00:41

@ Japheth
 

JEMM386 crash cause and workaround

> What can now be done?
>
> 1. don't use the program which runs HLT. Usually these are "power-saving"
> programs (FDAPM?)

I wasn't using FDAPM, but I did have the IDLEHALT FDCONFIG option enabled. So, I guess that's why.

---
Know your limits.h

Back to index page
Thread view  Board view
22756 Postings in 2121 Threads, 402 registered users (0 online)
DOS ain't dead | Admin contact
RSS Feed
powered by my little forum