Telephone-modem.

(Appendix 20)

 The FBB software allows the connection of a telephone modem on a serial
port.

This section is split into these parts:
Driver
Type of modem
Protocol
Wiring for external modem
Usage
Example of PORT.SYS for DosFBB
Example of PORT.SYS for WinFBB
Example of PORT.SYS for LinFBB
Example of INITTNCx.SYS for modem
Example of FORWARD.SYS

Driver:

The modem must be declared in PORT.SYS.

In WinFBB the necessary driver is in FBBCOMM.DRV.  This driver replaces
the original COMM.DRV supplied by WIndows.  

In DosFBB it is necessary to use the FBBIOS.COM program. This driver 
performs BBS to Modem interfacing. It is therefore necessary to load FBBIOS
prior to BBS start up. A line FBBIOS will be added ahead of APPEL.BAT file.
See below an example of the APPEL.BAT file.
Of course, the FBBIOS used will have to match the serial port on which the
modem is to be connected (address and IRQ).

In LinFBB it is necessary to compile the Linux Kernel with SLIP 
(serial line).

The modem-driver will modify the RS232 speed according to the CONNECT info
received from the modem :

 CONNECT 1200 set the driver to 1200 Baud.
 CONNECT 2400 set the driver to 2400 Baud.

 The driver is reset to the default speed rate (specified in PORT.SYS) at
disconnect.

 At connect, the text ; "xxxx BBS. Phone Access" is sent by default. This can
be modified by creating a file MODEM.ENT in the SYSTEM directory.

 You can specify in the PORT.SYS file that you accept connections, even if
the user is not registered. In this case, the connection will be "read-only",
the user has only a read only-access, he cannot download files or write
messages, except to the sysop.

 When a non-registered user is connected, he will be signified that he only
has a "read only access", and will be prompted to go on. If he answers "Y",
he will go to the BBS menu, else he will be asked again for a callsign.


Type of modem:

 Various experiments have been carried out with several different kinds of
(external, or internal cards) modems. If possible, modems at 14.400 or
better 28.800 bps should be used; the modem speed is to be declared in
PORT.SYS. Some modems can work different speeds, with an internal
speed conversion between the modem and the computer. For example, the modem
can transmit and receive on the telephone line at 14400 bps and talk to the
PC at 19200 bps.

 If the modem uses the HAYES protocol, the INITTNCx.SYS file must hold the
correct HAYES init lines for the modem.


Protocol:

 The configuration used is 1 start bit, 8 data bits, 0 parity, 1 stop bit,
that is to say 10 bits words during the transmission.

 The Minitel standard is not supported (7 bits, even parity).

 The software being parametered by default in 8 bits, it was not possible to
modify this protocol, as the binary file transfers are carried out on 8 bits.

 NB.: FBBIOS/FBBCOMM.DRV handles XON/XOFF protocol during the transmissions.

Wiring for external modems:

 The modem must be able to tell the BBS that a call has been detected with
the remote modem carrier detection. This is the reason why all the RS232
signals are used by the BBS. The RS232 cable has to be wired up pin to pin
with no inversion: pins 2, 3, 4, 5, 6, 7, 8, 20, and 22 of the DB25
connector.


Usage:

 BBS users are not authorized to connect the BBS through a modem as per the
default settings.

 The SysOp must declare the modem users. To do it, perform a user edition (EU
call) and put M (for Modem) then W pass_word. A password made of the three
last letters of the callsign can be attributed for the first connect. Then
the user will be able to change it through the NP command. The authorized
callsigns can be listed by the DM command.

 When a modem call occurs, once the modulations have been detected, the modem
advises the BBS that a connection is effective on the telephone line. Then
the BBS asks for the caller's call sign and password.

 The user is granted three tries before being disconnected. If everything is
all right, the user can access the same commands like connected on a radio
channel, he will have to disconnect using the B command.

 The log file is maintained for the connections through the modem channel.
Keep in mind to add a line in the LOGFBB.CNF file for the modem calls to be
processed in the stats analysis by LOGSTAT.

For WinFBB:
FBBCOMM.DRV is already installed when Windows is started.  So there is no
more driver to install for the modem.

For LinFBB:
Make sure you have compiled the Linux kernel with SLIP (serial line),
or if you compiled SLIP as module you must load this.

For DosFBB:
 Example of APPEL.BAT with FBBIOS for a modem connected to COM3/IRQ4 :
 echo off
 break off
 echo Press ^C to interrupt !
 sleep 3
 fbbios 3 03E8 4
 serv %1
 etc........


 Example of PORT.SYS file with 3 serial port used:
 COM1 for a TNC, COM2 for a TNC, COM3 for the modem.

Example for DosFBB:

 FBBIOS will have been previously configured for COM3 (3E8, IRQ 4).

# File for programming of channels and TNCs.
#
# Ports : How many ports (COM1, COM2, Etc...)
# TNCs : How many TNCs and modems in use. With multiplexer
# there can be up to 4 TNCs per port.
#
#Ports TNCs
3      3
#
#In WinFBB ONLY THESE interfaces are available:
# Interface : 2 = BPQ-node (BPQ in AA4RE-mode)
#             4 = DRSI
#             5 = TFPCR/TFPCX interface.  Interrupt MUST be 0xFD or the same
#                 as stated in INIT.SRV, if any..
#             6 = Windows-driver, replaces both ESS and FBBIOS.
#             7 = TCP/IP.  Needs WINSOCK.DLL.  Put port-address as 17.
#                 TNC-emulation is T (see below) 
#             8 = TFWin.dll
# BEWARE: The old interface 1 and 3 will NOT be used in WinFBB.  Interface 6
#         replaces both.  (FBBCOMM.DRV).  Neither ESS nor FBBIOS can be
#         used with WinFBB !
#
#In LinFBB ONLY this interface is available:
# Interface   9 = Linux.  Can work via serial port (D),via AX25 domain
#                 socket (X) or via Telnet port (T).
#
#In DosFBB ONLY THESE interfaces are available:
# Interface : 1 = Use external COMBIOS-driver (MBBIOS, ESS etc)
#             2 = BPQ-node v 4.05 and up (BPQ in AA4RE-mode)
#             3 = Telephone-modem with FBBIOS
#             4 = DRSI card with driver
#             5 = TFPCR/TFPCX interface.  Interrupt MUST be 0xFD or the same
#                 as stated in INIT.SRV, if any..
# Address   : Address of port in hexadecimal (Needed for multiplexer).
#             In LinFBB:
#             Address is the device name (/dev/cua0).
#             Be sure you have the rights to access to the device (rw-rw-rw-).
#             When using kernel AF_AX25 socket, address is not used.
#             When using Telnet, address is the Telnet port in Hex (Hex 17 = Telnet port 23)
# Baud      : Ports baud rate. Ignored by BPQ, kernel AF_AX25 socket and Telnet.
#
# Use same number of lines as number of ports.
#
#Com Interface Address (Hex) Baud
1    1         3F8           9600
2    1         2F8           9600
3    3         3E8           1200
#
# TNC     : Number on TNC in use.  Use 0 for file-forward !
# NbCh    : Number of channels I want to use in the TNC.
#           Maximum available channels depend on firmware.
# Com     : Number of the COM-port. Com1, Com2 etc.
# MultCh  : Number of channel if port-multiplexer is used, otherwise 1.
#           In DRSI use values from 0 to 7, by KAM use 1/VHF and 2/HF.
# Paclen  : PACLEN on this TNC.
# Maxframe: The maximum nb of frames the TNC will send at a time.
# NbFwd   : Number of channels for OUTGOING forward at same time.
# MxBloc  : Size of forward-block in kb.
# M/P-Fwd : Minute of the hour for start of forward, and period
#           (how many minutes between each forward-start).
# Port mode, one of these:
#           B : BBS-mode.
#           G : "Guest"-mode.
#           U : Normal-mode.
# Type host-mode, one of these:
#           D : WA8DED
#           K : KAM hostmode.
#           P : PK-232
#           Q : BPQ v 4.x
#           T : Ethernet/TCP-IP
#           X : AX25 domain socket (for Linux)
# Addition: One or more of these letters can be used too:
#           L : Send unproto beacon after each arriving mail.
#           M : Telephone-modem.
#           Y : Yapp allowed on this QRG.
#           W : Gateway allowed TO this QRG.
#           R : Modem port allowed in Read-only mode.
# Freq.   : Text to describe this port (max 9 characters, no space)
#
# Same number of lines as TNCs:
#
#TNC NbCh Com MultCh Pacln Maxfr NbFwd MxBloc M/P-Fwd Mode Freq
1    5    1   1      230   2      1      10   10/60   UDW  144.675
2    4    2   1      250   3      2       5   12/30  UDYW  430.675
3    1    3   1      128   2      0       5   00/60    UM  MODEM
#
# Special callsigns and modes for some channels.
#
#TNC Nbs Callsign-SSID Mode
1    1   LA1B-1        B
#
# End of file.
#


Same example for WinFBB:

 FBBCOMM.DRV is already loaded by Windows.

# File for programming of channels and TNCs.
#
# Ports : How many ports (COM1, COM2, Etc...)
# TNCs : How many TNCs and modems in use. With multiplexer
# there can be up to 4 TNCs per port.
#
#Ports TNCs
3      3
#
#In WinFBB ONLY THESE interfaces are available:
# Interface : 2 = BPQ-node (BPQ in AA4RE-mode)
#             4 = DRSI
#             5 = TFPCR/TFPCX interface.  Interrupt MUST be 0xFD or the same
#                 as stated in INIT.SRV, if any..
#             6 = Windows-driver, replaces both ESS and FBBIOS.
#             7 = TCP/IP.  Needs WINSOCK.DLL.  Put port-address as 17.
#                 TNC-emulation is T (see below) 
#             8 = TFWin.dll
# BEWARE: The old interface 1 and 3 will NOT be used in WinFBB.  Interface 6
#         replaces both.  (FBBCOMM.DRV).  Neither ESS nor FBBIOS can be
#         used with WinFBB !
#
#In LinFBB ONLY this interface is available:
# Interface   9 = Linux.  Can work via serial port (D),via AX25 domain
#                 socket (X) or via Telnet port (T).
#
#In DosFBB ONLY THESE interfaces are available:
# Interface : 1 = Use external COMBIOS-driver (MBBIOS, ESS etc)
#             2 = BPQ-node v 4.05 and up (BPQ in AA4RE-mode)
#             3 = Telephone-modem with FBBIOS
#             4 = DRSI card with driver
#             5 = TFPCR/TFPCX interface.  Interrupt MUST be 0xFD or the same
#                 as stated in INIT.SRV, if any..
# Address   : Address of port in hexadecimal (Needed for multiplexer).
#             In LinFBB:
#             Address is the device name (/dev/cua0).
#             Be sure you have the rights to access to the device (rw-rw-rw-).
#             When using kernel AF_AX25 socket, address is not used.
#             When using Telnet, address is the Telnet port in Hex (Hex 17 = Telnet port 23)
# Baud      : Ports baud rate. Ignored by BPQ, kernel AF_AX25 socket and Telnet.
#
# Use same number of lines as number of ports.
#
#Com Interface Address (Hex) Baud
1    6         3F8           9600
2    6         2F8           9600
3    6         3E8           1200
#
# TNC     : Number on TNC in use.  Use 0 for file-forward !
# NbCh    : Number of channels I want to use in the TNC.
#           Maximum available channels depend on firmware.
# Com     : Number of the COM-port. Com1, Com2 etc.
# MultCh  : Number of channel if port-multiplexer is used, otherwise 1.
#           In DRSI use values from 0 to 7, by KAM use 1/VHF and 2/HF.
# Paclen  : PACLEN on this TNC.
# Maxframe: The maximum nb of frames the TNC will send at a time.
# NbFwd   : Number of channels for OUTGOING forward at same time.
# MxBloc  : Size of forward-block in kb.
# M/P-Fwd : Minute of the hour for start of forward, and period
#           (how many minutes between each forward-start).
# Port mode, one of these:
#           B : BBS-mode.
#           G : "Guest"-mode.
#           U : Normal-mode.
# Type host-mode, one of these:
#           D : WA8DED
#           K : KAM hostmode.
#           P : PK-232
#           Q : BPQ v 4.x
#           T : Ethernet/TCP-IP
#           X : AX25 domain socket (for Linux)
# Addition: One or more of these letters can be used too:
#           L : Send unproto beacon after each arriving mail.
#           M : Telephone-modem.
#           Y : Yapp allowed on this QRG.
#           W : Gateway allowed TO this QRG.
#           R : Modem port allowed in Read-only mode.
# Freq.   : Text to describe this port (max 9 characters, no space)
#
# Same number of lines as TNCs:
#
#TNC NbCh Com MultCh Pacln Maxfr NbFwd MxBloc M/P-Fwd Mode Freq
1    5    1   1      230   2      1      10   10/60   UDW  144.675
2    4    2   1      250   3      2       5   12/30  UDYW  430.675
3    1    3   1      128   2      0       5   00/60    UM  MODEM
#
# Special callsigns and modes for some channels.
#
#TNC Nbs Callsign-SSID Mode
1    1   LA1B-1        B
#
# End of file.
#


Same example for LinFBB:
 Example of PORT.SYS file with 3 serial port used:
 COM1 (/dev/cua0) for a TNC, COM2 (/dev/cua1) for a TNC,
 COM3 (/dev/cua2) for the modem.

# File for programming of channels and TNCs.
#
# Ports : How many ports (COM1, COM2, Etc...)
# TNCs : How many TNCs and modems in use. With multiplexer
# there can be up to 4 TNCs per port.
#
#Ports TNCs
3      3
#
#In WinFBB ONLY THESE interfaces are available:
# Interface : 2 = BPQ-node (BPQ in AA4RE-mode)
#             4 = DRSI
#             5 = TFPCR/TFPCX interface.  Interrupt MUST be 0xFD or the same
#                 as stated in INIT.SRV, if any..
#             6 = Windows-driver, replaces both ESS and FBBIOS.
#             7 = TCP/IP.  Needs WINSOCK.DLL.  Put port-address as 17.
#                 TNC-emulation is T (see below) 
#             8 = TFWin.dll
# BEWARE: The old interface 1 and 3 will NOT be used in WinFBB.  Interface 6
#         replaces both.  (FBBCOMM.DRV).  Neither ESS nor FBBIOS can be
#         used with WinFBB !
#
#In LinFBB ONLY this interface is available:
# Interface   9 = Linux.  Can work via serial port (D),via AX25 domain
#                 socket (X) or via Telnet port (T).
#
#In DosFBB ONLY THESE interfaces are available:
# Interface : 1 = Use external COMBIOS-driver (MBBIOS, ESS etc)
#             2 = BPQ-node v 4.05 and up (BPQ in AA4RE-mode)
#             3 = Telephone-modem with FBBIOS
#             4 = DRSI card with driver
#             5 = TFPCR/TFPCX interface.  Interrupt MUST be 0xFD or the same
#                 as stated in INIT.SRV, if any..
#
# Address   : Address of port in hexadecimal (Needed for multiplexer).
#             In LinFBB:
#             Address is the device name (/dev/cua0).
#             Be sure you have the rights to access to the device (rw-rw-rw-).
#             When using kernel AF_AX25 socket, address is not used.
#             When using Telnet, address is the Telnet port in Hex (Hex 17 = Telnet port 23)
# Baud      : Ports baud rate. Ignored by BPQ, kernel AF_AX25 socket and Telnet.
#
# Use same number of lines as number of ports.
#
#Com Interface Address (Hex) Baud
1    9         /dev/cua0        9600
2    9         /dev/cua1        9600
3    9         /dev/cua2        1200
#
# TNC     : Number on TNC in use.  Use 0 for file-forward !
# NbCh    : Number of channels I want to use in the TNC.
#           Maximum available channels depend on firmware.
# Com     : Number of the COM-port. Com1, Com2 etc.
# MultCh  : Number of channel if port-multiplexer is used, otherwise 1.
#           In DRSI use values from 0 to 7, by KAM use 1/VHF and 2/HF.
# Paclen  : PACLEN on this TNC.
# Maxframe: The maximum nb of frames the TNC will send at a time.
# NbFwd   : Number of channels for OUTGOING forward at same time.
# MxBloc  : Size of forward-block in kb.
# M/P-Fwd : Minute of the hour for start of forward, and period
#           (how many minutes between each forward-start).
# Port mode, one of these:
#           B : BBS-mode.
#           G : "Guest"-mode.
#           U : Normal-mode.
# Type host-mode, one of these:
#           D : WA8DED
#           K : KAM hostmode.
#           P : PK-232
#           Q : BPQ v 4.x
#           T : Ethernet/TCP-IP
#           X : AX25 domain socket (for Linux)
# Addition: One or more of these letters can be used too:
#           L : Send unproto beacon after each arriving mail.
#           M : Telephone-modem.
#           Y : Yapp allowed on this QRG.
#           W : Gateway allowed TO this QRG.
#           R : Modem port allowed in Read-only mode.
# Freq.   : Text to describe this port (max 9 characters, no space)
#
# Same number of lines as TNCs:
#
#TNC NbCh Com MultCh Pacln Maxfr NbFwd MxBloc M/P-Fwd Mode Freq
1    5    1   1      230   2      1      10   10/60   UDW  144.675
2    4    2   1      250   3      2       5   12/30  UDYW  430.675
3    1    3   1      128   2      0       5   00/60    UM  MODEM
#
# Special callsigns and modes for some channels.
#
#TNC Nbs Callsign-SSID Mode
1    1   LA1B-1        B
#
# End of file.
#


Example of INITTNCx.SYS file for HAYES modem :

 #
 ATZ
 ATS0=1

Example of  FORWARD.SYS  file  to  forward  via  modem.  A  protocol with
correction (like MNP) must be used to avoid any modifications of texts. The
HAYES command ATDT dials the line, and when the connection is established,
the callsign (preceded with a "." to avoid echoing) is sent twice and then
the password. The callsign is sent twice in case of a problem the first time.
^M is the <return> variable.

 A LA1B
   #
   P C                                <-- Modem port.
   #
   C C F6FBB ATDT19~~~12345678^M      <-- Connects F6FBB using HAYES.
   V .F6FBB^M~~~.F6FBB^M~~~PASSWORD^M <--sends callsigns and password.
   #
   B LA1B
   F LA6CU
   #
 ------

 In the PORT.SYS file, the number of forward channels for the TNC (modem)
must be 1.