💾 Archived View for gemini.spam.works › mirrors › textfiles › bbs › design.bbs captured on 2023-01-29 at 18:04:51.

View Raw

More Information

⬅️ Previous capture (2020-10-31)

-=-=-=-=-=-=-

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.