Re: Feedback needed on BOOTING, CACHING and some HELPER TOOL

Bart Oldeman <[email protected]> Thu, 07 Nov 2002 22:06:33 -0500 (EST)
Newsgroups gmane.os.freedos.devel
Message-ID <[email protected]>
On Fri, 8 Nov 2002, Paul Case wrote:

> Arkady V.Belousov wrote:
>
> >>>     How? How they (partitions on "floppies") will be called?
> >>>
> >BO> There are no partitions on floppies.
> >
> >     Do you mean that I can't make partitions, say, on ZIP diskette?
> >
> He didn't say anything about removeable media in general, he said
> floppies. ZIP diskettes can be partitioned if you use the right
> software, or have software to emulate an INT-13H interface for them, and
> then use DOS-based partitioning software (I've done this several times).

Yes, indeed.

Now,
- the FreeDOS kernel only parses the partition tables on the drive *once*,
during boot time. This code is discarded after boot time.
- it also only parses partition tables for BIOS drives >= 0x80. For drives
< 0x80 the kernel simply assumes it's a floppy.
- hence if the ZIP drive is accessed using int13, you cannot have
partitions on a disk inserted after boot time (because the kernel cannot
recalculate them anymore). If the ZIP drive is accessed using an external
device driver then the kernel doesn't care about any partitioning.
- For CDROMs for instance there is this scheme:
  if it boots as A: then the drive contains a floppy image (and is BIOS
  drive 0)
  if it boots as C: then the drive contains a hard drive image (and is
  BIOS drive 0x80, with partitions)
  it can also boot in "no emulation mode" where it simply transfers data
  to some memory area and then jumps there.

See also
http://www.phoenix.com/resources/specs-cdrom.pdf
how eltorito works. Whether CDROM or ZIP drives are used doesn't really
matter.

So we have (disregarding network drives, which can overlay drive
letters, and "SUBST", and of course funny undocumented tricks):
A: == BIOS drive 0, always without partitions.
B: == BIOS drive 1 or BIOS drive 0 (using the DJ-mechanism), also always
without partitions.
C: == the first partition on BIOS drives >= 0x80 following drive letter
assignment rules.
..
x: == last drive found at boot time before config.sys is parsed.
x+1:, x+2:, ...  == block device drivers loaded in config.sys.

Bart