[comp.sys.ibm.pc] More questions, and book data

cliffhanger@cup.portal.com (Cliff C Heyer) (05/31/90)

I've been reading several MS-DOS developer books
(Duncan, Norton, etc.)  but have not been able to get
a really good "feel" as to why pre 3.3 DOS has the 
32MB limit, and have the following questions:

1. It seems that internally the undocumented Drive Parameter
Block/Table has space for cluster to have up to 255 sectors, 
but at what point is the value of 1 stuck in there? Does the 
device driver do it at initialization or is this magic number 
hard coded into DOS? (1*512=512 bytes/cluster, 65535 clusters
*512=32MB limit)

2. And what was the point in the first place  of fixing it at 1 when
it could be variable up to 255 (8 bits)?

3. How do you go about increasing the cluster size so that you
can have huge files that may fill up a 600MB disk? Is there a way 
to use DEBUG for example to force DOS to use larger clusters, or is
this just a matter of using the right device driver?  The limit is 65535
2^16-1 clusters in DOS, not 65535 sectors.  8192 byte clusters gives
8192*65535=536MB sized disk.  Clusters are apparently locked
to 512 bytes in DOS.

Cliff

andyross@ddsw1.MCS.COM (Andrew Rossmann) (06/01/90)

>  Resp: 7 of 7 by cliffhanger at cup.portal.com
>Author: [Cliff C Heyer]
>
>I've been reading several MS-DOS developer books
>(Duncan, Norton, etc.)  but have not been able to get
>a really good "feel" as to why pre 3.3 DOS has the 
>32MB limit, and have the following questions:

  The DOS INT25H and INT26H disk read/write routines work by specifying
which sector to read. It used a 16-bit word to do this. Since the maximum
is 65536 (FFFFh), and each sector is 512 bytes, this is 65536 * 512 =
33554432 (/1048576 [1M] = 32M!)
  Under the 3.31, 3.30+, and 4.x versions, there is an alternate format
used that uses 32-bit numbers for the sectors. This gives: 4294967295 * 512
= 2199023255552 (/ 1048576 =2097152M, /1073741824 [1G] = 2098G,
/109951162776 [1T] = 2T!!!) M=Mega, G=Giga, T=Tera.
  Realistically, I don't believe this is really possible.

  Andrew Rossmann
  andyross@ddsw1.MCS.COM