__ __ \/ Tommy's Holiday Camp +1 604 361 4549 \/ THC Presents... Condensed Documentation for Blue Board (64) 3.0/Modified With information concerning the special mods attached to this software. ----------------------------------------------------------------------------- Blue Board: Blue Board is the BBS software written by Martin Sikes for the C-64. Its ingenious use of RAM and tightly optimised machine code put Blue Board head and shoulders above any other C-64 BBS (and many Apple and IBM BBSes of its day) and far, far ahead of its time. Blue Board supports 300 and 1200 baud operation, multiple drives (including Hard drives provided they use standard CBM DOS commands and addressing), and the Epyx Fast-Load cartridge. If your primary drive is a 1571, even in C-64 mode you can use both sides of the drive, one side for the message base and one side for download files. Blue Board allows up to 9 file areas and 9 message bases, plus a tenth "secret" message base which is password protected. Blue Board allows up to 239 users including the sysop, and has a dual password/ID code user security system. Blue Board's entire userbase and all message pointers and file/message definitions are kept in a single file which is stored in RAM when the BBS is operating. This and the fact it is written in pure machine code comprise the secrets to its unparalleled speed. This modification of Blue Board: The version of Blue Board documented herein differs from the "official" Blue Board in several important respects. First, it offers users a "prompt scribble." Second, it gives the sysop an added degree of flexibility in that an additional prompt/text editor has been provided. You have complete control over what Blue Board tells your users. Blue Board Files: The following is a list and explanation of the files that come with Blue Board: BOOT V2 This is Blue Board's "Bootstrap" program. You run this to load Blue Board from disk, give it the current time, and specify a "data file" (explained later) and modem type to use. The modified version has been changed to default to the FIRST data file on the disk, and to default to a 1670 modem. These defaults can be changed by anyone with even rudimentary BASIC programming knowledge. MODEM1650.O These files are the Modem Driver sub-programs. In order MODEM1660.O to conserve precious RAM, only ONE modem type is ever MODEM1670.O actually supported; the supported modem is defined by MODEMHAYES.O loading one of the modem driver files (usually in BOOT V2) NOVOTES.O BOOT V2 will load one of these files, depending on whether VOTES.O or not you want to enable Blue Board's voting function. If you want votes, VOTES.O is a subprogram which loads into the high portion of the C000 block and provides users with up to eight "Yes/No/Don't-care" type votes. If you don't want votes, have BOOT V2 load NOVOTES.O, and users attempting to select votes will be told that votes are not available. FILE XFER.O One of these files will be loaded, depending on whether NOXFER.O you want a file section. If you only have one drive, DO NOT load FILE XFER.O, as the first drive (device 8) is specially formatted and cannot be used for downloads. This will be explained later. FILE XFER.O is a subprogram offering file transfers using Xmodem-checksum or straight ASCII dump for text files. If you have two or more drives, it is reccommended that you use at least one for a file section since it won't be much use otherwise. SET UP The SET UP program initializes a DATA DISK. This is a specially formatted diskette which is accessed on a random-access sector-by-sector basis. It contains mainly message data but also has system bulletins and vote/scribble data. Your DATA DISK **MUST** be prepared using SET UP. Most often, the backside of the system disk (the disk with the program files) is used as the data disk. Once SET UP has finished doing its thing (it takes a while, remember we 1541 owners have the world's slowest drives...) DO NOT try to write any files to the DATA DISK. The DATA DISK is exclusively the property of the Blue Board program from now on. CHANGER The CHANGER programs allow you to change ANY text output, CHANGER2 including local sysop prompts and (heh heh) the copyright notice. This is where Blue Board's flexibility lies. Since it is generally accepted that sysop defined menu systems are infeasible on a 64k machine, the least a BBS can offer you is a way to change the prompts. Blue Board gives you this option, and the THC mods allow for ALL the text to be changed. When you are finished making changes to the prompts, and you are back at the BASIC level, you must SAVE the program file (BLUE BOARD.O, described below) or your changes will be lost. PROMPTER1B65.O These are the machine language adjuncts to the CHANGER PROMPTER.O programs. Don't play with these, they work fine the way they are. BLUE BOARD.O This is the heart of Blue Board's operation. This 97 block file is a 100% machine language program which performs all the functions of the BBS, from user accounting to messaging procedures and sysop functions. This file is modified when you run the CHANGER programs. If you are EXTREMELY brazen or just a good hacker, you can modify this program using a monitor to do anything you want. The disassembly listing, printed out, runs about 250 pages, but the investment in paper is worth it if you want to hack the code. In order for BLUE BOARD.O to run, it must have several other files already installed into memory: either FILE XFER.O or NOXFER.O, either VOTES.O or NOVOTES.O, one of the MODEM????.O files, and a valid DATA file (explained below). If you reset your computer, the "BASIC FRONT-END" portion of BLUE BOARD.O is wiped out but you can still re-enter the BBS (and thus save/backup your data file) by typing SYS 2072. DATA 00/00 00.00 The DATA files (there can be more than one) contain everything important about your BBS. Your userlog, message base pointers, and system configuration are all kept here. The DATA file consists of two segments. The first is a freeform bitmap segment which contains system configuration data, sysop passwords, and so on. The other segment is a linked-list heap structure which should NOT be tampered with unless you are the most competent of hackers and know exactly, precisely what the hell you are doing. This cannot be overstressed enough. A description of the bitmap segment will come later in this file. The name of the DATA file depends on the time and date on which it was saved. The 00/00 is the date in MM/DD format, and the 00.00 is the time in HH/MM format. The data file is loaded by BOOT V2 and must be present for Blue Board to run at all. Blue Board Operation: Getting started: First, check that all the files listed above are present. If any are missing, phone the pirate contact who gave you Blue Board and call him a lamer. The disk with these files will be called the "SYSTEM DISK" from here on. Next, get a BLANK, UNFORMATTED floppy (most people use the back of the "system" disk) ready. Now, run the SET UP program. There are some basic onscreen instructions, follow them. The blank disk will be your DATA DISK. After about 20 minutes or so, the disk is not only formatted but prepared for use by Blue Board as a DATA DISK. Once this is done, you are now ready to run Blue Board. Run BOOT V2. After a few seconds you the screen will change to white-on-grey and you will be prompted to put in the DATA DISK. This is the disk that SET UP just spent 20 minutes working on. Put in the Data Disk and hit return. You will then be prompted for the time and date, and whether or not you want to "display bulletin." The bulletin is a pseudo-file (more on that later) that is displayed to users at logon. Most sysops DO want to display the bulletin. You'll then hear a chime, and the system is ready to go! Waiting for Caller: When waiting for a call, Blue Board displays some important information. The last eight callers, what time and date they called, and how long each was online for. If a user has been deleted, he shows up as ">----------<". If you are starting anew, all eight "last callers" will probably be deleted users. Also, total calls-to-system, calls-since-mark, and number of users are displayed, plus the number of outstanding emails. A number of special keys work when waiting for a call, these will be discussed later in the file. Online: When a user is online, the sysop can intervene in the user's doings as if he was the user himself. The sysop can add time or throw a user off, or break in to chat. The sysop can freeze output to the user, and go to the "Blue Junction" (briefly discussed later) to edit that or any other user. Online sysop keys will be discussed later. Meanwhile, the user has all the functions available to his access level at his disposal. Blue Board Keys: Waiting For Caller Keys: F1: "FAST" logon! Instantly puts the sysop online in a local session using the first account in the user log. The last two letters of the sysop's ID should be "AA" as this is the account that F1 logs you in with. F6: Blue Junction. Blue Junction is a set of self explanatory sysop functions including user edit and mail edit. CTRL-A: Local logon, from the very beginning including the linefeeds prompt. CTRL-B: Force fake ring detection. Useful for some direct-serial logons. CTRL-C: Clears the buffer and turns the screen yellow. CTRL-D: Graceful exit. You will be asked if you want to "save data." ANSWER YES AND THEN PUT IN THE SYSTEM (or "files") DISKETTE! This is the only way to assure the stability of Blue Board. Backups of the data file using CTRL-D should be performed daily. Remember, your ENTIRE userlog and message pointers are ALL IN RAM! One power blackout or mischievous sibling can destroy your BBS unless you are well prepared. Also, beware of falling back on OLD backups. Not only will this annoy users whose accounts were created after the fact, it will cause cross linking of messages which makes for no end of trouble. MAKE DAILY BACKUPS! CTRL-E: Does the same as F6, puts you in Blue Junction. CTRL-F: Resets the mark in "calls since mark." This is useful for tracking caller trends, for demographic purposes. The screen will turn blue to acknowledge the dumping of the mark. CTRL-G: Does the same as F1, puts you in the main BBS menu. CTRL-I: Blue Term! 3/1200 baud terminal program. Instructions are given when you enter the terminal. It doesn't do much, but it's more convenient than backing up the BBS and loading a terminal. CTRL-J: Sets some miscellaneous configuration options. The SysOp's name and BBS name are straightforward, but the others require clarification. The "J" password is the password a user must enter to access the hidden message base with the J main menu command. The "F" password is the password a user must provide at the CTRL-F command to get more online time. The "V" password is the password the sysop must enter to access Blue Junction from remote using the CTRL-V command. CTRL-K: Puts the sysop in the User Editor, bypassing Blue Junction. CTRL-L: Loads a text file into the buffer. Users can read this file online using the "W" command at the main menu. CTRL-N: Saves the contents of the buffer. The buffer can be filled in Blue Term, this command allows its contents to be saved to disk. CTRL-T: Set the Time and Date. Online Keys: F1: Put caller at main menu. F2: Kill chat noise. F3: Give the user a 5 minute warning. F4: Break into chat mode. F1 gets you out. F5: Dump caller because of "time expired." F6: Blue Junction. It would be wise to freeze caller output before you select this, because the caller might see another user's password if you use the user editor. F7: Change access level of currently online user. F8: Instant disconnection. C=A: Open capture buffer. It's 8k in size, and sits under the Kernal. C=B: Close capture buffer. C=C: Display contents of capture buffer. C=D: Kill capture buffer, reset pointer to zero. C=E: Send message "SysOp Not available" C=F: Toggle User Output. If you are logged in locally, this will log you off unceremoniously because it will see that there is no carrier and go back to the wait-for-caller screen. C=G: Send message "SysOp Present...". This should be used prior to turning off user output so that the user knows you are at work on the BBS and does not assume the BBS has crashed. Blue Board's Data File: The Bitmap segment The Data File's bitmap segment holds many configuration options that can be selected simply by POKing to the right locations in memory. The configuration portion of the bitmap segment has a base address of 30208. Here then are the addresses and what they do. Poke 30208 +this offset Result ------------------------------------------------------------------------ 12 The total number of system calls is stored in 13 30208+12 and 30208+13. 30208+12 is the LSB and 30208+13 is the MSB of this 16-bit number. 129 1=Yes, 0=no: Messages re-ordered when cycled 130 1=Yes, 0=no: New users allowed on BBS before validated 131 P.M. Time Limit (255=no limit) in BCD, i.e. 16=10min. 132 A.M. Time Limit (255=no limit) in BCD 133 New User's access level, in BCD 134 Time (in sec.) to wait for carrier after ring, in BCD 135 Online background colour 136 Border Colour 137 Character Colour 138 Wait-for-calls background colour 139 Cursor Colour (the cursor is a SPRITE!!) 140 Access level needed to kill a message, in BCD 141 Access level needed to enter a message, in BCD 142 Access level needed to request more time with CTRL-F in BCD 143 Access level required to view other users access level in BCD 144 Access level required to enter hidden message base in BCD 145 Access level required to list last 30 callers, in BCD 147 Access level required for New-Scan, in BCD 148 Access level required for Quick-Scan, in BCD 149 Access level required to read messages, in BCD 150 Access level required for Special Scans, in BCD 151 Access level required to see a userlog, in BCD 152 Access level required to view "W" buffer, in BCD 154 Access level required to enter file section, in BCD 155 Access level required to enter scribbles, in BCD 156 Access level required to enter a scribble message in BCD 157 Access level required to create a scribble, in BCD 158 Access level granted after initialization 159 Background colour after CTRL-C 160 Background colour after CTRL-F 162 Default transfer protocol, 120=X, 116=T 167 Access required to kill a scribble, in BCD 169 Maximum logon attempts allowed 172 Voting access required in BCD 173 Access required to kill a vote, in BCD 174 Access required to enter a vote, in BCD ----------------------------------------------------------------------------- That is about all there is to know that is not obvious. If I were to include obvious things like what each command at the main menu does, then this would not be a "condensed" file. Happy Hacking and best of luck on your BBS venture, -=( Tommy )=- 2 year Blue Board veteran. Additional note, May 1995: As a matter of trivia, I once printed out a disassembly of Blue Board's main executable code, with an ASCII sidebar so the text messages would be visible, on an MPS-803 printer with NO tractor feed! It took four hours and I had to readjust the paper at least a dozen times. My roommates thought I had slipped a gear (again) and I thought the MPS would blow a pin. I still have the 300+ page disassembly to this date, as a memento of my personal Golden Age of BBSing. That listing helped me make the most radical sysop mods ever made to Blue Board and later served as the fundamental philosophical principle behind today's THC and the default appearance of NanoBBS. Those were the days! -=( T )=-