delorie.com/archives/browse.cgi   search  
Mail Archives: opendos/2001/10/30/20:03:41.1

Message-ID: <000301c161a7$ca477d40$027efea9@atlantis>
From: "Matthias Paul" <Matthias DOT Paul AT post DOT rwth-aachen DOT de>
To: <opendos AT delorie DOT com>
Subject: FYI: Bugs in DR-DOS 7.03
Date: Tue, 30 Oct 2001 20:52:51 +0100
Organization: University of Technology, RWTH Aachen, Germany
MIME-Version: 1.0
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 5.50.4522.1200
X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4522.1200
X-MIME-Autoconverted: from quoted-printable to 8bit by delorie.com id f9V137Q29701
Reply-To: opendos AT delorie DOT com

FYI, citing from a discussion that takes place in alt.msdos.programmer &
comp.os.msdos.apps under the subject "good EMS/XMS/RAM driver for MS-DOS"
(with some re-editing):

>> Personally I am aware of a total of four new bugs in DR-DOS 7.03
>> compared to 7.02, but several dozens of issues have been fixed and
>> many new usability enhancements and minor new features were added
>> between these two releases.
>>
>> So, if you happen to run into one of the new problems (rather
>> unlikely under normal conditions) you might be better off using
>> DR-DOS 7.02 (or at least parts of 7.02), but otherwise I would
>> recommend the DR-DOS 7.03 release. Itīs more advanced and usually
>> more stable. (Of course, as in any software, there are still some
>> unresolved old issues...)

On 2001-10-26, Jack Yazel asked:

> Are the four bugs identified somewhere or can you describe them?

Summarizing what has been discussed in this forum over the
past years, here are the four new bugs and one additional
compatibility issue (a few more new issues - like the bug in
the CHAIN [D]CONFIG.SYS directive - existed in 7.02, but were
corrected in 7.03, see the WHATSNEW.TXT in the distribution):

1. Bug: INT 21h/6601h fails with BX=0:

   | INT 21 - DOS 3.3+ - GET GLOBAL CODE PAGE TABLE
   |         AX = 6601h
   | Return: CF set on error
   |             AX = error code
   |         CF clear if successful
   |             BX = active code page
   |             DX = system code page

   A minor modification of INT 21h/6602h (!) with DR-DOS 7.02+
   IBMDOS.COM (since update 1998-04-15) caused INT 21h/6601h (!)
   to fail, if the *unused* register BX is 0 on entry. Also, DR-DOS
   sets CF on error, but does not properly clear CF if there is
   no error, so the Carry flag return shouldn't be relied upon.

   Workarounds:

   The proposed workaround for (still actively developed) drivers
   and applications is to always call this function with BX=FFFFh
   and DX=FFFFh to ensure this condition will never be triggered.
   Otherwise the behaviour would depend on the random contents of
   BX, which is not a good thing to rely on... BX and DX should be
   checked to have changed from FFFFh before assuming the function
   was successful.

   Write a small TSR that sits on top of this function and changes
   BX=0 to BX=FFFFh before passing the function down to the kernel.

2. Bug: The floppy parameters may get trashed by the new 2nd level
   BIOS decompressor in DR-DOS 7.03 IBMBIO.COM under some rare
   conditions. This is not normally visible, but can occur using
   certain unusual boot methods and will cause floppy access to
   behave erratic.
   If you donīt have problems accessing floppies you donīt need to
   worry about this. (Despite the existance of this bug, DR-DOS 7.03
   is otherwise much improved in logging in and accessing non-standard
   floppy formats and other media (like Flash disks) compared to 7.02
   and to MS-DOS/PC DOS in general...)

   Workaround: Try different boot methods.

3. Bug: The (faulty) removal of the previously functional DR-DOS 7.02
   LPT4: built-in device driver will cause the system to crash when
   attempting to redirect AUX to LPT4 using the AUX=4 [D]CONFIG.SYS
   directive.

   Workaround: Do not use AUX=4 under DR-DOS 7.03. [D]CONFIG.SYS
   directives AUX=0 and 1..3, LPT1=..LPT3=[io_address][,timeout] as
   well as LPT4=io_address[,timeout] still work fine under 7.03.

4. Bug: A dangling (hard-wired) pointer in IBMBIO.COMīs discardable
   resume code of the built-in CLOCK$ device driver, which doesnīt
   line up with other code changes in 7.03, may cause the system
   to not come back properly after the system has entered suspend
   mode after very long periods of inactivity.
   This usually manifests itself in EMM386 protection faults under
   TASKMGR, unstable behaviour after the wakeup, or a solid lock.
   This problem may also be visible with some issues of 7.02, but
   not with OpenDOS 7.01 or Novell DOS 7. This problem cannot occur
   on older systems which do not support suspend mode.

   Workaround: Disable any power saving/suspend mode options in
   the machineīs BIOS setup, so that the system never enters
   suspend mode, or reboot the system after a wakeup.

5. Issue: When DR-DOS FDISK or FORMAT are used to format a volume,
   they write a (valid!) BIOS Parameter Block (BPB) table, which
   for some odd reasons is not always properly interpreted by
   MS-DOS/PC DOS, OS/2 (maybe NT) due to the "DRDOS  7" OEM
   label in there.

   The problem is that when these OSes will find this OEM label
   they seem to ignore some of the (valid!) entries in the BPB and
   unnecessarily try to recalculate the geometry values based on
   the remaining values in the BPB. Presumably this undocumented
   behaviour is to cope with actually faulty BPBs written by very
   old issues of MS-DOS/PC DOS and OS/2 themselves?!? (At least
   I have no other reasonable explanation for this strange behaviour.)

   Everything would still be fine if these calculations would be
   correct, but under some conditions (for example unexpected
   cluster sizes) they do not line up with the actual formatting
   of the drive and this will either cause the partition to be
   unaccessable (under OS/2 and maybe NT) or will appear garbaged
   under MS-DOS/PC DOS (this usually occurs for partitions < 128 Mb
   only, where the new DR-DOS FDISK unfortunately assigns a sub-
   optimal cluster size).

   In the worst case write access to a not properly recognized
   partition under MS-DOS/PC DOS may cause the partition to become
   actually garbaged! However, if the partitions look fine under
   MS-DOS/PC DOS (the most common case, fortunately), there is no
   risk to damage them.
   Since DR-DOS uses the BPB info in the correct and documented
   way, it does not have any problems to access such partitions,
   even if they would have non-standard formats.

   Another effect of the use of a DR-DOS BPB can occur when
   reading or writing DR-DOS formatted floppies under Windows.
   When the write protection level is not in the read-only
   position, any read (!) or write access to the medium under
   the Windows 9x GUI - even a simple "DIR A:" in a DOS box -
   will immediately cause Windows to write a garbaged OEM label
   to the medium! This in turn will typically cause some form
   of "read error" or "floppy not formatted" message soon
   later (at least after the next disk change). (I could
   reproduce this on several completely independent Windows 98
   and 98SE installations - 95 and ME have not been tested,
   but I assume they behave similar.)

   It seems as if Windows 9x destroys the OEM label on the medium
   if it finds an unrecognized (though perfectly valid) BPB (as
   per MS/IBM specification), and for unknown reasons it will
   then overwrite the OEM label with an ill-formatted "IHC"
   signature and some kind of time stamp or random number.
   Please note that, strange as it is, this is *not* caused by
   a virus, but by some part of the Windows system. And it only
   occurs under the GUI, not under plain vanilla DOS.
   Since Windows destroys only the eight bytes of the OEM label
   and nothing else in the BPB, FAT or the data area, DR-DOS can
   still happily read and write such floppies without any problems.
   Changing the OEM label back to something reasonable like
   "IBM  3.3" with a disk editor, the floppy can also be accessed
   under Windows again...

   All in all, it comes out that in contrast to offical docs the
   OEM label is not just cosmetics, but is used by MS/IBM systems
   to alter the interpretation of the other values in the BPB.
   Hence, to avoid any problems, the OEM label must be in the
   format "sssssn.n", whereby "sssss" is a (random???) string, and
   "n.n" is a version number with a decimal point in between.
   While other formats are commonly used by 3rd party software,
   they may cause the same behaviour to occur if the BPB values
   do not match Windowsī expectations. Since DR-DOS BPBīs mimic
   those of Compaq DOS/PC DOS 3.31 the version number must be "3.3"
   to ensure a proper interpretation of the BPB.

   Workaround: Either do not use the (otherwise more powerful)
   DR-DOS FDISK and FORMAT utilities and use the MS-DOS counterparts
   instead (DR-DOS has no problems to work with partitions created
   by MS-DOS/PC DOS.). Or, after using the DR-DOS tools, change
   the "DRDOS  7" OEM label to "IBM  3.3" using a disk editor.
   This will fix the problem. You can also decompress the DR-DOS
   utilities with PKLITE -x and patch the OEM label in there to
   match "IBM  3.3" instead of "DRDOS  7".

Well, these issues may look stronger than they are in practise -
in all the years I did not run into any of these problems on a large
number of completely different systems, except for more or less
artificially created conditions during stress tests. Fortunately,
these problems can be easily avoided or worked around.

 Matthias

-- 

Matthias Paul, Ubierstrasse 28, D-50321 Bruehl, Germany
<mailto:Matthias DOT Paul AT post DOT rwth-aachen DOT de>; <mailto:mpaul AT drdos DOT org>
http://www.uni-bonn.de/~uzs180/mpdokeng.html; http://mpaul.drdos.org




- Raw text -


  webmaster     delorie software   privacy  
  Copyright Đ 2019   by DJ Delorie     Updated Jul 2019