USE CURSOR KEYS TO SCROLL TEXT. USE CURSOR KEYS TO SCROLL TEXT. The new 8BS messaging system The new 8BS messaging system 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. More advanced use More advanced use 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 _,string$) Number of undeleted messages (read using BASIC's INPUT _,integer%) and then for each message: Destination ID (read using BASIC's INPUT _,string$) Deleted flag (read using BASIC's BGET _ - 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.