Amiga Old File System: Difference between revisions

Content deleted Content added
See also: Added link to RDB
m top: Added crucial parts into the header, from the running text below. ;-
(27 intermediate revisions by 24 users not shown)
Line 1:
{{Short description|File system for AmigaOS}}
On the [[Amiga]], the '''Old File System''' was the filesystem for [[Amiga OS]] before the [[Amiga Fast File System]]. Even though it used 512-byte blocks, it reserved the first small portion of each [[block]] for [[Metadata (computing)|metadata]], leaving an actual data block capacity of 488 bytes per block. It wasn't very suitable for anything except [[floppy disk]]s, and it was soon replaced.
{{one source|date=October 2015}}
On the [[Amiga]], the '''Old File System''', sometimes also called ''Amiga File System'', was the filesystem for [[Amiga OSAmigaOS]] before the [[Amiga Fast File System]]. Even though it used 512-byte blocks, it reserved the first small portion of each [[Block (data storage)|block]] for [[Metadata (computing)|metadata]], leaving an actual data block capacity of 488 bytes per block. It wasn't very suitable for anything except [[floppy disk]]s, and it was soon replaced.
 
== History ==
OriginallyCommonly known as just the ''Amiga File System'', theit filesystemoriginally itselfcame wasfrom verythe similar to thatfilesystem of [[XeroxTRIPOS]], Altowhich Filesystem.formed Developmentthe wasbasis fromof 1982the tofirst 1985 as the filesystemversions of [[TripOSAmigaDOS]]. It received the nickname of "Old" or "Original" File System when [[Amiga Fast File System|Fast File System]] was released with [[Amiga OS]]AmigaOS 21.03.
 
OFS is very good for repairing the filesystem in the event of a problem, although the so -called DiskDoctor provided by Commodore quickly earned the name DiskDestroyer, because it could not repair No-DOS type autostart disks provided by third-party software manufacturers as bootable disks for games. Interestingly, theThe idea to create non-standard autobootable disks was born in a primitive attempt to prevent copy of such disks and to avoid the loading and launch of Amiga DOS, in order to directly access the amigaAmiga graphic, audio and memory chipsets. DiskDoctor in fact changed autostart disks bootblocks into standard AmigaDOS-based ones, renaming a disk with "Lazarus" namedisk, and made the autostart disk unusable.<ref>[http://www.amiga.org/forums/showthread.php?t=72730 Why was "Disk doctor" so spectacularly bad at its job?]</ref>
 
== Characteristics of AmigaDOS Floppy Disks ==
Metacomco, BSTRINGS, BPOINTERS, and family contained in the Amiga FS entered the scene when it was decided that the originally planned OS would take too long to be developed in time for the launch of Amiga. Consequently, Metacomco grafted onto the filesystem a lot of things that the old Amiga Inc. has changed.
Amiga uses [[Modified Frequency Modulation|MFM]] encoding/decoding by default when handling [[floppy disk]]s. There are 80 cylinders on an Amiga floppy disk. Each cylinder has 2 MFM tracks, one on each side of the disk. Double density (DD) disks have 11 sectors per MFM track, Highhigh density (HD) disks have 22 sectors.
 
The geometry of an Amiga Floppyfloppy Diskdisk is as follows:
== Characteristics ==
Amiga uses [[Modified Frequency Modulation|MFM]] encoding/decoding by default when handling [[floppy disk]]s. There are 80 cylinders on an Amiga floppy disk. Each cylinder has 2 MFM tracks, one on each side of the disk. Double density (DD) disks have 11 sectors per MFM track, High density (HD) disks have 22 sectors.
 
The geometry of an Amiga Floppy Disk is as follows:
 
* DD disks: 512 bytes/sector, 11 sector/track, 2 track/cyl, 80 cyl/disk
Line 20:
Amiga stores 880 [[kibibyte|KiB]] on a DD disk and 1760 KiB on an HD floppy disk.
 
==Characteristics of Files under AmigaDOS==
The standard Amiga filesystem has an internal 32 bit wide offset parameter (unsigned). It tells where to start the read/write operation. The biggest size for an Amiga disk is therefore 2<sup>32</sup> = 4 [[gibibyte|GiB]]. This limit was changed with Amiga OS 3.5 and 3.9 and now is 2<sup>64</sup> = 4 [[exbibyte|EiB]].
Prior to AmigaOS 3.5, AmigaDOS file handles maintained a 32-bit wide offset parameter (unsigned), telling where to start the next read or write operation. The biggest size for any single Amiga file under these operating systems therefore comes to 2<sup>32</sup> = 4 [[gibibyte|GiB]]. After Amiga OS 3.5, file handles may reference 2<sup>64</sup> = 16 [[exbibyte|EiB]] files. However, OFS-formatted disks continue to retain the 32-bit limitations, for that is an intrinsic limitation of the format as recorded on the media.
 
An OFS Datablockdatablock stores Blockblock Sizesize BSIZE-24 bytes (i.e. normally 488 bytes at most frequently used BSIZE of 512 bytes), FFS stores BSIZE bytes (512 bytes per block).
FFS supports directory caching, links and international mode. The FFS is also faster than OFS.
 
The Rootblockrootblock is located at the physical middle of the media: block number 880 for DD disks, block 1760 for HDs. This helps minimize seek times.
 
The exact calculation for where it is stored is as follows:
<pre>
numCyls = highCyl - lowCyl + 1
Line 36:
</pre>
 
The Rootblockrootblock contains information about the disk: its name, its formatting date, etc. It also contains information on accessing the files/directories/links located at the uppermost (root) directory.
 
The characters '/' and ':' are forbidden in file and volume names, but *!@#$%|^+&_()=\-[]{}';",<>.? and letters with diacritical marks like âè are allowed.
 
The characters '/' and ':' are forbidden in file and volume names, but *!@#$%|^+&_()=\-[]{}';",<>.? and letters with diacritical marks like âè are allowed.
The date fields in the root block (and other blocks) are structured in the form of DAYS, MINS and TICKS. The DAYS field contains the number of days since January 1. 1978. MINS is the number of minutes that have passed since midnight and TICKS are expressed in 1/50s of a second. A day value of zero is considered illegal by most programs. Since the DAYS value is stored as a 32-bit number, the Amiga filesystem does not have an inherent [[Year 2000 problem]] or [[Year 2038 problem]].
 
The date fields in the root block (and other blocks) are structured in the form of DAYS, MINS and TICKS. The DAYS field contains the number of days since January 1. 1978. MINS is the number of minutes that have passed since midnight and TICKS are expressed in 1/50s of a second. A day value of zero is considered illegal by most programs. Since the DAYS value is stored as a 32-bit number, the Amiga filesystem does not have an inherent [[Year 2000 problem]] or [[Year 2038 problem]].
To reach a file, directory or link in a removable media, Amiga has to compute its hash value with an algorithm often called a [[Hash function]]. After having computed the hash value, this is then used to access HashTable ('ht' field in Rootblock/Directory block). The HashTable[ HashValue ] contains the number of the first block of the object (File header block, Directory block or Link block).
 
To reach a file, directory or link, AmigaDOS uses a [[hash function]] to calculate which 32-bit word in the disk block to use as a pointer to a hash bucket list, which in turn contains the file, directory, or link record. A bucket list is used to support filesystem objects with names that hash to the same offset. For example: '''file_1a''', '''file_24''' and '''file_5u''' have the same hash value.
It happens that different names can result in the same HashValue. If more than one name has the same HashValue, the other blocks (for files and directory only) are stored in a chained list. This linked list starts at the 'next_hash' field of the File header or Directory block.
For example: '''file_1a''', '''file_24''' and '''file_5u''' have the same hash value.
 
Filename characters can be lowercase and uppercase, but are not case sensitive when accessed. That is to say, "MyFile" and "myfile" in the same directory refer to the same file.
There was a bug in the old AmigaDOS versions when applying the Hash function to international characters (ASCII codes > 128). Consequently, FFS was then created with the 'international mode' (INTL). Filename characters can be lowercase and uppercase, but are not case sensitive.
 
Files are composed of a file header block, which contains information about the file (size, last access time, data block pointers, etc.), and the data blocks, which contain the actual data. The file header block contains up to BSIZE/4-56 data block pointers (which amounts to 72 entries with the usual 512 byte blocks). If a file is larger than that, file extension blocks will be allocated to hold the data block pointers. File extension blocks are organised in a linked list, which starts in the Filefile header block ('extension' field).
 
== See also ==
{{Portal|Amiga}}
* [[Amiga Fast File System]]
* [[Professional File System]]
* [[Smart File System]]
* [[List of file systems]]
* [[Amiga Rigid Disk Block|Rigid Disk Block]]
 
== External links ==
*[ftphttp://it.aminet.net/pub/aminet/disk/misc/ADFlib.lha The ADF specs] in [[LHA (file format)|LHA]] format, from [[Aminet]]
*[http://lclevy.club.fr/adflib/index.html The ADFlib Page] and precisely [http://lclevy.free.fr/adflib/ ADF File specs]
{{Reflist}}
*[ftp://it.aminet.net/pub/aminet/disk/misc/ADFlib.lha The ADF specs] in [[LHA (file format)|LHA]] format, from [[Aminet]]
 
{{AmigaOS}}