One of the problems with ANSI files, was a way to truly track via META data who the author was, and what group they represented. In 1994 SAUCE became a standard way of appending this META data and it continues to be in use today as a de facto standard within the ANSI art community. However, being created so many years ago, some of the common assumptions made back then are now cause for confusion. So, there is a revised version also in HTML format.
SAUCE was initially created for supporting only the ANSI and RIP formats.
Appended to a file, SAUCE has 4 parts: The original file contents, an End-Of-File or EOF character (Decimal 26, 0x1A, Ctrl+Z), an optional comment block and the SAUCE record.
The EOF character is an important part of what makes SAUCE work for text files. When processing a text file, the DOS / Windows TYPE command, most BBS terminal software and ANSI-viewers will all stop processing at the end of the file or when a EOF character is encountered with the EOF character itself not being rendered.
Fieldname | Type | Size | Description | Required [1] | Revision [2] | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|
ID | Character [3] | 5 | SAUCE identification. This should be equal to “SAUCE”. | yes | 00.0 | ||||||
Version[6] | Character [3] | 2 | SAUCE version number, should be “00”. | yes | 00.0 | ||||||
Title | Character [3] | 35 | The title of the file. | no | 00.0 | ||||||
Author | Character [3] | 20 | The (nick)name or handle of the creator of the file. | no | 00.0 | ||||||
Group | Character [3] | 20 | The name of the group or company the creator is employed by. | no | 00.0 | ||||||
Date | Character [3] | 8 | The date the file was created. The format for the date is CCYYMMDD (century, year, month, day). Example: 4 may 2013 would be stored as 20130504 . | no | 00.0 | ||||||
FileSize | Unsigned [4] | 4 | The original file size not including the SAUCE information. | no [8] | 00.0 | ||||||
DataType | Unsigned [4] | 1 | Type of data. | yes | 00.0 | ||||||
FileType | Unsigned [4] | 1 | Type of file. | yes | 00.0 | ||||||
TInfo1 [7] | Unsigned [4] | 2 | Type dependent numeric information field 1. | no | 00.0 | ||||||
TInfo2 [7] | Unsigned [4] | 2 | Type dependent numeric information field 2. | no | 00.0 | ||||||
TInfo3 [7] | Unsigned [4] | 2 | Type dependent numeric information field 3. | no | 00.0 | ||||||
TInfo4 [7] | Unsigned [4] | 2 | Type dependent numeric information field 4. | no | 00.0 | ||||||
Comments | Unsigned [4] | 1 | Number of lines in the extra SAUCE comment block. 0 (zero) indicates no comment block is present. | no | 00.0 | ||||||
TFlags [7] | Unsigned [4] | 1 | Type dependent flags. | no | 00.1 | ||||||
TInfoS [7] | ZString [5] | 22 | Type dependent string information field | no | 00.5 |
A SAUCE comment block is an optional, variable sized structure that holds up to 255 lines of additional information, each line 64 characters wide. There are as many comment lines as is mentioned in the Comments field of the SAUCE record. If the Comments field is set to 0, there should not be a comment block at all. The comment block has the following layout:
Field name | Type | Size | Description | Required [1] | Revision [2] | |||||
---|---|---|---|---|---|---|---|---|---|---|
ID | Character [3] | 5 | SAUCE comment block identification. This should be equal to “COMNT”. | yes | 00.0 | |||||
Comment Line 1 | Character [3] | 64 | Line of text. | yes | 00.0 | |||||
… | ||||||||||
Comment Line x | Character [3] | 64 | Line of text. | yes | 00.0 |
struct SAUCE { char ID[5]; char Version[2]; char Title[35]; char Author[20]; char Group[20]; char Date[8]; unsigned long FileSize; unsigned char DataType; unsigned char FileType; unsigned short TInfo1; unsigned short TInfo2; unsigned short TInfo3; unsigned short TInfo4; unsigned char Comments; unsigned char TFlags; char TInfoS[22]; };