Back to home page

DOS ain't dead

Forum index page

Log in | Register

Back to the forum
Board view  Mix view

Phil Gardner's Wrapper.sys & MS-DOS7 bug (Miscellaneous)

posted by geoffchappell(R), 12.12.2009, 10:57

> The problem is completely, and safely, solved by flipping ONE bit of
> DOS code in conjunction with ONE unused bit of flags in the DOS data
> area.

It's not unused though, is it? As noted on my page for the CRTDRVR update, the comparison with the snapshot from before the program runs is made "whenever a program terminates via int 21h function 31h and Windows Enhanced Mode is not running".

So, yes, there's a bit test that stops the int 21h function 31h code from calling the buggy routine that assumes a non-NULL pointer at offset 1328h. In DOS 7.0, the test is of 01h at offset 0F5Bh, but this is the DOS kernel's record of whether Windows Enhanced Mode is running.

If this is the test you mean, then I have to ask if you really want to tell DOS that Windows Enhanced Mode is running when it actually isn't. I wouldn't be surprised to find that no harm can come from it, especially if you can clear the bit afterwards. The points on which DOS varies its behaviour for Windows are few and perhaps will not conflict with anything your loaded program wants to do. I, however, am not so adventurous that I'd want to try.

But perhaps you do not mean to "fix" int 21h function 31h by setting this bit and risking other consequences. Perhaps you mean just to use the TEST as a sequence to search for so that you can stop the call to the defective routine. That would not present any troubles, again provided you re-enable the call before there can be any supported loading of TSRs.

By the way, the test has the same offset in DOS 7.10 but it tests 03h, i.e., two bits. I have no idea about DOS 8.0. It seems I never prepared a listing. I also don't recall any dependency by Windows on this offset: it looks like it's genuinely an internal variable.

 

Complete thread:

Back to the forum
Board view  Mix view
15112 Postings in 1359 Threads, 249 registered users, 21 users online (0 registered, 21 guests)
DOS ain't dead | Admin contact
RSS Feed
powered by my little forum