FORMAT
and VERIFY
commands, which were 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.
Physical format
DFS conventionally uses one side of a double-density 5¼"Single- and double-sided operation
The DFS does not directly support double-sided discs; instead, the two heads of a double-sided drive are treated as two separate logical drives. The DFS can support up to four volumes, numbered from 0 to 3. Drive 0 is the default with drive 1 representing a second drive attached to the cable. "Drive" 2 referred to the reverse side of drive 0, and "drive" 3 was the reverse of drive 1. There is no support for more than two physical drives. Due to the installed base of single-sided drives, commercial software was normally provided on single-sided discs, or as " flippy discs" that were manually reversed to access the other side.40- and 80-track compatibility
Discs can be formatted using 40 or 80 tracks, using the*FORM40
or *FORM80
commands, and drives can be either 40 or 80 track. This is the most common compatibility issue for DFS users: 40-track discs were the norm for commercial software distribution, due to the installed base of 40-track drives, but 80-track drives became more common as prices dropped, allowing users to store more data. An 80-track drive will not automatically read 40-track discs.
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 a 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 on track zero, so that owners of 80-track drives could reformat them into 80-track discs 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 controller systems provided dual-format capability in software by reprogramming the controller during track seeks; as a bonus, third-party systems offered proprietary MFM (so-called "double-density") formats for even greater disc capacity.
Failure to use the correct setting would result in errors from the DFS such as Disk fault 18 at 01/00
,Acorn Disc Filing System User Guide, issue no.2, July 1983, page 84. "Disk" is spelled with a "k" in error messages, but "c" in the name of the filing system. 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.
File storage
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#
.
*The multiple wildcard character *
.
* Control codes generated by the shell ,
, 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 SAVE """""""A"""
passes the string """A"
to the DFS, which then saves a file named "A
.
*Conversely SAVE "A"""
saves a file named A"
.
*The same technique is used to insert spaces: SAVE """B A R"""
saves a file named B 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.
Directories
"Directories" in the DFS are single character prefixes on filenames - such asF
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 (with the *CAT
or *.
commands), 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, (from Acorn DFS - third party DFS implementations may vary slightly):
PROGRAM (12) Drive 0 Option 2 (RUN) Dir. :0.$ Lib. :0.$ !BOOT HELLO SUMS TABLE TEST VECTORS ZOMBIE A.HELLO L B.SUMS F.BankLtrThe 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
. An L
after a filename (as with A.HELLO
, above) shows the file is locked against modification or deletion. 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 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.Volume size
Although physical disks are usually formatted as either 100 KB or 200 KB, DFS supports volume sizes up to 256 KB. The largest DFS file size allowed is the volume size minus ½ KB for the catalogue, as file sizes are stored as an 18-bit quantity.File allocation
The DFS does not support data fragmentation, meaning a file's data must be stored in a single run of consecutive sectors, but free space is prone to becoming fragmented. Random-access file writes fail when the end of the file reaches the beginning of the next, even though there may be free sectors elsewhere on the disc. In such cases the DFS aborts with aCan't extend
error. SAVE
is also unable to split a file to fit the available space, but as the failure occurs at the sector allocation stage, the error returned is Disk full
.
The *COMPACT
command is provided to relocate all files on disc to a solid block, placing all the free space after it in a second block. This allows the next file created to fill the disc, but only the last existing file can be extended without being moved. SAVE
deletes any existing file and copies the specified block of memory to wherever there is space on the disc. In contrast the *COMPACT
command uses program memory as a buffer to relocate the files, overwriting any program and data in memory.
Metadata
Like the cassette filing system, the Acorn DFS supports the BBC Micro's standard file metadata: load address and execution address, required becauseL
appears to the right of the file's name in the catalogue and the file may not be altered, overwritten or deleted.
Dates
DFS discs do not track any dates (because Acorn MOS prior to version 3 did not maintain a real-time clock) but instead offer a peculiar feature: a modification count. Every time the catalogue is updated, the count increments. The count is shown in parentheses after the title in the first line of the disc catalogue, such as the12
in the catalogue listing shown earlier.
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 drive 0 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 macro files used as primitive *EXEC
command. EXEC files are file system independent.
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 Corporation FDC 8271 disc drive controller, the immediate predecessor of the 8272 design found in theReferences
External links