I'm suffering from TL;DR disease this morning, so I didn't have the
inclination to follow all of the links cited in the discussion, so my
apology is presented in advance.

However, there *was* another way to handle large drives in earlier DOS
before 4.0.  It was far from satisfactory, because it broke a lot of
utilities.

The basic scheme was to insert a "layer" in-between the PC Int 13H
services and DOS and block I/O transactions up into larger virtual
sectors.    There was nothing sacred about a hard drive sector being 512
bytes; indeed, the PC98 versions of MS-DOS use 1024 byte sectors on
their floppies.

So, for example, if you were limited by 16-bit relative sector addresses
to 33MB (calling 1MB = 1,000,000 bytes), you could block 2 512-byte
physical sectors up into a single "virtual" sector of 1024 bytes and
extend the reach of DOS to 65 MB.  Make it larger, say, 2048 bytes and
you get 134MB.

As I said, this came at a cost of memory (you need buffers for these
bigger sectors) and a lot of utilities that assumed a 512 byte sector,
but as a desperate dodge, it worked surprisingly well.  There was also a
slight performance penalty, as most MFM hard drives there used 17
sectors per track--or 25 if they were RLL, so there was the awkward
problem of a write possibly crossing a cylinder boundary.

--Chuck

Reply via email to