‹ThetemplateManualis beingconsidered for merging.›
This articleis written likea manual or guide.(August 2018) |
Developer(s) | Hugo Tyson, Nick Reeves (Acorn Computers) |
---|---|
Full name | Advanced Disc Filing System |
Introduced | 1983Acorn MOS | with
Partition IDs | Hugo orNick (Directory header/footer) |
Structures | |
Directory contents | Hierarchical fixed-length tables |
File allocation | One range per file plus table of free-space ranges (L), bitmap with embedded file IDs (E) |
Bad blocks | none (L),[1]marked in bitmap (E) |
Limits | |
Max volume size | 512MB |
Max file size | 512MB |
Maxno.of files | 47 per directory (L), 77 per directory (E) |
Max filename length | 10 characters |
Allowed filename characters | ASCII(Acorn MOS),ISO 8859-1(RISC OS) |
Features | |
Dates recorded | Modification |
Date range | 1 January 1900 - 3 June 2248 |
Date resolution | 10 ms |
Forks | no |
Attributes | Load address, execute address and file cycle number (Acorn MOS); File type and modification time (RISC OS); User read/write/execute-only; public read/write/execute-only; Deletion lock |
File system permissions | None |
Transparent compression | No |
Transparent encryption | No |
Data deduplication | No |
Other | |
Supported operating systems | Acorn MOS,RISC OS |
TheAdvanced Disc Filing System(ADFS) is a computingfile systemunique to theAcorncomputer range andRISC OS-based successors. Initially based on the rare Acorn Winchester Filing System, it was renamed to the Advanced Disc Filing System when support forfloppy discswas added (using aWD1770 floppy disc controller) and on later32-bitsystems a variant of a PC-style floppy controller.[2]
Acorn's originalDisc Filing Systemwas limited to 31 files per disk surface, 7 characters per file name and a single character for directory names, a format inherited from the earlier Atom and System 3–5Eurocardcomputers. To overcome some of these restrictions Acorn developed ADFS. The most dramatic change was the introduction of a hierarchical directory structure. The filename length increased from 7 to 10 letters and the number of files in a directory expanded to 47. It retained some superficial attributes from DFS; the directory separator continued to be a dot and$
now indicated the hierarchical root of the filesystem.^
was used to refer to the parent directory,@
the current directory, and\
was the previously visited directory.
The BBC Master Compact contained ADFS version 2.0, which provided the addition of format, verify and backup commands in ROM, but omitted support for hard discs.[3]
8-bit usage
editADFS on 8-bit systems required a WD1770 or later 1772-series floppy controller, owing to the inability of the original Intel 8271 chip to cope with the double-density format ADFS required. ADFS could however be used to support hard discs without a 1770 controller present; in development the use of hard discs was the primary goal, extension to handle floppies came later.[citation needed]The 1770 floppy controller was directly incorporated into the design of the Master Series and B+ models,[4]and was available as an upgrade board for the earlier Model B.[5][6]ADFS could be added to Model B and B+ systems with an additional upgrade.[7]
TheAcorn Plus 3,Acorn's official disc expansion for the Acorn Electron, was supplied with ADFS as standard, but this implementation featured various notable bugs. A file calledZYSYSHELPwas "required by the system" and created during formatting.[8]: 7 This was a kludge. Acorn's original ADFS implementation on the Electron was unreliable when writing to the first few tracks of a floppy disc, so this was a "fix" and simply involved writing a file full of garbage to the suspect part. The ADFS would then skip it.[citation needed]Disc corruption could also occur if attempting to use the*COMPACTcommand without disabling the blinking text cursor.[9][note 1]Hugo Tyson, principal ADFS developer, recalls that this bug was found during late testing but not fixed in the initial ROM release in order to avoid late changes, as workarounds exist.
On the Electron, disc formatting was done via the*EFORMcommand instead of the established*FORM40/*FORM80DFS commands. Note additionally that the*EFORMcommand differs from the equivalent*AFORMcommand for the 1770 ADFS on the BBC Microcomputer. This is possibly as a result of needing to create theZYSYSHELPfile on the Electron. The*EFORMcommand was only supplied on the Welcome disc that was shipped with the Plus3, and was not included in the ROM.[8]: 48
ADFS supported hard discs, and 5¼ "and 3½"floppy discsformatted up to 640 KB capacity using double densityMFMencoding (Lformat; single-sided disks were supported with theSformat (160 KB) andMformat (320 KB)). ADFS as implemented in the BBC microcomputer system (and later RISC OS) never had support for single-density floppies.
Hard disc support in ADFS used the same format asLformat floppies in terms of 256-byte blocks;[10] only the underlying arrangement of tracks and sectors differed depending on the actual drive used, but this was managed by theSCSIcontroller. It interfaced to aST506/ST412-based Winchester unit via the BBC Micro's 1 MHz Bus, an Acorn-designed interface card (1 MHz Bus to SCSI adapter) and an off-the-shelfAdaptecSCSI controller (SCSI to ST-506 adapter).
Support forIDE/ATAPIstyle drives has been added 'unofficially' by third parties in recent years.[11]
The ADFS file format used the ASCII bytesHugoto delimit the directory names on the disc, named after ADFS author Hugo Tyson.
32-bit usage (Arthur and RISC OS)
editOn 32-bit systems, a WD 1770 or 1772 was initially used as a floppy controller on the early machines of the range. Later models utilised a PC style multi-I/O controller requiring slight changes to ADFS. In addition to legacy support for the 'L'-type format,Arthurand laterRISC OSprovided enhanced formats which overcome the limitations of the BBC Micro.
Arthur addedDformat with 77 entries per directory as opposed to the previous 47, also usable on hard discs and a new 800 KB double-density floppy format. A per-file "type" attribute was added in space previously used to store Load and Execute addresses. The 12 bits of type information is used to denote the contents or intended use of a file, typically presented as threehexadecimaldigits. This is similar to the 32-bit type attributes stored in Apple'sHFSfile system, and conceptually comparable to the more general use ofMIME Typesby theBe Operating System(BeOS), ormagic numbersin Unix systems (though the latter is stored as part of the file, not as metadata).
RISC OS brought inEandFformat for double-density discs and high-density discs/hard disc drives respectively. These formats support file fragmentation (with the so-called "new map" ), storage of multiple files per fragment and storage of small files in directory tables. The allocation strategy is optimised to minimise fragmentation, and sometimes performs defragmentation as part of a file storage operation.[1]RISC OS 4 addedE+/F+format which allowed for long filenames and more than 77 files per directory.[citation needed]More recent versions of RISC OS, including those forIyonix,continue to provide ADFS, and have further extended it to cope with larger hard disc sizes.
Unlike the 8-bit implementation, ADFS as implemented on RISC OS is not monolithic. A system module called "ADFS" provides no more than the block driver and user interfaces, where the "FileCore" module contains the actual file system implementation, and FileSwitch contains the VFS and high-level file-access API implementations. This allows for other hardware to use the ADFS format easily, such as IDEFS (commonly used for IDE add-on cards), SCSIFS, and the network-aware AppFS. FileCore and FileSwitch's functions are in some ways similar to the IFS and IO system managers in Windows NT. This flexibility has allowed other filing systems to be implemented into RISC OS relatively easily.
Support for ADFS on other platforms
editTheLinuxkernel has ADFS support forEformat and later.
NetBSDhas filecore support[12]in NetBSD 1.4 onwards.
Tools such as Omniflop (in Windows 2000 and later), and Libdsk support permit the 'physical' layout of ADFS floppies to be read on PC systems utilising an internal drive. However the logical structure remains unimplemented.
References
edit- ^abReeves, Nick (26 October 1990)."E format design document".Retrieved24 May2013.
- ^Advanced Disc Filing System: User Guide(PDF).Acorn Computers Limited. September 1985.Retrieved1 August2016.
- ^"Taking the lid off the Master Compact".Acorn User.October 1986. p. 17.Retrieved5 September2020.
- ^Smith, Bruce (July 1985)."B+ Grading".Acorn User.pp. 160–161.Retrieved18 October2020.
- ^1770 Disc Interface(PDF).Acorn Computers Limited.Retrieved6 March2021.
- ^1770 Disc Interface Upgrade Kit Fitting Instructions(PDF).Acorn Computers Limited. August 1985.Retrieved11 March2021.
- ^ADFS upgrade(PDF).Acorn Computers Limited.Retrieved6 March2021.
- ^abThe Electron Plus 3 User Guide(PDF).Acorn Computers Limited. October 1984.Retrieved6 March2021.
- ^Waddilove, Roland (August 1988)."Improving on perfection".Electron User.Vol. 5, no. 11. p. 9.Retrieved20 January2021.
- ^"Acorn 8-Bit ADFS Filesystem Structure"(TXT).Mdfs.net.Retrieved2016-08-01.
- ^"BBC IDE Interface - MDFS::Info.Comp.BBC.IDE".MDFS.net.Retrieved2016-08-01.
- ^"Changes and NetBSD News in 1998".Netbsd.org.Retrieved2016-08-01.
- Watford Electronics, "The Advanced Reference Manual for the BBC Master Series", 1988 (p. 169)
- Acorn Computers Ltd, "The BBC Microcomputer System Master Series Reference Manual Part 1", Part No, 0443–001, Issue 1, March 1986 - (Pages (J.10-1 to J10-3)
Notes
edit- ^This was due to the fact that the*COMPACTcommand used screen memory (by default) as working space during the operation, and the software-implemented blinking cursor corrupted that memory space. An alternative would be to give arguments to make it use non-screen memory for workspace, for example*COMPACT 40 20in screen mode 6. On the BBC Micro, the blinking cursor, if enabled, was superimposed onto the display output by the 6845 CRTC and Acorn's video ULA, without changing any screen memory. The Acorn Electron did not have this extra hardware and had to alter screen memory in software to blink the cursor.