Dec 142017
BGFax v1.36 - Fax Receive /Transmit Program (Front or Rear end operations on BBS's, etc.

Full Description of File

BGFAX 1.35 [25-Sep-94] - A non-TSR S/R fax
program for people with Class 1, 2, 2.0, &
ZyXEL fax modems. Can answer the phone by
itself or let a Fido Mailer or BBS pass
the fax call to it. Can also SEND faxes
from the command line. Includes viewing,
FAX->PCX, ASCII->FAX, PCX->FAX utilties.
FTP from FTP.CSN.NET in the "Computech"
or FREQ 'magic' BGFAX from Fido 1:106/400.

File BGFAX136.ZIP from The Programmer’s Corner in
Category BBS Files
BGFax v1.36 – Fax Receive /Transmit Program (Front or Rear end operations on BBS’s, etc.
File Name File Size Zip Size Zip Type
BGFAX.CNF 3801 1809 deflated
BGFAX.DOC 81762 24693 deflated
BGFAX.EXE 90912 42337 deflated
BGFAX.FNT 24576 4815 deflated
FAXOFF.COM 7 7 stored
FILE_ID.DIZ 440 327 deflated
FNTEDIT.EXE 14944 8635 deflated
HELPME.ARJ 26059 25851 deflated
MAKEFAX.EXE 13408 7789 deflated
NFAX.COM 491 389 deflated
REGISTER.FRM 4760 1075 deflated
REGISTER.NL 3342 1205 deflated
VIEW.EXE 35056 18513 deflated
WHATS.NEW 22803 8785 deflated

Download File BGFAX136.ZIP Here

Contents of the BGFAX.DOC file

Voice B.J. Guillot Data/Fax
+1 713.893.9320 2611 Rushwood Circle +1 713.893.9124
Houston Texas 77067-1941

Copyright (C) 1993-1994 B.J. Guillot. All Rights Reserved.

BGFAX 1.36 SUN 25 SEP 94

Dedicated to Gene Roddenberry

"You are not ready for immortality" -- Ambassdor Kosh

ABSTRACT FidoNet 1:106/400

* Allows sysops to receives faxes on their BBS telephone line
without needing a fax switch box and real fax machine

* Everything runs in the foreground, no TSR programs needed

* If you are already running a Fido mailer, you can configure
your mailer to exit and run BGFAX when the line is hot, thus
BGFAX does not necessarily have to answer the phone itself

* Comes with a small and quick fax viewing program that supports
CGA, EGA, and VGA display modes as well as FAX->PCX conversion

* Works with modems that offer a feature known as adaptive
answering on Class 1, Class 2, Class 2.0 and ZyXEL fax modems

* Can send faxes via the command line and return status by
errorlevel; fully configurable top of page banners on outgoing
faxes so that user names and phone numbers can be there


1. BGFAX.DOC -- general documentation, looking at it now

2. WHATS.NEW -- release notes

3. BGFAX.EXE -- the main executable

4. HELPME.ARJ -- specialized help files for various setups
READ.ME - general help and chatter
FBBS.BAT - example batch file for /HOST operation
D'BRIDGE.TXT - general help for d'bridge, Class 2
D'BR-USR.TXT - general help for d'bridge and USR
FD202.TXT - general help for FD202, Class 2
FD212.TXT - general help for FrontDoor, Class 2
FD-HAYES.TXT - general help for FrontDoor, Hayes
FD-USR.TXT - general help for FrontDoor, USR
FD-ZYXEL.TXT - general help for FrontDoor, ZyXEL
IM227.TXT - general help for InterMail, Class 2
IM-USR.TXT - general help for InterMail, USR
PORTAL.TXT - general help for Portal of Power, Class 2
WAFFLE.TXT - general help for Waffle, using /HOST
GT18.TXT - general help for GT Power, Class 2
EZYCOM.TXT - general help for EZYCOM, using /HOST
QFRNTUSR.TXT - general help for QFront and USR

5. VIEW.EXE -- fax viewing, PCX, and 24-pin dot printing

6. NFAX.COM --\ optional TSR utility to notify the user
7. FAXOFF.COM --/ if a fax has been received

8. MAKEFAX.EXE --\ converts PCX and ASCII files to ZFAX format
9. BGFAX.FNT --/ font file for MAKEFAX
10. FNTEDIT.EXE --- font editor to make customized fonts

11. BGFAX.CNF -- configuration file for /SEND, /HOST, /INIT

12. FILE_ID.DIZ -- short abstract for bgfax

13. REGISTER.FRM -- registration form
14. REGISTER.NL -- dutch registration form for the netherlands


BGFAX and accompanying files are provided AS IS without any
warranty, expressed or implied. This includes without limitation
the fitfulness for a particular purpose or application and any
warranties of merchantability. [Did you really understand that?]

While I tried to be as through as possible in preparing BGFAX,
B.J. Guillot shall not be liable for any damages, whether direct,
indirect, special, incidental or consequential arising from a
failure of this program or accompanying files to operate in a
manner desired by the user. B.J. Guillot shall not be liable for
any damage to data or property which may by caused directly or
indirectly by use of this program.

In no event will B.J. Guillot be liable to you for any damages,
including any lost profits, lost savings or other incidental or
consequential damages arising out of your use or inability to use
the program, or for any claim by any other party. Individuals using
the software bear all risk as to its quality and performance.


FidoNet: 1:106/400 Voice: +1 713.893.9320
InterNet: [email protected] Data/Fax: +1 713.893.9124

1. Calling my BBS in the United States, +1 713-893-9124

2. FidoNet FREQ of the magic name "BGFAX" from 1:106/400
(Beta copies are available under magic name "BGBETA")

3. FidoNet FREQ... The Netherlands... 2:512/39 (Owl's Nest)
The Owl's Nest is the Dutch Supra distributor and they
have three nodes:
+31 0.2155.10921 +31 0.2155.12571 +31 0.2155.28096

4. FidoNet FREQ... Austraila... 3:635/552 (Cloud Nine)
Cloud Nine's telephone number is +61-3-803-6954

5. The Internet FTP site FTP.CSN.NET in directory /Computech

6. E-mail request for users that do not have FTP access...
Just send Internet e-mail to "[email protected]"
(Beta copes are available from [email protected])

To join the BGFAX mailing list, send Internet e-mail to
"[email protected]" with the text "subscribe bgfax-list" as the
first line in your message.


BGFAX currently supports printing for Epson LQ 24-pin dot matrix
compatible printers as well as the Canon Bubble Jet series. Lasers
are not currently supported. If you need to print with a Laser or
9-pin printer, you will need to obtain a copy of ZyXEL's ZFAX
software (version 2.23 perferred) or Smith Micro Software's
Quick Link II, a commerical program included with many fax modems.

Support for Fax Talk Plus-style fax images may be added in a
later version. Delrina format files (WinFax, DosFax) will NOT be
supported do to Delrina's refusal to release the WinFax file
header format to developers. [If you wish to see a copy of
Delrina's fax, Fido FREQ the magic name "DELRINA" from 1:106/400
or call my BBS and download the file "DELRINA.ARJ".]

BGFAX supports Desqview's alternate video buffer zone, if used,
and will return ticks to other tasks. BGFAX also issues an
Interrupt 28h call every now and then for OS/2 time slices.

This program was compiled under Borland's Borland Pascal 7.0.

Modems that I have direct access to:
SupraFaxModem v.32bis (V1.80-02, Rockwell AC ROM)
SupraFaxModem 288 v.FC (FLASH firmware, latest version)
USR 21.6K v.32terbo (12/08/93 firmware)
USR 28.8K v.FC/v.34 (FLASH firmware, latest version)
Hayes Optima 288 (V3.1 firmware)
Zoom Voice-Fax-Data Modem v.32bis (??? firmware)
SIERRA based 2400 data/9600 fax modem from Computer City

If you wish to put BGFAX in DEBUG mode (where it logs most of the
strings sent out and in from the modem in a DEBUG.LOG file), you
must set the following environment variable:



BGFAX does not require a FOSSIL driver. It will normally use its
own internal communications routines to talk to your UART chip.
BGFAX supports the 8250, 16450, and 16550A chips directly.

BGFAX assumes...

COM1=3F8x4 COM2=2F8x3 COM3=3E8x4 COM4=2E8x3


If you are using a nonstandard port configuration, whenever BGFAX
requires a port number to be entered (such as po=2), instead of
entering the port number, enter the base address and IRQ seperated
by an 'x' character (such as po=2E8x5). BGFAX requires the base
address be given in HEXIDECIMAL notation, and the IRQ to be given
in DECIMAL notation, since all IO boards seem to use this method.
If your COM3 was at 2F8h and IRQ 10, you would say (in the .CNF):



Many Class 2 fax modems require a DTE shift to 19200 bps when
performing fax operations. Yes, even if you have your port locked
at 57600 bps, BGFAX will temporarily shift the speed to 19200. It
should be noted, however, that there are some exceptions to this
rule. Some modem manufactuers did not follow the 19200 shift
method, and thus, you will have to tell BGFAX if you have one of
these special modems. The ZyXEL modem is a prime example. Also,
it has been brought to my attention that some Zoom modems also do
not need to be shifted to 19200 bps. (Which ones? It seems very
random. You'll have to discover for yourself with trial and
error.) So, how do you tell BGFAX _not_ to shift to 19200?

Putting an exclamation mark (bang) after the port will tell BGFAX
not to shift the DTE speed to 19200 when receiving a fax. (i.e.,
whenever you want to specify COM2, do as as "2!" instead of "2").

Class 1 and Class 2.0 fax modems do not require the 19200 DTE
shift and BGFAX already knows this.



1. You are running DesqView and your BBS and/or Fido
mailer requires the use of a FOSSIL driver


2. You are using a funny device (such as a parallel port
modem or a special multi-port serial card) that cannot
be used by standard communications programs without
FOSSIL drivers (e.g., a Digiboard serial card)

If you meet one or both of the conditions above, you will need
to use BGFAX in FOSSIL mode. To do that, put the letter 'F' in
front of the COM port designator. BGFAX treats COM1 as F1,
COM2 as F2, etc. So, to use FOSSIL-COM2:


If you are using a Class 2 fax modem that requires a 19200 shift
when operating in fax mode, if you "lock" your FOSSIL driver,
BGFAX will not be able to shift the port speed to 19200! You will
have to tell your FOSSIL driver to "unlock" the port, i.e.:

BNU /L0=0
BNU /L0=38400

Note the "F1" means for BGFAX to use the FOSSIL on COM1. The
"/L0=0" parameter on BNU means for BNU to "unlock the port".
Why? Because, the FOSSIL driver will *ignore* a DTE shift request
when its in "locked" mode. BGFAX will be unable to relock your
port with the FOSSIL driver, so that is the purpose of the
second BNU line. It re-locks COM1 at 38400 (or whatever) rate
you want to use.


Of course, I'm kidding about the nuts part. OS/2 is a very nice
operating system. Downloading files (1650 cps), Formatting a
1.44meg floppy, and playing chess against the computer, all at the
SAME time, on a 386, is really nice.

You will need to have a copy of SIO 1.30 or later. SIO 1.30 comes
with a special utility called SU.EXE that was not available to
unregistered SIO users in previous versions. SU.EXE allows you to
lock and unlock your 'locked' ports at will via command line.
Consult the SIO docs for more information on that. You will need
to use SU.EXE if you are using a modem that requires a 19200 shift
(and you normally don't lock your port at 19200).

Important things:
1. You must use both SIO _and_ VSIO.
2. The SIO command line has to have the - (dash) as the past
parameter to allow sharing com port between OS/2 and DOS
boxes. Example snippet from OS/2 CONFIG.SYS:

device=c:\sio\sio.sys (1,,,-) (2:38400,,,-)

If you are running an Hayes ESP serial card:

DEVICE=C:\UTIL\SIO.SYS (3,300:3e8,3:3,-) (4:38400,308:2e8,5:5,-)

COM1 and COM3 in the above examples are left at a floating, non-
locked rate. This is what needs to be done if your modem requires
a 19200 shift in fax mode. COM2 and COM4 in this example are
locked. You can only do that if you have a registered version of
SIO (so that you can use SU) or your modem does not require a 19200

In the Hayes ESP example, I was using a two-port ESP card. 300 and
308 hex is the 'real' address of the ports, but you need to 'remap'
them to some kind of regular address and IRQ. In this example,
address 300 (serial connector 1) is remapped to 3E8. IRQ3 is
'remapped' to IRQ3 (using the ESP in interrupt mode.) Same type
of thing for COM4.


If you are running BGFAX in rear end mode (using one of the /Fxxxx
parameters on the command line), BGFAX does NOT look for the
BGFAX.CNF file. Everything is passed to it on the command line,
so if you needed to specify an alternate address and IRQ:

bgfax /fax c:\bgfax 3f8x9 z

...or use a FOSSIL driver on COM4...

bgfax /fax c:\bgfax F4 z


This section tells you the recommended initialization and answer
strings for your modem. It will not tell you what the commands
do. Look in the "Quick tutorial" second to find that out.

MODEM. Auto answer tells the modem to answer (by itself) on X
number of rings. We want to be able to send the modem special
commands when the phone rings, so auto answer will not want to be
used. (Auto answer should never be used in a BBS environment,
anyway.) Make sure that auto answer is disabled by checking to
see that the S0 register is set to 0. (S0=0).

Class 2 modems (Supra v.32bis, PPI, Zoom, etc.)
Init-1 ... ATZ|
Init-2 ... AT+FCR=1;+FDCC=1,5,0,2,0,0,0,0|
Init-3 ... AT+FLID="713 555 1212"|
Answer ... AT+FAA=1;A|
Dial ..... ATDT

Class 2.0 modems (USR 21.6K)
Init-1 ... ATZ|
Init-2 ... AT+FCLASS=2.0|
Init-3 ... AT+FLI="713 555 1212"|
Answer ... AT+FCLASS=2.0|~AT+FAA=1+FNR=1,1,1;A|
Dial ..... AT+FCLASS=0DT

Class 1 modems (Hayes Optima 288, Supra 144LC)
Init-1 ... ATHZ|
Answer ... AT+FCLASS=1|~AT+FAE=1;A|
Dial ..... AT+FCLASS=0DT

ZyXEL modems (ZyXEL E, S, E+, S+, etc.)

Init-1 ... ATZ|
Init-2 ... AT#P713 893 9124
Init-3 ... AT#B1+FCLASS=6|
Answer ... ATA|
Dial ..... ATDT|


Skip this section if you do not care about the internal
workings of fax modems...

This command asks the modem to tell you what fax classes it
is compatible with. It will respond with something like:

0,1,2 or 0,2 or 0,1,2.0 or 0,2,6 or 0,1,2,6 or 0,2,2.0,6 or ERROR

0 = Data
1 = Fax Class 1 capable
2 = Draft Fax Class 2 "compatible" (TR29.2)
2.0 = Fax Class 2.0 capable
6 = ZyXEL or Rockwell voice mode compatible
ERROR = no fax capabilities


Many people are often confused between the terminology "GROUP" and
"CLASS" with regards fax modems.

ALL FAX EQUIPMENT is "GROUP 3" compatible. This includes fax
machines, fax modems, standalone PC fax cards, etc. Group 3 just
defines the fax specifications, e.g., black-and-white, the
resolutions, etc.

"CLASS" refers only to fax modems. CLASS has NOTHING AT ALL to do
with fax machines. Class 1, Class 2 and Class 2.0 are different
methods of sending "AT" COMMANDS to a fax modem from a computer
serial port. Many fax modems offer the Class 2 command set.


Most Group III fax images are 1728 bits across. A normal
resolution page is approximately 1100 scan lines long, while
a high resolution page is approximately 2200 scan lines long.

When the fax devices are handshaking, this occurs at 300 bps,
regardless of what the negoiated fax DCE rate is (i.e., 9600).
(This is why on some modems, you will see the HS [high speed]
light go on and off several times during the fax transfer.)

Computer fax modems use v.17 modulation at 12000 and 14400,
v.29 at 7200 and 9600, and v.27ter at 2400 and 4800 bps. The 300
bps handshaking signals use something called v.21 channel 2. All
fax modulations are half duplex (data going only in one direction
at any given time.)

Fax images can use one or two-dimensional Modified Huffman
encoding. One-dimensional is known as MH, and two-dimensional is
known as MR (Modified Read). MR encoding sends one scan line,
followed by special bits that spell out differences between the
above line and the current line. This results in generally about
as 12% compression. BGFAX's VIEW.EXE program can only view 1D-MH
faxes at this time, although BGFAX will support receiving and
saving to disk of both types of compression. (See T4SPEC.TXT for
a very detailed description of the 1D-MH compression method. That
file is included in SOURCE.ARJ.)

Fax images have things known as EOLs and RTC. EOL stands for
End-Of-Line and is represented as 000000000001. Fax viewing
programs read through the fax image file, scan line by scan line.
They know where each scan line ends by searching for all the EOLs
in the file. RTC, Return-To-Control, is a series of six EOLs.
The RTC sequence usually indicates an "end of page". No huffman
codes start with 11 zeros like the EOL character. Why am I
telling you all this? Because many older fax machines send "fill"
to your fax modem when receiving. "Fill" is just extraneous zeros
that are stored on your hard disk that take up space. For
example, you might have an scan line that ends with...


...but, all that is actually needed is 000000000001. As you can
see, many extraneous zeros could be filtered from this line to
reduce the size of fax image files a few bytes per scan line. Fax
machines like to add all those extra zeros in there. That's why
you should notice that fax modem->fax modem facsimile transfer is
faster than fax modem->fax machine or fax machine->fax modem.

Another interesting Group III fact is that a "training check" is
performed by fax machines shortly after they connect. The
training check consists of the sender sending zeros for
approximately 1.5 seconds (at the negoiated rate, i.e., 9600
bps). The receiving end will count all the zeros received, and
any non-zeros received (bad bits that got corrupted by noise over
the phone line), and if 10% (or more) of the bytes received were
bad (non-zero), the receiving end will request a RETRAIN. This
usually involves a downshift of 2400 bps, i.e., 9600 -> 7200 bps.
After the shift, another training check will be performed.

This command will put a Class 2/Class 2.0 modem in ADAPTIVE

Your modem will properly mate with either a standard modem
data call or a fax machine/fax modem. Some modems, such as the
Supra, will report a "FAX" response the instant a fax CNG tone is
heard from the remote end.

All modems, on true fax calls, will report a "+FCON" response code
when the fax connection is truly established. (This is similar to
a "CONNECT 9600" or "CONNECT 14400" on a data call.)

Many modems are slightly brain dead and will forget the +FAA
setting when another command is issued to the modem. To ensure
you always answer in adaptive mode, rather than using "ATA" to
answer the phone, use the following: "AT+FAA=1;A".

The ";", semicolon, is used as a seperator for fax commands. Some
modems, such as the Supra, do not require it. Others, such as the
PPI, will "ERROR" out if the semicolons are not used.

Please note that many modem manufactuers did not test adaptive
answering as much as they should have before they released their
modems. Some modems won't allow low speed callers into your BBS
when adaptive answering is enabled. Others won't allow high
speed callers into your BBS when adaptive answering is enabled.
If this is happening, you will need to call your modem manufactuer
and request new ROMs if any are available. For example, the 14.4K
PC Logic modem's adaptive answering doesn't work at all. Even
well known companies sometimes overlook adaptive answering. A key
example is that early version of the USR 21.6K modem would lock up
whenever an HST call would come into their BBS when adaptive answer
mode was enabled.

The Supra Fax Modem, for example, is pretty good concerning
adaptive answering. (Note that very earlier versions of the
Supra, did not offer adaptive answering until the 1.2-H and 1.2-J
ROMs appeared on the scene.) However, many older fax machines do
not send out a CNG tone when they are engaged. Many fax modems,
including the Supra, won't know what to do, and will assume the
old fax machine is really a data caller. Again, this is not good,
but its not that much of a problem. Tell the operator of the old
fax machine to push their "START" button *IMMEDIATELY* after dialing
the last digit of the telephone number instead of waiting to hear
the fax tones on our end like many office people do.

This is the Class 1 command to enable adaptive answering.

This is a Class 2/2.0 command to give your modem PERMISSION to
take faxes. Note that Class 2.0 modems default +FCR=1, so you
won't need to use this command.

AT+FLID="713 893 9124"
( The Class 2.0 command is AT+FLI="713 893 9124" )

The above command sets your modems fax ID string. This is the
string that is send to the remote end on fax connects. (It's the
deal that's printed on the little 'confirmation reports' that many
fax machines make.) The fax ID can ONLY BE A MAXIMUM OF *20*
CHARACTERS. If you try to stuff more than 20 characters in a fax
ID string, the modem will respond with an "ERROR". DO NOT USE
letters, numbers, and punctuation marks. (High-bit ASCII
characters include foreign accented letters, inverted question
marks, etc.)

Some fax machines will go nuts (hang up on you) if you use
non-CCITT defined characters in the fax ID field. The only
"valid" characters are PLUS, SPACE, and ZERO through NINE.

+1 713 893 9124 <-- Valid
713 893 9124 <-- Valid
+1 713.893.9124 <-- Not Defined (the periods)
713-893-9124 <-- Not Defined (the dash)
MY GREAT BBS <-- Not Defined (the letters)

I've never personally seen a fax machine that will hang up on you
for using any of the above "Not Defined" strings, however, I have
been told that someone found an old fax machine that did, infact,
hang up if you used letters (or dashes) in the ID string.

Class 1 fax modems have their ID set by the fax software.


The above command is what the power on defaults to a 14400 fax
modem are, with one exception. The first number, 1, allows your
fax modem to accept high resolution fax documents. The power on
default to most modems are to accept only low resolution
documents. The second number, 5, allows your fax modem to use fax
speeds up to 14400 bps.

If you issue the above command on a fax modem with an upper limit
of 9600 on fax tranmissions, you will receive an "ERROR" or cause
the modem to behave odd. Use this string on a 9600 fax modem:


If you want to activate 2D-MR compression on a 14400 capable fax
modem, use:

That "1" after the "2" means that you wish to allow 2D-MR
compression. As previously mentioned, 2D-MR approximates gets
about 12% better compression than the more familar 1D-MH. If you
tell your modem to allow 2D-MR compression, it should be noted
that you will not lose any compatibility. Enabling 2D-MR allows
for both receiving in standard 1D-MH mode and 2D-MR mode.
Remember that VIEW.EXE will not yet view 2D-MR faxes. If you
decide to use that extra "1", you must use ZFAX to view any
received 2D faxes!

The remaining numbers are not that important. Changing them
around, though, may cause BGFAX to fail. The command can also be
abbreviated to "AT+FDCC=1,5" or "AT+FDCC=1,3".

You do not need to use this command on Class 1 and 2.0 modems. On
Class 1 modems, if you wish to change these settings, you will
need to do it via BGFAX's /DIS:nnn command line parameter.

A single command string can be made using what we need ...

AT+FAA=1;+FCR=1;+FLID="713 893 9124";+FDCC=1,5,0,2,0,0,0,0

However, if you are using BGFAX in rear end mode with a Fido
mailer, you may have a hard time of making an initialization
string that long, so you may be required to split the line into a
few pieces. Remeber to make your ATA command "AT+FAA=1;A" if it
is possible to change in your mailer.

The +FDCC string must come at the end of the stack of commands!

( The Class 2.0 command is AT+FMI? )

If you want to find out who makes the fax datapump for your modem,
this command should tell you if you enter it in while in terminal
mode. My Supra (and many others) report "ROCKWELL". My Cheap
2400 data, 9600 S/R fax modem reports "SIERRA". Others report
"EXAR" and other things as well.


This is a Class 2.0 command that tells the USR modem to let BGFAX
know many details about the current fax reception, such as the

resolution of the fax, what the fax DCE speed is currently
negotiated at, etc. Class 2 modems always report this. However,
for some strange reason, the Class 2.0 spec writers thought it's
be "nice" to have the fax program NOT knowing this critical
information. I can think of no logically reason for this command
existing, but if you forget to set it, your faxes on your Class
2.0 modems may look elongated or smashed together.


This is a ZyXEL fax command. This is of use only to ZyXEL owners,
and the ZyXEL user manual explains it very nicely.


Probably 95% of you will be using BGFAX with a high speed modem
(v.32 or v.32bis). Many of you may have started off with slower
300, 1200, or 2400 modems from long ago. If you can remember back
that far, when an incoming data call came in, you would see a
string like "CONNECT 1200". If your port was set at 2400, you
would garbage on the screen unless you shifted your bps rate down
to 1200 to match that of the caller. Many newer terminal programs
refer to this speed shift as "Autobaud".

Modern modems require your serial port be locked at a specific
speed (such as 19200, 38400, 57600, etc.) so that you can achieve
higher thruput via compression engines such as MNP and v.42bis.
The modem-to-modem speed may only be 14400, but the modem-to-
computer speed stays "locked" at 38400. Autobaud is not required,
and if used, would result is garbage on the screen.

Why am I telling you all this? Well, I don't know who's silly
idea it was, but the powers that be decided that fax modems should
use the ancient method of changing the port rate when a fax is
incoming or outgoing.

After your modem reports the result code "+FCON" all further
communications *MUST* be done at 19200 bps, even if you are locked
at 38400 or 57600. If the port speed is not relocked at 19200,
nothing but garbage will come on the screen.

I'm telling you this because I frequently get mail asking me why
I'm changing the port speed to 19200. It's not my fault! That's
the way is has to be done! The only modem that I know that does
not require this idiotic speed shift is the ZyXEL modem. In fact,
a special option must be used to tell BGFAX you are using a ZyXEL
or BGFAX will fail as it will try talking to the ZyXEL modem at
19200 instead of 57600 or whatever rate it's locked at.

Note that the 19200 shift is not needed on Class 1 and 2.0 modems.


Class 2 fax modems receive in reverse bit order and transmit in
direct bit order. Actually, this is not in the Class 2 spec, but
a bug in Rockwell's Class 2 implementation. This reverse bit
order bug became so wide spread, that other fax modem manufactuers
now have to receive in reverse bit order to make their modems
compatible with existing fax software. 🙂

BGFAX will save all incoming fax files in direct bit order, so it
effectively flips all the bytes on the fly when receiving.

Class 1, Class 2.0, and ZyXEL modems receive and transmit in
direct bit order. BGFAX will know this and keep the received
faxes in the correct bit order.


If you want BGFAX to answer the phone, BGFAX is started up using
the /HOST command line parameter.

If you plan on using BGFAX in Frontend mode, you need to do a
couple of things first.

1. An evironment variable called BGFAX needs to be inserted in
your AUTOEXEC.BAT or someother batch file. Example:


This environment variable points to the location of your BGFAX
configuration file and the directory where faxes will be
received into.

(Note, some people don't like cluttering their environment with
variables. You can start up /HOST mode using a different config
file other than BGFAX.CNF, by using the "$" modifier, e.g.:


The "$" modifer must be the last thing on the command line.
Instead of looking for a BGFAX.CNF file as specified by the
BGFAX environment variable, this will cause BGFAX to look for
a "ROBIN.CNF" (in host mode) or "BATGIRL.CNF" if sending.
The "$" modifer has NO EFFECT on rear end mode operation.)

2. Make sure the BGFAX.CNF configuration file is in the directory
pointed to by the BGFAX environment variable and make any
changes you think necessary. The included configuration file
is self explantory. I won't repeat the format here.

3. BGFAX can exit with 7 possible internal errorlevels:

6 - host mode idle for more than x minutes
4 - fax was received
3 - local logon
2 - data call
1 - restart batch file

If no errorlevel is encountered, it means the sysop aborted
BGFAX by pressing the [Esc] key or a serious error occurred.

Actually, BGFAX can exit with several errorlevels if you setup
events. Events are specified in the BGFAX.CNF file (see the
example file included). Example:


That would cause BGFAX to exit with errorlevel 192 at 7:00am
and errorlevel 193 at 7:00pm. BGFAX's event handling is very
crude, and I very much need to change it. The event handling
still has several bugs that need to be fixed. It works best if
you use a total of two events. One event doesn't work very
well, and if you use more (up to 20 are allowed), you can miss
an event or two if a caller to your BBS overstays their visit.
BGFAX will always execute the first event that is passed over,
but won't do any more. And, if you only have one event setup,
it will not execute that one if it is missed. But it will, if
you set up two events. You can probably tell I hate events.
If anyone has some ideas on how to keep track of events and
execute the ones that are missed, etc., I'd appreciate it.

4. When BGFAX is waiting for a call, pressing Ctrl-R will reset
the on screen counters. Ctrl-A will force BGFAX to send the
answer string to the modem.

5. If you some reason, you want to use the USR Class 2.0 modem in
Class 1 mode with BGFAX's /HOST mode, you will need to use the
/ATO switch which will cause BGFAX to send an "ATO" to the
modem after the "DATA" response is received.

6. When a data call comes in, BGFAX creates a DOBBS.BAT file that
looks like so:


The first parameter is the DCE data speed, then the com port,
number of minutes until the next event, and then the error
correcting string, if any. The EXEBBS.BAT file must be created
by you so that your bulletin board software is loaded up in
frontend mode (ie., the data connection is already hot.)

%1 -> the DCE speed, modem-to-modem real connect speed
%2 -> the COM port
%3 -> number of minutes until the next event
%4 -> error correction/reliable mode indicators

DOBBS.BAT theory

If you have never used a frontend program uses DOBBS.BAT theory,
there are several things you need to know. You have to be pretty
confident in DOS and batch files, or you will get lost very
easily. First, you need a main batch file that runs BGFAX. Let's
call this FBBS.BAT:

@echo off
bgfax /host
if errorlevel 4 goto faxrcvd
if errorlevel 3 goto datacall
if errorlevel 2 goto datacall
if errorlevel 1 fbbs.bat
goto end
rem [you can put a printing batch here if you want]
call %bgfax%\doprint.bat
del %bgfax%\doprint.bat
rem [errorlevel 3 is local login, 2 is data caller]

Note that DOS requires all if-errorlevel statements to go in
DESCENDING ORDER! (255,254,253,...,4,3,2,1). This is a fact that
many people forget.

This FBBS.BAT file will run BGFAX and when a data caller calls
your system, BGFAX will exit with an errorlevel of 3. This will
cause the batch file to jump to the ":datacall" label. Here, the
line "%bgfax%\dobbs.bat" is executed, causing DOS to shift control
of the computer to the DOBBS.BAT file. Rememeber, this is a file
that BGFAX creates! You do not need to make a DOBBS.BAT file.
The DOBBS.BAT then executes _another_ batch file called EXEBBS.BAT
which will look something like:

@echo off
bbsprog /f:%1:%2


You will have to look up the info for the EXEBBS.BAT file in
your BBS user's manual. I can't help you with that. Notice
that the last line "fbbs" restarts the original FBBS.BAT
file that runs BGFAX in /HOST mode.

In review: (1) Modify FBBS.BAT to meet your needs, (2) BGFAX will
MAKE a DOBBS.BAT file by itself, (3) YOU will need to MAKE an
EXEBBS.BAT file, (4) the EXEBBS.BAT file must restart FBBS.BAT.

Do not use the CALL statement anywhere unless you really know what
you are doing. "FILE.BAT" and "CALL FILE.BAT" causes two
completely different things to happen. Only experienced DOS/batch
file writers need to experiment with that. Example:

echo **TEST**

EXAMPLE1.BAT Example1.BAT output:
echo Hello World! Hello World!
call test.bat **TEST**
echo Bye World! Bye World!
rem ***We RETURNED to the batch file after TEST.BAT

EXAMPLE2.BAT Example2.BAT output:
echo Hello World! Hello World!
test.bat **TEST**
echo Bye World!
rem ***We DID NOT RETURN to the batch file after TEST.BAT

If you want to allow 300 bps callers, you must use the /300
command line switch. ( Example: BGFAX /HOST /300 ).


If you want BGFAX just to initialize the modem, you can have it do
so with the BGFAX /INIT parameter. BGFAX will get the port,
speed, and initialization strings from the BGFAX.CNF file in the
directory specified by the BGFAX environment variable.

This mode is provided for people who need to use BGFAX in rear end
mode, but their Fido mailers (or BBS software) do not allow them
to use the long initialization strings required for fax usage.


Rear end mode is useful for those of us who are FidoNet members
where a Fido mailer is required to be running 24 hours a day. It
will be your job to figure out how to get your mailer to exit to
BGFAX when your modem informs the mailer a fax call is coming
through. (See the HELPME.ARJ file for hints on specific mailers.)

You will need to know the result code your modem sends when an
incoming fax call is detected. Some modems send TWO fax connect
strings. For example, the Supra will send "FAX" followed by an
"+FCON" response about 2 seconds later. The ZyXEL will send
"CONNECT FAX" followed immediately by "ZyXEL". Most fax modems
report only one string though. Use this chart for reference:

Result Modems
====== ====================================================
FAX Supra, Zoom, Hayes, most Rockwell based chipsets
+FCON PPI, other Class 2 modems
+FCO USR 21.6K and other Class 2.0 modems

You need to configure your mailer (or BBS software) to exit
IMMEDIATELY upon receipt of the proper fax result code. You
need to call BGFAX in the following manner:

BGFAX /how [faxpath port faxtype [pid]]

FAXPATH will be the directory where incoming faxes are to be
placed. PORT is a valid communications port from 1 to 4, or,
optionally, a hexidecial base address and IRQ formatted as
followed "3F8x5". Also, optionally, if the port has a bang, !,
following it, it will force the port to stay locked at the current
speed rather than shifting to 19200 on fax connects. FAXTYPE is a
single character 'Z' or 'Q'. 'Z' for ZyXEL ZFAX format, 'Q' for
Smith Micro Software's Quick Link II fax format.

The "/how" deal is the most critical switch. There are three
possible settings.

/FAX ... Modem reports "FAX" or "CONNECT FAX".
BGFAX will automatically detect whether it should
use Class 2 (Supra, Zoom) or the ZyXEL fax mode
based on the next message (ie, "+FCON" or "ZyXEL").

/FAX:713_893_9124 If your modem in Class 1, try one of
/FHAY:713_893_9124 these two options.

/FAST ... Modem reports "+FCON" (PPI, other Class 2 modems)
/FCON ... Try this option if /FAST doens't work.

/FCO ... Modem reports "+FCO" (USR 21.6K)
/FCOS ... Try this option if /FCO doesn't work.

/FZYX ... ZyXEL owners use this if /FAX doesn't work.

Here is a schematic of how each option behaves:

/FAX [ Supra, ZyXEL, i.e. all modems that report "FAX" ]
1. keeps port at locked DTE 1. 1.
2. waits for "+FCON" _or_ 2. waits for "OK" _or_ 2. waits for "ZyXEL"
3. drops port to 19200 3. sends "AT+FDR" 3. waits for high CTS
4. waits for "OK" 4. sends
5. sends "AT+FDR"

/FAX:713_893_9124 [ Supra LC modem, Class 1 modem ]
1. keeps port at locked DTE
2. waits for "CONNECT"
3. begins sending Class 1 HDLC frames

/FHAY:713_893_9124 [ Hayes 288, other Class 1 modems ]
1. keeps port at locked DTE
2. blindly starts sending Class 1 HDLC frames

/FAST [ PPI, i.e. all modems that report "+FCON" ]
1. drops port to 19200
2. waits for "OK"
3. sends "AT+FDR"

/FCON [ PPI, use this if above options don't work ]
1. drops port to 19200
2. blindly sends "AT+FDR"

/FCO [ USR, i.e. all Class 2.0 modems that report "+FCO" ]
1. keeps port at locked DTE
2. waits for "OK"
3. drops port to 19200 _only if_ DTE rate is 38400
(leaves port alone if set at 19200, 57600 or 115200)
4. sends "AT+FDR"

/FCOS [ USR, i.e. all Class 2.0 modems that report "+FCO" ]
1. drops port to 19200 _only if_ DTE rate is 38400
(leaves port alone if set at 19200, 57600 or 115200)
2. blindly sends "AT+FDR"

/FZYX [ ZyXEL, use this only if /FAX doesn't work ]
1. waits for high CTS
2. sends

When a fax is inbound, here are some exampleI BGFAX command
lines for rear-end mode operation on my Supra:

bgfax /fax c:\bgfax f3 z
bgfax /fax c:\bgfax 3f8x7 z

Using my Hayes 288, example command line options might be:

bgfax /fhay:713_893_9124 c:\bgfax 1 z

...note that the ID string MUST be presented on the command line
when you are receiving with a Class 1 modem in rear end mode.
In Class 1, the fax software is responsible for sending the ID
string to the remote machine. (In contrast to Class 2/2.0 modems,
which automatically send the ID to the remote machine.)

The /FAX means that I used the modem response "FAX" as a trigger
for FD (see BGFAX.HLP for more details), C:\BGFAX is the path
where I want all faxes to be stored, "1" is the communications
port, and the "Z" represents I want faxes saved in ZyXEL's ZFAX
image format.

If you want to run BGFAX on a multinode system, an optional fifth
parameter can be used. This fifth parameter can be up to three
characters and it is called the PID. Example:


The only difference between the command above and the previous one
is that rather than making a BGFAX.LOG, all log entries will be
written to a file called BGFAXpid.LOG, in this case, BGFAX99.LOG.


Stop that hopping blue box

In /HOST mode, the BGFAX status box hops around the screen every
10 seconds to prevent screen burn-in. However, some people got
dizzy watching the box, and others complained that the screen move
was taking up too many time slices in multitasking environment.
The /NH parameter will force "No Hop" mode which has considerably
less screen writes when sitting idle.

bgfax /host /nh

50 Line Mode

BGFAX can use VGA's 50 line mode if you wish by using the /50
command line parameter:

bgfax /host /50
bgfax /send c:\bgfax\fax0004.fax 893-9124 /50
bgfax /fco c:\bgfax 1 z /50

(Also, if you have only a EGA video card, the /50 switch should
switch your display into 43 line mode.)

Suppressing screen output
/Q (quiet) and /QQ (super quiet) modes:

In /Q mode, 90% of the screen output will be suppressed. Instead
of the usual "beautiful" BGFAX screen, the only things printed to
the screen will be the bland output of the log file. In /QQ mode,
99% of the screen output is supressed. These features are useful
for people running BGFAX under DOS emulators and don't need time
wasted by having the emulators write to the screen.

BGFAX and the USR 21.6K modem with September 93 chips

If you are using BGFAX with the USR 21.6K modem, BGFAX will
default to use the 12/08/93 firmware revision. If you wish to use
BGFAX with the 09/20/93 firmware, you will need to use the /OU
switch on the BGFAX command line. Example:

bgfax /host /ou
bgfax /fco c:\bgfax 4 q /ou


Turning off the alert sound BGFAX makes when it receives a fax

BGFAX will automatically sound an "alarm" to let you know when a
succesful fax reception occurs. This "alarm" is annoying to some
people. To disable the "alarm", use the /NS switch for No Sound.

bgfax /host /ns
bgfax /fast c:\bgfax 1 z /ns

Telling Class 1 modems to receive at a maximum of 9600 bps /DIS

If your Class 1 modem can receive at a maximum of 9600, strange
things will happen if you forgot to tell BGFAX this, since it will
default to tell the other side you will be using 14400 bps for fax
operations. To force BGFAX to receive at a maximum of 9600 bps
with Class 1 faxmodems, use the /DIS:79 parameter, i.e.:

bgfax /fhay:713_893_9124 c:\bgfax 1 z /dis:79 /ns

To compute your own /DIS value, first, pick a value from the
following table:

2400 -> 3
4800 -> 11
9600 -> 15
14400 -> 47

Next, you have two options. If you want to allow high resolution
documents, add the value 64 to your choice. If you want to allow
2D-MR documents, add the value 128 to your choice. For example,
let's say you wanted a maximum speed of 9600 along with high
resolution documents: 15 + 64 = 79, so use /DIS:79.

See the following chart for pre-computed examples:

/DIS:nnn Description (all of the following allow high res faxes)
-------- -------------------------------------------------------
75 Maximum speed of 4800 bps, 1D-MH faxes only
79 Maximum speed of 9600 bps, 1D-MH faxes only
207 Maximum speed of 9600 bps, 1D-MH & 2D-MR faxes
111 Maximum speed of 14400 bps, 1D-MH faxes only [DEFAULT]
239 Maximum speed of 14400 bps, 1D-MH & 2D-MR faxes

TSR fax notification

BGFAX comes with an optional TSR program (NFAX.COM) that will
place the word "FAX" on your screen whenever a successful incoming
fax occurs. However, you must tell BGFAX that you wish to alert
NFAX.COM to display the message. You can do this by using the /NF
switch. Example:

bgfax /fcon c:\bgfax 2 q /nf

This will activate the NFAX.COM interrupt and cause the message to
get displayed. To turn the message off, you can run the FAXOFF.COM
program contained in the BGFAX archive. Remember, NFAX.COM is a
TSR and must be loaded in your AUTOEXEC.BAT properly if you wish
to use it with BGFAX. It is totally optional! Also, note that if
your machine is rebooted, the fax message will not be on your
screen when your system powers back up.

NFAX.COM/FAXOFF.COM techinical information:

Here is a snip of the Turbo Pascal source code that tells NFAX.COM
to put the fax indicator on the screen:

regs : registers;
writeln('Activating "NFAX" interrupt.');
regs.ah := 30; { nfax-function } := 21; { nfax-sub function } := 95; { nfax-"FAX" attribute, white on purple }
intr($55, regs); { nfax-tsr }

When you want to turn off the "FAX" alert message, you need to
run the included "FAXOFF.COM" file. It basically issues the
same code above except that " := 22" instead of 21.
(Go into DEBUG and do an unassemble on the .COM file to see
exactly how to turn it off.)


The name of the fax file will be FAXnnnn.??? where "nnnn" is a
number that is padded with zeros and "???" is "FAX" or "QFX",
depending upon which fax format you save the file in. If you ever
see a BGFAX.$$$ file in your directory, it should *NOT* be there,
as it should have been renamed in the FAXnnnn.??? format. If it
is there, it means some kind of problem happened during the fax
reception. Normally, problem faxes will be renamed to BADnnnn.???.

BGFAX creates a BGFAX.LOG file that contains a bunch of
information that is mainly only for debug purposes. A much
cleaner log file is called FAXIN.LOG and looks like this:

Date Time ET Bytes Rate Filename Remote Fax ID Pgs Notes
12-21 11:52 00:42 18183 9600*FAX0001.FAX Unknown 2 Finished
12-21 18:04 00:38 18182 9600 FAX0002.FAX Unknown 2 Not Done
12-22 21:30 00:29 17793 14400*FAX0003.FAX 7138939124 1 Finished
12-22 21:42 00:29 17541 14400#FAX0004.FAX TRANQUILITY BASE 1 Finished
12-23 06:44 00:32 16941 9600%FAX0005.FAX Null ID Received 1 Finished
12-25 17:21 01:22 107392 14400*FAX0006.FAX 7132424708 1 Finished

Notice the special symbols between the Rate and Filename:

-> (space) means low resoultion, 1D-MR compression
* -> means high resolution, 1D-MH compression
% -> means low resoltion, 2D-MR compression
# -> means high resolution, 2D-MR compression

"Not Done" under Notes means that BGFAX believed more pages were
to have followed, but were not actually received. "ET" is
estimated time. Everything else is self explanatory.


You can use the included VIEW.EXE file to view the faxes you have
received. It's use is quite simple:


...will cause VIEW.EXE to start viewing operations on FAX0002.FAX.

VIEW should automatically detect what kind of video card you are
using (VGA, EGA, and CGA) and use that video card's monochrome
mode. If VIEW.EXE has trouble finding a video mode, you can force
VIEW to use an alternate mode with the /CGA, /EGA, or /VGA
command as the second command line parameter after the filename.


When you are viewing the fax, you have a few options:

Alt-F ... Flip the image (makes upside down and mirrors)
Alt-I ... Inverse the image (white-black -> black-white)
Alt-S ... Shrink current on-screen image to 1/3 width
PgDn .... go to next page
PgUp .... go to previous page
...and the Up/Down/Right/Left arrows do their normal job.

Note that viewing the fax, with my VIEW.EXE program, takes up
quite a bit of memory. (It uses 216 bytes of memory for each scan
line, so a single high resolution fax page of 2200 lines uses
a minimum of 475K of memory!)

If you want to convert a fax to PCX ...


...would create a FAX0002.P01 and FAX0002.P02 file. (Two PCX
files since there are two pages in this fax image.)

A special option, /BO, is also available with VIEW.EXE. /BO
tells VIEW that you wish to flip all the bytes in the fax data
stream before processing it. This should NEVER need to be used,
as it is for my debugging purposes only. (Basically, using the
/BO parameter will let VIEW display/convert reverse bit order
faxes. Normally, BGFAX will save all faxes in direct bit order,
no matter what bit order the modem actually receives in.)

Another special option, /DB, forces VIEW to display the bad scan
lines of a fax image. Normally, if VIEW encounters a bad scan
line, it will display it is a dotted line going all the way across
the width of the fax image. If /DB is active, VIEW will put up to
1728 bits of the incorrectly decoded scan line on the page.

After you successfully receive a fax, BGFAX will exit with an
errorlevel of 4 and append (or create) a DOPRINT.BAT file.


You do not have to do anything with this at all, but it is
provided for those of you who wish to print faxes as they are
received. It will call the EXEPRINT.BAT file and pass it the
parameter with the path and name of the fax file that was just
received. If you are using Smith Micro Software's Quick Link II,
for example, and are one of those people that leave your printer
on 24 hours a day, your EXEPRINT.BAT file might contain this:

@echo off
printfax %1 24pin.qlp

Remeber to delete the DOPRINT.BAT file after you process it.
(If you do not, every time BGFAX goes to print another fax,
it will print ALL faxes received since you first set it up.)


Currently, if you want to send a fax to another person, the fax
file must already be in either ZFAX or Quick Link II fax image

BGFAX /SEND FAX0001.FAX 893-9124

See the BGFAX.CNF file for more info, such as maximum amount of
busy signals and failures before exit, etc.

At this time, only previously converted fax files can be sent.
(i.e., ASCII files have to be translated to ZFAX .FAX format or
QLII .QFX format.) You can use the included MAKEFAX.EXE program
to convert an ASCII file to .FAX format. MAKEFAX.EXE will require
that the font file BGFAX.FNT exists in your BGFAX directory.
MAKEFAX allows a width of up to 100 characters per line. (Use
the /SP command line parameter on MAKEFAX if you want it to use
short sized pages for pages in the fax that aren't fully used.)

BGFAX can exit with three possible errorlevels when sending...

errorlevel 5 -> fax sent successfully
errorlevel 1 -> fax send failure
no errorlevel -> file not found, keypress abort, etc.

If the number is BUSY, BGFAX will try a few more times (the number
of times specified in the MB= entry in the BGFAX.CNF file) and
will pause for SW= number of seconds between dials. If a failure
occurs during handshaking or during the actual sending of the fax,
BGFAX will terminate with an failure errorlevel.

If you are a programmer, and need to use BGFAX to send faxes, but
need more information than success or failure, you need to use the
/ER switch on the BGFAX /SEND command line. BGFAX will make only
ONE attempt to send the fax in /ER mode (regardless of BUSY, etc.)

bgfax /send fax0001.fax 893-9124 /er

The following "Extended Results" are available:

errorlevel 17 -> remote fax device does not support 2D-MR
errorlevel 16 -> remote fax does not support high resolution
errorlevel 15 -> failure after connect (HDLC frameout, etc.)
(a class 1 failure)
errorlevel 14 -> a timeout occurred
errorlevel 13 -> no +FCON ever occurred (NO CARRIER, etc.)
errorlevel 12 -> failure after connect (+FHNG, no XON, etc.)
(a class 2 or 2.0 failure)
errorlevel 11 -> "NO DIALTONE"
errorlevel 10 -> "BUSY"
errorlevel 7 -> the number is BLACKLISTED by the modem
errorlevel 5 -> *** FAX SENT SUCCESFULLY ***
errorlevel 1 -> generic fax send failure
no errorlevel -> file not found, keypress abort, etc.

BGFAX will print a top of page header at the top of each page
BGFAX sends out. This is same time of things that real fax
machines and other computer fax software do that identify who sent
the fax, where it's going, the date and time, and the page number.

BGFAX will need to call MAKEFAX.EXE with a special command line
parameter to cause the creation of the top of make banners. Make
sure you keep both MAKEFAX.EXE and BGFAX.FNT in your BGFAX
environment directory.

If you get lost real easy, you can skip the rest of this section.
This rest of this section describes how to configure BGFAX to
change the format of the top of page banners.

BGFAX lets you be very flexible with what exactly is said on the
top of page headers. It does this by the use of a "template" that
is located in the BGFAX.CNF file. This is necessary so that
countries that do not use English can put their own langauge on
the top of page banners. Also, it's just plain fun.

fh=To: %to21% From: %fr42% %mo2%/%dy2%/%yr2% %hr2%:%mi2% Pg %pg2%/%mp2%
fr=B.J. Guillot (713-893-9124)

The fh= entry is the template.

It should be obvious as to what all those %TTNN% things do,
but if not, here's a little dictionary:

%toNN% -> who the fax is for (will default to the sending phone number,
but can override to say any text with the /TO= command line switch)
%frNN% -> who the fax if from (will default to the ID= entry in the
BGFAX.CNF file, unless a FR= entry is found, but can override to say
any text with the /FR= command line switch)
%moNN% -> month
%dyNN% -> year
%hrNN% -> hour
%miNN% -> minute
%pgNN% -> current page number
%mpNN% -> maximum number of pages

With %to and %fr, BGFAX will right pad the whoto or whofrom strings to
a total number of NN characters with blanks. All other fields, are
left padded to NN characters with ZEROS. Keep in mind that BGFAX can
fit 100 characters across the page.

The fr= option, is used in the fh= template entry. Basically,
fr= is what will be inserted into the %frNN% template variable.

Are you lost? Here is an example and what it would look like:

C:\> bgfax /send output.fax 555-1212

To: 555-1212 From: B.J. Guillot (713-893-9124) 05/08/94 16:25 Pg 01/15

Let's say you run a BBS with a fax door and want to stick you
user's name at the top of each page instead of your personal name.
No need to rebuild a BGFAX.CNF! You can manipulate the %toNN% and
%frNN% template variables from the command line. If you do this,
remember to use underscores (_) to indicate spaces. Example:

C:\> bgfax /send output.fax 555-1212 /fr=BGFAX_Tech_Support /to=John_Doe

To: John Doe From: BGFAX Tech Support 05/08/94 16:25 Pg 01/15


/C1 Some Class 2 modems have bugs and cannot send to all fax machines
reliably in Class 2 mode. Because of this, the /C1 parameter is
available. It causes BGFAX to force the use of Class 1 when

bgfax /send c:\bgfax\fax0001.fax 893-9124 /c1

maximum Some fax machines and fax modems don't operate very well together
at 14400 speeds. You can force BGFAX to use a lower maximum speed
by putting the BPS rate after the send command, e.g.:

bgfax /send:9600 fax0001.fax 893-9124
bgfax /send:7200 fax0001.fax 893-9124
bgfax /send:12000 fax0001.fax 1-713-893-9124 /c1

/SMD A special option, /SMD, is available for my testing purposes only.
You should NEVER use this option. Basically, between each page,
it will tell the remote fax machine another "document" is coming
next, rather than the normal response that another "page" is
coming next. Example:

bgfax /send fax0001.fax 893-9124 /smd

REMEMBER, /SMD is only for testing purposes. DON'T USE /SMD!

/NB Some people do not want top of page banners to be added by BGFAX.
The /NB switch will do this. (PLEASE NOTE THAT UNITED STATES AND

/XB For some reason, you may want to tell BGFAX to use an existing
BGFAX top of page temporary fax graphics file (BGFAX.HH$). This
will prevent BGFAX from exec()'ing MAKEFAX.EXE. The only real
situation that you'd want to use this in, is if you were so low on
memory you didn't have enough to have BGFAX shell to MAKEFAX, or
if you wanted to design top of page banners completely independant
of BGFAX's fh= template. Ask me about MAKEFAX's internal /HDR
command if you want more details about this. (Basically, if you
will be sending out a 4 page fax, you will create a 4 line ASCII
text file called BGFAX.H$$ that has the header text for the top of
each page. Running MAKEFAX /HDR will take the BGFAX.H$$ ASCII file
and convert it to a BGFAX.HH$ graphics file. All BGFAX.H?$ files
must appear in the BGFAX environment directory. If the fax
document you are sending will be high resolution, you will also
need to do MAKEFAX /HDR /HR -- If you are going to be sending a 2D
fax document, you'll need to do MAKEFAX /HDR /2D ).


A FAXOUT.LOG file is created when sending out faxes to indicate
the success or failure. Here is an example:

Date Time ET Bytes Rate Filename Phone Number Pgs Notes
03-22 13:18 00:25 3882 14400 RESPOND.FAX 8939124 2 Finished
03-22 13:18 00:11 3884 NOFAX RESPOND.FAX 8939124 0 Busy
03-22 13:19 00:11 3884 NOFAX RESPOND.FAX 8939124 0 No Fcon
03-22 13:30 00:31 3208 7200 RESPOND.FAX 8939124 0 Bad Conn
03-22 13:31 00:28 3882 9600 RESPOND.FAX 8939124 2 Finished
03-23 14:42 00:26 3882 14400 RESPOND.FAX 8939124 1 Timeout
03-23 14:44 00:29 3882 NOFAX RESPOND.FAX 8939124 0 BlackLst
03-23 14:47 00:21 3882 NOFAX RESPOND.FAX 8939124 0 Max Busy
03-23 14:51 00:23 3882 14400 RESPOND.FAX 8939124 1 Gen Fail
03-23 14:54 00:05 3882 NOFAX RESPOND.FAX 8939124 0 No Dial


When BGFAX reports "Problematic fax reception", it will indicate a
fax hangup code, such as [+FHNG: 73]. This chart, taken from the
Supra CLASS_2.TXT fax command set documentation (which, I believe
was taken from the Rockwell Class 2 documentation), allows you to
match up the +FHNG message with its true meaning. For example,
+FHNG: 73 would indicate "T.30 T2 timeout, expected page not
received", which really does not say much, but it may give you
some clue. I don't know what most of these mean myself, so I
don't know whether it will provide you any luck or not, but, many
people asked that it be included, so here it is.

| 2.0 Class 2 | Cause Description |
| --------------|-------------------------------------------------|
| 00 0 | Normal and proper end of connection |
| 01 1 | Ring Detect without successful handshake |
| 02 2 | Call aborted, from +FK/+FKS or |
| 03 3 | No Loop Current |
| 04 4,n/a | Ringback detected, no answer (timeout) |
| 05 n/a | Ringback detected, answer without CED |
| 10 10 | Unspecified Phase A error |
| 11 11 | No Answer (T.30 T1 timeout) |
| 20 20 | Unspecified Transmit Phase B error |
| 21 21 | Remote cannot receive or send |
| 22 22 | COMREC error in transmit Phase B |
| 23 23 | COMREC invalid command received |
| 24 24 | RSPEC error |
| 25 25 | DCS sent three times without response |
| 26 26 | DIS/DTC received 3 times; DCS not recognized |
| 27 27 | Failure to train at 2400 bps or +FMS/ |
| | +FMINSP value |
| 28 28 | RSPREC invalid response received |
| 40 40 | Unspecified Transmit Phase C error |
| 41 n/a | Unspecified Image format error |
| 42 n/a | Image conversion error |
| 43 43 | DTE to DCE data underflow |
| 44 n/a | Unrecognized Transparent data command |
| 45 n/a | Image error, line length wrong |
| 46 n/a | Image error, page length wrong |
| 47 n/a | Image error, wrong compression code |
| 50 50 | Unspecified Transmit Phase D error |
| 51 51 | RSPREC error |
| 52 52 | No response to MPS repeated 3 times |
| 53 53 | Invalid response to MPS |
| 54 54 | No response to EOP repeated 3 times |
| 55 55 | Invalid response to EOP |
| 56 56 | No response to EOM repeated 3 times |
| 57 57 | Invalid response to EOM |
| 58 58 | Unable to continue after PIN or PIP |
| 70 70 | Unspecified Receive Phase B error |
| 71 71 | RSPREC error (before TCF??) |
| 72 72 | COMREC error (after TCF??) |
| 73 73 | T.30 T2 timeout, expected page not received |
| 74 74 | T.30 T1 timeout after EOM received |
| 90 90 | Unspecified Receive Phase C error |
| 91 91 | Missing EOL after 5 seconds |
| n/a 92 | < Not assigned > /--- Rockwell only |
| 92 -Note-> 94 | Bad CRC or frame (ECM {or BFT} modes) |
| 93 93 | DCE to DTE buffer overflow |
| A0 100 | Unspecified Receive Phase D errors |
| A1 101 | RSPREC invalid response received |
| A2 102 | COMREC invalid response received |
| A3 103 | Unable to continue after PIN or PIP |
| n/a 120-255 | RESERVED CODES |


I would like to thank the following people for their assistance
during the beta test phase.

Bill Huther
Brian Wood
Russell Kroll
Ethan Brofman
Ed Lucas
...and many people from the Internet and FidoNet.

US Robotics, Hayes and Supra have also been very helpful in getting
BGFAX to work/work better with their modems.



If you use this program for more than four weeks you are required
to register it for its low cost of only $25 US DOLLARS. If you
cannot afford this we can work something out.

Please make sure BGFAX works for you BEFORE registering. If you
have a question or problem, I'll answer it (or say I don't know
the answer) whether you have registered or not. I receive so much
mail that it sometimes takes me up to two months to reply to your
question. Again, this is whether you are registered or not.
Voice contact is the only way you will be able to get prompt reply.

Registrations encourage frequent updates.

If you are paying by check or money order, please print out the
REGISTER.FRM file, fill it out, and mail it to my address. Please
try your best to make sure checks are drawn on a US bank.

If you are paying by credit card (Visa, Mastercard, Discover or
American Express) you can (1) mail the form to me, (2) fax the
form to me, (3) netmail the form to me, or (4) call my BBS and
open door #6 and quickly register.

You can also register with Authur Mol in the Netherlands. (See
the REGISTER.NL file for more info. I hope you speak Dutch 🙂

I will mail (or air mail) registration letters to everyone who
registers. They will include your registration codes. If you
should ever lose the codes, you can call my BBS and open door #6
to grab your codes off the BGFAX registration database.


B.J. Guillot

"Don't take a vacation while basting your Rick Roger's turkey."
-- Yan Can Cook, PBS television network

 December 14, 2017  Add comments

Leave a Reply