RFC 769

Rapicom 450 facsimile file format

πŸ“… published September 1980, from ietf

Rapicom 450 Facsimile File Format πŸ’–

Network Working Group Β· RFC 769 Β· 26 September 1980 Author: J. Postel, ISI πŸŽ€ Category: not listed Β· Obsoletes: none Β· Updates: none ✨

Introduction ✨

Okay so bestie, a bunch of orgs in the ARPA Internet community have RAPICOM 450 facsimile machines hooked up to computers πŸ–¨οΈπŸ’… That means they can scan a page into a computer file and then print a page back out from stored fax data. These orgs can also swap that stored fax data over file transfer and other protocols πŸ¦‹ This doc exists so other orgs with compatible fax devices can join the fun, because it writes down the format these files use 🌸

The Rapicom 450: 🧚

The Rapicom 450 has a built-in encoding/decoding scheme πŸ”₯ It makes data blocks that are 585 bits each. There are "set up" blocks and "data" blocks. The machine sends or receives several copies of the set up block, but since they're all identical, only one set up block gets stored in the file πŸ™ˆ

Records: πŸ’œ

Each 585-bit block gets packed into a record made of 8-bit bytes. A record has a length byte, a command byte, and then the data bytes πŸ’– Every record is a whole number of bytes. The length value counts the length byte and the command byte too. The command tells you what's in the data field ✨

   0        1        2        3                              length
   +--------+--------+--------+--------+---//---+--------+--------+
   | length | command|   data                                     |
   +--------+--------+--------+--------+---//---+--------+--------+

Rapicom 450 Facsimile Record πŸ“

Commands: πŸ‘‘

56 - SET-UP

Command code 56 (70 octal) means the data field that follows is a set up block πŸŽ€

57 - DATA

Command code 57 (71 octal) means the data field that follows is a data block πŸ¦‹

58 - END

Command code 58 (72 octal) means this is the last record in the file πŸ’€ In this case the length may be 2, which means there's no data in this record 🫢

Conventions: 🌈

In the files exchanged so far, each record holds one block πŸ”₯ So the data field is 74 bytes long (585/8=73.125), and the length field has the value 76 (114 octal). The one exception is the last record, which may carry no data and have a length of 2 😭

The first record of a file is always a SET UP record ✨ After that come the DATA records, and the file ends with an END record πŸ’…

Details: πŸ”

The 585-bit data block is encoded by the Rapicom 450, so you can't use it as a bit map unless you know and use the encoding/decoding procedure πŸ™ˆ

The first 24 bits of the block are always a synchronization mark, with the value 271 141 344 in octal or 101110010110000111100100 in binary 🧚

The low-order two bits of the next byte hold a sequence number (modulo 4) 🌸 The sequence number bits cycle in the order 11, 01, 10, 00, starting with the first DATA record (not the SET UP record) πŸ’œ

Here's a DATA record drawn out. L is a length bit, C is a command bit, M is the synchronization mark, S is a sequence bit, F is a fill bit, the dash stands for 68 other data octets, and D is a data bit πŸ¦‹

LLLLLLLLCCCCCCCCMMMMMMMMMMMMMMMMMMMMMMMMDDDDDDSSDDDDDDDD-DFFFFFFF

Next line, same record, with the normal values filled in for the length, the command, the synchronization mark, and the fill bits 🫢

0100110000111001101110010110000111100100DDDDDDSSDDDDDDDD-D0000000
πŸ“¦ where this page comes from