by Steven Flintham (15A) Introduction The 8BS messaging system aims toprovide a convienient method formembers to send in messages (both 999and private) and program comments. 8BSmembers use a program provided on thisdisc to create their messages and thensend the resulting message file to theeditor on their submission disc. The editor then uses another program toread the message files and collect allthe messages, ready to be copied ontothe next issue. Basic instructions When run, the program will ask you toinsert your 8BS submission disc. Afterdoing so, you should then press SPACE.Note that the program assumes that thesubmission disc is in the same formatas the disc you ran the program from.For example, if you run the programfrom an ADFS disc it will assume thatyour submission disc is in ADFS aswell. In practice, you will probablynot need to worry about this. You must NOT take your submission discout of the drive until you havefinished using the program. You mustalso avoid pressing BREAK, particularlywhen editing a message. To be on thesafe side, only press BREAK when at themain menu or after quitting, althoughit will probably be safe to do so atany time when the disc drive is notactive. If you have not created any messagesbefore, you will be asked for your userID. If you don't know it, it isdisplayed in the top left-hand cornerof the 8BS disc menu. Don't forget that you don't have tocreate all of your messages at once -because they are stored on disc you cancome back to them at a later date.However, you must start with a blankmessage file when you start creatingmessages for a new issue, otherwise youwill ending up sending the old messagestwice. Having entered your user ID ifnecessary, you will be presented withthe main menu. This has severaloptions, which are covered here one byone. New message This allows you to create a newmessage. On selecting it, you will beasked to enter the ID of the user whois to receive the message. You can: 1. Enter an individual member's ID, inwhich case he/she will receive themessage privately 2. Enter 999, in which case the messagewill end up in the "Messages and ads"section 3. Enter CCC, in which case the messagewill be treated as comments on aprogram Once the destination ID has beenentered, the main editing screen willappear. The program automatically putsa heading at the top of the message.You may want to add your name afteryour user ID, so that it reads (forexample): From: 15A (Steven Flintham) instead ofFrom: 15A This is not done automatically becausesome members may wish to remainanonymous. When you enter the editing screen thecursor is automatically positioned sothat you can type in either the subjectof the message or the title of theprogram to which the comment relates,depending on whether the message is aprogram comment or not. Editing a message In editing mode you can use the cursorkeys to move around the message.Pressing SHIFT with the left or rightcursor keys will move you to the startor end of the current line and pressingSHIFT with the up or down cursor keyswill move you up and down a page at atime. Pressing RETURN will move the cursor tothe left hand edge of the next linedown. DELETE will delete backwards asin a wordprocessor, closing up the gapcreated by moving the rest of the lineto the left. You can insert a space atthe cursor by pressing CTRL-f6. You can type normally, but there is noword wrap so you must press RETURN atthe end of each line to avoid splittingwords. Teletext colour codes, which alter thecolour of the text, can be entered bypressing f0-f6. These take up onecharacter space. I would suggest thatyou put a teletext colour code at thestart of each line. When editing you can press CTRL-f9 forhelp. Note that editing the "To:" line at thetop of the message will NOT change thedestination of the message. You mustedit the "To:" line and also pressSHIFT-f9 and enter the new destination.View/edit the messages This allows you to browse through themessages that you have created. Use thecursor up and down keys to scrollthrough each message and the cursorleft and right keys to move frommessage to message. Note that therecipient of the message is shown atthe bottom of the screen - this is thedestination which will actually be usedby the editor. You can delete a message here bypressing D and answering Y to the "Areyou sure?" question. A limited amountof recovery of deleted messages ispossible, but you should not rely onthis. Pressing E will allow you to edit amessage. Once this has been selected,the program behaves as described in thesection "Editing a message" above. Pressing f0 will display a help screenwhen viewing. Tidying the messages Without going into details (see laterif you want them), this can bedescribed using an analogy. Suppose youare using a ring binder for some work.You can add new pages and modify pagesalready in the binder. When you want toget rid of a page, instead of taking itout of the folder you just put a bigred X across it. When the folder startsto bulge a bit and you find all theseunwanted pages getting in the way, youmight actually go through the folderand throw all the X-ed pages in thebin. This is effectively what the tidyoption does - it goes through themessage file and actually removes themessages which have just had anelectronic X marked over them. Re-enter your user ID This allows you to re-enter your userID if you typed it in incorrectly whenyou first ran the program. If you dohave to do this, you will have to editany messages you created earlier, asthese will still have your incorrectlyentered ID on. Quit This returns you to BASIC. Advanced editing facilities In addition to the editing facilitiesdescribed above, the program alsosupports most of the effects possiblein mode 7. Graphics are supported to a limitedextent. Graphics colour codes can beinserted using SHIFT-f0 to SHIFT-f6 anda "pixel toggling" mode can be enteredby pressing f9. This allows you totoggle the pixels of the graphicscharacter at the cursor using Q, W, A,S, Z and X. You can still scroll aroundthe message using the cursor keys butno text can be entered. Press f9 againto exit pixel toggling. f7 and f8 insert steady and flashingcodes respectively, and SHIFT-f7 andSHIFT-f8 insert coloured and blackbackground codes. CTRL-f0 and CTRL-f1insert contiguous and separatedgraphics codes, CTRL-f2 and CTRL-f3insert hold and release graphics codesand CTRL-f4 and CTRL-f5 insert doubleand single height codes. Note that you must enter the text onboth lines yourself when using doubleheight. This is not done automaticallyas this might lead to a line of textbeing deleted if the double height keywas pressed accidentally. Tidy messages When you delete a message, the programjust sets a flag in the message filewhich says "ignore this message". Thesemessages are not displayed whenbrowsing and will only reveal theirpresence by slightly slowing thingsdown when you move from one message tothe next. However, they also increasethe file size and so, for either ofthese reasons, you might want to getrid of them. The tidy option recreatesthe message file with these deletedmessages missing. It is worth noting that although thecollection program used by the editorhappily ignores deleted messages, hecould (theoretically at least!) lookthrough your message file and see anydeleted messages which you had nottidied away. If you are feelingparanoid, you might want to make sureyou tidy the file before you send thesubmission disc off! Doing this isprobably be a good idea anyway, as itwill reduce the time taken for theeditor to handle the messages. Undelete messages This option will remove the deletedflag from any messages which have one.It will therefore enable you to get amessage back after you have deleted it,provided the file has not been tidiedin the meantime. However, you shouldonly do this as a last resort because: 1. The program will recover EVERYdeleted message, and there will almostcertainly be a lot of them (every timea message is edited the old copy ismarked as deleted, so just editing anexisting message creates a deletedmessage). This means that you will haveto re-delete a lot of messages whichyou definitely don't want. 2. The program only allows 25 undeletedmessages in a message file, but thereis no limit on deleted messages.Therefore, as you undelete the numberof messages in the file approaches themaximum. Once there are 25 undeletedmessages, no more can be undeleted andso you may not be able to get back themessage you wanted. You can reduce therisk of this happening by tidying thefile regularly to keep the number ofdeleted messages in the file as low aspossible. As stated above, this really is a lastresort - avoid using it if at allpossible. Technical information If you want to write utilities of yourown to modify the message file the fileformat is given here. You could, forinstance, write a utility which woulddisplay each deleted message in turn,ask if it was the one you wanted andonly undelete it if necessary - thiswould overcome many of the problemsmentioned earlier, and the only reasonI didn't do it like this in the programitself is because of memoryconstraints. I might write someutilities for the message files myself,and no doubt at least one or two 8BSmembers will have some ideas. The file format is: Sender's ID (read using BASIC's INPUT#<channel>,string$) Number of undeleted messages (readusing BASIC's INPUT#<channel>,integer%) and then for each message: Destination ID (read using BASIC'sINPUT #<channel>,string$) Deleted flag (read using BASIC's BGET#<channel> - 0 for undeleted, 255 fordeleted) The message itself - pure mode 7 "text"including control codes if appropriateand terminated by a 152 byte Note that since deleted messages arenot included in the count at thebeginning of the file, if you arereading the messages in a FOR-NEXT loopyou 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 deletedmessages UNTIL deleted%=0 REM Read the message and do whateveryou want with it NEXT i.e. you must read any deleted messageswithout it taking a whole pass aroundthe loop. Of course, this problem will not ariseif you use a REPEAT:REM readmessage:UNTIL EOF #chan% construct. Although these examples use BASIC,there is nothing to stop you from usingany language you want, provided you caninterpret the strings/integers storedin BBC BASIC format.