textfiles/bbs/design.bbs

675 lines
22 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Waiting for caller
------------------
Exit program
Recent Callers
Stats
Local Login
Login Sequence
--------------
Confirm Handshake - show baud, whatever
Greeting
Prompt
Name/Number/Handle
Password
Welcome
User info
'Hi' Status, Name ' you have ' Time Left ' minutes.'
Message of the Day - Shortage on /u2
Stats of some kind -
New
Announcements
Messages - new count
Mail - notify / summary
Bulletins
Fingers
Basically files of anykind that have a 'latest' stamp.
Main Menu
More
----
Prompt - More? (52%)
- More (89%) [Y, N, L, N, R, X] :
At the prompt
Y, SP - Yes, Continue
N, A, ^C - No, Abort, Cancel
L - Restart, lowercase everything
N - Continue nonstop
R - Restart
X - Restart Rot13
While listing
^C, A - stop if enabled
^S, P - Pause if enabled
Sp - activate more prompt after eol
While logged on
---------------
Menu options...
^C Chat with or ^Y Yell at sysop (if flag set o/w sorry mesg)
^E Editor
^K Keyboard test
^L Logoff (verify)
^P Toggle Privacy (if enabled; message in either case)
^T Terminal change
^U Display users info
^? or any incorrect ^char, display list of controls
ESC 0..9, F1-F10 Macro (if stacked commands active)
Sysop
View files
Shell Escape
From the local keyboard
-----------------------
Toggle flags
Privacy
Chat
Screen Dump to file <filespec or default>
Take modem off hook after this caller
Rotate Display
Logoff User
Increase/Decrease Time Left
Initiate Chat
records current line and cursor postion
on exit prints saved and and restores cursor positon
Login -
Parallel to user, user's menus show who is on watching
Able to type into users environment (as the moon always does)
Display
Status Line
Top - watch user
Status - Real Name, Handle, Age, Calls,
Posts, Time Left, Current Time
Half Screen
Top 50% - watch user
Low 50% - User File
Status line
Privacy / Full screen -
Top 50% - Current User Function, Stats, whatever
Low 50% - User File
Status Line
Edit Current User - Half or full screen display; doesn't hinder user
Chat
----
Most of the features of the editor.
Autologout
----------
Warnings after every two minutes of inactivity.
Logout after 6 or 8 minutes. Perhaps configurable.
Curses
------
Goto(X,Y) - position cursor absolutely
Move(X,Y) - position cursor relatively
Esc[X;YH else multiple ^J^H^I^K
Color(fg, bg) - change if user has color otherwise ignore
Del_EOL - delete to end of line
Esc[K else spaces and bs's
Del_EOP - delete to end of page
Mail
----
Menu
List letters - Header
Delete <range, *>
Reply, Reply w/include <message> - Editor
Forward <range, *> <user>
Save, Read (from disk) - sysop
Note to self - send letter to self
Change/Rotate Status <range> (New, Express, Hold, Delete)
Edit (include)
Send <user[s]> - invoke editor
View Letter Traffic - list of active letters
From To On
Norman Rockwell The Slut Thr Jun 24 at 10:12pm
Yank letter sent by you.
Lists letters still undelivered, asks for number,
moves that letter back into mail users mail box.
Quit - kills letters marked delete, exits
Sample
------
Dark Side of the Moon Mail
Your Mailbox New : 2 Held : 1
# Status Sender Date Time Subject (maybe)
-- ------- ----------- -------------- ------- ---------------
1 Holding Rockman Wed 29 Sept 88 04:13pm
2 New Gern Thr 30 Sept 88 06:12am
3 Delete Bergie Thr 30 Sept 88 08:09am
4 Express Booga Thr 30 Sept 88 12:02pm
Described elsewhere
-------------------
Mail
Message Base
Userinfo
--------
Finger - call it something more user friendly
By number, name, handle, search string
List users - Show a subset of registered users
Generic - precompiled after new user logout
Brief - multi-column - Finger? Listed? Name, Days Since Login
FL Name Days FN Name Days FN Name Days
-- --------------- -- -- --------------- -- -- --------------- --
YN Norman Rockwell 10 YN Norman Rockwell 10 YN Norman Rockwell 10
Beefy - Fing? List? Handle, Firston, Laston, Days, Status, B-day
FL Name First On Last On Days Status B-day
-- --------------- --------- --------- ---- -------- ------
YN Norman Rockwell 05 Sep 88 08 Dec 88 62 Co-sysop Jan 04
Display 1 or more of any user file field
Sysop only - password
Address, Phone Number, Real name - if not unlisted
Variable fields - toggle any field on/off
Sysop only - password
Unlisted - can't show real name, address, phone
Variable sort - sort on any feild
Your Info - User File, user definable fields
Statistics - generated during cleanup.
----------
Callers in the last 24 hours, 1440 minutes
Usage this week
Day Usage Min Calls Ave min
--- ----- --- ----- -------
Mon 16% 234 14 17
Tue 38% 543 23 24
Wed 47% 678 45 15
Thr . 283 23 .
Fri . 824 12 .
Sat . 184 43 .
Sun . 275 98 .
Dark Side of the Moon Statistics - 08 Dec 88
User Stats Caller Stats Posting Stats
This Week ..... 34 This Week ..... 137
This Month ... 102 This Month .... 543
This Year .... 220 This Year ..... 6832
Total Users .. 235 Total Callers . 8312
of Users of Callers this Month
300 baud ... 45 .. 19% ......... 89 .. 23%
1200 baud .. 168 .. 71% ........ 325 .. 60%
2400 baud ... 22 ... 9% ........ 129 .. 24%
9600 buad .... 0 ... 0% .......... 0 ... 0%
of users of Callers this month
IBM Compat ... 22
Macitosh ..... 45
Apple // ..... 67 etc etc
Amiga ......... 3
C64 ......... 126
Atari ST ..... 21
Arati 8bit ... 87
Other ......... 9
Usage - Weekly Ave
100
90
80 .
70 . . . .
60 . . . . . . .. . ..
50 . . .. . . . .. .
40 .. ..
30
20
10 ________________________________________________
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
Comment to sysop - Non express mail to sysop - invoke editor
----------------
Recent Callers - Precompiled (long)
--------------
1200 Norman Rockwell's 245th 16 min 9:42pm Wed 04 Sep 88
300 Meat Head's 1st 23 min 12:04am Tue 03 Sep 88
Local Lord of the Moon's 1034th 4 min 10:16pm Mon 02 Sep 88
Last - grepped from recent callers
----
Search by user, name, number, handle, string
Fortune / Quote
---------------
Games
-----
My department. I'm thinking about a multiplayer paranoia type
game using a hack like display. Mmmmboy.
Bulletins
---------
Same as now but '*'s on new bulletins (since last call)
list length
Sysop - add bulletin
Description, date, filename, length calculated
Keyboard Test
-------------
Characters typed are echod exactly. Allows for testing emulation.
controls become ^, #27 becomes <ESC>, delete <DEL>, allows testing
of function keys and cursor pad. End mode with ^C.
Message Base
------------
Display
2: Idiocy and Mayhem AreaNum: AreaTitle
(267 - 302) New: 290 [290] : (FirstMsg - LstMsg) New : NewMsg [CurMsg] :
Menu Options
Sysop commands
Delete an area.
Change area/sysop permissions
Edit a message (too much power for area sysop?)
Plus area sysop commands
Area Sysop commands
Un/Rot13 a message.
Delete a message.
LowCase a message.
Add/Remove user to conference.
Change a users area permissions (not self)
Space - next message, Post after last message, Goto after posting
A - change area, ? displays areas
B - backward read, current to first (continously if set)
C - create a new area, conference
A new area gives access to everyone, remove users.
A conference gives access to no one, add users.
The area creator becomes sysop of that area and has the
power to add and subtract users.
D - de/activate area, toggle ignore
E - edit a message
users can edit their own message if none follow it
F - forward read, current to last (continuously if set)
G - goto next area with new messags
H - help, meaty
I - information on this area
Name, Creator, Creation Date, Range
J - junk this area - set new to last (catch up)
K - kill message (users kill their own)
L - list authors, dates, and lines of messages (range)
M - reply in mail
P - post a message
Q - quit to main menu
R - reply, including message replied to
S - search for message containing a given string
T - toggle pause between messages (or should we let more do the work?)
U - upload file (ascii) - invoke editor, controls deactivated, all
characters leagal, not even a backspace. End with control X's.
? - brief help, display options
'+' or '=' or <right> - next
'-' or Bs or <left> - prev
<up> - next area
<down> - prev area
<home> - first area
<end> - last area
Range -
#-# show # through #
#- show # on to the last message
-# show from current to #
# show #
- show from current to last
Message Header
[#290] Wed Dec 4, 12:44, 14 lines by The Analog Kid
^^^ ^^ ^^^^^^^^^^^^^^ highlighted?
Function
Current message should be new message when entering a new area
Area Sysop - Rot13, del any message
The Sysop - edit messages, move messages to other areas, files
Editor - Line oriented, word processor style
(always in overstrike for now?).
1. All visual characters leagal
A. Ansi/IBM has extend graphics ( >127 )
B. to other types, extended characters are 1 of 2
1. converted to spaces
2. converted to similiar characters
2. Control and escape characters have special functions
^A col 1 ^B nondest bs ^C toggle centerline
^D del to eol ^E eol ^F nondest space
^G eggplant ^H dest bs ^I tab
^J insert lf ^K -- ^L ins pause, clrscr
^M crlf at eol ^N next line ^O --
^P prev line ^Q -- ^R reverseline
^S signature ^T pageup ^U --
^V page down ^W del word ^X del to col1
^Y del line ^Z hold editor.
Esc 1..9 or F1-F10 - macros
Esc Esc or ^M^M - menu
Del - delete char under cursor
A note about ^L, this should insert a character that the
display function will recognize as a good place for a more.
Perhaps : imbed char, ^<something>
VT100, VT52 - cursor pad compatable, ie: Esc[A is up
3. Esc and double return both move into menu driven options
A. Search - move cursor to;
Replace String
B. Print <Lines> (default - all)
C. Hold (exit, doesn't affect data)
D. Save - saves buffer in current area, if applicable. Exits
Post
Send
E. Margins (autoindent - left; wordwrap column - right)
F. Tab size (^I)
G. Right Justify Toggle <lines>
H. Cancel (clears editor and exits)
I. Menu Help
J. Control Char Chart (2 column, verbose)
Ĵ<EFBFBD>($"!<21><> K. Delete <Lines>
L. Center Range
M. Box Range
N. Rot 13
4. Editor invoked either by posting message, sending news, etc or
by control character at any prompt (^E).
5. Sysop functions
Save to a file <lines>
Read from a file after current line
6. Future versions
A. Multiple buffers, equivilant of limited file saving
B. Read text from other areas, ie give board and message number
different from mail reply with include or post with include
7. Buffer save between logons, and during character drops, save
at each exit.
8. Housekeeping - (external) erase buffers older than XX days/weeks
9. Cursor movement not limited to a line (ie ^H^F^B wrap to
appropriate line), only top of file, eof.
Files
Executables
-----------
Init - creats all necessary / assumed files and directories
overall system validity check
default perms, config, shitlist, newuserformat
Config - modify configuration file (listed below)
Startup - runs the BBS.
bails and bitches if required files are missing
loads memory resident files
Pack - make arcs of directories in top directory
makes arc of data in top directory
makes arc of executables in top directory
Unpack - creates directories if needed
unarcs archives in appropriate directorys
User Editor
Cleanup - remove old mail, buffers, news, users
trim logs, recent callers
compact user list
Data
----
UserList - All user info
UserBrief - Name/Number/Password, UserList Entry (mem resident too)
ShitList? - Bad user names
SystemConfiguration
Board Name
Sysop
Location
ComPorts
Min and Max Baud
Handles Allowed y/n?
MaxTime per call
Log n on/off (3)
Max Log sizes (3)
Max RecentCallers
Directory Names
Mail, Message, Vote...
StatusStrings (1..n) - no real weight, just a label
1 Sysop
2 Co-sysop
3 Trivia Master
4 Registerd User
5 Beer Meister
6 Twit
7 Greenie
Color assignments
Modem Init Strings
SystemRecord
First system startup
Total Calls, Sysop Calls, Posts, Emails, Minutes, Users
Latest Bulletin, Finger, User, Announcement, Message
Default User File - New User Form
Posts, Calls, Mails = 0
FirstOn, LastOn = Today
Status = 7 (for instance)
Prompt = "$L> "
SystemPermissionsMasks
Logfiles (.log)
BadPassword
Activity - LastComm (just tagged users)
Logon/off - Last (also everytime BBS started aborted)
Directories
-----------
Buffers (uid.buf) - users editors on hold
Fingers (uid.pln) - users description / diddies
Mail (uid.ml)
Messages (.msg)
Bulletins (.bul)
Trivia
News/Announcements
Vote
Help
Menu?
Text
NewUser
Greeting (1..n) - random or retrieved like zippy quote
Welcome (1..n)
Goodbye (1..n)
NextCaller
RecentCallers
SystemStats - Compiled daily
RegisteredUsers - compiled after each new user
Brief
Long
Global Variables
----------------
Flags
Privacy active?
Privacy enabled? No forces active false.
^C enabled (internally toggled)
^S enabled (intern)
Take modem off after this user? (usually not)
Screen Dump?
Chat flag?
Monitor logged in?
Int
Time Left/on
Message Board Number
Local Display
Strings
Current Function user is in - What
for log file, local display, error tracing
User Record
UserBriefFile
User shtuff
-----------
The fields shouldn't be labeled handle, password, etc. Instead they
should be String[1..n] Int[1..n] etc. This makes them easily
redefinable and MUCH easier to write an editor for. A file of
names attached to each one can be set up, just like a file giving
names to each of the perms. This way someone editting a user can
pick a field by #/whatever and you just prompt for the appropriate
type and wallah. Some of these things will be user definable on
line and the code should not be huge brute force type shit.
User fields { 811/1024 bytes }
Characters Sex [1]
{ 17 } Perms [16] (r, w, s, #)
Voting, Trivia, Doors, FT, Games, Sysop...
Strings Handle [15]
{ 675 } Password [10]
Signature [20]
Name [25] too long?
Address [20] too short?
City [15]
State, Zip [13]
Phone [12]
Occupation [20]
Prompt [25] - variables
$L - Time Left
$O - Time On
$T - Current Time
$F - Current Function
ie "Dark Side [$T]->" (default)
Macros [20char x 5, 80char x 5]
Integers User ID
(Dates) Not a record number; link to mail, buffers, etc)
{ 114 } BirthDate (days since Jan 1 1980 or something)
Posts
Calls
Mails
Mins
MaxTime
TimeOn
Firston
LastOn
Expiration in days (0 = no exp)
Computer Type
TermType
Ascii
Ansi - assume extended IBM characters
(next vt100)
MessageBase [2x50 areas]
Last # Read
Permission - caps means ignore area is set
r, R - read only
w, W - write / post access
s, s - sysop (able to delete, rot, lowcase msgs)
Status - Number referencing a system const string
Flags Finger/Plan?
{ 5 } BufferSaved?
Unlisted? (name, phone...)
ClearScreen in more?
NewUser? (cleared manually by sysop or with external
user editor - this might be covered using
status or one of the perms)
Eventually a login script, logout, file of games saves/records/points.
When deleting a user, all mail, buffers, scripts, etc should also be
wiped.
Notes - heres some of my thoughts
-----
I don't like questions. In a lot of places in genesis you press
an option and it asks you ten things before it works. Like the
[R]egistered users thing. YOu have to hit R, L, L before you get
what you want.
The new software should have options that are preset and can easily
be toggled / changed, but always a go key only one level deep. Using
the Registered users example. R should pull up a menu with all the
sort and select information set with default values, and key to
start listing with the current setups.
--
The way genesis gets accounts is atrocious. For new users its full
of ambiguous questions.
For each field it fills, the screen should clear and a brief
description of what the user should answer is given (not just a prompt)
followed by a prompt. If a CR / blank entry is recieved a meaty
help should pop up.
For terminal selection ask the user what computer type and assume line
feeds and screen width. Next if they have color, then if they are
emulating a certain terminal type (again the brief description would
ward off new users and a beefy help if they enter something incorrect
or the user wants more info.
--
Multiline
---------
How is this going to be done? To make it multiline, there needs to
be some fancy interrups or more realistically, make it event driven.
This means there needs to be a separate record of global variables
for each active port. Uh.
Send - decides to where : local if local logon or watching
what port etc (even if not multiline)
to screen dump if active
Send file - handles messages, bulletins, menus, everything
Send string - handles emulation of terminals, color, etc.
Send local - handles local emulation (color at least, portability? :-)
Send char - drops characters into the io buffers.
Someday
-------
Mini-networking. Able to send mail to local BBS or remote systems.<2E><><01><> Not conferencing, just mail. If a letter could be transferred to
the DMG, for instance, from there it might be able to hop on a fido
net (since there is none here) or FUBAR and onto internet and on to
the rest of the world.
If only PC Persuit would come to town.