Mail Archives: djgpp/1999/10/18/22:12:48
On Mon, 18 Oct 1999, Eli Zaretskii wrote:
>
> On Sun, 17 Oct 1999, Dave Dribin wrote:
>
> > This particular game is Callus. You are correct that it is a
> > protected-mode program. This is what it displays at startup:
> >
> > PMODE/W DOS Extender v1.33
>
> Sigh... This is a known problem with (at least some versions of)
> PMODE/W: it doesn't seem to unhook Int 31h on exit, leaving it to
> point to void.
Doh!
> > Finding a replacement is difficult.
>
> Try to find a different (newer?) version of PMODE/W. If PMODE/W is
> actively supported by its vendor, try mailing them or looking at their
> Web site.
No go. Couldn't find anything newer than 1.33. I did find older
versions, though.
I did manage to rebind the EXE against DOS4GW 1.97. It runs from a
straight DOS shell, but now crashes right away when launched from
bash. Bash doesn't die this time, but the program is never run.
Here's the dump:
DOS/4GW Protected Mode Run-time Version 1.97
Copyright (c) Rational Systems, Inc. 1990-1994
DOS/4GW error (2001): exception 0Eh (page fault) at 25F:102DEFFB
TSF32: prev_tsf32 5290
SS 267 DS 267 ES 267 FS 0 GS E7
EAX 0 EBX 102E9960 ECX 102E9B60 EDX 102E97C4
ESI 102E9B78 EDI 102E9CB0 EBP 102EA068 ESP 10662B44
CS:IP 25F:102DEFFB ID 0E COD 6 FLG 13246
CS= 25F, USE32, page granular, limit FFFFFFFF, base 0, acc CFFB
SS= 267, USE32, page granular, limit FFFFFFFF, base 0, acc CFF3
DS= 267, USE32, page granular, limit FFFFFFFF, base 0, acc CFF3
ES= 267, USE32, page granular, limit FFFFFFFF, base 0, acc CFF3
FS= 0, USE16, byte granular, limit 0, base 0, acc 0
GS= E7, USE16, byte granular, limit FFFF, base 46A90, acc F3
CR0: unavailable
Crash address (unrelocated) = 1:00009FFB
Maybe DOS4GW 2.01 will help? I couldn't find it available anywhere,
though.
> > Is there anything the launching program can do to save and restore
> > Int 31h?
>
> Sadly, no. Since restoring an interrupt vector requires a call to
> another function of Int 31h, this is a catch-22.
Darn! Well how does this program trample Int 31h? If they can
trample it, can't I restore it? Or do they trample Int 31h using an
Int 31h (before it got trampled)?
Hmmm... it's looking like the only way to do this is to write a
16-bit real mode application? What tools are available for this kind
of task? Only NASM?
Thanx for your help!
-Dave
- Raw text -