Disc Filing System

From Wikipedia, the free encyclopedia

DFS
Developer Acorn Computers
Full name Disc Filing System
Introduced 1982 (Acorn MOS)
Partition identifier None
Structures
Directory contents Not applicable
File allocation Start-Length entries
Bad blocks None
Limits
Max file size 256 KiB
Max number of files 31
Max filename size 7 characters
Max volume size 256 KiB
Allowed characters in filenames See the article
Features
Dates recorded None
Date range N/A
Forks No
Attributes Load Address, Execution address, Locked
File system permissions No
Transparent compression No
Transparent encryption No
Supported operating systems Acorn MOS

The Disc Filing System (DFS) is a computer file system developed by Acorn Computers Ltd, and introduced in 1982 for the Acorn BBC Microcomputer. It shipped as an EPROM to be inserted onto the BBC Micro's motherboard. It has an extremely limited design in order to make best use of the 100 KiB single density floppy discs it was originally designed for. It uses a flat directory structure. Each filename can be up to 7 letters long, plus one letter for the directory in which the file is stored.

The DFS is remarkable in that unlike most filing systems, there was no single vendor or implementation. The original DFS was written by Acorn, who continued to maintain their own codebase, but various disc drive vendors wrote their own implementations. Companies who wrote their own DFS implementation included Cumana, Opus and Watford Electronics. The Watford Electronics implementation is notable for supporting 62 files per disc instead of the usual 31, using a non-standard disc format. Other features in third-party implementations included being able to review free space, and in-built FORMAT and VERIFY commands, which shipped on a utility disc with the original Acorn DFS.

Acorn followed up their original DFS series with the Acorn 1770 DFS, which used the same disc format as the earlier version but added a set of extra commands and supported the improved WD1770 floppy drive controller chip.

Contents

[edit] File storage

[edit] Filenames

DFS is case preserving but not case sensitive. The prevalence of all-capitals filenames is most likely due to the BBC Micro defaulting to caps lock being enabled after a hard or soft reset. The character set is quite permissive, and almost all of 7-bit ASCII from "!" upward is allowed. The single and multiple wildcard characters "#" (which DFS uses instead of "?") and "*" are not allowed in filenames, nor is the shell escape character "|". Quotation marks are allowed, although BBC BASIC requires that a filename not begin with one: SAVE "A""" will give A" as a name but the name "A (SAVE """A") does not work. The ":" (drive) and "." (directory) characters are permitted as long as they're not ambiguous. A colon cannot begin a name because that is reserved for drive specifiers, but a name like "FOO:BAR" is allowed. "PRG.BAS" is also valid, with the dot being a normal character here instead of a directory specifier such as in "F.MONEY" (file "MONEY" in directory "F").

A fully qualified filename, or "file specification" ("fsp" for short) contains a colon then the drive number, a dot, then the directory letter, another dot, and the name. For example, a file in the default directory of "drive" 2 called "BOB" would have a complete specification of ":2.$.BOB". The drive and directory specifiers are both optional.

[edit] Directories

"Directories" in the DFS are single character prefixes on filenames – such as "F" in "F.BankLtr" – used to group files. The arrangement is flat and a default directory of "$" is used instead of a root directory. On requesting a catalogue of the disc, files in the current directory are shown with no directory prefix in one block, and below that are listed all other files in a second block, with their directory prefixes visible. For example:

PROGRAM (12)
Drive: 0                 Option: 2 (RUN)
Directory: 0.$           Library: 0.$

   !BOOT                    HELLO
   SUMS                     TABLE
   TEST                     VECTORS
   ZOMBIE

 A.HELLO   L              B.SUMS
 F.BankLtr

The top seven files are all in the current directory which is $ on drive 0. Below that are all the files in other directories, in this case A, B and F. (The first line contains the disc title and the modification count.)

The DFS provides a working space, divided up into the directory and the library. The "directory" is the working directory on the current volume, much like the working directory on any other command line system. The "library" is a second, alternative working directory that functions more like a path and had the benefit of being able to be on any volume. Requests to open files with unqualified names, will first be searched for in the working directory; failing this, the library directory will also be searched. The directory and library both default to the same directory.

[edit] Disc structure

The catalogue (file table) occupies the first two disc sectors: one for the names and directories of each file, and a matching sector holding the file locations, sizes and metadata. Eight bytes of each sector are used for each file. With a further eight bytes from each sector reserved for the 12-byte disc title and the volume information, the total number of files on the disc (irrespective of which directory each file is in) is limited to 31. In the interests of saving space, the most significant bit of the directory letter for a file is used as the locked (read-only) flag.

DFS supports two volume sizes: 100 KiB (40 tracks of 10 sectors each) and 200 KiB (80 tracks instead of 40). These were simply known as "40-track" discs and "80-track" discs. Each DFS track holds ten 256-byte sectors. The disc capacity is stored not as the track count (which would only require a single bit), but the sector count. The sector count is stored on track zero, which is located in the same place on both 40- and 80-track discs, allowing the disc file system to set the motor stepping accordingly. However, most drives and controllers lacked the ability to electronically switch the motor stepping, and consequently most if not all implementations of the file system also lacked then provision. Instead, drives capable of reading and writing both disc capacities generally provided a switch to set the motor stepping. Failure to use the correct setting would result in errors from the DFS such as "Sector not found 18/00".

Switching to 80 tracks did not make use of two more sectors to extend the catalogue to 62 files, leaving you prone to running out of filename slots before running out of space on the disc.

The DFS does not support external fragmentation, so free space on the disc is prone to becoming itself fragmented and file writes would then fail from a lack of consecutive free space into which to put the file. A COMPACT command was provided to relocate all files on disc to a solid block, placing all the free space after it in a second block. This would allow writing of further large files but all but the last file on disc could not be extended without being moved.

[edit] Metadata

Like the cassette filing system, the Acorn DFS supports the BBC Micro's standard file metadata: load address and execution address, required because Acorn MOS (the operating system used by the BBC Micro) does not support relocation of binary code.

[edit] Dates

DFS discs do not track any dates (because the host hardware did not have a real-time clock) but instead offered a peculiar feature: a modification count. Every time the disc is written to, the count increments. The count is shown in parentheses after the title in the first line of the disc catalogue, such as the 12 in the catalogue listing shown earlier.

[edit] Drives and volumes

The DFS does not directly support double-sided discs; instead, the two heads of a double-sided drive are treated as two separate, independent volumes. The DFS can itself support up to four volumes, numbered from 0 to 3. Drive 0 was the default with drive 1 representing a second drive attached to the cable. "Drive" 2 conventionally referred to the reverse side of drive 0, and "drive" 3 was the reverse of drive 1.

[edit] Other features

The DFS also supports a means to start up disc software based on a key sequence. If the shift key is held while the machine is soft or hard reset, the DFS checks the active drive for a disc containing a positive boot flag. The boot flag is either 0 (ignore), 1 (load file), 2 (run machine code file) or 3 (EXEC, a primitive type of batch file). If the boot flag is positive, a file called !BOOT is looked for and loaded into memory (1), loaded and executed (2) or fed into the keyboard buffer (3, EXEC). EXEC files are not true scripts but simply a series of keys to be typed, like a recording to play back. Thus, they cannot loop or branch unless they input such code into the BASIC interpreter. As well as being used during a reset, they can be executed with the EXEC command in the DFS.

[edit] Alternatives

There was a variant of the DFS called the DNFS, or Disc/Network Filing System, that contained the Econet Network Filing System and standard Disc Filing System on a single EPROM; this EPROM installed two filing systems into the OS at once.

The initial design for the DFS was based around an Intel FDC 8271 disc drive controller, the immediate predecessor of the 8272 design found in the IBM PC. The 8271 controller was of limited functionality and obsolete, and later versions of the file system from various vendors including Solidisk, Acorn and Watford Electronics were based on the later WD1770 and WD1772 drive controllers. The 1770 controller quickly became the standard controller in the Acorn range following the advent of ADFS. Better controllers and DFS software could also provide quad density discs for increased storage capacity.

The DFS was superseded by the Advanced Disc Filing System (ADFS) which was fully hierarchical and was suitable for running hard drives on the BBC Micro. The ADFS was the default file system on the BBC Master but most users are likely to have reverted to the DFS for compatibility reasons; ADFS could not read DFS discs. The ADFS was also chosen as the default file system for RISC OS.

[edit] Trivia

The DFS appears to allow for files larger than the disc. The largest standard DFS disc (volume, or one side) is 200 KiB (80 tracks × 10 sectors/track × 256 bytes/sector) but file sizes are 18-bit, resulting in a maximum file size of 256 KiB.

[edit] External links