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 | Single catalogue of 31 fixed length records |
File allocation | Start-Length entries |
Bad blocks | None |
Limits | |
Max file size | 256 KiB |
Max number of files | 31 |
Max filename length | 7 characters |
Max volume size | 256 KiB |
Allowed characters in filenames | US-ASCII |
Features | |
Dates recorded | None |
Date range | N/A |
Date resolution | |
Forks | No |
Attributes | Directory character, 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 a ROM 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 all printable characters of 7-bit ASCII are allowed, including spaces, but excluding:
- The single wildcard character "#".
- The multiple wildcard character "*".
- Control codes generated by the shell escape character "|", although the sequence "||" can be used to represent a single
|
character in the filename. - The drive specifier character ":" as the first character of a leaf name (the file's name proper). This causes a "Bad drive" or "Bad name" error. Where the colon is unambiguous, for example in "FOO:BAR", then it is allowed as part of the leaf name.
- The directory specifier character "." as the first or second character of a leaf name. "." cannot be used as a directory character. Where the dot is unambiguous, such as in "PRG.BAS", then it is allowed as part of the leaf name, and is not treated as a directory specifier (whereas "F.MONEY" would be a file "MONEY" in directory "F").
For the sake of portability to third-party DFS implementations, it is best to avoid ":" and "." in leaf names.
Quotation marks are allowed, although BBC BASIC requires them to be escaped twice:
SAVE """""""A"""
passes the string"""A"
to the DFS, which then saves a file named"A
.- Conversely
SAVE "A"""
will giveA"
as a name. - The same technique is used to insert spaces:
SAVE """B A R"""
saves a file namedB A R
.
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.
[edit] Volume size
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 as a sector count, in the catalogue on track zero. Track zero 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, the Intel 8271-based Acorn DFS does not do so, and so dual-format capability was addressed in a number of ways:
- by simply attaching both a 40-track drive and an 80-track drive to the BBC Micro, although this was costly for the home user;
- some disc drive resellers, notably UFD (User Friendly Devices) and Akhter Computer Group, offered drive assemblies fitted with switches to select 40- or 80-track operation;
- magazines such as The Micro User offered kits to build circuit boards that could be wired into the disc drive cable, optionally 'double-stepping' the attached drives;
- The Micro User also published an article on creating dual-format discs, with 21 tracks' worth of data stored in both formats so that either type of drive could access the contents; however these had limited capacity and once created were read only;
- Acorn User magazine distributed 40-track cover discs with a small utility program in track zero, so that owners of 80-track drives could reformat it into an 80-track disc with the original contents on the first 40 tracks; or
- the user could upgrade to a WD1770 or similar controller; Acorn 1770 DFS and some third party systems provided dual-format capability in software by reprogramming the controller during track seeks; as a bonus, third party systems offered proprietary double density formats for even greater disc capacity.
Failure to use the correct setting would result in errors from the DFS such as "Sector not found 18/00", or damage to the disc drive by trying to step the heads beyond the physical end of the disc surface.
Switching to 80 tracks did not extend the catalogue in any way, leaving the user prone to running out of filename slots before running out of space on the disc. This situation resulted in a "Cat full" error.
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] File allocation
The DFS does not support data fragmentation, but free space on the disc is prone to becoming itself fragmented and file writes would then fail when the end of the file reaches the beginning of the next, even though there may be free space elsewhere on the disc. In such cases the DFS aborts with a "Can't extend" error. 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.
File attributes are limited to a single bit; when set, an L appears to the right of the file's name in the catalogue, and the file may not be altered, overwritten or deleted.
[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 ("execute" script). If the boot flag is positive, a file called !BOOT is looked for and loaded into memory (1), loaded and executed as machine code (2) or fed into the keyboard buffer (3). Option 3 reads "EXEC" files, text files used as very primitive shell scripts. These are not true shell 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 at any time with the operating system's EXEC command. EXEC files are not DFS-dependent.
[edit] Alternatives
There was a variant of the DFS called the DNFS, or Disc/Network Filing System, that contained the Econet Network Filing System (NFS), standard Disc Filing System and Tube co-processor support software on a single ROM; this ROM 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.
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] External links
- Watford DFS (extended Acorn DFS) specification -- includes the original Acorn DFS specification
- Acorn, Watford and Duggan DFS file system structure
- Acorn DFS manual (RTF format)
|