Back to home page

DOS ain't dead

Forum index page

Log in | Register

Back to the forum
Board view  Mix view

Re MS-DOS7 bug, Patch done! available soon :=) (Miscellaneous)

posted by cm(R) Homepage E-mail, Düsseldorf, Germany, 24.11.2009, 15:03
(edited by cm on 24.11.2009, 15:26)

> It consists of a fake DOS device driver, that when installed takes 368
> bytes, does NOT hook any interrupts or DOS function. All it has to do is
> sit there to offer space for the fake TSRinfo table during Sysinit.

Okay, sounds like a working solution. How does your version check identify the offending MS-DOS versions? How do you remove the TSR after CONFIG.SYS?

> Now we'll need a 'true true version' function ! I don't think I like this
> kind of escalation.

Yes, we need other functions. Additionally we have to show people that they don't have to fake every "Get version" function that we're going to invent.

> Can you name those offending non-Microsoft DOSes that
> report true ver = 7 or 8, and possibly suggest a /documented/ way to check
> for them ?

PC-DOS, (E)DR-DOS, FreeDOS, PTS-DOS and ROM-DOS do that for sure. Note that I'd like to re-define the term "offender" here to blame the software that relies on version numbers for supported DOS features. This is a bad feature detection because it requires DOS to support exactly the same feature set as that version of MS-DOS did. In this case, the other DOS variants report a version of 7.10 to show that they support FAT32. No other DOS supports the TSRInfo pointer in the DOS data segment, but (because the version is 7.00+) Chappel expects that feature.

Microsoft already faked the first DOS version check call (Int21.30) with MS-DOS 5+ to counter external programs that relied on exact version checks instead of such checks which allow higher versions too. Both methods don't always behave well: what if MS-DOS 9.50 removed support for, say, UMBs?

Some DOS versions already have new version checks which allow distinction:

* DR-DOS: Int21.4452 (doesn't tell you whether it's DR-DOS or EDR-DOS though)
* PTS-DOS (at least 6.51): Int21.20 (but doesn't return version number)
* ZDOS: Int13.20.dl=80.bx=55AA (conflicts with media sense of some BIOSes but works around this, no version number?)
* ROM-DOS: Int21.30DB.si=B2D2.di=xx03 or the same function as Int21.DB03 (21.DB conflicts with Netware "Get number of local drives" but works around this)
* The FreeDOS Kernel: Int21.3000 (hope for the best) & Int21.33FF (only a string)

---
l

 

Complete thread:

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