by Steven Flintham (15A) Introduction The 8BS messaging system aims to
provide a convienient method for
members to send in messages (both 999
and private) and program comments. 8BS
members use a program provided on this
disc to create their messages and then
send the resulting message file to the
editor on their submission disc.
The editor then uses another program to
read the message files and collect all
the messages, ready to be copied onto
the next issue.
Basic instructions When run, the program will ask you to
insert your 8BS submission disc. After
doing so, you should then press SPACE.
Note that the program assumes that the
submission disc is in the same format
as the disc you ran the program from.
For example, if you run the program
from an ADFS disc it will assume that
your submission disc is in ADFS as
well. In practice, you will probably
not need to worry about this.
You must NOT take your submission disc
out of the drive until you have
finished using the program. You must
also avoid pressing BREAK, particularly
when editing a message. To be on the
safe side, only press BREAK when at the
main menu or after quitting, although
it will probably be safe to do so at
any time when the disc drive is not
active.
If you have not created any messages
before, you will be asked for your user
ID. If you don't know it, it is
displayed in the top left-hand corner
of the 8BS disc menu.
Don't forget that you don't have to
create all of your messages at once -
because they are stored on disc you can
come back to them at a later date.
However, you must start with a blank
message file when you start creating
messages for a new issue, otherwise you
will ending up sending the old messages
twice.
Having entered your user ID if
necessary, you will be presented with
the main menu. This has several
options, which are covered here one by
one.
New message This allows you to create a new
message. On selecting it, you will be
asked to enter the ID of the user who
is to receive the message. You can:
1. Enter an individual member's ID, in
which case he/she will receive the
message privately
2. Enter 999, in which case the message
will end up in the "Messages and ads"
section
3. Enter CCC, in which case the message
will be treated as comments on a
program
Once the destination ID has been
entered, the main editing screen will
appear. The program automatically puts
a heading at the top of the message.
You may want to add your name after
your user ID, so that it reads (for
example):
From: 15A (Steven Flintham) instead of
From: 15A
This is not done automatically because
some members may wish to remain
anonymous.
When you enter the editing screen the
cursor is automatically positioned so
that you can type in either the subject
of the message or the title of the
program to which the comment relates,
depending on whether the message is a
program comment or not.
Editing a message In editing mode you can use the cursor
keys to move around the message.
Pressing SHIFT with the left or right
cursor keys will move you to the start
or end of the current line and pressing
SHIFT with the up or down cursor keys
will move you up and down a page at a
time.
Pressing RETURN will move the cursor to
the left hand edge of the next line
down. DELETE will delete backwards as
in a wordprocessor, closing up the gap
created by moving the rest of the line
to the left. You can insert a space at
the cursor by pressing CTRL-f6.
You can type normally, but there is no
word wrap so you must press RETURN at
the end of each line to avoid splitting
words.
Teletext colour codes, which alter the
colour of the text, can be entered by
pressing f0-f6. These take up one
character space. I would suggest that
you put a teletext colour code at the
start of each line.
When editing you can press CTRL-f9 for
help.
Note that editing the "To:" line at the
top of the message will NOT change the
destination of the message. You must
edit the "To:" line and also press
SHIFT-f9 and enter the new destination.
View/edit the messages This allows you to browse through the
messages that you have created. Use the
cursor up and down keys to scroll
through each message and the cursor
left and right keys to move from
message to message. Note that the
recipient of the message is shown at
the bottom of the screen - this is the
destination which will actually be used
by the editor.
You can delete a message here by
pressing D and answering Y to the "Are
you sure?" question. A limited amount
of recovery of deleted messages is
possible, but you should not rely on
this.
Pressing E will allow you to edit a
message. Once this has been selected,
the program behaves as described in the
section "Editing a message" above.
Pressing f0 will display a help screen
when viewing.
Tidying the messages Without going into details (see later
if you want them), this can be
described using an analogy. Suppose you
are using a ring binder for some work.
You can add new pages and modify pages
already in the binder. When you want to
get rid of a page, instead of taking it
out of the folder you just put a big
red X across it. When the folder starts
to bulge a bit and you find all these
unwanted pages getting in the way, you
might actually go through the folder
and throw all the X-ed pages in the
bin. This is effectively what the tidy
option does - it goes through the
message file and actually removes the
messages which have just had an
electronic X marked over them.
Re-enter your user ID This allows you to re-enter your user
ID if you typed it in incorrectly when
you first ran the program. If you do
have to do this, you will have to edit
any messages you created earlier, as
these will still have your incorrectly
entered ID on.
Quit This returns you to BASIC.
Advanced editing facilities
In addition to the editing facilities
described above, the program also
supports most of the effects possible
in mode 7.
Graphics are supported to a limited
extent. Graphics colour codes can be
inserted using SHIFT-f0 to SHIFT-f6 and
a "pixel toggling" mode can be entered
by pressing f9. This allows you to
toggle the pixels of the graphics
character at the cursor using Q, W, A,
S, Z and X. You can still scroll around
the message using the cursor keys but
no text can be entered. Press f9 again
to exit pixel toggling.
f7 and f8 insert steady and flashing
codes respectively, and SHIFT-f7 and
SHIFT-f8 insert coloured and black
background codes. CTRL-f0 and CTRL-f1
insert contiguous and separated
graphics codes, CTRL-f2 and CTRL-f3
insert hold and release graphics codes
and CTRL-f4 and CTRL-f5 insert double
and single height codes.
Note that you must enter the text on
both lines yourself when using double
height. This is not done automatically
as this might lead to a line of text
being deleted if the double height key
was pressed accidentally.
Tidy messages When you delete a message, the program
just sets a flag in the message file
which says "ignore this message". These
messages are not displayed when
browsing and will only reveal their
presence by slightly slowing things
down when you move from one message to
the next. However, they also increase
the file size and so, for either of
these reasons, you might want to get
rid of them. The tidy option recreates
the message file with these deleted
messages missing.
It is worth noting that although the
collection program used by the editor
happily ignores deleted messages, he
could (theoretically at least!) look
through your message file and see any
deleted messages which you had not
tidied away. If you are feeling
paranoid, you might want to make sure
you tidy the file before you send the
submission disc off! Doing this is
probably be a good idea anyway, as it
will reduce the time taken for the
editor to handle the messages.
Undelete messages This option will remove the deleted
flag from any messages which have one.
It will therefore enable you to get a
message back after you have deleted it,
provided the file has not been tidied
in the meantime. However, you should
only do this as a last resort because:
1. The program will recover EVERY
deleted message, and there will almost
certainly be a lot of them (every time
a message is edited the old copy is
marked as deleted, so just editing an
existing message creates a deleted
message). This means that you will have
to re-delete a lot of messages which
you definitely don't want.
2. The program only allows 25 undeleted
messages in a message file, but there
is no limit on deleted messages.
Therefore, as you undelete the number
of messages in the file approaches the
maximum. Once there are 25 undeleted
messages, no more can be undeleted and
so you may not be able to get back the
message you wanted. You can reduce the
risk of this happening by tidying the
file regularly to keep the number of
deleted messages in the file as low as
possible.
As stated above, this really is a last
resort - avoid using it if at all
possible.
Technical information If you want to write utilities of your
own to modify the message file the file
format is given here. You could, for
instance, write a utility which would
display each deleted message in turn,
ask if it was the one you wanted and
only undelete it if necessary - this
would overcome many of the problems
mentioned earlier, and the only reason
I didn't do it like this in the program
itself is because of memory
constraints. I might write some
utilities for the message files myself,
and no doubt at least one or two 8BS
members will have some ideas.
The file format is:
Sender's ID (read using BASIC's INPUT
#<channel>,string$)
Number of undeleted messages (read
using BASIC's INPUT
#<channel>,integer%)
and then for each message:
Destination ID (read using BASIC's
INPUT #<channel>,string$)
Deleted flag (read using BASIC's BGET
#<channel> - 0 for undeleted, 255 for
deleted)
The message itself - pure mode 7 "text"
including control codes if appropriate
and terminated by a 152 byte
Note that since deleted messages are
not included in the count at the
beginning of the file, if you are
reading the messages in a FOR-NEXT loop
you must use something like:
FOR read%=1 TO num`of`messages%
REPEAT
INPUT #chan%,dest$
deleted%=BGET #chan%
IF deleted%=255 THEN REPEAT:byte%=BGET
#chan%:UNTIL byte%=152:REM Skip deleted
messages
UNTIL deleted%=0
REM Read the message and do whatever
you want with it
NEXT
i.e. you must read any deleted messages
without it taking a whole pass around
the loop.
Of course, this problem will not arise
if you use a REPEAT:REM read
message:UNTIL EOF #chan% construct.
Although these examples use BASIC,
there is nothing to stop you from using
any language you want, provided you can
interpret the strings/integers stored
in BBC BASIC format.