GENWiki

Premier IT Outsourcing and Support Services within the UK

User Tools

Site Tools


archive:bbs:design.bbs

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)

Ä´¿($"! 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.‹…ý   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.
/home/gen.uk/domains/wiki.gen.uk/public_html/data/pages/archive/bbs/design.bbs.txt · Last modified: 2000/01/30 03:55 by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki