fat95 v2.15 (11-Jun-2001) readme file General facts ============= "fat95" is designed for data exchange with other platforms. This means: media must be made 100% PC compatible. Basically, there are 2 ways of achieving this: a) "simple", "unpartitioned" The whole storage space of the medium is occupied by one single FAT data structure. It also implies that there is no AMIGA style partitioning info (RDB etc.). This method is common on floppies (DD and HD), magneto-optical disks (MO`s), and it is - at least in theory - also permitted on ZIP disks. b) "partitioned" There must be a valid PC style "master boot record" (MBR) inside the first block of the media. fat95 will then evaluate the contained partition table to figure out the type, location and size of the FAT data partition. This method is required for harddisks. Usually, ZIP media also do it that way, although in most cases there will be only one single FAT16 partition spanning almost all of the storage space. You best set up partitions using adequate PC tools like "fdisk", "xfdisk" or "PartitionMagic". These programs normally leave some unused areas between partition tables and data partitions. You may then utilize suitable AMIGA tools to ADD parallel AMIGA style partitioning info. Important: fat95 only looks at the PC style tables. Using only, for example, "HDToolBox" will thus NOT WORK. boot95 ====== Harddisks that were partitioned on a PC often have an unused area of about 30 kbytes between the MBR and the first partition. You may now try to bring an Amiga style RDSK chain in there to make a bootable fat95 partition. First, mount that partition in the usual way, let`s say as PCHD:. Then type into a shell boot95 PCHD: fat95 is needed in the L: drawer for this unless you specify a different file as a second parameter. Simply repeat the procedure to update a fat95 version. Caution: existing Amiga partition info will be overwritten! Caution again: be sure that your partition is reachable at boot time, i.e. within the first 4 Gbytes of a scsi.device disk. My A1200 already can boot OS 3.1 off a 4 Gbyte FAT32 partition now. There are still some obstacles, however. For example, HDToolBox has problems displaying LBA style partitions. Setup ===== fat95 is installed in the same way as most other alternative filesystems. I tried hard to make it quite resistant against wrong or missing mountlist parameters. However, these are the important ones: FileSystem = L:fat95 (or wherever you actually stored it, full path) StackSize = 2048 (do not use less, you will risk a crash.) Device = mfm.device Unit = 0 Flags = 0 (which physical drive to use) MaxTransfer = 0x20000 /* simple IDE harddisk @ A1200 */ (not needed for floppies and ATAPI devices, eg. ZIP) LowCyl = 0 (or just no "LowCyl" entry at all.) Buffers = 20 /* DD Floppy */ Buffers = 40 /* HD Floppy */ Buffers = 100 /* ZIPs, MOs, ... */ (quite useful values. When using excessively deep directory trees, you can try some more buffers.) GlobVec = -1 (this is an assembler program) Control = "+s" (forces fat95 into direct SCSI mode rather than trackdisk style. May help for certain harddisks > 4 Gbyte.) And finally, the worst of all ;-) DosType = 0x464154xx /* "FATx" */ That last byte "xx" serves as the almighty master control. xx = 00 Choose this for floppies, and for floppies only. It activates several special features like trackdisk ETD_ commands, and a workaround for some non-mfm.device`s that should allow for automatic HD detection now. xx = 01 The catch-most-of-them universal value. Works with unpartitioned media, and will search for for the first FAT partition on partitioned media. If you have more than one FAT12, FAT16 or FAT32 partition on your harddisk, we will have to get a bit more detailled. Just try the LINUX style partition number: xx = 01..04 Use "primary" partition of that number. "04" would be the exact value for ZIP`s, but "01" should also work since the first 3 partition table entries are unused on such media normally. xx = 05..? Use "logical drive in an extended partition". "05" is the first logical drive, "06" the second one etc. You can find some examples in the file of the same name in this dir. OS 2.0+ Installation ==================== * Copy the "fat95" file into your L: drawer. * Doubleclick the "MS0" (internal floppy) or "MS1" example icons to mount now. * Copy them into the DEVS:DOSDrivers drawer to auto-mount at system start time. * Create your own mount scrips as needed. OS 1.3 Installation =================== The mfm.device does not work with V 1.3 trackdisk.device. A suitable equivalent is the messydisk.device by Olaf Seibert. It was originally distributed on a PD disk called "Time #10" 9 years (!) ago and has now become nearly unavailable. Therefore I decided to include it here. Doubleclick the "install_fat95_1.3" icon, or * copy the file "fat95" into your "L:" drawer * copy the files "messydisk.device" and "fat95mountlist" into "DEVS:" Then add this line to your S:Startup-Sequence file: mount ms0: from fat95mountlist Use "ms1:" instead of "ms0:" if you want your second floppy drive to work on MS-DOS/Win disks. Special Issues ============== When writing into the root drawer of a fat95 disk, you may get the somewhat strange error message 232 "no more entries in directory". This means: MS-DOS/Win uses a non-extensible, fixed-size root directory table that can only hold a limited number of files and sub-dirs even if there is enough space left on the disk itself. In this case, do one of the following: * store into a sub-directory instead of the root. * move one or two files into a sub-directory, then try writing again. * delete one or two root files. * choose another disk. Unfortunately, I still cannot fully recommend using the messydisk.device. One very annoying fact is that the MOUNT task will hang until the first disk change in the appropriate drive is performed. Perhaps this is a race condition with trackdisk device since everything works quite well in single step debugging mode. fat95 is now able to recognize NSD (new style device) information and it can now make use of Trackdisk64 and/or SCSI direct commands for media > 4 Gbyte as well. Due to several complaints about a disabled "FAT" workbench icon, I decided to report volumes intentionally incorrect as type "DOS\0". This will make that icon disappear. I hope and prey that this does not encourage any program to unqualified direct accessing... FAT32 notes =========== The literally biggest difference compared to the older FAT16 is the so-called File Allocation Table, or FAT. It usually covers 1/1024 of the entire partition size. These are impressive 8 Mbytes on an 8 Gbyte partition, for example. Therefore fat95 does not cache 32bit FAT`s entirely. Access to fragmented files will slow down a bit this way while you are saving all that precious memory. The variable storing the currently available free space is another good new idea... well, at least in theory. The real world does not always keep it up to date. fat95 rather chooses to calculate the free space out of the FAT in the old-fashioned way instead. This will take some time directly after mounting during which you can only read from the volume ("volume is validating"). xxxscsi.device hint =================== Most storage devices are controlled by the scsi.device or a similarly sounding software module of your controller board. Currently, I am using a NEC ZIP100 drive at the internal IDE port of my A1200. Unfortunately the original ROM resident scsi.device does not like ATAPI hardware at all. It only works with IDE harddisks. Therefore I recommend installing an appropriate patch, such as IDE_scsidisk or IDEfix. The "console" ============= fat95 doesn`t really support file comments. Reading them returns the extended date stamps, and writing them accomplishes nothing. Most of the time. Just pick a random object of a fat95 disk and assign it the comment !scandisk and see what happens... This little cheat code is not perfect yet. However, it already does bring back those infamous "lost files". Troubleshooting =============== ?: What does the message "object not found" mean when trying to mount a fat95 device? !: Check the "Device =", "Unit =" and "Flags =" MountList entries. If nothing seems to help, you can create a dump of the internal fat95 variables using the included tool "fat95debug". For example, type into a shell: fat95debug ms0: ram:ms0.log if the internal floppy drive MS0: refuses to work. Then send me the just created binary file (about half a kbyte) by email. I promise there are no passwords or similar secrets in it. For the specialists... ====================== ...here is a list of the supported DOS packets so far: 0005 ACTION_DIE 0007 ACTION_CURRENT_VOLUME 0008 ACTION_LOCATE_OBJECT 0009 ACTION_RENAME_DISK 0015 ACTION_FREE_LOCK 0016 ACTION_DELETE_OBJECT 0017 ACTION_RENAME_OBJECT 0018 ACTION_MORE_CACHE 0019 ACTION_COPY_DIR 0021 ACTION_SET_PROTECT 0022 ACTION_CREATE_DIR 0023 ACTION_EXAMINE_OBJECT 0024 ACTION_EXAMINE_NEXT 0025 ACTION_DISK_INFO 0026 ACTION_INFO 0027 ACTION_FLUSH 0028 ACTION_SET_COMMENT 0029 ACTION_PARENT 0031 ACTION_INHIBIT 0034 ACTION_SET_DATE 0082 ACTION_READ 0087 ACTION_WRITE 1004 ACTION_FINDUPDATE 1005 ACTION_FINDINPUT 1006 ACTION_FINDOUTPUT 1007 ACTION_END 1008 ACTION_SEEK 1020 ACTION_FORMAT 1023 ACTION_WRITE_PROTECT 1026 ACTION_FH_FROM_LOCK 1027 ACTION_IS_FILESYSTEM 1028 ACTION_CHANGE_MODE 1030 ACTION_COPY_DIR_FH 1031 ACTION_PARENT_FH 1033 ACTION_EXAMINE_ALL 1034 ACTION_EXAMINE_FH 1035 ACTION_EXAMINE_ALL_END 4200 ACTION_SERIALIZE_DISK 4201 ACTION_GET_DISK_FSSM 4202 ACTION_FREE_DISK_FSSM History ======= v1.5 11/1999 first published version v1.6 12/1999 fixed large partition addressing bug added workaround for SID2 added volume serial number recognition added directory optimization v1.7 01/2000 fixed minor formatting bug fixed crash on double-mounted volumes made error requesters more informative made code reentrant for multi-device use v1.8 01/2000 added workaround for certain devices who keep trashing forbidden 68k registers v1.11 01/2000 new workarounds for "difficult" devices made drawer operations a bit faster v1.12 01/2000 added on/off feature for ETD_xxx device commands added ACTION_SERIALIZE_DISK packet (used by DiskCopy) made FAT16 mode writeback faster improved disk format recognition v1.13 02/2000 fixed SERIALIZE_DISK bug v1.14 02/2000 fixed bug in updating all FAT copies alternative english version v1.15 02/2000 code optimizations v1.17 02/2000 second published version improved FORMAT command support v1.18 03/2000 first try to implement partition support v1.19 03/2000 fixed partition selection bug v1.20 03/2000 introduced separate directory and file caches added dummy workbench icon suppression v1.21 03/2000 made file access cluster-wise added diskchange messsages to system (IDCMP_DISKINSERTED...) v1.22 03/2000 fixed "large sectors" bug (> 512 bytes) v2.0 04/2000 first try on FAT32 fixed another "large sectors" bug v2.1 04/2000 added NSD and TD64 support fixed bug on 28bit entries for FAT32 changed intl character handling for short filenames fixed "file creation" timestamp v2.2 06/2000 new restart validator routines longer filenames (65 chars) added FAT32 formatting routines small write access optimizations changed AddBuffers support (like FFS) reworked documentation v2.3 07/2000 added native ExAll() and ExAllEnd() added ChangeMode() bugfixes: ExamineFH() OpenFromLock() Rename() very long path names Workbench support v2.4 07/2000 bugfixes: exclusive locks double MSDOS 8.3 names v2.5 07/2000 new buffering scheme (track-wise) bugfix: free storage space recognition on FAT32 v2.6 07/2000 bugfixes: crash when disk is full access to inconsistent files v2.7 08/2000 fixed logigal drive recognition #07+ v2.8 08/2000 added software write protection "Lock" added diagnosis tool "fat95debug" v2.9 09/2000 fixed AddBuffers bug ACTION_CURRENT_VOLUME now safer made all access trackwise v2.10 10/2000 now recognizes some more "exotic" partition tables added error requester "TD64 needed but missing" v2.11 12/2000 better FDA compatibility v2.12 02/2001 added "SCSI direct" command support v2.13 02/2001 new buffering system v2.14 03/2001 fixed nasty FAT32 mode bug v2.15 05/2001 bugfixes: crash on filenames >65 chars shutdown sequence (ACTION_DIE) short name generation new: "pure" attribute error check functions boot95 (EOF)