NOTE!!!! This driver only works with the ancient Linux-2.4 kernel

It will not run on anything recent.

Plans are to make a FUSE-capable driver, see the ../dos33fs-fuse directory



Apple II DOS 3.3 Filesystem for Linux

by Vince Weaver (vince@deater.net)
                http://www.deater.net/weave/vmwprod/apple

based on ProDos filesystem code 
    Copyright (c) 2001 Matt Jensen (mjensen@obvion.com)
    http://www.obvion.com/matt/prodos/
    
[-------------------------------------------------------------------]

Background:

In January of 1978, Apple Computer demoed the DISK ][ drive, 
arguably the first inexpensive 5 1/4" floppy drive for a personal
computer.  It was a very clever hack by Steve Wozniak, and was
welcomed by Apple ][ users who until now had to make do with
a casette tape interface.

Dos 3.1 was released in 1978.  Dos 3.2 and 3.2.1 were released 
in 1979.  While both worked, neither were integrated very well 
with the Apple ][ computers of the time and had their share of bugs.

In August of 1980 Dos 3.3 was released.  It required not only 
an OS upgrade, but also a hardware one as well.  Older DOS's
could read 113.75k  (35 tracks*13 sectors*256bytes).  Under 
Dos 3.3 the disks could hold 140k (35tracks*16sectors*256bytes).

Dos 3.3 was the standard disk OS on Apple ]['s for a long time,
but it was limited to only 5 1/4" disks.  Eventually it was
replaced by ProDos, which was a weird combination of Dos 3.3 and HFS+.

[------------------------------------------------------------------]

Technical Info:

* Partition size: 140k  (in theory the filesystem can support more,
                         but I doubt it ever did it most cases).
			 
* sector [block] size: 256bytes.  Which makes it fun trying to make
                       Linux deal with it properly.
		       
* Filenames:  up to 30 characters in length, 7-bit ASCII.
              First character had to be > 63.  No commas or colons.
	      Padded on the right with spaces.
	      Besides that, anything goes [including control characters,
	      NULL's, and \, which make it interesting as a Unix filesystem]
	      
* 7bits of metadata:  Indicate file type [binary, BASIC, text, etc]

* "Lock": possible to "LOCK" files, that is make read-only

* holes:  filesystem supports holes in files [though Linux support of 
          this a bit troublesome because of 256 byte block issues].

* Timestamp:  no timestamp possible.  The driver assigns an arbitrary
              date of 13 February 1978 to all files.  [2 1/2 years
	      too early for DOS 3.3, but it is my birthday....]


[---------------------------------------------------------------]

Usage:

      You need to be running a 2.4.x linux kernel.  Older versions
      not supported currently.

      The easiest way to do this is get a "disk image" of the type
      used for Apple II emulators.  
      
      Various web pages can help you make these from your old Apple Disks, 
      assuming you have a working Apple II, a modern PC, and a serial
      connection between the two.
      
      First, be sure your Linux kernel has "loopback filesystem support"
      
      Then, set up the disk image you want as a loopback device as root:
      
              /sbin/losetup /dev/loop0 ./green.dsk
      
      Where "green.dsk" can be any image you might have.
      
      Next, compile the included driver [ "make"].  As root, install
      the dos33.o module
      
              /sbin/insmod ./dos33.o
	      
      Next, mount the filesystem
      
              mount -t dos33 /dev/loop0 /mnt

      And if all went well, you can now do an "ls /mnt" or wherever,
      and get the file listing.
      
      You can use the "asoft_detoken" program in the ./util
      directory to dump Applesoft basic programs into plain text 
      
              asoft_detoken < /mnt/HELLO
	      
[----------------------------------------------------------]

Future plans:

   Make the driver read/write.  Right now it is read-only.

   Maybe add some more utilities.
   
   Handle the file-type metadata somehow.
   
   Far-out-there.... write a linux block-device for the DISK ][
   drive, so you can actually hook the old drives and disks up
   directly to your linux box....
   
[-------------------------------------------------------------------]

References:
    http://apple2history.org/               -- great history site
    http://ground.icaen.uiowa.edu/apple2/   -- treasure trove of apple][ info
    
[-------------------------------------------------------------------]

Added note:

   if anyone has a copy of "Inside Apple DOS" they'd be willing
   to part with, please let me know....
   
