Softdisk Publishing UDF files
File Formats | > | Electronic File Formats | > | Text-based data | > | Softdisk Publishing UDF files |
Softdisk was a publisher of diskmagazines and other software from the 1980s through the early 2000s, as well as a dialup Internet Service Provider (in the Shreveport, LA area) and web host in the late 1990s and early 2000s. It's perhaps best known as the place John Romero, John Carmack, and other founders of Id Software were working when they started their own game-making company as moonlighters.
Their programs used a wide variety of file formats (text-based and binary) for loading and saving data, but at one point in the 1990s some of its developers decided to attempt to standardize the internally-created file formats for future programs, leading to a format specification they termed "UDF" (Universal Data Format, or Uniform Data Format, or Uniform Data File?). There was an internal spec document (which I've unfortunately not been able to find a copy of yet).
This is more of a "meta-format" designed to allow the definition of program-specific data file formats for different programs, with some common structural conventions. Each program's data file format has program-specific elements. Files of this sort can be found on various issues of Softdisk publications such as Softdisk PC, Softdisk for Windows, and Softdisk for Mac. Some of them have a .UDF file extension, but various program-specific extensions were also used.
Programs using files of this format include:
- Criss Cross
- Crypto Sleuth
- Paragon
- Sokoban
- Super Crossword
- Word Finder
Structure
A UDF file is made up of a series of "chunks" consisting of one or more lines of data delimited by lines preceding and following the data containing particular strings of text. Lines can be separated with CR, LF, or CR+LF to allow such files to be created and used on a variety of platforms; programs processing such files are expected to be able to deal with any of these conventions.
A chunk begins with a line starting with the "$" sign, and then a chunk-type name (some character string; there are a few standard chunk names as well as program-specific ones), then in some cases a space and an identifier (name or number) for a specific data item (since some types of data can exist in multiple instances). The chunk terminates with a line consisting of "$EOC" for End Of Chunk, so this string can't occur within the data of a chunk.
Anything following a semicolon (and any whitespace preceding the semicolon) is considered a comment.
Sample chunks:
$DOC SILLYPROG ; driver tag 1 ; major version 1 ; minor version $EOC
$ABOUT Silly Program ; program title John Q. Doe ; author 1.0 ; version Copywrong 1492 No Publisher $EOC
The "DOC" chunk is a standard chunk that identifies which program the file is intended for, with a "driver tag" uniquely identifying the program, and major and minor versions of the file format. The "ABOUT" chunk has more information (intended to be displayed in an "About" box within the program), consisting (in order) of the program title, author, version, and copyright notice (or perhaps this is supposed to be info for the particular data file, which might be a new set of levels for a game, etc., rather than the program it loads into?)
Other chunks will have program-specific data.
Chunks with multiple instances can be numbered:
$PUZZLE 1 Some data for the first puzzle... $EOC
$PUZZLE 2 Some data for the second puzzle... $EOC