Back to home page

DOS ain't dead

Forum index page

Log in | Register

Back to the forum
Board view  Mix view

UI21DEB deBUGGER rele | DGJPP's persistent ENOENT bugginess (Announce)

posted by ecm Homepage E-mail, Düsseldorf, Germany, 20.02.2009, 20:19

> # OS: My new (not yet released) DOS, RxDOS 7.30, FreeDOS 1.1,
> EDR-DOS 7.01.08 or compatible

Time machines are fun, aren't they? And, just being curious, do you really work on a DOS kernel? Is it based on some known DOS or written from scratch?

> # NTV-DM emulation in DOS (real NT not needed anymore)

Well, some applications might even try to check for NT (and fail miserably when doing so with Int21.3306) because they use NTVDM's BOPs, which I'm sure your little TSR doesn't emulate.

> # Useful for checking application compatibility with both the future
> and the past

If developers ever care they don't need some fancy program for that. But, oh, they don't care anyway.

> # Can disable FAT28 AH=$73 calls, thus temporarily emulate an old DOS
> version
>
> # Can disable the "NTLFN API" AH=$71 calls, (including King Udo's
> "looooooong seek" AX=$7142 call)
>
> # Can disable the "extended open" AH=$6C call (this breaks many things)
>
> # Can disable obsolete FCB calls (except AH=$29)
>
> # Can separately disable the "parse form FCB" AH=$29 call (this breaks
> EDR-DOS)

I looked into the code that disables functions and it seems to work well, setting even the Carry Flag as I'd expect it. (I didn't test the program to ensure it works, but it looks good.) Is there a particular reason you're returning error 02h ("DTA wrap") on some of these FCB calls? I would rather change all these that now return 02h to error 01h, which is either "At end of file" or "Disk full".

> # Can set the famous "NTrue DOS version" to $3205 (this shouldn't be able
> to break anything, however, if anyone bothers to check oneself, tests
> will bring up a massive evidence of the opposite quickly)

Yes, developers tend to think Int21.3306 is a save check for NT. However my programs (such as mah local DEBUG fork) use a better check that won't fail because some SETVER-type program fakes a MS-DOS version of "5.50".

> # Can fix (to some degree) faulty filenames ("multiple-slash-BUG" and
> "multiple-dot-BUG") supplied by many (including, but not necessarily
> limited to) NTVDM-DGJPP application, allowing to run them in DOS

Now that's really useful; I would say some of this should even be done by DOS itself. Most occurances of the "multiple slash" bug as known from MS-DOS (and copied by EDR-DOS for compatibility) can be fixed easily without breaking the (sort of) UNC support MS-DOS had.

> BTW I fixed the horrible
> "TSR-unable-to-find-out-that-already-installed-BUG" reported by cm
> in my previous TSR :clap: , but still no uninstall :crying:

You tried your best and got... hm. "Trash" might describe it well, but a similar method was indeed used by many programmers. Next time think about using some multiplex interface (preferably AMIS) which will find the installed TSR even if another TSR hooked Int21 afterwards.

I would prefer no uninstall even in the next version if it just did the things it does now, but properly. Among the errors, there is also that your Int21 hook is not reentrant. Poping the stack to get to the flags is dangerous; set up a stack frame addressed by bp instead.

---
l

 

Complete thread:

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