Image BBS Programmers Reference.pdf

(357 KB) Pobierz
This is a manual for programming Image BBS v1.2(A) applications on the Commodore 64. It 
was retyped based on the only surviving printed copy I had. I was missing a few pages; plus, 
my Okimate 20 chewed up a few lines here and there. I'll do the best I can to extrapolate 
any missing information and add comments, which will go in [square brackets]. Overall, I'm 
hoping it should be pretty accurate ‐ all typos should be squashed, and none added. 
I'm not sure where to get the original copy... 
For now, I can be reached on the Internet at 
sym_rsherwood@yahoo.com
I admit, I got a little lazy on the last part of the BASIC listing. It appears the original writers 
did too. Any additional fact‐finding would have to be done on the original distribution files, 
as my BBS as it stands now is heavily modified. 
 
 
Programmer’s Reference
 
Page 1
Preface 
Chapter I:
  
 
 
 
 
 
 
 
 
 
 
4. 
4.  
4.  
5.  
5.  
6.  
6.  
6. 
6. 
General Information 
The Function Keys 
The Drive Designators 
Time and Date Format 
Carrier Loss 
Access Levels 
Plus Files (+.*) 
ML Modules (++ *) 
Mini Plus Files 
Chapter II:  
 
7 . 
BASIC Subroutines 
Chapter III:  Machine Language Subroutines 
 
 
 
 
 
 
 
16. 
22. 
23. 
23. 
23.  
24. 
25. 
Jump Table (& commands) 
Memory Map 
Using Modules 
RS232 Routines 
Swapper 
The Light Bar 
The System Editor 
Chapter IV:  
 
 
 
 
 
 
 
 
 
26. 
26. 
27. 
28. 
29. 
30. 
30. 
31. 
31. 
Disk File Formats 
The User File (u.config) 
The System Data File (e.data) 
Statistics (e.stats) 
Boot Files (bd.data) 
U/D Directories 
Sub‐Board Directories 
Sub‐Board/Library Data 
E‐Mail 
Chapter V:  
 
 
 
 
 
 
32. 
32. 
33. 
35. 
36. 
38. 
Variable Usage 
Temporary Storage Variables 
Reserved String Variables 
Reserved Integer Variables 
Reserved Floating Point Variables 
Arrays 
Programmer’s Reference
 
Page 2
Preface 
This manual assumes the [user has a good working knowledge of] the BASIC programming language. If you find that you 
have trouble with areas on BASIC, it is recommended that you refer to a good programming book, such as the Commodore 
64 Programmer's Reference Guide, published by Howard W. Sams & Company. 
The main purpose of this manual is to familiarize the reader with areas of Image that may be accessed in order for the 
reader to write modifications or modules to enhance their systems. 
The scope of this book is intended to include: BASIC subroutines, reserved system variables, important areas of memory in 
use, disk file handling, execution and use of "mini plus‐files" and data formats of various disk files. 
This manual was made with every intent to provide a readable, accurate, and exciting way to program Image like never 
before. Enjoy the manual. 
New Image Software 
Welcome to the world of programming IMAGE BBS! This manual is designed to allow both the novice and advanced 
programmer the ability to program IMAGE BBS modules. We will cover five major areas of IMAGE BBS: general information, 
the BASIC program, machine language routines, disk file formats, and variable usage charts. Also included you will find a 
special question and answer section of the most often asked questions and the answers to those questions. [Note: I never 
saw that section.] 
IMAGE BBS will support virtually all hardware available for the C64, including the Lt. Kernal (c) hard drives and the CMD HD 
series hard drives. Also, the SwiftLink (c) RS‐232 cartridge by Dr. Evil. [Note: SwiftLinks have been replaced by Turbo232 
cartridges, sold by Maurice Randall of Click Here Software. His order site is located at http://www.cmdrkey.com.] 
IMAGE BBS is a modular type program consisting of both BASIC and machine language modules. A main BASIC module 
("im") and a main machine language module ("ml 1.2") both reside in main memory at all times. Also used are BASIC 
modules (+.*) and machine language (++*) modules. 
The purpose of this manual is to provide you with necessary subroutines and variable considerations to make your own 
modules or modify the existing system to suit your needs. 
I would like to thank all of those who worked hard in taking NEW IMAGE SOFTWARE to where it stands today. 
DON GLADDEN (C Tuna) for the original BASIC program. 
RAY KELM (The Professor) the ML whiz‐kid, for the ML. 
FRED DART (The Chief) for hours upon hours of work and always being available for support. [R.I.P.] 
JOHN MOORE (Little John) for continuous sleepless nights spent to better the software and its subsystems. Also for 
the much awaited 128 version. 
BOB LEARY (Dr. Bob) for countless hours of work wracking my brains trying to get this manual done. 
NISSA for providing undue support to all those sysops in their time of need. 
 
 
Programmer’s Reference
 
Page 3
Chapter I: General Information 
There are several things which are often used and would fit the description of general information. The items covered in 
this chapter are used in almost every module you can find. 
The Function Keys 
IMAGE BBS uses function keys to represent specific ASCII characters which: 
allows typing special characters in quote mode rather than using CHR$() codes, and 
avoids the pitfall of truncating lines, or the necessity of using custom I/O routines to read SEQuential data files. 
F5: Quotation mark
  
(")
F6: RETURN [CHR$(13)]
F7: Asterisk
        
(*)
F8: Up‐arrow
        
(^)
F1: Comma          (,) 
F2: Question mark (?) 
F3: Colon (:) 
F4: Equal sign (=) 
The Drive Designators: 
IMAGE BBS uses six drive [designators to] identify the system drive in which to find a specific file. The active drive is set by 
setting the variable DR to a value of 1 through 6 as I will describe below: 
1: System drive. This drive should contain all of your s.* files. When writing your own modules, all files which are usually 
read but NOT changed often (like intro screens) should carry the s. prefix and be stored on this device. 
2: E‐mail drive. This drive contains all mail (m.*), forced mail (fm.*), and network (nm.*) files. 
3: Etcetera drive. This is one of the most active drives on your system. It contains all files which change often, and should be 
used to store data which needs to change frequently. [Note: these files have an e.* prefix.] 
4: Directory drive. This drive holds all the sub‐directories (d.* files) used by the system. 
5: Plus‐file drive. This drive holds all IMAGE BBS program modules. 
6: User drive. This drive is used to store the user records and alphabetical user list. 
 
 
 
 
 
Programmer’s Reference
 
Page 4
Time and Date Format 
IMAGE BBS uses an 11‐digit string to represent the current time and date. This information is stored in D1$. 
1  90 11 03 80 45    IMAGE BBS will translate this into the string 
^  ^  ^  ^  ^  ^     "Sun, Nov  3 1990  12:45 PM" 
|  |  |  |  |  | 
|  |  |  |  |  +‐‐‐‐ Minutes  00‐59  
|  |  |  |  | 
|  |  |  |  +‐‐‐‐‐‐‐ Hour     00‐11: AM        
|  |  |  |                    80‐91: PM (subtract 80 to get correct hour) 
|  |  |  | 
|  |  |  +‐‐‐‐‐‐‐‐‐‐ Date     01‐31 
|  |  | 
|  |  +‐‐‐‐‐‐‐‐‐‐‐‐‐ Month    01‐12 
|  | 
|  +‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ Year     00‐99     (plus hard‐coded century base) 
+‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ Day       1‐7      (1=Sunday, 7=Saturday) 
[Note: Spaces and diagram added for clarity. Also, one thing the manual doesn't mention is putting CHR$(4), CTRL‐D, in 
an & statement followed by a properly formatted 11‐digit string will display a readable time/date stamp. To wit, 
&"[CTRL‐D]19011038045" 
will echo the same string as at the top of this explanation.] 
Carrier Loss 
All prompts for user input must be protected against a lost carrier! This is simple, and easily forgotten. If the carrier is lost, 
the system will automatically drop the user's time to zero. Time remaining is stored in the integer variable TR%. The 
simplest way to protect your system is to check the value of TR%: if it is less than one either GOTO line 1811, or RETURN if it 
is a subroutine. 
Access Levels 
IMAGE BBS uses the following table to determine which access groups (0‐9) have access to seperate areas of the system. 
Group 
Value
1
2
4
8
16
 
Group
5
6
7
8
9
Value
32
64
128
256
512
To figure out which access levels would have access to certain areas, you must add the values of the access groups you wish 
included together. For example, if you wanted all groups allowed access to the function, you would need an access code of 
Programmer’s Reference
 
Page 5
Zgłoś jeśli naruszono regulamin