Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > alt.os.development > #9398 > unrolled thread

The AOD Virtual Partition Specification - First Draft - 2016-04-04 -

Started by"Mike Gonta" <mikegonta@gmail.com>
First post2016-04-04 14:38 -0400
Last post2016-04-04 18:51 -0400
Articles 3 — 2 participants

Back to article view | Back to alt.os.development


Contents

  The AOD Virtual Partition Specification - First Draft - 2016-04-04 - "Mike Gonta" <mikegonta@gmail.com> - 2016-04-04 14:38 -0400
    Re: The AOD Virtual Partition Specification - First Draft - 2016-04-04 - James Harris <james.harris.1@gmail.com> - 2016-04-04 22:35 +0100
      Re: The AOD Virtual Partition Specification - First Draft - 2016-04-04 - "Mike Gonta" <mikegonta@gmail.com> - 2016-04-04 18:51 -0400

#9398 — The AOD Virtual Partition Specification - First Draft - 2016-04-04 -

From"Mike Gonta" <mikegonta@gmail.com>
Date2016-04-04 14:38 -0400
SubjectThe AOD Virtual Partition Specification - First Draft - 2016-04-04 -
Message-ID<nducbn$lol$1@gioia.aioe.org>
The AOD Virtual Partition Specification
An alt.os.development Community Project
- First Draft - 2016-04-04 -

The Virtual Partition  makes  it  possible  for  a  hobbyist
system to manage  a  FAT32  volume  as  easily  as  a  FAT12
floppy  disk  image.   Restricting  access  to   the    root
directory combined with the  small  sizes  of  the  FAT  and
root directory tables, resulted in a  simple  FAT12  driver.

The USB flash drive  and  FAT32  have  replaced  the  floppy
disk, however increase capacity and differences  with  FAT32
have  prevented  the  use  of  that  same  simple    driver.

The Virtual Partition is a subset of the  three  FAT32  file
system components - FAT  table,   root  directory  and  data
space. It is these smaller, "fixed size"  tables  that  make
a simple driver simple.

One  of  the  differences  with  FAT32  is  that  the   root
directory is stored as a  file  and  not  as  a  table.   By
pre-allocating a small number of contiguous  root  directory
clusters, we  effectively  have  our  root  directory  table
once again. A "fence file" (an  empty  file  the  same  size
our Virtual Partition) is the  first  file  written  to  the
root  directory.   This  file  reserves  the  space  of  our
Virtual Partition for the hobbyist  system  so  that  "other
files" (written to a folder in the root  directory)  can  be
written to the drive. The "fence file" is  then  deleted  so
that all files now written - up to the end  of  our  Virtual
Partition - will  be  accessible  to  the  hobbyist  system.

Typically,  in  the  hobbyist  FAT12  driver  when  a  table
entry  is  modified  the  entire  small  table  was   simply
written back to the  drive.   A  simple  enhancement  is  to
calculate  the  sector  in  the  table  that  contains   the
modification and only write that sector back.   Table  sizes
of up to 64KB can be  easily  managed.  This  size  provides
up to 2048 root files and  (with  one  sector  per  cluster)
8MB of data space, more than  sufficient  for  the  hobbyist
system.


Mike Gonta
look and see - many look but few see

http://mikegonta.com
http://tawk.to/mikegonta

[toc] | [next] | [standalone]


#9399

FromJames Harris <james.harris.1@gmail.com>
Date2016-04-04 22:35 +0100
Message-ID<ndumhn$o7k$1@dont-email.me>
In reply to#9398
On 04/04/2016 19:38, Mike Gonta wrote:
> The AOD Virtual Partition Specification
> An alt.os.development Community Project
> - First Draft - 2016-04-04 -
>
> The Virtual Partition  makes  it  possible  for  a  hobbyist
> system to manage  a  FAT32  volume  as  easily  as  a  FAT12
> floppy  disk  image.   Restricting  access  to   the    root
> directory combined with the  small  sizes  of  the  FAT  and
> root directory tables, resulted in a  simple  FAT12  driver.

Can you quantify the difference - say in lines of code for the source or 
bytes for the object code - between a full-and-complete FAT32 driver and 
an equivalent driver for your proposed structure?

If I may make some criticisms (which are intended to be helpful, of 
course) of your proposal I would say:

The description needs to begin not with what a VP does but what it _is_.

For example, "A VP is a specific way to lay out the initial disk blocks 
of a FAT32 volume, as detailed below. Organising the beginning of the 
volume in the way suggested allows the software which accesses it to be 
reduced in size by x%. This, in turn, allows the driver software to be 
included in a volume boot sector which, at 512 bytes, is not large 
enough to work with a generic FAT32 volume."

"This is often better than having the volume boot sector load a FAT32 
driver because ...."

Is "virtual partition" the best term? It seems more to be a specific 
type of FAT32. Perhaps a name like "FAT32mg" would be clearer? (Lots of 
things could be called virtual partitions.)

-- 
James Harris

[toc] | [prev] | [next] | [standalone]


#9401

From"Mike Gonta" <mikegonta@gmail.com>
Date2016-04-04 18:51 -0400
Message-ID<ndur6i$1c91$1@gioia.aioe.org>
In reply to#9399
"James Harris" wrote:
> Mike Gonta wrote:

>> The AOD Virtual Partition Specification
>> An alt.os.development Community Project
>> - First Draft - 2016-04-04 -
>>
>> The Virtual Partition  makes  it  possible  for  a  hobbyist
>> system to manage  a  FAT32  volume  as  easily  as  a  FAT12
>> floppy  disk  image.   Restricting  access  to   the    root
>> directory combined with the  small  sizes  of  the  FAT  and
>> root directory tables, resulted in a  simple  FAT12  driver.

> Can you quantify the difference - say in lines of code for
> the source or bytes for the object code - between a
> full-and-complete FAT32 driver and an equivalent driver
> for your proposed structure?

Hi James,

How long is a piece of string?
One is a subset of the other and thus smaller, simpler and
easier.

> If I may make some criticisms (which are intended to be
> helpful, of course) of your proposal I would say:
>
> The description needs to begin not with what a VP does but
> what it _is_.

The Virtual Partition is nothing and does nothing.
The FAT32 volume is completely FAT32 (by the MS
specification). It is only "formatted" slightly different.
There is nothing added or changed. Existing software is
totally unaware of it's purpose.

> For example, "A VP is a specific way to lay out the
> initial disk blocks of a FAT32 volume, as detailed below.

There is absolutely no lay out.

> Organising the beginning of the volume in the way
> suggested allows the software which accesses it to be
> reduced in size by x%. This, in turn, allows the driver
> software to be included in a volume boot sector which, at
> 512 bytes, is not large enough to work with a generic
> FAT32 volume."

Nothing is organized.
The Virtual Partition is simply a couple of "tricks of the
trade" that make life easier. For example, ancient DOS used
the trick of requiring the two named files to be 1st and 2nd
in the root directory so that only the first sector of the
root would have to be loaded.

> "This is often better than having the volume boot sector
> load a FAT32 driver because ...."

The web is full of examples of single sector boot loaders
for FAT32 (simply more tricks).

> Is "virtual partition" the best term? It seems more to be
> a specific type of FAT32.

It really has nothing to do with FAT32.

> Perhaps a name like "FAT32mg" would be clearer? (Lots of
> things could be called virtual partitions.)

It's a partition in the manner in which the driver
recognizes it. The only difference is the way in which the
driver locates and handles the three major components. The
data still follows the root which follows the FAT, but the
(virtual) sizes of the tables are not used to calculate the
beginning/s of the following table/s.

PS. I realize that your "examples" were my examples. But
those are not things that it "does", rather they are
analogies to the simple FAT12 driver and the Virtual
Partition enabling the same simplicity with FAT32.


Mike Gonta
look and see - many look but few see

http://mikegonta.com
http://tawk.to/mikegonta

[toc] | [prev] | [standalone]


Back to top | Article view | alt.os.development


csiph-web