Document Reflects Features through PRMBS version 0.98S Document Reflects Features through PRMBS version 0.98S Document Reflects Features through PRMBS version 0.98S
Packet Radio MailBox System (PRMBS) is a program to run on an PRMBS
IBM-PC or clone under PC(MS)-DOS 3.xx. It interfaces into the
current American/Canadian amateur packet radio networks and may
send and receive mail via the W0RLI mail forwarding protocol.
PRMBS is written in C and is primarily compiled under the PRMBS
MicroSoft C Compiler Version 4.0. The code is the exclusive work
of KA2BQE and NN2Z, with some contributions from others as will
be noted. The starting point of the code was an early (Sept-Oct
'86) pre-release of the W0RLI/VE3GYQ C BBS code. Through pre-
release version 0.60 of PRMBS the code in essence followed the PRMBS
structure of the C BBS. At that point radical alterations were
made to the point that there is little resemblance to its
forbears.
The current code retains a few routines from the C BBS from
W0RLI/VE3GYQ mixed with some MSDOS directory routines from B.
Garbee from KA9Q's NET.EXE suite, and a number of adaptations of
generic command parsing routines from UNIX and other sources.
*** NOTE *** A complete revised up to date doc for release *** NOTE *** *** NOTE ***
1.0 is in the works. It just takes time - please bear with the
disorganized nature of what is here.
Brian B. Riley , KA2BQE
c/o Stormylea Ltd.
86 Burnt House Road
Indian Mills, New Jersey
08088 (USA)
CIS: 71420,3543
Phone: (609) 268-9497 - voice and tape answering machine
(609) 268-9597 - data BBS 300/1200/18n - 24 hours
Xmodem, Xmodem batch, Ymodem batch
supported for downloads
(temporarily unavailable)
(609) 859-1910 - W2XQ RBBS system 3/12/2400 baud 1/8/n
MAIL TRANSFER / FORWARDING / EVENT SCHEDULING and SMART BBSes MAIL TRANSFER / FORWARDING / EVENT SCHEDULING SMART BBSes MAIL TRANSFER / FORWARDING / EVENT SCHEDULING SMART BBSes
(Under PRMBS in 0.98C and Later) PRMBS
The term 'smart BBSes' may throw you. But eh PRMBS code pioneered
the concept of the system IDing itself at connection time and passing
information relative to its status to the connecting system. A
protocol has been arrived at and it is as follows.
A connecting system upon being greeted by a 'smart system' ID (in
the form [......] "..." indicating some variable information plu s the
usual BBS prompt, will respond with its corresponding ID string
("[....]"), a system being connected too upon recieving this prompt
where it expects a command, will simply 'eat' the ID string, parse its
contents and do what it will based on that information, then respond
with a BBS prompt. The second prompt IS REQUIRED!
PRMBS sends an ID string in the form [PRMBS-1234-098p], the PRMBS [PRMBS-1234-098p] PRMBS [PRMBS-1234-098p]
middle number is the amount of disk space in KBytes available for
messages, and the 098p is the revision level of the software. The
'final' format of the ID string will be as discussed in Appendix B,
a preliminary spec agreed upon by WA7MBL and myself. This form will be
used in the 0.99 Beta test release and, of course, 1.00 .
The setup and use of the new event structure seems overly complex
to many because it is so radically different from what was before.
In the past you had to have sometimes three and four copies of
the same list of calls in place for each BBS that could take say
'southbound' mail. Then if one of those calls moved from Virginia to
Boston, in every place you referred it and change it. Then if all of
those stations became unavailable for whatever reason, and you wished
to hump the mail up to an alternate, you had to make yet a 5th copy.
In the new PRMBS structure it could be done in the following manner; PRMBS
Lets look at my position here in Indian Mills, I have the following
'generic directions of mail flow'
SOUTH NORTH NWEST WORMHOLE WB2MNF K3DSM WB2DRD SOUTH NORTH NWEST WORMHOLE WB2MNF K3DSM WB2DRD SOUTH NORTH NWEST WORMHOLE WB2MNF K3DSM WB2DRD
each of these may translate (I will explain my use of 'may' to
qualify this statement in a moment) into a file called xxxxx.FWD.
Using those filenames I build my EVENT file;
M 0100 FWD B W3IWI SOUTH WORM M 0100 FWD B W3IWI SOUTH WORM M 0100 FWD B W3IWI SOUTH WORM
M 0100 FWD B N4QQ SOUTH WORM M 0100 FWD B N4QQ SOUTH WORM M 0100 FWD B N4QQ SOUTH WORM
M 0100 FWD B WB3FFV SOUTH WORM M 0100 FWD B WB3FFV SOUTH WORM M 0100 FWD B WB3FFV SOUTH WORM
M 0100 FWD B WB2DRD M 0100 FWD B WB2DRD M 0100 FWD B WB2DRD
M 0100 FWD B KB3UD NWEST M 0100 FWD B KB3UD NWEST M 0100 FWD B KB3UD NWEST
M 0100 FWD B WB2MNF M 0100 FWD B WB2MNF M 0100 FWD B WB2MNF
M 0100 FWD B N2EVW NORTH M 0100 FWD B N2EVW NORTH M 0100 FWD B N2EVW NORTH
M 0100 FWD B K3DSM M 0100 FWD B K3DSM M 0100 FWD B K3DSM
M 0100 FWD B WB2YZS M 0100 FWD B WB2YZS M 0100 FWD B WB2YZS
M 0100 FWD B K3GYS M 0100 FWD B K3GYS M 0100 FWD B K3GYS
M 0100 FWD B -P WB2RVX NORTH NWEST SOUTH WORM WB2MNF K3DSM M 0100 FWD B -P WB2RVX NORTH NWEST SOUTH WORM WB2MNF K3DSM M 0100 FWD B -P WB2RVX NORTH NWEST SOUTH WORM WB2MNF K3DSM
M 0100 FWD B2 -P WB2RVX NORTH NWEST SOUTH WORM WB2MNF K3DSM M 0100 FWD B2 -P WB2RVX NORTH NWEST SOUTH WORM WB2MNF K3DSM M 0100 FWD B2 -P WB2RVX NORTH NWEST SOUTH WORM WB2MNF K3DSM
Upon getting a FWD command the system takes the first argument
after the port (or optional command arguments '-') as the
destination BBS and the @BBS address to be searched. So first it looks
through at the name W3IWI and builds a filename "FWD\W3IWI.FWD" and
checks for its existence, if it does exists it opens the file and
starts reading possible @BBSes and comparing to the MAIL.DAT if a
match is found and no RF connection has been started, a Connect
sequence is initiated. A failed Connect sequence will cause this FWD
to abort and go to next one. If the connect is made, the mail is then
forwarded, each entry of the FWD file is read and appropriate mail is
forwarded. If the FWD file did not exist, the MAIL.DAT would simply
have been checked for @W3IWI. A similar sequence continues for each
subsequent argument on the FWD command line. Each subsequent argument
is additionally is checked for the presence of a '*' or '?' wildcard,
in which case it is assumed not to be a filename. AS with before if no
RF connection has been established, once a 'match' is found it will
be.
The state of the RF connection is checked from the start, so, if
you have connected to a station via terminal mode and then decide to
move some mail to him you can simply type something like;
FWD B W3IWI WB9XXX FWD B W3IWI WB9XXX FWD B W3IWI WB9XXX
The system will sense that the connection has been made and will
forward the mail as soon as it finds it.
Since no file is needed to simply forward mail that is @BBS, I am
able to use a mere 5 files (WEST, NWEST, SOUTH, NORTH, WWORM) to serve
13 BBSes.
But wait, there's more! Lets say that for whatever reason I am
unable to move things the way I want to and need to get the mail out.
Like maybe my radio goes down, or the DRD netroms get hosed, these
simple files can be used from the console in the following manners:
to simply move my mail to a disk file to be imported into and
MBL or PRMBS system with the SERVER function; PRMBS
EXPORT mail.out NORTH NWEST SOUTH EXPORT mail.out NORTH NWEST SOUTH EXPORT mail.out NORTH NWEST SOUTH
the EXPORT function of the SERVER capability works exactly the
same as the FWD, only the first argument a file name. The same code is
used as in the FWD function, just two internal flags divert output to
disk and prevent RF connections from being established. No new files
need be created, no files need be edited.
If on the other hand you are running OK and you are the recipient
USER Commands - available to all users, LOCAL, REMOTE and REMOTE SYSOP USER Commands - available to all users, LOCAL, REMOTE and REMOTE SYSOP USER Commands - available to all users, LOCAL, REMOTE and REMOTE SYSOP
REMOTE SYSOP Commands: available to LOCAL Console and R/Sys REMOTE SYSOP Commands: available to LOCAL Console and R/Sys REMOTE SYSOP Commands: available to LOCAL Console and R/Sys
>> Delete a file: "del" (delfiles) Delete a file Delete a file
"del [path]\filename"
Simple delete a file. Unambiguous file name required (i.e. no
wildcards!). MUltiple files may be deleted on the same command line,
just specify additional file names separated by a space.
>> Delete a user from user file: "deluser" (deluser) Delete a user from user file Delete a user from user file
"deluser call"
When you delete the user, the call stays in the file except the
first character of the call is replace with a '*' and the 'delete
flag' is set in his record. The call will stay until a 'GU' command
(untangle user file) at which point it will not be copied to the new
This procedure allows execution of a script of commands that may
be direct port access commands to the serial lines to the TNCs, modems
or other computers, DOS escape commands, and any SYSOP or LOCAL
command. The format of the file is shown below;
X H1H2C xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx X H1H2C xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx X H1H2C xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
X - is the event type D (DOS command), M (Mailbox commands),
P (port commands)
H1 - start hour of the permitted period of the event
H2 - end hour of the permitted period of the event
C - cycle - may be E (even hours only), O (Odd hours only), A or
<space> (All hours), 3,4,6,8 (on hours evenly divisible by
that number)
xxx..xxx - the arguements or commands for the event.
I have included below sample of my own event file, below;
D 0100 FWD_DOS1 D 0100 FWD_DOS1 D 0100 FWD_DOS1
P 0100 A P 0100 A P 0100 A
TXD 26 TXD 26 TXD 26
BT [ BBS Forwarding Mail ] BT [ BBS Forwarding Mail ] BT [ BBS Forwarding Mail ]
B E 90 B E 90 B E 90
MAXFRAME 2 MAXFRAME 2 MAXFRAME 2
RETRY 12 RETRY 12 RETRY 12
*** EOF *** EOF *** EOF
M 0100 clean M 0100 clean M 0100 clean
M 0100 fwd A2 K3DSM M 0100 fwd A2 K3DSM M 0100 fwd A2 K3DSM
M 0100 fwd A N2EVW NORTH M 0100 fwd A N2EVW NORTH M 0100 fwd A N2EVW NORTH
M 0100 fwd A2 N2EVW NORTH M 0100 fwd A2 N2EVW NORTH M 0100 fwd A2 N2EVW NORTH
M 0100 fwd A N3ET M 0100 fwd A N3ET M 0100 fwd A N3ET
M 0100 fwd A W3IWI SOUTH WORM M 0100 fwd A W3IWI SOUTH WORM M 0100 fwd A W3IWI SOUTH WORM
M 0100 fwd A N4QQ SOUTH WORM M 0100 fwd A N4QQ SOUTH WORM M 0100 fwd A N4QQ SOUTH WORM
M 0100 fwd A WB3FFV SOUTH WORM M 0100 fwd A WB3FFV SOUTH WORM M 0100 fwd A WB3FFV SOUTH WORM
M 0100 fwd A WB2MNF M 0100 fwd A WB2MNF M 0100 fwd A WB2MNF
M 0707 fwd A KB3UD NWEST M 0707 fwd A KB3UD NWEST M 0707 fwd A KB3UD NWEST
M 0100 fwd A WB2YZS M 0100 fwd A WB2YZS M 0100 fwd A WB2YZS
M 0100 fwd A -P WB2RVX WEST NWEST SOUTH WORM NORTH M 0100 fwd A -P WB2RVX WEST NWEST SOUTH WORM NORTH M 0100 fwd A -P WB2RVX WEST NWEST SOUTH WORM NORTH
M 0100 fwd A2 -P WB2RVX WEST NWEST SOUTH WORM NORTH M 0100 fwd A2 -P WB2RVX WEST NWEST SOUTH WORM NORTH M 0100 fwd A2 -P WB2RVX WEST NWEST SOUTH WORM NORTH
*** EOF *** EOF *** EOF
M 2306 chat on M 2306 chat on M 2306 chat on
M 0722 chat off M 0722 chat off M 0722 chat off
M 0100 clean M 0100 clean M 0100 clean
P 0100 A P 0100 A P 0100 A
D D D
D D D
TXDELAY 26 TXDELAY 26 TXDELAY 26
*** EOF *** EOF *** EOF
D 0202 COPY MAIL.DAT MAIL02.DAT D 0202 COPY MAIL.DAT MAIL02.DAT D 0202 COPY MAIL.DAT MAIL02.DAT
D 1010 COPY MAIL.DAT MAIL10.DAT D 1010 COPY MAIL.DAT MAIL10.DAT D 1010 COPY MAIL.DAT MAIL10.DAT
D 1818 COPY MAIL.DAT MAIL18.DAT D 1818 COPY MAIL.DAT MAIL18.DAT D 1818 COPY MAIL.DAT MAIL18.DAT
D 0202 COPY USER.DAT USER02.DAT D 0202 COPY USER.DAT USER02.DAT D 0202 COPY USER.DAT USER02.DAT
D 1010 COPY USER.DAT USER10.DAT D 1010 COPY USER.DAT USER10.DAT D 1010 COPY USER.DAT USER10.DAT
D 1818 COPY USER.DAT USER18.DAT D 1818 COPY USER.DAT USER18.DAT D 1818 COPY USER.DAT USER18.DAT
The FWD_DOS1 is a .BAT file which reads my RTC and erase stray
editor backup files that can accumulate whilst editing messages.
"Event" is also 'scheduled'; itself. In the configuration file
you specify the length of the event cycle, i.e. How often you wish to
run the cycle. Traditionally it is 60 minutes, but now maybe anything
from 1 to 1440 minutes. 60 minutes is normal and should generally be
used. As this will dovetail best with non-PRMBS systems. But where PRMBS
arrangements have been made and you are a dedicated mail system skeds
of 20 and 30 minutes can be done, or if its a portable station using a
AUXILIARY PROGRAMS for PRMBS AUXILIARY PROGRAMS for PRMBS AUXILIARY PROGRAMS for PRMBS
A number of prgrams may be used with and/or have been created for
use with the PRMBS programs. PRMBS
DoubleDOS (c) (Soft Logic) - a multi-tasking executive for the IBM- DoubleDOS (c) (Soft Logic) DoubleDOS (c) (Soft Logic)
PC and its clones which permits running two separate copies of DOS
simultaneously in the RAM space. PRMBS has specificially been coded PRMBS
to permit two entirely separate copies of the BBS to run
simultaneously sharing one mail file and one user file. The multi-
user flags internally yeild the CPU during 'waste-time loops' and
help optimize the performance. True multi-user capacbility is
achieved for up to one user on each of two ports.
SWATCH.BAT (WB2DRD, later mods by WB2YZS) - a simple BAT file which SWATCH.BAT (WB2DRD, later mods by WB2YZS) SWATCH.BAT (WB2DRD, later mods by WB2YZS)
displays color 'swatches' along with the appropriate ANSI sequences
to reproduce it, so a SYSOP can select his color sequences for the
BBS.
MBFIX.EXE (NN2Z and a little KA2BQE) - a program to read a MBFIX.EXE (NN2Z and a little KA2BQE) MBFIX.EXE (NN2Z and a little KA2BQE)
destroyed MAIL>DAT file and attempt to recover it. In the current
state of the BBS it is rarely needed, but if a power outgae were to
occur in the middle of a kill message sequence a forward or
backward link can be broken. MBFIX will repair it. MBFIX can also
be used to renumber your mail file and its associated message text
files starting at 00001 . This is suggested for those systems that
are not happy with 5 digit message numbers or even 4 digit message
numbers and can logically be done at the first of any given year
which should generally keep the message numbers down to 4 digigts
for most of the year, with a few very busy systems going into 5
digits towards the latter part of the year. I also suggest year
start for this renumbering for accountability reasons the message
ID 1234@KA2BQE in 1988 explicitly defines the message to which you
refer. It is extremely unlikely that any system would exceed the
65535 message number limit (at that point, the number 'rolls over
to 0, i.e. 65536 == 0 , and on up again)
SORTUSER.EXE (NN2Z) - takes the USER.DAT and will sort it into SORTUSER.EXE (NN2Z) SORTUSER.EXE (NN2Z)
descending order by the most recent login date, or alphabetically
by call. Since to provide USER.DAT file security that file is
searched brute force from front to back, by sorting it into
descending login date order you place the calls that login most
recently to the front and therefore most likely to login again. If
someone hasn't logged in for 2 months he doesn't need prompt
service.(though the difference is but 20 seconds even for 400 users)
LFAP-02A.EXE (WB2ENA) - A modification to the WA7DCH LFA (Log File LFAP-02A.EXE (WB2ENA) LFAP-02A.EXE (WB2ENA)
Analyzer) specifically for PRMBS. Prints monthly summaries to disk. PRMBS
TRANSLOG.COM (WB2ENA)P - program created by WB2ENA to take a large TRANSLOG.COM (WB2ENA)P TRANSLOG.COM (WB2ENA)P
PRMBS log file and separate it into monthly files. Can be run from PRMBS
DOS Escape in PRMBS Event scheduler and will clean out the log file PRMBS