delorie.com/archives/browse.cgi   search  
Mail Archives: opendos/2002/02/20/16:17:57

X-Authentication-Warning: delorie.com: mailnull set sender to opendos-bounces using -f
Message-ID: <000b01c1ba4f$d840e980$c03dfea9@atlantis>
From: "Matthias Paul" <Matthias DOT Paul AT post DOT rwth-aachen DOT de>
To: <opendos AT delorie DOT com>
References: <5 DOT 1 DOT 0 DOT 14 DOT 0 DOT 20020219162926 DOT 009df140 AT mail DOT dfsi DOT net>
Subject: Re: cant copy!
Date: Wed, 20 Feb 2002 04:33:19 +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 g1KLHB925076
Reply-To: opendos AT delorie DOT com

On 2002-02-19, "Kwelella" <impala AT dfsi DOT net> wrote:

> tell me please,why I can make spare install disks from a directory on my 
> hard drive for DRDOS 7.3 using xxcopy and they boot just fine.

Well, normally, when you create boot floppies you have to use the
SYS utility or the FORMAT /S option. This will copy the kernel
files IBMBIO.COM and IBMDOS.COM as well as the shell COMMAND.COM
to the floppy and write a boot sector that is compatible with this
operating system. If you just use COPY, XCOPY or other copy tools,
you will only be able to copy the files, but not update the boot
sector. It appears the boot sector on your floppies was already
DR-DOS compatible when you used XXCOPY to copy the files onto
the disk. Maybe you have been using the DR-DOS FORMAT to format
the floppies?

> But when I do the exact same thing trying to make msdos 6.22 disks ,they 
> wont boot!

Yes, the MS-DOS and DR-DOS boot sectors are not compatible.
The boot sector is almost always specific to the corresponding
operating system it boots. There are several reasons:

- The boot sector passes certain register values to the kernel
  when it finally jumps into the code it has loaded. These
  register values differ between most operating systems.

- MS-DOS and DR-DOS use different file names for the kernel files.
  For MS-DOS they are IO.SYS for the BIOS and MSDOS.SYS for the BDOS
  kernel. DR-DOS and PC DOS use IBMBIO.COM and IBMDOS.COM instead.
  So the boot sector may look for the wrong file(s) to load.

- The DR-DOS boot sector loads the whole IBMBIO.COM file into memory
  before it executes it. It does not care at all about the IBMDOS.COM
  file, which is loaded by IBMBIO.COM.
  The MS-DOS and PC DOS boot sector, however, ensures that both kernel
  files exist on the disk, and then only loads the first two (or one???)
  sector(s) of the BIOS file (IO.SYS or IBMBIO.COM). This contains
  a small stub loader, which loads the remainder of the file itself.

These are only small issues, that could be easily addressed in
a slightly enhanced issue of the DR-DOS boot sector, so that it
would be compatible with MS-DOS/PC DOS kernel files as well.

However, thereīs another fundamental limitation in the way, how
MS-DOS and PC DOS boot up, which will cause your attempts to boot
MS-DOS after just copying the kernel files to fail - unless you
have copied these files as the first two files to the disk
(even then you could not be 100% sure that it will always work).

The problem is, that MS-DOS/PC DOS requires the kernel files to
be located at specific locations at the start of the disk, and
the files must be continous, not fragmented. The MS-DOS/PC DOS
boot sector has no "intelligence" to actually mount the disk
and walk through its filesystem, so it tries to locate the files
at certain locations by directly peeking the FAT data structures.
The MS-DOS/PC DOS SYS utility will ensure that these conditions
are met, but a simple copy operation has no direct control over
where and how the files are actually stored on the disk, itīs a
logical rather than a physical copy. This scenario is a bit
relaxed in more recent issues of MS-DOS/PC DOS but still holds
true in general.

The DR-DOS boot sector is a bit more "intelligent", and will
find the two kernel files as long as they are logically stored
in the root directory. Their physical location on the disk,
and if they are fragmented or not, is donīt care for the DR-DOS
boot sector. Hence, you can just copy the kernel files to the
disk (even with a simply COPY), and as soon as the boot sector
is a DR-DOS sector, it will find and load them.
Of course, it is difficult to put all this into just 512 bytes,
the size of a single sector, but this is a major convenience
improvement if you have to set up a DR-DOS system, and it is
also the key for the DR-DOS multi-OS LOADER utility to work.
The MS-DOS kernel files must reside on specific locations,
but the DR-DOS files can be anywhere, so you donīt have to
physically swap them around each time you boot the other OS.
Also, it allows to upgrade a DR-DOS system simply by copying
the kernel files over the old ones, no need for SYS, no
difficult setup procedures as required for MS-DOS/PC DOS.
You can even have multiple DR-DOS kernel files under different
file names stored on the same drive, and LOADER will switch
between them according to the file names listed in the
BOOT.LST file.

Hope it helps,

 Matthias

-- 
<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