<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://fileformats.archiveteam.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://fileformats.archiveteam.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Geneb</id>
		<title>Just Solve the File Format Problem - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://fileformats.archiveteam.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Geneb"/>
		<link rel="alternate" type="text/html" href="http://fileformats.archiveteam.org/wiki/Special:Contributions/Geneb"/>
		<updated>2026-04-07T22:48:36Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.19.2</generator>

	<entry>
		<id>http://fileformats.archiveteam.org/wiki/QWK</id>
		<title>QWK</title>
		<link rel="alternate" type="text/html" href="http://fileformats.archiveteam.org/wiki/QWK"/>
				<updated>2013-02-11T00:50:22Z</updated>
		
		<summary type="html">&lt;p&gt;Geneb: Created page with &amp;quot;The following document was found here: [http://www.textfiles.com/programming/qwk.txt QWK File Format]    &amp;lt;pre&amp;gt;                           QWK Mail Packet File Layout           ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following document was found here: [http://www.textfiles.com/programming/qwk.txt QWK File Format] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                         QWK Mail Packet File Layout&lt;br /&gt;
                              by Patrick Y. Lee&lt;br /&gt;
&lt;br /&gt;
Version 1.0 - February 23, 1992&lt;br /&gt;
     First release.&lt;br /&gt;
Version 1.1 - March 15, 1992&lt;br /&gt;
     Minor fixes here and there to make everything just right.&lt;br /&gt;
Version 1.2 - May 31, 1992&lt;br /&gt;
     Added a few items to the DOOR.ID file that is being supported by Qmail&lt;br /&gt;
     DeLuxeý version 1.25.&lt;br /&gt;
Version 1.3 - July 6, 1992&lt;br /&gt;
     Added changes to the QWK format adopted by Qmail door.  Specifically&lt;br /&gt;
     line 10 of CONTROL.DAT file and bytes 126-127 of MESSAGES.DAT file. &lt;br /&gt;
     Please refer to the appropriate section for the changes.&lt;br /&gt;
&lt;br /&gt;
This document is Copyright 1992 by Patrick Y. Lee.&lt;br /&gt;
&lt;br /&gt;
The QWK-format is Copyright 1987 by Sparkware.&lt;br /&gt;
&lt;br /&gt;
All program names mentioned in this document are either Copyright or Trade-&lt;br /&gt;
mark of respective owner(s).&lt;br /&gt;
&lt;br /&gt;
The author provides this file as-is without warranty of any kind, either&lt;br /&gt;
expressed or implied.  You are using the information in this file at your&lt;br /&gt;
own discretion.  The author assumes no responsibilities for damages, either&lt;br /&gt;
physically or financially, from the use of this information.&lt;br /&gt;
&lt;br /&gt;
This document may be freely distributed by any means (electronically, pa-&lt;br /&gt;
per, etc.), provided that it is distributed in its entirety.  Portions of&lt;br /&gt;
this document may be reproduced without credit.&lt;br /&gt;
&lt;br /&gt;
                              Table of Contents&lt;br /&gt;
&lt;br /&gt;
1.  Introduction&lt;br /&gt;
    1.1.  Intent&lt;br /&gt;
    1.2.  History&lt;br /&gt;
    1.3.  Questions, corrections, etc.&lt;br /&gt;
2.  Conventions &amp;amp; overview&lt;br /&gt;
    2.1.  The BBS ID&lt;br /&gt;
    2.2.  Packet compression&lt;br /&gt;
    2.3.  Packet transfer &amp;amp; protocols&lt;br /&gt;
    2.4.  Limitations&lt;br /&gt;
3.  QWK files&lt;br /&gt;
    3.1.  Naming convention&lt;br /&gt;
    3.2.  Control file (CONTROL.DAT)&lt;br /&gt;
    3.3.  Welcome file&lt;br /&gt;
    3.4.  Goodbye file&lt;br /&gt;
    3.5.  News file&lt;br /&gt;
    3.6.  Qmail DeLuxeý menu file&lt;br /&gt;
    3.7.  New uploads listing (NEWFILES.DAT)&lt;br /&gt;
    3.8.  Bulletin file(s) (BLT-x.y)&lt;br /&gt;
    3.9.  Message file (MESSAGES.DAT)&lt;br /&gt;
    3.10.  Index files (*.NDX)&lt;br /&gt;
        3.10.1.  Conference indices&lt;br /&gt;
        3.10.2.  Personal index (PERSONAL.NDX)&lt;br /&gt;
    3.11.  Pointer file&lt;br /&gt;
    3.12.  SESSION.TXT&lt;br /&gt;
4.  REP files&lt;br /&gt;
    4.1.  Naming convention&lt;br /&gt;
    4.2.  Message file (BBSID.MSG)&lt;br /&gt;
    4.3.  Door control messages&lt;br /&gt;
    4.3.1.  DOOR.ID file&lt;br /&gt;
    4.3.2.  Qmail&lt;br /&gt;
    4.3.3.  MarkMail&lt;br /&gt;
    4.3.4.  KMail&lt;br /&gt;
    4.3.5.  RoseMail&lt;br /&gt;
    4.3.6.  Complete Mail Door&lt;br /&gt;
    4.4.  Turning off the echo flag&lt;br /&gt;
    4.5.  Tag-lines&lt;br /&gt;
5.  Net mail&lt;br /&gt;
A.  Credits &amp;amp; contributions&lt;br /&gt;
B.  Sample Turbo Pascal and C code&lt;br /&gt;
C.  Sample message&lt;br /&gt;
D.  Sample index file&lt;br /&gt;
&lt;br /&gt;
                        -=-=-=-=-=-=-&amp;lt;&amp;gt;-=-=-=-=-=-=-&lt;br /&gt;
&lt;br /&gt;
To search for a specific section, look for &amp;quot;[x.x]&amp;quot; using your editor or&lt;br /&gt;
viewer.  For example, to jump to the tag-lines portion of this file, search&lt;br /&gt;
for &amp;quot;[4.5]&amp;quot; with your editor or text viewer.&lt;br /&gt;
&lt;br /&gt;
                        -=-=-=-=-=-=-&amp;lt;&amp;gt;-=-=-=-=-=-=-&lt;br /&gt;
&lt;br /&gt;
[1]  Introduction&lt;br /&gt;
&lt;br /&gt;
[1.1]  Intent&lt;br /&gt;
&lt;br /&gt;
This document is written to facilitate programmers who want to write&lt;br /&gt;
QWK-format mail doors or readers.  It is intended to be a comprehen-&lt;br /&gt;
sive reference covering all areas of QWK-format mail processing. &lt;br /&gt;
Detailed break down of each file is included, as are implementation&lt;br /&gt;
information.  In addition, door and reader specific information may be&lt;br /&gt;
included, when such information are available to me.&lt;br /&gt;
&lt;br /&gt;
[1.2]  History&lt;br /&gt;
&lt;br /&gt;
The QWK-format was invented by Mark &amp;quot;Sparky&amp;quot; Herring in 1987.  It was&lt;br /&gt;
based on Clark Development Corporation's PCBoard version 12.0 message&lt;br /&gt;
base format.  Off-line mail reading has become popular only in recent&lt;br /&gt;
years.  Prior to summer of 1990, there were only two QWK-format off-&lt;br /&gt;
line mail reader programs.  They were Qmail DeLuxe by Mark Herring and&lt;br /&gt;
EZ-Reader by Eric Cockrell.  Similarly for the doors, there were only&lt;br /&gt;
two -- Qmail by Mark Herring and MarkMail by Mark Turner.  They were&lt;br /&gt;
both for PCBoard systems.&lt;br /&gt;
&lt;br /&gt;
A lot has changed in both off-line reader and mail door markets since&lt;br /&gt;
summer 1990.  Now, there are more than a dozen off-line mail readers&lt;br /&gt;
for the PC.  Readers for the Macintosh, Amiga, and Atari exist as&lt;br /&gt;
well.  There are over a half dozen doors for PCBoard, and QWK-format&lt;br /&gt;
doors exist for virtually all of the popular BBS softwares.  All of&lt;br /&gt;
these happened in less than two years!  More readers and doors are in&lt;br /&gt;
development as I write this, keep up the excellent work.  In addition&lt;br /&gt;
to doors, some BBS softwares has QWK-format mail facility built in.&lt;br /&gt;
&lt;br /&gt;
Off-line mail reading is an integral part of BBS calling.  Conference&lt;br /&gt;
traffic and selection on all networks have grown dramatically in re-&lt;br /&gt;
cent years that on-line reading is a thing of the past.  Off-line mail&lt;br /&gt;
reading offers an alternative to reading mail on-line -- It offers&lt;br /&gt;
speed that cannot be achieved with on-line mail reading.&lt;br /&gt;
&lt;br /&gt;
The reason why QWK-format readers and doors seem to have gained popu-&lt;br /&gt;
larity is probably dued to its openness.  The format is readily avail-&lt;br /&gt;
able to any programmer who wishes to write a program that utilize it. &lt;br /&gt;
Proprietary is a thing of the past, it does not work!  Openness is&lt;br /&gt;
here to stay and QWK-format is a part of it.&lt;br /&gt;
&lt;br /&gt;
[1.3]  Questions, corrections, etc.&lt;br /&gt;
&lt;br /&gt;
Most of the message networks today have a conference/echo devoted to&lt;br /&gt;
discussion of off-line readers and mail doors.  The ones I know are on&lt;br /&gt;
FidoNet, ILink, Intelec, and RIME.  If you have questions after read-&lt;br /&gt;
ing anything in here, feel free to drop by any of the above conference&lt;br /&gt;
/echo and I am sure other QWK authors will try to help.&lt;br /&gt;
&lt;br /&gt;
I can be reached in the Off-line conferences on RIME, ILink, and In-&lt;br /&gt;
telec, as well as the Common conference on RIME.  Mail can be routed&lt;br /&gt;
to node RUNNINGB.  I can be reached on the Internet at&lt;br /&gt;
&amp;quot;p.lee@green.cooper.edu&amp;quot;.  Any corrections, extensions, comments, and&lt;br /&gt;
criticisms are welcomed.&lt;br /&gt;
&lt;br /&gt;
[2]  Conventions &amp;amp; overview&lt;br /&gt;
&lt;br /&gt;
All offsets referenced in this document will be relative to 1.  I am&lt;br /&gt;
not a computer, I start counting at one, not zero!&lt;br /&gt;
&lt;br /&gt;
Words which are enclosed in quotes should be entered as-is.  The quota-&lt;br /&gt;
tions are not part of the string unless noted.&lt;br /&gt;
&lt;br /&gt;
You may have noticed I use the phrase &amp;quot;mail program&amp;quot; or &amp;quot;mail facili-&lt;br /&gt;
ty&amp;quot; instead of mail doors.  This is because some BBS softwares offer&lt;br /&gt;
the option of creating QWK-format mail packets right from the BBS. &lt;br /&gt;
With those, there is no need for an external mail door.&lt;br /&gt;
&lt;br /&gt;
[2.1]  The BBS ID&lt;br /&gt;
&lt;br /&gt;
The BBS ID (denoted as BBSID) is a 1-8 characters word that identifies&lt;br /&gt;
a particular BBS.  This identifier should be obtained from line 5 of&lt;br /&gt;
the CONTROL.DAT file (see section 3.2.1).&lt;br /&gt;
&lt;br /&gt;
[2.2]  Packet compression&lt;br /&gt;
&lt;br /&gt;
Most mail packets are compressed when created by the mail door in&lt;br /&gt;
order to save download time and disk space.  However, many off-line&lt;br /&gt;
reader programs allow the user to unarchive a mail packet outside of&lt;br /&gt;
the reader program, so the reader will not have to unarchive it.  Upon&lt;br /&gt;
exit, the reader will not call the archiver to save it.  It is up to&lt;br /&gt;
the user to archive the replies.  This is useful if the user has limit-&lt;br /&gt;
ed memory and cannot shell out to DOS to run the unarchive program. &lt;br /&gt;
For readers based on non-PC equipment, the user may be using less&lt;br /&gt;
common compression program that does not have command line equivalent.&lt;br /&gt;
&lt;br /&gt;
[2.3]  Packet transfer &amp;amp; protocols&lt;br /&gt;
&lt;br /&gt;
There is no set rule on what transfer protocol should be used.  Howev-&lt;br /&gt;
er, it would be nice for the mail program on the BBS to provide the&lt;br /&gt;
Sysop with options as to what to offer.  This should be a configura-&lt;br /&gt;
tion option for the user.&lt;br /&gt;
&lt;br /&gt;
[2.4]  Specifications &amp;amp; limitations&lt;br /&gt;
&lt;br /&gt;
There aren't many known limits in the QWK specification.  However,&lt;br /&gt;
various networks seem to impose artificial limits.  On many of the PC-&lt;br /&gt;
based networks, 99-lines appears to be the upper limit for some soft-&lt;br /&gt;
wares.  However, most of the readers can handle more than that.  Read-&lt;br /&gt;
er authors reading this may want to offer the option to split replies&lt;br /&gt;
into n lines each (the actual length should be user definable so when&lt;br /&gt;
the network software permits, the user can increase this number).&lt;br /&gt;
&lt;br /&gt;
[3]  QWK files&lt;br /&gt;
&lt;br /&gt;
[3.1]  Naming convention&lt;br /&gt;
&lt;br /&gt;
Generally, the name of the mail packet is BBSID.QWK.  However, this&lt;br /&gt;
does not have to be the case.  When the user downloads more than one&lt;br /&gt;
mail packet at one time, either the mail program or the transfer proto-&lt;br /&gt;
col program will rename the second and subsequent mail packets to&lt;br /&gt;
other names.  They will either change the file extension or add a&lt;br /&gt;
number to the end of the filename.  In either case, you should not&lt;br /&gt;
rely on the name of the QWK file as the BBSID.  The BBSID, as men-&lt;br /&gt;
tioned before, should be obtained from line 5 of the CONTROL.DAT file. &lt;br /&gt;
In addition, mail packets do not have to end with QWK extension ei-&lt;br /&gt;
ther.  The user may choose to name them with other file extensions.&lt;br /&gt;
&lt;br /&gt;
[3.2]  Control file (CONTROL.DAT)&lt;br /&gt;
&lt;br /&gt;
The CONTROL.DAT file is a simple ASCII file.  Each line is terminated&lt;br /&gt;
with a carriage return and line feed combination.  All lines should&lt;br /&gt;
start on the first column.&lt;br /&gt;
&lt;br /&gt;
Line #&lt;br /&gt;
 1   My BBS                   BBS name&lt;br /&gt;
 2   New York, NY             BBS city and state&lt;br /&gt;
 3   212-555-1212             BBS phone number&lt;br /&gt;
 4   John Doe, Sysop          BBS Sysop name&lt;br /&gt;
 5   20052,MYBBS              Mail door registration #, BBSID&lt;br /&gt;
 6   01-01-1991,23:59:59      Mail packet creation time&lt;br /&gt;
 7   JANE DOE                 User name (upper case)&lt;br /&gt;
 8                            Name of menu for Qmail, blank if none&lt;br /&gt;
 9   0                        ? Seem to be always zero&lt;br /&gt;
10   999                      Total number of messages in packet&lt;br /&gt;
11   121                      Total number of conference minus 1&lt;br /&gt;
12   0                        1st conf. number&lt;br /&gt;
13   Main Board               1st conf. name (13 characters or less)&lt;br /&gt;
14   1                        2nd conf. number&lt;br /&gt;
15   General                  2nd conf. name&lt;br /&gt;
..   3                        etc. onward until it hits max. conf.&lt;br /&gt;
..   123                      Last conf. number&lt;br /&gt;
..   Amiga_I                  Last conf. name&lt;br /&gt;
..   HELLO                    Welcome screen file&lt;br /&gt;
..   NEWS                     BBS news file&lt;br /&gt;
..   SCRIPT0                  Log off screen&lt;br /&gt;
&lt;br /&gt;
Some mail doors, such as MarkMail, will send additional information&lt;br /&gt;
about the user from here on.&lt;br /&gt;
&lt;br /&gt;
0                             ?&lt;br /&gt;
25                            Screen length on the BBS&lt;br /&gt;
JANE DOE                      User name in uppercase&lt;br /&gt;
Jane                          User first name in mixed case&lt;br /&gt;
NEW YORK, NY                  User city information&lt;br /&gt;
718 555-1212                  User data phone number&lt;br /&gt;
718 555-1212                  User home phone number&lt;br /&gt;
108                           Security level&lt;br /&gt;
00-00-00                      Expiration date&lt;br /&gt;
01-01-91                      Last log on date&lt;br /&gt;
23:59                         Last log on time&lt;br /&gt;
999                           Log on count&lt;br /&gt;
0                             Current conference number on the BBS&lt;br /&gt;
0                             Total KB downloaded&lt;br /&gt;
999                           Download count&lt;br /&gt;
0                             Total KB uploaded&lt;br /&gt;
999                           Upload count&lt;br /&gt;
999                           Minutes per day&lt;br /&gt;
999                           Minutes remaining today&lt;br /&gt;
999                           Minutes used this call&lt;br /&gt;
32767                         Max. download KB per day&lt;br /&gt;
32767                         Remaining KB today&lt;br /&gt;
0                             KB downloaded today&lt;br /&gt;
23:59                         Current time on BBS&lt;br /&gt;
01-01-91                      Current date on BBS&lt;br /&gt;
My BBS                        BBS network tag-line&lt;br /&gt;
0                             ?&lt;br /&gt;
&lt;br /&gt;
Some mail doors will offer the option of sending an abbreviated con-&lt;br /&gt;
ference list.  That means the list will contain only conferences the&lt;br /&gt;
user has selected.  This is done because some mail readers cannot&lt;br /&gt;
handle more than n conferences at this time.  Users using those read-&lt;br /&gt;
ers will need this option if the BBS they call have too many confer-&lt;br /&gt;
ences.&lt;br /&gt;
&lt;br /&gt;
[3.3]  Welcome file&lt;br /&gt;
&lt;br /&gt;
This file usually contains the log on screen from the BBS.  The exact&lt;br /&gt;
filename is specified in the CONTROL.DAT file, after the conference&lt;br /&gt;
list.  This file may be in any format the Sysop chooses it be -- usu-&lt;br /&gt;
ally either in plain ASCII or with ANSI screen control code.  Some&lt;br /&gt;
Sysops (notably PCBoard Sysops) may use BBS-specific color change code&lt;br /&gt;
in this file as well.  Current mail programs seem to handle the trans-&lt;br /&gt;
lations between BBS-specific code to ANSI based screen control codes.&lt;br /&gt;
&lt;br /&gt;
Even if the CONTROL.DAT file contains the filename of this file, it&lt;br /&gt;
may not actually exist in the mail packet.  Sometimes, users will&lt;br /&gt;
manually delete this file before entering the mail reader.  Some off-&lt;br /&gt;
line readers offer the option to not display this welcome screen; some&lt;br /&gt;
will display this file regardless.  Some doors, similarly, will offer&lt;br /&gt;
option to the user to not send this file.&lt;br /&gt;
&lt;br /&gt;
[3.4]  Goodbye file&lt;br /&gt;
&lt;br /&gt;
Similar to the welcome file above, the filename to the goodbye file is&lt;br /&gt;
in the CONTROL.DAT file.  This is the file the BBS displays when the&lt;br /&gt;
user logs off the board.  It is optional, as always, to send this file&lt;br /&gt;
or to display it.&lt;br /&gt;
&lt;br /&gt;
[3.5]  News file&lt;br /&gt;
&lt;br /&gt;
Many mail doors offer the option to send the news file from the BBS. &lt;br /&gt;
Most will only send this when it has been updated.  Like the welcome&lt;br /&gt;
and goodbye files, the filename to the news file is found in the CON-&lt;br /&gt;
TROL.DAT file.  It can be in any format the Sysop chooses, but usually&lt;br /&gt;
in either ASCII or ANSI.  Like the welcome screen, current mail facil-&lt;br /&gt;
ities seem to handle translation between BBS-specific control codes to&lt;br /&gt;
ANSI screen control codes.&lt;br /&gt;
&lt;br /&gt;
[3.6]  Qmail DeLuxeý menu file&lt;br /&gt;
&lt;br /&gt;
This file is of use only for Qmail DeLuxeý mail reader by Sparkware. &lt;br /&gt;
The filename is found on line 8 of the CONTROL.DAT file.&lt;br /&gt;
&lt;br /&gt;
[3.7]  New uploads listing (NEWFILES.DAT)&lt;br /&gt;
&lt;br /&gt;
Most mail programs on the BBS will offer the option to scan new files&lt;br /&gt;
uploaded to the BBS.  The result is found in a file named&lt;br /&gt;
NEWFILES.DAT.  The mail program, if implementing this, should update&lt;br /&gt;
the last file scan field in the user's profile, if there is such a&lt;br /&gt;
field, as well as other information required by the BBS.  The mail&lt;br /&gt;
program should, of course, scan new files only in those areas the user&lt;br /&gt;
is allowed access.&lt;br /&gt;
&lt;br /&gt;
[3.8]  Bulletin files (BLT-x.y)&lt;br /&gt;
&lt;br /&gt;
Most mail programs will also offer the option to include updated bulle-&lt;br /&gt;
tin files found on the BBS in the mail packet.  The bulletins are&lt;br /&gt;
named BLT-x.y, where x is the conference/echo the bulletin came from,&lt;br /&gt;
and y the bulletin's actual number.  The mail program will have to&lt;br /&gt;
take care of updating the last read date on the bulletins in the user&lt;br /&gt;
record.&lt;br /&gt;
&lt;br /&gt;
[3.9]  Message file (MESSAGES.DAT)&lt;br /&gt;
&lt;br /&gt;
The MESSAGES.DAT file is the most important.  This is where all of the&lt;br /&gt;
messages are contained in.  The QWK file format is based on PCBoard&lt;br /&gt;
12.0 message base format from Clark Development Corporation (maker of&lt;br /&gt;
PCBoard BBS software).&lt;br /&gt;
&lt;br /&gt;
The file has a logical record length of 128-bytes.  The first record&lt;br /&gt;
of MESSAGES.DAT always contain a copyright notice saying &amp;quot;Produced by&lt;br /&gt;
Qmail...Copyright (c) 1987 by Sparkware.  All Rights Reserved&amp;quot;.  The&lt;br /&gt;
rest of the record is space filled.  Actual messages consist of a 128-&lt;br /&gt;
bytes header, plus one or more 128-bytes block with the message text. &lt;br /&gt;
Actual messages start in record 2.  The header block is layed out as&lt;br /&gt;
follows:&lt;br /&gt;
&lt;br /&gt;
Offset  Length  Description&lt;br /&gt;
------  ------  ----------------------------------------------------   &lt;br /&gt;
    1       1   Message status flag (unsigned character)&lt;br /&gt;
                ' ' = public, unread&lt;br /&gt;
                '-' = public, read&lt;br /&gt;
                '+' = private, unread&lt;br /&gt;
                '*' = private, read&lt;br /&gt;
                '~' = comment to Sysop, unread&lt;br /&gt;
                '`' = comment to Sysop, read&lt;br /&gt;
                '%' = password protected, unread&lt;br /&gt;
                '^' = password protected, read&lt;br /&gt;
                '!' = group password, unread&lt;br /&gt;
                '#' = group password, read&lt;br /&gt;
                '$' = group password to all&lt;br /&gt;
    2       7   Message number (in ASCII)&lt;br /&gt;
    9       8   Date (mm-dd-yy, in ASCII)&lt;br /&gt;
   17       5   Time (24 hour hh:mm, in ASCII)&lt;br /&gt;
   22      25   To (uppercase, left justified)&lt;br /&gt;
   47      25   From (uppercase, left justified)&lt;br /&gt;
   72      25   Subject of message (mixed case)&lt;br /&gt;
   97      12   Password (space filled)&lt;br /&gt;
  109       8   Reference message number (in ASCII)&lt;br /&gt;
  117       6   Number of 128-bytes blocks in message (including the&lt;br /&gt;
                header, in ASCII; the lowest value should be 2, header&lt;br /&gt;
                plus one block message; this number may not be left&lt;br /&gt;
                flushed within the field)&lt;br /&gt;
  123       1   Flag (ASCII 225 means message is active; ASCII 226&lt;br /&gt;
                means this message is to be killed)&lt;br /&gt;
  124       2   Conference number (unsigned word)&lt;br /&gt;
  126       2   Logical message number in the current packet; i.e.&lt;br /&gt;
                this number will be 1 for the first message, 2 for the&lt;br /&gt;
                second, and so on. (unsigned word)&lt;br /&gt;
  128       1   Indicates whether the message has a network tag-line&lt;br /&gt;
                or not.  A value of '*' indicates that a network tag-&lt;br /&gt;
                line is present; a value of ' ' (space) indicates&lt;br /&gt;
                there isn't one.  Messages sent to readers (non-net-&lt;br /&gt;
                status) generally leave this as a space.  Only network&lt;br /&gt;
                softwares need this information.&lt;br /&gt;
&lt;br /&gt;
Fields such as To, From, Subject, Message #, Reference #, and the like&lt;br /&gt;
are space padded if they are shorter than the field's length.&lt;br /&gt;
&lt;br /&gt;
The message text starts in the next record.  You can find out how many&lt;br /&gt;
blocks make up one message by looking at the value of &amp;quot;Number of 128&lt;br /&gt;
byte blocks&amp;quot;.  Instead of carriage return and line feed combination,&lt;br /&gt;
each line in the message end with an ASCII 227 (pi character) symbol. &lt;br /&gt;
There are reports that some (buggy) readers have problems with messag-&lt;br /&gt;
es which do not end the last line in the message with an ASCII 227. &lt;br /&gt;
If a message does not completely occupy the 128-bytes block, the re-&lt;br /&gt;
mainder of the block is padded with space or null.&lt;br /&gt;
&lt;br /&gt;
Note that there seems to exist old doors which will use one byte to&lt;br /&gt;
represent the conference number and pad the other one with an ASCII 32&lt;br /&gt;
character.  The program reading this information will have to deter-&lt;br /&gt;
mine whether the ASCII 32 in byte 125 of the header is a filler or&lt;br /&gt;
part of the unsigned word.  One method is to look in the CONTROL.DAT&lt;br /&gt;
file to determine the highest conference number.&lt;br /&gt;
&lt;br /&gt;
Even though most mail programs will generate MESSAGES.DAT files that&lt;br /&gt;
appear in conference order, this is not always the case.  Tomcat!&lt;br /&gt;
(mail door for Wildcat! BBS) generates MESSAGES.DAT that is not in&lt;br /&gt;
conference order.  This is due to how Wildcat! itself stores mail on&lt;br /&gt;
the BBS.&lt;br /&gt;
&lt;br /&gt;
Note that some mail doors offer the option of sending a mail packet&lt;br /&gt;
even though there may be no messages to send -- thus an empty&lt;br /&gt;
MESSAGES.DAT file.  This was tested with Qmail 4.0 door and it sent a&lt;br /&gt;
MESSAGES.DAT file that contains a few empty 128-bytes blocks.  Other&lt;br /&gt;
mail doors seem to be able to produce QWK files without the MESSAG-&lt;br /&gt;
ES.DAT file at all!  Apparently, there was no standard established in&lt;br /&gt;
this procedure.&lt;br /&gt;
&lt;br /&gt;
[3.10]  Index files (*.NDX)&lt;br /&gt;
&lt;br /&gt;
[3.10.1]  Conference indices&lt;br /&gt;
&lt;br /&gt;
The index files contain a list of pointers pointing to the beginning&lt;br /&gt;
of messages in the MESSAGES.DAT file.  The pointer is in terms of the&lt;br /&gt;
128-bytes block logical record that the MESSAGES.DAT file is in.  Each&lt;br /&gt;
conference has its own xxx.NDX file, where xxx is the conference num-&lt;br /&gt;
ber left padded with zeroes.  Some mail programs offer the user the&lt;br /&gt;
option to not generate index files.  So the mail readers need to cre-&lt;br /&gt;
ate the index files if they are missing.&lt;br /&gt;
&lt;br /&gt;
EZ-Reader 1.xx versions will convert the NDX files from Microsoft MKS&lt;br /&gt;
format into IEEE long integer format.  The bad part about this is that&lt;br /&gt;
the user may store those index files back into the QWK file.  When&lt;br /&gt;
another reader reads the index files, it will be very confused!&lt;br /&gt;
&lt;br /&gt;
Special note for BBSes with more than 999 conferences: Index files for&lt;br /&gt;
conferences with four digit conference numbers is named xxxx.NDX,&lt;br /&gt;
where xxxx is the conference number (left padded with zeroes).  The&lt;br /&gt;
filenames for three digit conferences are still named xxx.NDX on these&lt;br /&gt;
boards.  I would assume filenames for conferences in the five digit&lt;br /&gt;
range is xxxxx.NDX, but I have not seen a BBS with 10,000 or more&lt;br /&gt;
conferences yet!&lt;br /&gt;
&lt;br /&gt;
Each NDX file uses a five bytes logical record length and is formatted&lt;br /&gt;
to:&lt;br /&gt;
&lt;br /&gt;
Offset  Length  Description&lt;br /&gt;
------  ------  ------------------------------------------------------&lt;br /&gt;
    1       4   Record number pointing to corresponding message in&lt;br /&gt;
                MESSAGES.DAT.  This number is in the Microsoft MKS$&lt;br /&gt;
                BASIC format.&lt;br /&gt;
    5       1   Conference number of the message.  This byte should&lt;br /&gt;
                not be used because it duplicates both the filename of&lt;br /&gt;
                the index file and the conference # in the header.  It&lt;br /&gt;
                is also one byte long, which is insufficient to handle&lt;br /&gt;
                conferences over 255.&lt;br /&gt;
&lt;br /&gt;
Please refer to appendix B for routines to deal with MKS numbers.&lt;br /&gt;
&lt;br /&gt;
[3.10.2]  Personal index (PERSONAL.NDX)&lt;br /&gt;
&lt;br /&gt;
There is a special index file named PERSONAL.NDX.  This file contains&lt;br /&gt;
pointers to messages which are addressed to the user, i.e. personal&lt;br /&gt;
messages.  Some mail door and utility programs also allow the selec-&lt;br /&gt;
tion of other messages to be flagged as personal messages.&lt;br /&gt;
&lt;br /&gt;
[3.11]  Pointer file&lt;br /&gt;
&lt;br /&gt;
Pointer file is generally included so that the user can reset the last&lt;br /&gt;
read pointers on the mail program, in case there is a crash on the BBS&lt;br /&gt;
or some other mishaps.  There should be little reason for the reader&lt;br /&gt;
program to access the pointer file.&lt;br /&gt;
&lt;br /&gt;
The pointer files I have seen are:&lt;br /&gt;
&lt;br /&gt;
Qmail          BBSID.PTR&lt;br /&gt;
MarkMail       BBSID.PNT&lt;br /&gt;
KMail          BBSID.PNT&lt;br /&gt;
SFMailQwk      BBSID.SFP&lt;br /&gt;
&lt;br /&gt;
Additions to this list are welcomed.&lt;br /&gt;
&lt;br /&gt;
[3.12]  SESSION.TXT&lt;br /&gt;
&lt;br /&gt;
This file, if included, will contain the message scanning screen the&lt;br /&gt;
user sees from the door.&lt;br /&gt;
&lt;br /&gt;
[4]  REP files&lt;br /&gt;
&lt;br /&gt;
[4.1]  Naming convention&lt;br /&gt;
&lt;br /&gt;
The reply file is named BBSID.MSG, where BBSID is the ID code for the&lt;br /&gt;
BBS found on line 5 of the CONTROL.DAT file.  Once this file has been&lt;br /&gt;
created, the mail reader can archive it up into a file with REP exten-&lt;br /&gt;
sion.&lt;br /&gt;
&lt;br /&gt;
[4.2]  Message file (BBSID.MSG)&lt;br /&gt;
&lt;br /&gt;
Replies use the same format as the MESSAGES.DAT file, except that&lt;br /&gt;
message number field will contain the conference number instead.  In&lt;br /&gt;
other words, the conference number will be placed in the two bytes&lt;br /&gt;
(binary) starting at offset 124, as well as the message number field&lt;br /&gt;
(ASCII) at offset 2.&lt;br /&gt;
&lt;br /&gt;
The first 128-bytes record of the file is the header.  Instead of the&lt;br /&gt;
copyright notice, it contains the BBSID of the BBS.  This 1-8 charac-&lt;br /&gt;
ter BBSID must start at the very first byte and must match what the&lt;br /&gt;
BBS has.  The rest of the record is space padded.  The replies start&lt;br /&gt;
at record 2.  Each reply message will have a 128-bytes header, plus&lt;br /&gt;
one or more for the message text; followed by another header, and so&lt;br /&gt;
on.&lt;br /&gt;
&lt;br /&gt;
The mail program must check to make sure the BBSID in the first block&lt;br /&gt;
of the BBSID.MSG file matches what the BBS has!&lt;br /&gt;
&lt;br /&gt;
[4.3]  Door control messages&lt;br /&gt;
&lt;br /&gt;
These messages allow the user to change their setup on the BBS by&lt;br /&gt;
simply entering a message.  The goal is to allow the user to be able&lt;br /&gt;
to control most areas of the BBS via the mail door.  Different mail&lt;br /&gt;
doors have different capabilities.  Most all of them offer the ability&lt;br /&gt;
to add and drop a conference, as well as reset the last read pointers&lt;br /&gt;
in a conference.&lt;br /&gt;
&lt;br /&gt;
[4.3.1]  DOOR.ID file&lt;br /&gt;
&lt;br /&gt;
The DOOR.ID file was first introduced by Greg Hewgill with Tomcat!&lt;br /&gt;
mail door and SLMR mail reader.  Since then, many other authors have&lt;br /&gt;
picked up this idea and use the format.  This file provides the neces-&lt;br /&gt;
sary identifiers a reader needs to send add, drop, etc. messages to&lt;br /&gt;
the mail door.  It tells the reader who to address the message to and&lt;br /&gt;
what can be put in the subject line.&lt;br /&gt;
&lt;br /&gt;
DOOR = &amp;lt;doorname&amp;gt;             This is the name of the door that creat-&lt;br /&gt;
                              ed the QWK packet, i.e. &amp;lt;doorname&amp;gt; =&lt;br /&gt;
                              Tomcat.&lt;br /&gt;
VERSION = &amp;lt;doorversion&amp;gt;       This is the version number of the door&lt;br /&gt;
                              that created the packet, i.e.&lt;br /&gt;
                              &amp;lt;doorversion&amp;gt; = 2.9.&lt;br /&gt;
SYSTEM = &amp;lt;systemtype&amp;gt;         This is the underlying BBS system type&lt;br /&gt;
                              and version, i.e. &amp;lt;systemtype&amp;gt; = Wildcat&lt;br /&gt;
                              2.55.&lt;br /&gt;
CONTROLNAME = &amp;lt;controlname&amp;gt;   This is the name to which the reader&lt;br /&gt;
                              should send control messages, eg.&lt;br /&gt;
                              &amp;lt;controlname&amp;gt; = TOMCAT.&lt;br /&gt;
CONTROLTYPE = &amp;lt;controltype&amp;gt;   This can be one of ADD, DROP, REQUEST,&lt;br /&gt;
                              or others.  ADD and DROP are pretty&lt;br /&gt;
                              obvious (they work as in MarkMail), and&lt;br /&gt;
                              REQUEST is for use with BBS systems that&lt;br /&gt;
                              support file attachments.  Try out SLMR&lt;br /&gt;
                              with CONTROLTYPE = REQUEST and use the Q&lt;br /&gt;
                              function.  (This seems to be a Wildcat!&lt;br /&gt;
                              BBS feature.)&lt;br /&gt;
RECEIPT                       This flag indicates that the door/BBS is&lt;br /&gt;
                              capable of return receipts when a mes-&lt;br /&gt;
                              sage is received.  If the first three&lt;br /&gt;
                              letters of the subject are RRR, then the&lt;br /&gt;
                              door should strip the RRR and set the&lt;br /&gt;
                              'return-receipt-requested' flag on the&lt;br /&gt;
                              corresponding message.&lt;br /&gt;
MIXEDCASE = YES               If this line is found then the reader&lt;br /&gt;
                              will let you use upper and lower case&lt;br /&gt;
                              names and subjects.  This is first found&lt;br /&gt;
                              in Qmail DeLuxeý 1.25 version.  Most&lt;br /&gt;
                              other QWK readers permit the use of&lt;br /&gt;
                              mixed case subject lines but force the&lt;br /&gt;
                              names to upper case only.&lt;br /&gt;
FIDOTAG = YES                 If this line is found then the reader&lt;br /&gt;
                              will automatically use FidoNet compliant&lt;br /&gt;
                              tag-lines.&lt;br /&gt;
&lt;br /&gt;
None of the lines are actually required and they may appear in any&lt;br /&gt;
order.  Of course, you would need a CONTROLNAME if you have any&lt;br /&gt;
CONTROLTYPE lines.&lt;br /&gt;
&lt;br /&gt;
[4.3.2]  Qmail&lt;br /&gt;
&lt;br /&gt;
Send a message addressed to &amp;quot;QMAIL&amp;quot; with a subject of &amp;quot;CONFIG&amp;quot;.  Then,&lt;br /&gt;
enter any of the commands listed below inside the text of your mes-&lt;br /&gt;
sage.  Remember to use one command per line.&lt;br /&gt;
&lt;br /&gt;
ADD &amp;lt;confnum&amp;gt;            Add a conference into the Qmail Door scanning&lt;br /&gt;
                         list.  &amp;quot;YOURS&amp;quot; can also be added to the com-&lt;br /&gt;
                         mand if the user wishes to receive messages&lt;br /&gt;
                         only addressed them.  i.e. &amp;quot;ADD 1 YOURS&amp;quot;&lt;br /&gt;
DROP &amp;lt;confnum&amp;gt;           Drop a conference from the Qmail Door scan-&lt;br /&gt;
                         ning list.&lt;br /&gt;
RESET &amp;lt;confnum&amp;gt; &amp;lt;value&amp;gt;  Resets a conference to a particular value.&lt;br /&gt;
                         The user can use &amp;quot;HIGH-xxx&amp;quot; to set the confer-&lt;br /&gt;
                         ence to the highest message in the base.&lt;br /&gt;
CITY &amp;lt;value&amp;gt;             Changes the &amp;quot;city&amp;quot; field in the user's&lt;br /&gt;
                         PCBoard entry.&lt;br /&gt;
PASSWORD &amp;lt;value&amp;gt;         Changes the user's login password.&lt;br /&gt;
BPHONE &amp;lt;value&amp;gt;           Business/data phone number&lt;br /&gt;
HPHONE &amp;lt;value&amp;gt;           Home/voice phone number&lt;br /&gt;
PCBEXPERT &amp;lt;on|off&amp;gt;       Turns the PCBoard expert mode ON or OFF.&lt;br /&gt;
PCBPROT &amp;lt;value&amp;gt;          PCBoard file transfer protocol (A-Z).&lt;br /&gt;
PAGELEN &amp;lt;value&amp;gt;          Set page length inside PCBoard.&lt;br /&gt;
PCBCOMMENT &amp;lt;value&amp;gt;       Set user maintained comment.&lt;br /&gt;
AUTOSTART &amp;lt;value&amp;gt;        Qmail Door autostart command.&lt;br /&gt;
PROTOCOL &amp;lt;value&amp;gt;         Qmail Door file transfer protocol (A-Z).&lt;br /&gt;
EXPERT &amp;lt;ON or OFF&amp;gt;       Turns the Qmail Door expert mode ON or OFF.&lt;br /&gt;
MAXSIZE &amp;lt;value&amp;gt;          Maximum size of the user's .QWK packet (in&lt;br /&gt;
                         bytes)&lt;br /&gt;
MAXNUMBER &amp;lt;value&amp;gt;        Maximum number of messages per conference.&lt;br /&gt;
&lt;br /&gt;
[4.3.3]  MarkMail&lt;br /&gt;
&lt;br /&gt;
Send a message addressed to &amp;quot;MARKMAIL&amp;quot; with the subject line saying:&lt;br /&gt;
&lt;br /&gt;
ADD [value]         in the conference you want to add&lt;br /&gt;
DROP                in the conference you want to drop&lt;br /&gt;
YOUR [value]        in the conference you want only your mail sent&lt;br /&gt;
YA [value]          in the conference you want only your mail + mail&lt;br /&gt;
                    addressed to &amp;quot;ALL&amp;quot;&lt;br /&gt;
FILES ON or OFF     in any conference to tell MarkMail whether to scan&lt;br /&gt;
                    for new files or not.&lt;br /&gt;
BLTS ON or OFF      to turn on and off, respectively, of receiving&lt;br /&gt;
                    bulletins.&lt;br /&gt;
OWN ON or OFF       to turn on and off, respectively, of receiving&lt;br /&gt;
                    messages you sent&lt;br /&gt;
DELUXE ON or OFF    to turn on and off, respectively, of receiving&lt;br /&gt;
                    DeLuxe menu&lt;br /&gt;
LIMIT &amp;lt;size&amp;gt;        to set the maximum size of MESSAGES.DAT file can&lt;br /&gt;
                    be, it cannot exceed what the Sysop has set up&lt;br /&gt;
&lt;br /&gt;
An optional number can be added onto the commands &amp;quot;ADD&amp;quot;, &amp;quot;YOUR&amp;quot;, and&lt;br /&gt;
&amp;quot;YA&amp;quot;.  If this number is positive, then it will be treated as an abso-&lt;br /&gt;
lute message number.  MarkMail will set your last read pointer to that&lt;br /&gt;
number.  If it is negative, MarkMail will set your last read pointer&lt;br /&gt;
to the highest minus that number.  For example: &amp;quot;ADD -50&amp;quot; will add the&lt;br /&gt;
conference and set the last read pointer to the highest in the confer-&lt;br /&gt;
ence minus 50.&lt;br /&gt;
&lt;br /&gt;
[4.3.4]  KMail&lt;br /&gt;
&lt;br /&gt;
Send a private message addressed to &amp;quot;KMAIL&amp;quot; in the conference that you&lt;br /&gt;
want to add, drop, or reset.  The commands are &amp;quot;ADD&amp;quot;, &amp;quot;DROP&amp;quot;, and&lt;br /&gt;
&amp;quot;RESET #&amp;quot;, respectively.  The &amp;quot;#&amp;quot; is the message number you want your&lt;br /&gt;
last read pointer in the conference be set to.&lt;br /&gt;
&lt;br /&gt;
[4.3.5]  RoseMail&lt;br /&gt;
&lt;br /&gt;
The RoseMail door allows configuration information be placed in either&lt;br /&gt;
the subject line or message text.  The message must be addressed to&lt;br /&gt;
&amp;quot;ROSEMAIL&amp;quot;.  For only one command, it can be placed in the subject&lt;br /&gt;
line.  For more than one changes, the subject line must say &amp;quot;CONFIG&amp;quot;&lt;br /&gt;
and each change be placed in the message text.  Every line should be&lt;br /&gt;
left justified.  Valid commands are:&lt;br /&gt;
&lt;br /&gt;
Command                                           Example&lt;br /&gt;
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ&lt;br /&gt;
ADD &amp;lt;Conference&amp;gt; [&amp;lt;Message #&amp;gt;] [&amp;lt;Yours&amp;gt;]          ADD 2 -3 Y&lt;br /&gt;
DROP &amp;lt;Conference&amp;gt;                                 DROP 2&lt;br /&gt;
RESET &amp;lt;Conference&amp;gt; &amp;lt;Message #&amp;gt;                    RESET 12 5000&lt;br /&gt;
PCBEXPERT &amp;lt;ON | OFF&amp;gt; - PCBoard expert mode        PCBEXPERT ON&lt;br /&gt;
EXPERT &amp;lt;ON | OFF&amp;gt;    - RoseMail expert mode       EXPERT OFF&lt;br /&gt;
PCBPROT &amp;lt;A - Z&amp;gt;      - PCBoard protocol           PCBPROT Z&lt;br /&gt;
PROT &amp;lt;A - Z&amp;gt;         - RoseMail protocol          PROT G&lt;br /&gt;
PAGELEN &amp;lt;Number&amp;gt;     - Page length                PAGELEN 20&lt;br /&gt;
MAXSIZE &amp;lt;Kbytes&amp;gt;     - Max packet size in Kb      MAXSIZE 100&lt;br /&gt;
MAXNUMBER &amp;lt;max msgs/conference&amp;gt;                   MAXNUMBER 100&lt;br /&gt;
JUMPSTART &amp;lt;Sequence or OFF&amp;gt;                       JUMPSTART D;Y;Q&lt;br /&gt;
MAXPACKET &amp;lt;max msgs/packet&amp;gt;                       MAXPACKET 500&lt;br /&gt;
AUTOSTART &amp;lt;Sequence or OFF&amp;gt; - same as jumpstart   AUTOSTART OFF&lt;br /&gt;
OPT &amp;lt;##&amp;gt; &amp;lt;ON | OFF&amp;gt;  - set door option            OPT 2 OFF&lt;br /&gt;
&lt;br /&gt;
[4.3.6]  Complete Mail Door&lt;br /&gt;
&lt;br /&gt;
Send message to &amp;quot;CMPMAIL&amp;quot;, the commands are &amp;quot;ADD&amp;quot; and &amp;quot;DROP&amp;quot;.  This&lt;br /&gt;
message must be sent in the conference that you want to add or drop.&lt;br /&gt;
&lt;br /&gt;
[4.4]  Turning off the echo flag&lt;br /&gt;
&lt;br /&gt;
In order to send a non-echoed message (not send out to other BBSes), a&lt;br /&gt;
user can enter &amp;quot;NE:&amp;quot; in front of the subject line.  The mail program&lt;br /&gt;
will strip this &amp;quot;NE:&amp;quot; and turn off the echo flag.  This feature may&lt;br /&gt;
not be offered in all mail doors.&lt;br /&gt;
&lt;br /&gt;
[4.5]  Tag-lines&lt;br /&gt;
&lt;br /&gt;
The most common format for a reader tag-line is:&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
 þ My reader v1.00 þ The rest of the tag-line.&lt;br /&gt;
&lt;br /&gt;
The three dashes is called a tear-line.  The tag-line is appended to&lt;br /&gt;
the end of the message and is usually one line only.  It is preferred&lt;br /&gt;
that tag-lines conform to this format so that networking softwares&lt;br /&gt;
such as QNet and RNet will not add another tearline to the message&lt;br /&gt;
when they process it.&lt;br /&gt;
&lt;br /&gt;
Softwares on FidoNet does not like mail readers adding a tear-line of&lt;br /&gt;
their own, so if your mail reader offers a FidoNet mode, you will need&lt;br /&gt;
to get rid of the tear-line.  Another item which differs between the&lt;br /&gt;
FidoNet and PC-based networks is that FidoNet does not like extended&lt;br /&gt;
ASCII characters.  So your reader may want to strip high ASCII if the&lt;br /&gt;
user has FidoNet mode on.  Acceptable tag-line style, I believe, is&lt;br /&gt;
just this:&lt;br /&gt;
&lt;br /&gt;
 * My Reader v1.00 * The rest of the tag-line.&lt;br /&gt;
&lt;br /&gt;
[5]  Net mail&lt;br /&gt;
&lt;br /&gt;
I do not have complete information of net-mail implementation using&lt;br /&gt;
QWK-format.  Someone please fill me in the details.&lt;br /&gt;
&lt;br /&gt;
                     -=-=-=-=-=-=-&amp;lt;&amp;gt;-=-=-=-=-=-=-&lt;br /&gt;
&lt;br /&gt;
[A]  Credits and Contributions&lt;br /&gt;
&lt;br /&gt;
Mark &amp;quot;Sparky&amp;quot; Herring, who originated the QWK-format.&lt;br /&gt;
&lt;br /&gt;
Tim Farley, who started this documentation back in the summer of 1990. &lt;br /&gt;
The general outline here is the work of Tim.  I filled in the blanks.&lt;br /&gt;
&lt;br /&gt;
Jeffery Foy, who gave us the format for Microsoft single binary versus&lt;br /&gt;
IEEE format.&lt;br /&gt;
&lt;br /&gt;
Greg Hewgill, who (if I remember correctly) wrote the Turbo Pascal&lt;br /&gt;
routines (included in here) to convert between MKS and TP LongInt.&lt;br /&gt;
&lt;br /&gt;
Dennis McCunney, who is the host of the Off-line conference on RIME,&lt;br /&gt;
is very knowledgeable in off-line reading concept and programs.  His&lt;br /&gt;
goal is to have one reader that can read mail packet from any source.&lt;br /&gt;
&lt;br /&gt;
All those who have been around the Off-line conferences on ILink (the&lt;br /&gt;
oldest of the three I participate), RIME, and Intelec, who have provid-&lt;br /&gt;
ed great help over the past two years.  The bulk of the information&lt;br /&gt;
presented here are from messages in those conferences.  These people&lt;br /&gt;
include, but are no limited to, the followings: Dane Beko, Joseph&lt;br /&gt;
Carnage, Marcos Della, Joey Lizzi, Mark May, and Jim Smith.&lt;br /&gt;
&lt;br /&gt;
[B]  Sample Turbo Pascal and C code&lt;br /&gt;
&lt;br /&gt;
Here are a few routines in Turbo Pascal and C to convert Microsoft&lt;br /&gt;
BASIC MKS format to usable IEEE long integer.  These are collected&lt;br /&gt;
over the networks and there is no guarantee that they will work for&lt;br /&gt;
you!&lt;br /&gt;
&lt;br /&gt;
Turbo Pascal (Greg Hewgill ?):&lt;br /&gt;
&lt;br /&gt;
type&lt;br /&gt;
     bsingle = array [0..3] of byte;&lt;br /&gt;
&lt;br /&gt;
{ converts TP real to Microsoft 4 bytes single }&lt;br /&gt;
&lt;br /&gt;
procedure real_to_msb (preal : real; var b : bsingle);&lt;br /&gt;
var&lt;br /&gt;
     r : array [0 .. 5] of byte absolute preal;&lt;br /&gt;
begin&lt;br /&gt;
     b [3] := r [0];&lt;br /&gt;
     move (r [3], b [0], 3);&lt;br /&gt;
end; { procedure real_to_msb }&lt;br /&gt;
&lt;br /&gt;
{ converts Microsoft 4 bytes single to TP real }&lt;br /&gt;
&lt;br /&gt;
function msb_to_real (b : bsingle) : real;&lt;br /&gt;
var&lt;br /&gt;
     preal : real;&lt;br /&gt;
     r : array [0..5] of byte absolute preal;&lt;br /&gt;
begin&lt;br /&gt;
     r [0] := b [3];&lt;br /&gt;
     r [1] := 0;&lt;br /&gt;
     r [2] := 0;&lt;br /&gt;
     move (b [0], r [3], 3);&lt;br /&gt;
     msb_to_real := preal;&lt;br /&gt;
end; { procedure msb_to_real }&lt;br /&gt;
&lt;br /&gt;
Another Turbo Pascal routine to convert Microsoft single to TP LongInt&lt;br /&gt;
(Marcos Della):&lt;br /&gt;
&lt;br /&gt;
index := ((mssingle and not $ff000000) or $00800000) shr (24 -&lt;br /&gt;
((mssingle shr 24) and $7f)) - 1;&lt;br /&gt;
&lt;br /&gt;
C (identify yourself if you originated this routine):&lt;br /&gt;
&lt;br /&gt;
/* converts 4 bytes Microsoft MKS format to long integer */&lt;br /&gt;
&lt;br /&gt;
unsigned long mbf_to_int (m1, m2, m3, exp)&lt;br /&gt;
unsigned int m1, m2, m3, exp;&lt;br /&gt;
{&lt;br /&gt;
     return (((m1 + ((unsigned long) m2 &amp;lt;&amp;lt; 8) + ((unsigned long) m3 &amp;lt;&amp;lt;&lt;br /&gt;
     16)) | 0x800000L) &amp;gt;&amp;gt; (24 - (exp - 0x80)));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Microsoft binary (by Jeffery Foy):&lt;br /&gt;
&lt;br /&gt;
   31 - 24    23     22 - 0        &amp;lt;-- bit position&lt;br /&gt;
+-----------------+----------+&lt;br /&gt;
| exponent | sign | mantissa |&lt;br /&gt;
+----------+------+----------+&lt;br /&gt;
&lt;br /&gt;
IEEE (C/Pascal/etc.):&lt;br /&gt;
&lt;br /&gt;
   31     30 - 23    22 - 0        &amp;lt;-- bit position&lt;br /&gt;
+----------------------------+&lt;br /&gt;
| sign | exponent | mantissa |&lt;br /&gt;
+------+----------+----------+&lt;br /&gt;
&lt;br /&gt;
In both cases, the sign is one bit, the exponent is 8 bits, and the&lt;br /&gt;
mantissa is 23 bits.  You can write your own, optimized, routine to&lt;br /&gt;
convert between the two formats using the above bit layout.&lt;br /&gt;
&lt;br /&gt;
[C]  Sample message&lt;br /&gt;
&lt;br /&gt;
Here is a sample message in hex and ASCII format:&lt;br /&gt;
&lt;br /&gt;
019780  20 34 32 33 32 20 20 20 30 32 2D 31 35 2D 39 32   4232   02-15-92&lt;br /&gt;
019790  31 33 3A 34 35 52 49 43 48 41 52 44 20 42 4C 41  13:45RICHARD BLA&lt;br /&gt;
0197A0  43 4B 42 55 52 4E 20 20 20 20 20 20 20 20 53 54  CKBURN        ST&lt;br /&gt;
0197B0  45 56 45 20 43 4F 4C 45 54 54 49 20 20 20 20 20  EVE COLETTI     &lt;br /&gt;
0197C0  20 20 20 20 20 20 20 51 45 44 49 54 20 48 41 43         QEDIT HAC&lt;br /&gt;
0197D0  4B 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  K               &lt;br /&gt;
0197E0  20 20 20 20 20 20 20 20 20 20 20 20 34 30 33 36              4036&lt;br /&gt;
0197F0  20 20 20 20 37 20 20 20 20 20 E1 0A 01 00 00 20      7     á&lt;br /&gt;
019800  2A 20 49 6E 20 61 20 6D 65 73 73 61 67 65 20 64  * In a message d&lt;br /&gt;
019810  61 74 65 64 20 30 32 2D 30 39 2D 39 32 20 74 6F  ated 02-09-92 to&lt;br /&gt;
019820  20 53 74 65 76 65 20 43 6F 6C 65 74 74 69 2C 20   Steve Coletti, &lt;br /&gt;
019830  52 69 63 68 61 72 64 20 42 6C 61 63 6B 62 75 72  Richard Blackbur&lt;br /&gt;
019840  6E 20 73 61 69 64 3A E3 E3 52 42 3E 53 43 20 AF  n said:ããRB&amp;gt;SC ¯&lt;br /&gt;
019850  20 65 64 69 74 6F 72 20 69 6E 20 74 68 65 20 28   editor in the (&lt;br /&gt;
019860  6D 61 69 6E 66 72 61 6D 65 29 20 56 4D 2F 43 4D  mainframe) VM/CM&lt;br /&gt;
019870  53 20 70 72 6F 64 75 63 74 20 6C 69 6E 65 20 69  S product line i&lt;br /&gt;
[ etc. ]&lt;br /&gt;
019A00  6E 6F 74 20 61 20 44 6F 63 74 6F 72 2C 20 62 75  not a Doctor, bu&lt;br /&gt;
019A10  74 20 49 20 70 6C 61 79 20 6F 6E 65 20 61 74 20  t I play one at &lt;br /&gt;
019A20  74 68 65 20 48 6F 73 70 69 74 61 6C 2E E3 20 20  the Hospital.ã  &lt;br /&gt;
019A30  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  &lt;br /&gt;
019A40  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  &lt;br /&gt;
019A50  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  &lt;br /&gt;
019A60  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  &lt;br /&gt;
019A70  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  &lt;br /&gt;
019A80  E3 50 43 52 65 6C 61 79 3A 4D 4F 4F 4E 44 4F 47  ãPCRelay:MOONDOG&lt;br /&gt;
019A90  20 2D 3E 20 23 33 35 20 52 65 6C 61 79 4E 65 74   -&amp;gt; #35 RelayNet&lt;br /&gt;
019AA0  20 28 74 6D 29 E3 34 2E 31 30 20 20 20 20 20 20   (tm)ã4.10      &lt;br /&gt;
019AB0  20 20 20 20 20 20 20 20 20 48 55 42 4D 4F 4F 4E           HUBMOON&lt;br /&gt;
019AC0  2D 4D 6F 6F 6E 44 6F 67 20 42 42 53 2C 20 42 72  -MoonDog BBS, Br&lt;br /&gt;
019AD0  6F 6F 6B 6C 79 6E 2C 4E 59 20 37 31 38 20 36 39  ooklyn,NY 718 69&lt;br /&gt;
019AE0  32 2D 32 34 39 38 E3 20 20 20 20 20 20 20 20 20  2-2498ã         &lt;br /&gt;
019AF0  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  &lt;br /&gt;
&lt;br /&gt;
[D]  Sample index file&lt;br /&gt;
&lt;br /&gt;
Here is a sample index file in hex format:&lt;br /&gt;
&lt;br /&gt;
000000  00 00 28 87 19 00 00 30 87 19 00 00 38 87 19 00&lt;br /&gt;
000010  00 7E 87 19 00 00 07 88 19 00 00 0B 88 19 00 00&lt;br /&gt;
000020  0F 88 19 00 00 14 88 19 00 00 19 88 19 00 00 1E&lt;br /&gt;
000030  88 19 00 00 22 88 19 00 00 27 88 19 00 00 2C 88&lt;br /&gt;
000040  19 00 00 31 88 19 00 00 3B 88 19 00 00 40 88 19&lt;br /&gt;
000050  00 00 46 88 19 00 00 49 88 19 00 00 4D 88 19 00&lt;br /&gt;
000060  00 52 88 19 00 00 55 88 19 00 00 59 88 19 00 00&lt;br /&gt;
000070  60 88 19 00 00 66 88 19 00 00 70 88 19&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Geneb</name></author>	</entry>

	<entry>
		<id>http://fileformats.archiveteam.org/wiki/DWC</id>
		<title>DWC</title>
		<link rel="alternate" type="text/html" href="http://fileformats.archiveteam.org/wiki/DWC"/>
				<updated>2012-10-28T23:16:36Z</updated>
		
		<summary type="html">&lt;p&gt;Geneb: Created page with &amp;quot;{| |File Formats | &amp;gt; |Electronic File Formats | &amp;gt; |Compression | &amp;gt; |DWC |}  (From the Introduction in the DWC documentation)  DWC is an archive utility patterned a...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|&lt;br /&gt;
|[[File Formats]]&lt;br /&gt;
| &amp;gt;&lt;br /&gt;
|[[Electronic File Formats]]&lt;br /&gt;
| &amp;gt;&lt;br /&gt;
|[[Compression]]&lt;br /&gt;
| &amp;gt;&lt;br /&gt;
|DWC&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(From the Introduction in the DWC documentation)&lt;br /&gt;
&lt;br /&gt;
DWC is an archive utility patterned after ARC, (C) Copyright System&lt;br /&gt;
Enhancement Assoc., that has many improvements and added features.  Please&lt;br /&gt;
note, however, that DWC is Not file compatible with ARC and cannot be used&lt;br /&gt;
to add or extract ARC files.&lt;br /&gt;
&lt;br /&gt;
Basic improvements include compression speed and size, and error&lt;br /&gt;
handling.  Also, DWC includes all of ARC's commands and options (except&lt;br /&gt;
the run command) and adds many new ones along with small improvements&lt;br /&gt;
over the old ones.  These are detailed below.&lt;br /&gt;
&lt;br /&gt;
DWC attempts to emulate ARC's interface and functionality so Users&lt;br /&gt;
do not need to learn a new style.  New features are added as a super-set&lt;br /&gt;
to ARC's features.&lt;br /&gt;
&lt;br /&gt;
DWC was created by Dean W. Cooper in 1986 as a higher performance alternative to the ARC (both ARC &amp;amp; PKARC) and ZOO file archiving tools.  The file COMPARE.DOC in the reference linked below shows comparisons for both compression and time improvements over DWCs erstwhile competitors.&lt;br /&gt;
&lt;br /&gt;
In 1988 the source code for the compressor/decompressor was sold to a company called DS Technologies.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Identifiers ==&lt;br /&gt;
* File extension: '''.DWC'''&lt;br /&gt;
* MIME type (Internet media type): Has no specific registered type; generic binary '''application/octet-stream''' is generally used, or perhaps unregistered custom types with an '''x-''' prefix&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* An [http://cd.textfiles.com/nightowl/nopv06/028A/DWC_A501.ZIP DWC utility] at CD.Textfiles.com&lt;/div&gt;</summary>
		<author><name>Geneb</name></author>	</entry>

	<entry>
		<id>http://fileformats.archiveteam.org/wiki/Archiving</id>
		<title>Archiving</title>
		<link rel="alternate" type="text/html" href="http://fileformats.archiveteam.org/wiki/Archiving"/>
				<updated>2012-10-28T23:04:35Z</updated>
		
		<summary type="html">&lt;p&gt;Geneb: /* Compression + archiving */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|&lt;br /&gt;
|[[File Formats]]&lt;br /&gt;
| &amp;gt;&lt;br /&gt;
|[[Electronic File Formats]]&lt;br /&gt;
| &amp;gt;&lt;br /&gt;
|Compression&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(Lossless, for generic data + file archives)&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
== Compression + archiving ==&lt;br /&gt;
(Multiple files =&amp;gt; 1 file, makes it smaller)&lt;br /&gt;
&lt;br /&gt;
* [[7ZIP]] (.7z)&lt;br /&gt;
* [[ARC]] (.arc)&lt;br /&gt;
* [[Apple Disk Image]] (.dmg)&lt;br /&gt;
* [[ARJ]] (.arj)&lt;br /&gt;
* [[DWC]] (.dwc)&lt;br /&gt;
* [[IMP]] (.imp)&lt;br /&gt;
* [[LHAv]] (.lzh, .lha)&lt;br /&gt;
* [[RAR]] (.rar)&lt;br /&gt;
* [[ZIP]] (.zip)&lt;br /&gt;
&lt;br /&gt;
== Archiving only ==&lt;br /&gt;
(many files =&amp;gt; 1 file, no compression attempted)&lt;br /&gt;
&lt;br /&gt;
* [[BinHex]] (.hqx)&lt;br /&gt;
* [[LBR]] (.lbr)&lt;br /&gt;
* [[ISO-9660]] (.iso)&lt;br /&gt;
* [[Tape Archive]] (.tar)&lt;br /&gt;
&lt;br /&gt;
== Compression only ==&lt;br /&gt;
(1 file =&amp;gt; 1 file, makes it smaller)&lt;br /&gt;
&lt;br /&gt;
* [[BZIP2]] (.bz2)&lt;br /&gt;
* [[Crunch]] (.?Z?)&lt;br /&gt;
* [[GZIP]] (.gz)&lt;br /&gt;
* [[Error Code Modeler]] (.ecm)&lt;br /&gt;
* [[Squeeze/SQ]] (.?Q?)&lt;br /&gt;
&lt;br /&gt;
== Unknown ==&lt;br /&gt;
&lt;br /&gt;
* [[7zX]] (.s7z)&lt;br /&gt;
* [[ACE]] (.ace)&lt;br /&gt;
* [[AFA]] (.afa)&lt;br /&gt;
* [[ALZip]] (.alz)&lt;br /&gt;
* [[APX]] (.apx)&lt;br /&gt;
* [[BlakHole]] (.bh)&lt;br /&gt;
* [[Cabinet]] (.cab)&lt;br /&gt;
* [[Compact File Set]] (.cfs)&lt;br /&gt;
* [[Compact Pro]] (.cpt)&lt;br /&gt;
* [[CPIO]] (.cpio)&lt;br /&gt;
* [[DGCA]] (.dgc)&lt;br /&gt;
* [[Disk Archiver]] (.dar)&lt;br /&gt;
* [[DiskDoubler]] (.dd)&lt;br /&gt;
* [[DVDisaster Error Correction File]] (.ecc)&lt;br /&gt;
* [[Freeze/Melt]] (.F)&lt;br /&gt;
* [[GCA]] (.gca)&lt;br /&gt;
* [[HA]] (.ha)&lt;br /&gt;
* [[Huffman Encoding]] (.z)&lt;br /&gt;
* [[ICE]] (.ice)&lt;br /&gt;
* [[Inflate]] (.infl)&lt;br /&gt;
* [[Jar]] (.j) =&amp;gt; this is just a renamed zip file with some mandatory files&lt;br /&gt;
* [[KGB Archiver]] (.kgb)&lt;br /&gt;
* [[KiriKiri]] (.xp3)&lt;br /&gt;
* [[LZIP]] (.lz)&lt;br /&gt;
* [[LZMA]] (.lzma)&lt;br /&gt;
* [[LZOP]] (.lzop)&lt;br /&gt;
* [[LZW]] (.Z)&lt;br /&gt;
* [[LZX]] (.lzx)&lt;br /&gt;
* [[Mozilla Archive]] (.mar)&lt;br /&gt;
* [[MS-DOS Compression]] (.??_)&lt;br /&gt;
* [[PackIt]] (.pit)&lt;br /&gt;
* [[PAK]] (.pak)&lt;br /&gt;
* [[PAQ]] (.paq6, .paq7, .paq8)&lt;br /&gt;
* [[Parchive File]] (.par, .par2)&lt;br /&gt;
* [[PartImage]] (.partimg)&lt;br /&gt;
* [[PeaZip]] (.pea)&lt;br /&gt;
* [[PerfectCompress]] (.uca)&lt;br /&gt;
* [[PIM]] (.pim)&lt;br /&gt;
* [[Quadruple D]] (.qda)&lt;br /&gt;
* [[RK]] (.rk)&lt;br /&gt;
* [[RZIP]] (.rzip)&lt;br /&gt;
* [[SCIFER]] (.ba)&lt;br /&gt;
* [[Scifer]] (.sen)&lt;br /&gt;
* [[Self Dissolving ARChive]] (.sda)&lt;br /&gt;
* [[Self-Extracting Archive]] (.sea)&lt;br /&gt;
* [[Self-Extracting Archive]] (.sfx)&lt;br /&gt;
* [[sfArk]] (.sfark)&lt;br /&gt;
* [[Shell Archive]] (.shar)&lt;br /&gt;
* [[SQX]] (.sqx)&lt;br /&gt;
* [[Stuffit]] (.sit)&lt;br /&gt;
* [[Stuffit X]] (.sitx)&lt;br /&gt;
* [[UHarc]] (.uha)&lt;br /&gt;
* [[UltraCompressor II]] (.uc, .uc0, .uc2, .ucn, .ur2, .ue2)&lt;br /&gt;
* [[Unix Archiver]] (.ar)&lt;br /&gt;
* [[Windows Image]] (.wim)&lt;br /&gt;
* [[WinHKI]] (.hki)&lt;br /&gt;
* [[WinRK]] (.rk)&lt;br /&gt;
* [[XAR]] (.xar)&lt;br /&gt;
* [[XZ]] (.xz)&lt;br /&gt;
* [[YZ1]] (.yz1)&lt;br /&gt;
* [[ZOO]] (.zoo)&lt;br /&gt;
* [[Zzip]] (.zz)&lt;/div&gt;</summary>
		<author><name>Geneb</name></author>	</entry>

	</feed>