Fbb forwarding protocols can operate either in ASCII or binary compressed modes.
This page describes the three versions of this protocol. Each version is backwards compatible with the previous one. These versions are :
Source code is available. Click here.
FB P F6FBB FC1GHV FC1MVP 24657_F6FBB 1345 F>
FB : Identifies the type of the command (proposal)
P : Type of message (P = Private, B = Bulletin).
F6FBB : Sender (from field).
FC1GHV : BBS of recipient (@field).
FC1MVP : Recipient (to field).
24657_F6FBB : BID ou MID.
1345 : Size of message in bytes.
F> : End of proposal.
FB P F6FBB FC1GHV.FFPC.FRA.EU FC1MVP 24657_F6FBB 1345 FB P FC1CDC F6ABJ F6AXV 24643_F6FBB 5346 FB B F6FBB FRA FBB 22_456_F6FBB 8548 F>
When receiving the proposal, the other BBS will reject, accept or defer each message. This done with an FS line :
FS -+=
FF
This line must not to be followed by a F>.
If the other side has no message (after receiving an FF), it sends a line :
FQ
and disconnects.
Connects xxxxx
Connected to xxxxx
[FBB-5.11-FHM$] Welcome, Jean-Paul. >[FBB-5.11-FHM$] (F6FBB has the F flag in the SID) FB P F6FBB FC1GHV.FFPC.FRA.EU FC1MVP 24657_F6FBB 1345 FB P FC1CDC F6ABJ F6AXV 24643_F6FBB 5346 FB B F6FBB FRA FBB 22_456_F6FBB 8548 F>FS +-+ (accept the 1st and the 3rd) Title 1st message Text 1st message ...... ^Z Title 3rd message Text 3rd message ...... ^ZFB P FC1GHV F6FBB F6FBB 2734_FC1GHV 234 FB B FC1GHV F6FBB FC1CDC 2745_FC1GHV 3524 F>FS -- (Don't need them, and I send immediately the proposal) FB P FC1CDC F6ABJ F6AXV 24754_F6FBB 345 F>FS + (Accepts the message) Title message Text message ...... ^ZFF (no more message) FB B F6FBB TEST FRA 24654_F6FBB 145 F>FS + (Accepts the message) Title message Text message ...... ^ZFF (still no message)FQ (No more message)Disconnection
Disconnection of the link.
FA P FC1CDC F6ABJ F6AXV 24754_F6FBB 345
FB P FC1CDC F6ABJ F6AXV 24754_F6FBB 345
Format of header for an ascii compressed message (type FA) :
<SOH> 1 byte = 01 hex Length of the header 1 byte = Length of the title and offset, including the two separating <NUL> characters Title of the message 1 to 80 ascii bytes <NUL> 1 byte = 00 hex Offset 1 to 6 ascii bytes <NUL> 1 byte = 00 hex
Format of header for a binary compressed file (type FB) :
<SOH> 1 byte = 01 hex Length of the header 1 byte = Length of the filename and offset, including the two <NUL> characters. Name of the file 1 to 80 ascii bytes <NUL> 1 byte = 00 hex Offset 1 to 6 ascii bytes <NUL> 1 byte = 00 hex
The offset is also transmitted in ascii and specifies the offset at which the data should be inserted in the file (in case of a fragmented file). In the version 5.12, this parameter is not utilized and is always equal to zero.
A data block contains from one to 256 bytes. It begins by two bytes which specify the
format.
<STX> 1 byte = 02 hex Size of data 1 byte = 00 to ff hex. if length is 256 bytes, the value is 00. Data bytes 1 to 256 bytes The last data block is followed by the end of file specifier and the checksum. End of file specifier format : <EOT> 1 byte = 04 hex Checksum 1 byte = 00 to ff hex The checksum is equal to the sum of all the data bytes of the transmitted file, modulo 256 (8 bits) and then two's complemented. The checking of the checksum is very simple : The sum of the data bytes from the file and the checksum received modulo 256 shall be equal to zero. In case of a checksum error, the message or the file is ignored and the system issues a disconnect request after having sent the comment :
*** Erreur checksum
Ascii values of the characters (1 byte) used in the protocol :
<NUL> = 00 hex <SOH> = 01 hex <STX> = 02 hex <EOT> = 04 hex
[FBB-5.15-B1FHLM$].
The differences with regard to the version 0 are:
For instance, YLA3350RH (or +L!3350RH) means that :
The submission of an ascii message will be in the form :
FA P FC1CDC F6ABJ F6AXV 24754_F6FBB 345
The submission of a binary file will be in the form :
FB P FC1CDC F6ABJ F6AXV 24754_F6FBB 345
<SOH> 1 byte = 01 hex Length of the header 1 byte = Length of the title and offset, including the two separating <NUL> characters Title of the message 1 to 80 ascii bytes <NUL> 1 byte = 00 hex Offset 1 to 6 ascii bytes <NUL> 1 byte = 00 hex
Format of header for a binary compressed file (type FB) :
<SOH> 1 byte = 01 hex Length of the header 1 byte = Length of the filename and offset, including the two <NUL> characters. Name of the file 1 to 80 ascii bytes <NUL> 1 byte = 00 hex Offset 1 to 6 ascii bytes <NUL> 1 byte = 00 hex
French regulations require that the title of the message or the file name are transmitted in readable ascii and are not compressed.
The offset is also transmitted in ascii and specifies the offset at which the data should be inserted in the file (in case of a fragmented file). In the version 5.12, this parameter is not utilized and is always equal to zero.
A data block contains from one to 256 bytes. It begins by two bytes which specify the format.
Data block format :
<STX> 1 byte = 02 hex
Size of data 1 byte = 00 to ff hex. if length is 256 bytes, the value is 00.
Data bytes 1 to 256 bytes
- The first transmitted block of data must contain a header containing :
- the CRC16 of the full binary file (2 bytes)
- the size of the full uncompressed file (4 bytes)
- This data is in little-endian Intel format (less significant first).
- The last data block is followed by the end of file specifier and the checksum of the data sent.
- End of file specifier format :
<EOT> 1 byte = 04 hex Checksum 1 byte = 00 to ff hex
- The checksum is equal to the sum of all the data bytes of the transmitted data, modulo 256 (8 bits) and then two's complemented.
- The checking of the checksum is very simple :
- The sum of the data bytes from the file and the checksum received modulo 256 shall be equal to zero.
In case of a checksum error, the message or the file is ignored and the system issues a disconnect request after having sent the comment : *** Erreur checksum- A CRC16 is computed for the full binary file including the length of the uncompressed file (4 bytes in top of file). In the case of a resume, it will be the only means available to ensure that all the parts of the message or file has been received correctly.
- The LZHUF_1 program, when used with option "e1", generates a binary compressed file in the following format : CRC16 : 2bytes Length: 4 bytes Data : rest of the file
- In case of forwarding with a BBS using version 0, only the part from offset 2 will be sent
- In case of forwarding with a BBS using version 1, the 6 top bytes will be always sent, then if resume seek to asked offset, then send data.
- Ascii values of the characters (1 byte) used in the protocol :
<NUL> = 00 hex <SOH> = 01 hex <STX> = 02 hex <EOT> = 04 hex- Comments will be welcome.