[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

ProDOS misc. questions



..@SUBJECT:Re: ProDOS misc. questions                                  N
..@MSGID  :<4tl5bg$sof@elna.ethz.ch>                                   N

H'>> > > o Why the root directory of a ProDOS volume is limited to 51 files?
H'>> > There's limited space for the root structure.
H'>> Why this root structure has to fit entirely into Block 2?
H'>
H'>Actually, the root directory has more than just block 2. There are 4 blocks
H'>with 13 directory entries each = 52 files total.
H'>(One of them holds the volume name.)

It is possible to expand (or shrink) the Volume [root] Directory, but it will
have to be done be manually (I've done before).

Of course, doing so can >break< some disk utility programs that "know" what a 
ProDOS volume should look like :)

What would need to happen is:
1) Start with a freshly formatted disk (it's a lot easier <g>)

If expanding the Root Directory,
2) Save off the Volume_Bit_Map (Block 7 thru ???)
3) Create the additional Root Directory blocks starting at Block #7 and set
the forward/backward links in the 1st 4-bytes of each block.
4) Modify the Volume_Bit_Map pointer in the Volume_Name entry to point to the
block where the Volume_Bit_Map will start.
5) Write the Volume_Bit_Map to it's new location.
6) Mark out the additional block that are now consumed byt the Volume_
Directory and Volume_Bit_Map (this is the 'fun' part <g>).

If shrinking the size of the Root Directory:
2) Zero the forward Directory_Block pointer of the "new" last Root directory
block (to mark the end of the Root Directory).
3) Modify the Volume_Bit_Map pointer in the Volume_Name entry to point to the
block where the Volume_Bit_Map will start.
4) Relocate the Volume_Bit_Map to begin at the 1st block past the new end of
the Root directory.
5) Mark as free the blocks in the Volume_Bit_Map that are no longer in use by
either the Root_Directory or Volume_Bit_Map.

H'>> An Apple II expert could then hack a new 24-bit addressing version of =
H'>> ProDOS, couldn't he? Is there a need for this?
H'>
H'>As I said before, you can't simply change everything from 16bits to 24
H'>or even 32. The disk structure, buffers, variables etc. do all depend
H'>on 16-bit block numberss and 512 byte blocks. Using logical block
H'>numbers would allow you to keep the current disk structure to some
H'>degree but there's still the software that has to support it. Looks
H'>like someone is gonna release ProDOS 3.0 :-)

With the structure of ProDOS, I don't think it will be possible without 
breaking 90% of the applications ever written for P8.

The main problem is that when Apple coded the P8 kernel, they hard coded in 
certain limitations (512-byte blocks, 16-bit block numbers, and 24-bit byte
offsets) that severely limit how far the O/S can be re-coded to keep up the 
current hard drive technology.

If Apple would have have made any 2 of them (all 3 would have been best) 
larger values, then perhaps we would be were we are in relation to total disk 
size.

* KingQWK 1.05 # [PK] * The pedestrian didn't know which way to go so I hit him

----
+------------------------------------------------------------------------+
|Ye Olde Bailey BBS Zyxel 713-520-1569(V.32bis) USR 713-520-9566(V.34/FC)|
|   Houston,Texas             yob.com           Home of alt.cosuard      |
+------------------------------------------------------------------------+