LAYOUTS FOR DATA FILES USED IN TRANSCENDENCE BBS ------------------------------------------------ This file contains the layout information for the various types of data files that the BBS uses. Date/Time Variable Types are read as 3 Bytes. Byte 1 = Hours or Month Byte 2 = Minutes or Day Byte 3 = Seconds or Year Year is (1900 + 0 - 255) There is NO guarantee that each string will end in a NULL byte. There is also NO String Length Byte at the beginning of a String. The Data was produced by GFA Basic and is the way it is. I have attempted to provide this information as accurately as possible. There may be unknown errors contained in this file. If you find any, please report it to me. My information is in the Trans. BBS package. Wayne Watson BBS DATA FILE LAYOUT --------------------- File: \TRANS.DAT The TRANS.DAT file contains all the information for the BBS. This information is generated by the System Editor. Description Variable Length Offset Type Start -------------------------------------- ---------------------- ------ ------- Drive List for each file type 10 Strings Data String 32 1 Message Bases " " 32 33 File Areas " " 32 65 Text Files " " 32 97 Backups " " 32 129 Modules " " 32 161 Fmail/FMessages " " 32 193 Temporary Files " " 32 225 Reserved " " 32 257 Reserved " " 32 289 Pathname for each Folder 10 Strings Data String 12 321 Message Bases " " 12 333 File Areas " " 12 345 Text Files " " 12 357 Backups " " 12 369 Modules " " 12 381 Fmail/Fmessages " " 12 393 Temporary " " 12 405 Reserved " " 12 417 Reserved " " 12 429 Number of Msg Bases Byte 1 441 Number of File Areas Byte 1 442 Each Msg Base's information is 44 bytes long. Read in a loop for info for the # of Msg Bases as defined above. Up to 256 Msg Bases may be defined. Msg Base Name String 30 443 Max. Number of Msgs per Base Word 2 473 Max. Number of Lines per Msg Word 2 475 Msg Base Status Bytes 10 477 Byte 1 - Minimum Age Byte 2 - On/Off Bits for the following Bit 0 - Reserved Bit 1 - Remote Message Ops Bit 2 - Allow Anonymous Msgs Bit 3 - Select FROM Field Bit 4 - Alt. Msg. Headers Bit 5 - Allow Any Name Bit 6 - Allow ESC Codes Bit 7 - Allow Variable Tags Bytes 3 - 10 are Reserved Email Name String 30 11707 Max. number of Emails Word 2 11737 Max. number of lines per Email msg Word 2 11739 Each File Area's information is 52 bytes long. Read in a loop for info for the # of File Areas as defined above. Up to 256 File Areas may be defined. File Area Name String 30 11741 Folder Name String 12 11771 File Area Status Bytes 10 11783 Byte 1 - Minimum Age Byte 2 - Number of Desc. lines Allowed Byte 3 - On/Off Bits for the following Bit 0 - Ask for File Type Bit 1 - Reserved Bit 2 - Alt. Headers Bit 3 - Ask Program Type Bit 4 - Ask Monitor Type Bit 5 - Ask CPU Bit 6 - Allow Anonymous Uploads Bit 7 - Allow Remote File Ops. Byte 4 - Reserved Byte 5 - Upload Level (for File Area) Bytes 6 - 10 - Reserved BBS Name String 30 25053 Sysop Password String 30 25083 Reserved Bytes 27 25113 Last Run Date Date/Time 3 25140 Last Caller String 30 25143 Number of calls today Byte 1 25173 Number of calls total Longint 4 25174 Password Echo Character Char 1 25178 Idle Baud Rate Longint 4 25179 Max Baud Rate Longint 4 25183 Low Baud Rate Longint 4 25187 Default Country String 30 25191 Modem Hangup Command String 30 25221 Modem Offhook Command String 30 25251 UL Level for Sysop Area Byte 1 25281 Inactivity Timeout Period Byte 1 25282 Main BBS Directory String 12 25283 BBS Settings Bits Bytes 32 25295 Holds the on/off bits for the settings in the System Editor. Most are found on Page 4 & 5 of the Settings. These control a lot of how the BBS reacts. Byte Bit Description ---- --- ----------- 1 7 Questor Mode 6 Modem 2/Falcon 5 Remote Sysops 4 Screen Saver 3 Allow Handles 2 Not Used 1 Show VT-52 0 Not Used 2 7 Snoop Mode 6 Printer Echo 5 Disklog 4 Printer Log 3 Fido 2 Local Security 1 Terminal at Logon 0 Hard Drive 3 7 New User Email 6 Warn Low Space 5 Printer Bells 4 Post during Quickscan 3 Ack. Local Calls 2 New User Settings 1 Color Toggle 0 Ringback Local 4 7 Ringback Long Distance 6 Verify Local 5 Verify Long Distance 4 Upload to Sysop File Area 3 Visual Alerts 2 RTS/CTS 1 Inform New User Logons 0 See Passwords Locally 5 7 Inform Bad User Logon 6 Private BBS 5 BBS answers Phone 4 Not Used 3 Not Used 2 Not Used 1 Not Used 0 Not Used 6 - 32 Not Used/Reserved Max # of Macros per User Byte 1 25328 Max # of Characters per Macro Byte 1 25329 The Fido Node stuff was never used but, the space is still there and may be used for something if you want to. Node Number (fido) Long Integer 4 25330 Node Name (fido) String 30 25334 Node City (fido) String 30 25364 Local Dial Command String 30 25394 Long Distance Dial Command String 30 25424 Area Codes Allowed for LD Dial String 30 25454 Page On Time Date/Time 3 25484 Page Off Time Date Time 3 25487 The colors have a range of 000-777. Each value is stored so that if it is 7, then the color value would be 007. If it is 77, then the value would be 077, etc. The numbers are always padded with 0 to make it a 3 number digit for Red, Green and Blue values. Background Color Word 2 25490 Alternate 1 Word 2 25492 Alternate 2 Word 2 25494 Text Color Word 2 25496 Reset Modem Time Byte 1 25498 Warn Events Time Byte 1 25499 Sysop UL Area Byte 1 25500 System Password (Private BBS) String 30 25501 Reserved Bytes 6 25531 Keep xx Calls Byte 1 25537 New User Mask Number Byte 1 25538 Guest User Mask Number Byte 1 25539 Feedback goes to User Number Word 2 25540 Bootup Window Size Byte 1 25542 Reserved Bytes 100 25543 Lock Baud Rate at Word 2 25643 Auto Inform Messages to User # Word 2 25645 Verified User Mask Number Byte 1 25647 Local Password (When Local Sec. On) String 30 25648 BBS Operation Hours Date/Time Sun On Time " " 3 25678 Mon On time " " 3 25681 Tue On time " " 3 25684 Wed On Time " " 3 25687 Thu On Time " " 3 25690 Fri On Time " " 3 25693 Sat On Time " " 3 25696 Sun Off Time " " 3 25699 Mon Off Time " " 3 25702 Tue Off Time " " 3 25705 Wed Off Time " " 3 25708 Thu Off Time " " 3 25711 Fri Off Time " " 3 24714 Sat Off Time " " 3 25717 State Mask String 20 25720 Phone Mask String 15 25740 Online Game Time Longint 4 25755 Reserved Bytes 6241 25759 Baud Rate Times Date/Time 300 Baud On Time " " 3 32000 300 Baud Off Time " " 3 32003 1200 Baud On Time " " 3 32006 1200 Baud Off Time " " 3 32009 2400 Baud On Time " " 3 32012 2400 Baud Off Time " " 3 32015 4800 Baud On Time " " 3 32018 4800 Baud Off Time " " 3 32021 9600 Baud On Time " " 3 32024 9600 Baud Off Time " " 3 32027 19200 Baud On Time " " 3 32030 19200 Baud Off Time " " 3 32033 LOCAL On Time " " 3 32036 LOCAL Off Time " " 3 32039 MIDI On Time " " 3 32042 MIDI Off Time " " 3 32045 USERS DATA LAYOUT ----------------- File: DATA\USERS.DAT The USERS.DAT file contains all the information for each user. Name String 30 1 Handle String 30 31 Address String 30 61 City String 30 91 Reserved String 2 121 Zip Code String 10 123 Country String 30 133 Voice Phone Number String 14 163 Used to store Survey Info ** String 80 177 Sex (M or F) Char 1 257 Birthday Date/Time 3 258 Password String 20 261 Computer Type String 30 281 Calls Per Day Byte 1 311 Time Per Call Word 2 312 Time Per Day Word 2 314 Time Online Today Word 2 316 Calls Made Today Byte 1 318 Command Table Lvl (CTL) Byte 1 319 File Access Lvl (FAL) Byte 1 320 Online Game Lvl (OGL) Byte 1 321 Menu Processor Lvl (MPL) Byte 1 322 Access Lvl 5 Byte 1 323 Up/Download Ratio (x:1) Byte 1 324 Msg/Download Ratio (x:1) Byte 1 325 Download points Long Integer 4 326 Privledges 4 Long Integers 16 330 Long Integer 1 Bit 31 - Sysop Access 30 - Read All Email 29 - See Anonymous Msgs 28 - Post Anonymous Msgs 27 - Bypass Time Limits 26 - Bypass Call Limits 25 - Bypass Msg:Download ratio 24 - Bypass Upload:Download ratio 23 - Bypass File Points System 22 - Auto Validate Uploads 21 - Bypass Auto-Deletion 20 - Edit FROM Field 19 - Delete Own Msgs 18 - Edit Own Msgs 17 - Select Upload Level 16 - Post Extended Msgs 15 - Copy File to Editor 14 - Edit User's Access 13 - See Passwords Remotely 12 - Send Anonymous Email 11 - Read Anonymous Email 10 - Validate Messages 9 - Edit Topics 8 - Bypass Upload/Download limits 7 - Download Past Time Limit 6 - 0 Reserved Long Integer 2 - 4 Reserved Restrictions 4 Long Integers 16 346 Long Integer 1 Bit 31 - Can't Page Sysop 30 - Msgs Are Unvalidated 29 - Can't Add to BBS List 28 - Log Activity To Disk 27 - Log Activity To Printer 26 - Can't Send Email to Self 25 - Can't Batch Upload 24 - Can't Use Sysop DOS Commands 23 - Can't Download From Sysop Mode 22 - Can't Upload To Sysop Mode 21 - Can't Execute From Sysop Mode 20 - Can't Bypass Verify 19 - 0 Reserved Long Integer 2 - 4 Not Used Total Calls Long Integer 4 362 Total Illeagal Hangups Long Integer 4 366 Message Base Access 256 Bytes 256 370 Each Byte is Bitmapped for each of the 256 possible Msg Bases Bit 1 - Enter 2 - Read 3 - Post 4 - Delete 5 - Edit 6 - Hurl 7 - Sysop 0 - Qscan File Area Access 256 Bytes 256 626 Each Byte is Bitmapped for each of the 256 possible File Areas Bit 1 - Enter 2 - Download 3 - Upload 4 - Edit 5 - Delete 6 - Sysop 7 - Reserved 0 - Qscan First Call Date Date/Time 3 882 Last Call Date Date/Time 3 885 Last File Listing Date Date/Time 3 888 User Settings 1 4 Long Integers 16 891 Each Long Integer is Bitmapped ON = TRUE OFF = FALSE Bit 31 - Page Pause 30 - Auto Email Scan 29 - Auto Message Scan 28 - Auto File Scan 27 - Clear Screen 26 - Hotkeys 25 - Command Stack Printing 24 - Continuous Scroll Msgs 23 - File Area Prompts (Long = True, Short = False) 22 - Msg Base Prompts (Long = True, Short = False) 21 - Word Wrap in Editor 20 - Line Numbers in Editor 19 - Scan/Mark Msgs 18 - Editor Summary (Help) 17 - Micro Emacs Editor 16 - New Files Scan (Full = True, Catalog = False) 15 - Key Aborts Text 14 - 0 Reserved Long Integer 2 - 4 Reserved User Settings 2 Variable 16 907 Byte 1 - Default Terminal Type Byte 2 - Default Window Size (Sysop) Byte 3 - Pause Time Between Msgs (0-255) Byte 4 - Default Protocol 1 - Xmodem Checksum 2 - Xmodem CRC 3 - Xmodem 1K 4 - Ymodem Batch 5 - Fmdoem Batch 6 - Zmodem Batch 7 - Ymodem-G Bytes 5 - 16 Reserved Downloads Long Integer 4 923 Uploads Long Integer 4 927 Downloads Today Word 2 931 Uploads Today Word 2 933 Email Sent Long Integer 4 935 Messages Posted Long Integer 4 939 Messages Replied To Long Integer 4 943 Video Height Byte 1 947 Video Width Byte 1 948 High Message Count 256 Words 512 949 Contains the High Message Read in each of the possible 256 Message Bases. Downloads Per Call Word 2 1461 Downloads Per Day Word 2 1463 Uploads Per Call Word 2 1465 Uploads Per Day Word 2 1467 Status Byte 1 1469 Bit 0 - 1 Reserved 2 - Alert 3 - No Delete 4 - 7 Reserved Max Emails Per Day Word 2 1470 Max Msgs Per Day Word 2 1472 Max Feedbacks Per Day Word 2 1474 Max Pages Per Call Byte 1 1476 Total Emails Sent Word 2 1477 Total Messages Sent Word 2 1479 Total Feedbacks Sent Word 2 1481 Locked Byte 1 1483 Data Phone Number String 14 1484 Online Games Played Word 2 1498 Online Game:Msg Ratio (x:1) Byte 1 1500 Online Games Per Call Byte 1 1501 Online Games Per Day Byte 1 1502 Fmail Sends Per Day Byte 1 1503 Fmail Recieves Per Day Byte 1 1504 File Points Ratio (x:1) Byte 1 1505 Online Games Played Today Byte 1 1506 Fmails Sent Today Byte 1 1507 Fmails Recieved Today Byte 1 1508 State String 20 1509 USERS INDEX FILE LAYOUT ----------------------- File: \DATA\USERS.IDX Each record corresponds to the User number. Record 63 belongs to User #63. Name String 30 1 Handle String 30 31 MASKS DATA FILE LAYOUT ---------------------- File: \DATA\MASKS.DAT The MASKS.DAT file contains records that allow quick setup of Users. Daily Call Limit Byte 1 1 Time Per Call Word 2 2 Time Per Day Word 2 4 Calls Made Today Byte 1 6 Command Table Level (CTL) Byte 1 7 File Access level (FAL) Byte 1 8 Online Game Level (OGL) Byte 1 9 Menu Processor Level (MPL) Byte 1 10 Access Level 5 Byte 1 11 UL:DL Ratio Byte 1 12 Msg:DL Ratio Byte 1 13 Privledges 4 Long Integers 16 14 Restrictions 4 Long Integers 16 30 Message Base Access Bytes 256 46 File Area Access Bytes 256 302 User Settings 1 4 Long Integers 16 558 User Settings 2 Bytes 16 574 Downloads Per Call Word 2 590 Downloads Per Day Word 2 592 Uploads Per Call Word 2 594 Uploads Per Day Word 2 596 Max. Emails Per Day Word 2 598 Max. Msgs. Per Day Word 2 600 Max. Feedbacks Per Day Word 2 602 Max. Pages Per Call Word 2 604 Online Game:DL Ratio Byte 1 606 Online Games Per Call Byte 1 607 Online Games Per Day Byte 1 608 Max. Fmails Send Byte 1 609 Max. Fmails Recieve Byte 1 610 File Points Ratio Byte 1 611 Reserved Bytes 413 612 Mask information is read just like the USERS.DAT records are read. ALTERNATE DRIVE LAYOUT ---------------------- File: DATA\ALTDRV.DAT The ALTDRV.DAT file defines the alternate drive locations of each file area. This allows the sysop to place the files for each file area onto a different partition than what is defined in the DRIVES & PATHS section for the file areas. Each Alternate Drive must also be in the DRIVES field for the file areas. Each Alternate drive can be up to 8 characters (Char) for each of the 256 possible file areas. This results in a 2048 byte file. Each Alternate Drive definition may or may not be terminated with a null byte. EVENT DATA LAYOUT ----------------- File: DATA\EVENTS.DAT The EVENTS.DAT file stores the information for Events that are to be executed. The number of events is determined by getting the size of the EVENTS.DAT file and dividing it by 200. This should ALWAYS result in a whole number. If not, then the file could be corrupted. Filename of Program to Execute String 40 1 Event Priority Byte 1 41 1 = Kick off the user and execute event 2 = Execute event while user online 3 = Wait until user has logged off to exec. event. 4 = Execute event as part of logoff sequence. Day Byte 1 42 Bit 0 - 6 = Sunday - Saturday True = On on_sun Date/Time 3 43 on_mon Date/Time 3 46 on_tue Date/Time 3 49 on_wed Date/Time 3 52 on_thu Date/Time 3 55 on_fri Date/Time 3 58 on_sat Date/Time 3 61 off_sun Date/Time 3 64 off_mon Date/Time 3 67 off_tue Date/Time 3 70 off_wed Date/Time 3 73 off_thu Date/Time 3 76 off_fri Date/Time 3 79 off_sat Date/Time 3 82 Command Line Parameters String 40 85 Modem Init. String String 15 126 Reserved Bytes 61 139 PROTOCOL DATA LAYOUT -------------------- File: DATA\PROTOCOL.DAT The PROTOCOL.DAT file defines what keypress and file goes with each protocol. There is room to store 25 protocol types. Each name for the first 7 protocols are predefined. 1. Xmodem Checksum 2. Xmodem CRC 3. Xmodem 1K 4. Ymodem Batch 5. Fmodem Batch 6. Zmodem Batch 7. Ymodem-G Filename String 12 1 Key Sequence Char 1 13 Type Byte 1 14 1 = Trans. Transfer Program 2 = XYZ.TTP (Zmodem) Reserved Bytes 86 15 FILE AREA DATA FILE LAYOUT -------------------------- File: FILES\???\Fxxx.DAT The Fxxx.DAT File stores all the information about each file that has been given a description. The size of each record can be variable from one Fxxx.DAT to another. It's size is determined by the Number of Description Lines allowed which is setup in the System Editor and stored in the TRANS.DAT file. Refer to the File Section of the TRANS.DAT for information on this variable. The size of each record is determined by taking that number, multiplying it by 75 and then adding 256. SO, if the Sysop set up File Area #1 to have 10 Line descriptions, then each record in F1.DAT would be ((10 * 75) + 256) = 1006 bytes. The number of records can then be determined by dividing the File Size by the above result. Filename String 12 1 Filesize Long Integer 4 13 Program Type String 30 17 Uploader String 30 47 Upload Time Date/Time 3 77 Upload Date Date/Time 3 80 Last Download Date Date/Time 3 83 Number of Downloads Word 2 86 File Level (0-255) Byte 1 88 File Status Byte 1 89 Bit 0 - Anonymous Upload 1 - Reserved 2 - Offline File 3 - Free Download 4 - 7 Reserved CPU String 30 90 Reserved Byte 1 120 Number of Lines in Description Byte 1 121 Monitor Type String 20 122 File type String 20 142 Reserved Bytes 95 162 FILE AREA INDEX FILE LAYOUT --------------------------- File: \FILES\???\Fxxx.IDX The Fxxx.IDX file is an Index File for each of the File Areas. All info stored in the Index File can be obtained from the Fxxx.DAT file in case the Index file is corrupted. The Filenumber is actually the record number in the Fxxx.DAT file. Each record is 60 bytes long. Filenumber Word 2 1 Filename String 12 3 Filesize Long Integer 4 15 Upload Date Date/Time 3 19 Brief Description String 38 22 The Brief Description can be obtained by taking the first 38 characters from the first line of the description. File Level (0-255) Byte 1 59 MESSAGE BASE DATA FILE LAYOUT --------------------------- File: \MESSAGES\Mxxx.DAT The Mxxx.DAT file contains the information for each message that has been posted in the Message Bases. The size of each record can be variable from one Mxxx.DAT file to another. It's size is determined by the Number of Lines allowed which is setup in the System Editor and stored in the TRANS.DAT file. Refer to the Msg Base Section of the TRANS.DAT for information on this variable. The size of each record is determined by taking that number, multiplying it by 75 and then adding 200. SO, if the Sysop set up Msg. Base #1 to have 10 Line messages, then each record in M1.DAT would be ((10 * 75) + 200) = 950 bytes. Each record is broken into by the actual message (I didn't do it :-) ). 'ML' in the Offset Start column means Msg Length. Message Status (Bitmapped) Byte 1 1 Bit 0 - If True, then record is in use. If Off and Bit 1 & 3 are on, then Msg was deleted. If 1 & 3 are off, then record was never used. 1 - Private Message 2 - Fmessage 3 - Unvalidated 4 - Anonymous FROM Msg 5 - Extended Msg 6 - Anonymous TO Msg 7 - Reserved To String 30 2 From String 30 32 Time Posted Date/Time 3 62 Date Posted Date/Time 3 65 Subject String 30 68 Message (75 * Lines Allowed) Strings VAR 98 Number of Lines in Msg Byte 1 98 + ML Number of replies to this Msg Byte 1 99 + ML Fmessage Filename String 12 100 + ML Msg number this is a reply to Word 2 112 + ML Time Recieved (by To) Date/Time 3 114 + ML Date Recieved (by To) Date/Time 3 117 + ML Real To (If Anonymous To Status) String 30 120 + ML Real From (If Anonymous From Status) String 30 150 + ML Reserved Bytes 21 180 + ML Mxxx.SPD FILE LAYOUT -------------------- File: \MESSAGES\Mxxx.SPD The Mxxx.SPD file is an Index file that contains the To and From User Names. Each record is 60 bytes long. Each record number corresponds to the same record number in the Mxxx.DAT file. To String 30 1 From String 30 31 QUICKMSG.DAT FILE LAYOUT ------------------------ File: \MESSAGES\QUICKMSG.DAT The QUICKMSG.DAT file is shared by ALL of the Message Bases. It contains all of the message numbers for each of the 256 possible Message Bases. Each Message number is 2 bytes (Word) long. Since each Msg. Base can have up to 512 Msgs, this makes the file 256K long. ((2 * 512) * 256) = 256K. The High Message number is stored in a Round Robin fashion and how far into the 512 words you go, depends on the Max. Number of Messages allowed for the Msg Base in question. Ok, if the Sysop set up the Msg Base to allow 50 Msgs, in Message Base 1, then you would go 50 words into the FIRST (Msg Base # 1) 512 Words and then start over at Word 1 of that block. You would do this until you found the highest Message Number. You then compare this Number with the User's High Message Read number stored in their record to determine if they have new Messages in that Message Base or not. I know, it sounds confusing but, it really isn't once you understand how it works. Just search for the Highest number within the 512 words fr that particular Message Base. Message Base 10's 512 Word block would be 10241 bytes into the file. GETTING THE BBS TO PASS ON USER INFORMATION ------------------------------------------- You can have the BBS pass on the User's information to your program. You must set up your program as an External BBS Module. Refer to the Docs on how to do this. This will cause the BBS to pass on two numbers to your program via the Command Line. Each number is seperated by a space. The Command Line is terminated by a space and NULL character. The first number is the User's information buffer location. This buffer will have the User's information in the same layout as the disk file. You will get the information just like you would from the disk. You can then modify the User's information. Once your program is finished, you will need to place the information back into memory just like you got it out. Once control is passed back to the BBS, it will read the User's information back out of this location, update the User's information. The User editor is an example of a program that uses and modifies this information. The second number you will recieve is the scratch buffer location. This buffer contains some information that may be useful. Each piece of information is terminated by a NULL character. TRANS.DAT File path and name String 63 1 User Number String 4 64 Emulation Number from TERMINAL.TXT String 2 68 This will correspond to the MENUSx folder within the TEXT folder. x = Emulation Number. Translation from Translation Table String 4 70 This will correspond to the Line Number in the EMULATE.DAT file. Reserved Bytes 4 74 Port (1 = RS232, 2 = Local) String 2 78 Reserved Bytes 66 80 User's Time Left String 6 144