Trailing-Edge - PDP-10 Archives - decuslib20-08 - decus/20-0180/play.doc
There are no other files named play.doc in the archive.
                  Documentation for the PLAY program

              Any questions or comments should be sent to:
                         Brian Sietz
                         506 Birch Drive
                         Cherry Hill, NJ. 08003
                         Home: (609) 428-1201
                         Work: (609) 778-6163

This document is intended to be read by the system manager, or  system
programmer responsible  for maintaining  games  on the  system.   This
document is not intended to be used for on-line reference.


PLAY is a general purpose programable game restrictor designed to give
access to public games during non prime time, holidays, or periods  of
low load.   Any or  all of  the  parameters of  the play  program  are
settable at  runtime by  the  system manager.   There is  online  help
available for all of the commands.

User Commands

The following is a list of commands available to a user of the PLAY


The PLAY  program  is  a method  for  users  to play  games  based  on
pre-defined rules setup by the system manager.  These rules consist of
restrictions for  time  and system  load  average.  PLAY  also  has  a
facility to send  bug reports  & suggestions  to the  maintainer of  a
game.  To play a game, just type Play gamename or type Play ? to  list
the available games.

The following is a brief description of the available commands.

HELP         - Displays more detailed information about a specific
               command.  (HELP HELP types out this text, HELP PLAY
               types out information for the PLAY command)

INFORMATION  - Displays information about the current restricts, or
               support, agreement, or maintainer for a specific game.

DESCRIBE     - Describes a game.

SUGGESTION   - Sends a suggestion for a game to the current maintainer.

BUG-REPORT   - Sends a bug-report for a game to the current maintainer.

PLAY         - Plays a game.

CONTINUE     - Continues a game started with the PLAY command.

EXIT         - Returns to the Exec.
Starts execution of the specified  game.  If you typed @PLAY  gamename
from the exec, PLAY will return you there, otherwise you will get  the
Play> prompt when the game ends.  In either case, the continue command
may be used to resume the game.

While the game is in  progress, typing ^P (Control  - P) will pop  you
back into play.   From here, you  can use  any of the  top level  play
commands.  To resume playing, just type continue.

The INFORMATION commands displays the following information.

INFORMATION LOAD       - Displays the current load restrictions for

INFORMATION TIME       - Displays the current time restrictions. 

INFORMATION HOLIDAYS   - Displays a list of upcoming holidays.  During
                         a holiday, the holiday hours are checked rather
                         than the weekday or weekend hours.

INFORMATION AGREEMENT  - Displays the agreement this site has with the
                         maintainer  (if any).

INFORMATION SUPPORT    - Displays the degree of support you may expect
                         from the author with respect with new
                         features, or bug-fixes (if any).

INFORMATION MAINTAINER - Displays who the maintainer is (if any).

INFORMATION PLAYER-LOG - Compiles information contained in the log
                         file.  With this command, you can obtain
                         information about a specific user, a specific
                         game, a specific date, or marked records.  

INFORMATION VERSION    - Displays the version number and the installation
                         date of the this program.

Sends a bug-report through computer mail to the current maintainer  of
the specified  game.  If  there is  no maintainer,  the mail  will  be
directed to those people on the GAMES mailing list.

Sends a suggestion through computer mail to the current maintainer  of
the specified  game.  If  there is  no maintainer,  the mail  will  be
directed to those people on the GAMES mailing list.

Displays a brief introduction to the game.  The associated files for a
particular game can be found by typing @DIRECTORY GAMES:gamename.* The
description can be found in file gamename.DESCRIPTION, and often there
is a .HLP or .DOC file included.  These files can be typed or  printed
at your leisure without the PLAY program.

The DESCRIBE ALL command  will display a  one sentence description  of
each game available
The TYPE command is used to type  a .DOC, or .HLP file.  This  command
differs from the  Exec's TYPE  command in  that it  defaults to  those
files on the GAMES: directory.

The PUSH command is  used to start an  Exec under Play.  This  assures
you that  your Play  fork will  not  go away.   To continue  the  play
program, just type POP.

Privileged Commands

The following are  the commands  available only  to privileged  users.
These commands  can  be  dangerous  as they  effect  the  entire  user
community  playing  games.   The  ENABLE  command  should  not  become

Allows a user with WHEEL or OPERATOR privileges to enter enabled mode.
This command doesn't really  enable any privs, however  it sets a  few
internal flags,  adds  more  commands,  and  opens  the  database  for
Random-access.  While  in  enabled  mode, holidays  may  be  added  or
removed, load average checks may be changed, time restrictions may  be
changed, the database or log file can be initialized.

While in Enabled mode, the Play command will allow you to override the
load and/or time restrictions, however the log file will append a  [+]
after the  date to  indicate this.   This was  implemented mainly  for
testing, please don't abuse it.

Inserts a new holiday  into the database  in chronological order  with
those holidays already there.   To add a holiday  named New Year  just
type Add  New Year.  The start and end dates must be  specified on the
same line.

Removes the  specified holiday  from the  list.  Holidays  which  have
passed, will not  be displayed with  the Information Holiday  command,
however they still  exist in the  database, so  it is a  good idea  to
clean things up every now and then by removing them.

This command is used to initialize the log file, or the database file.
This is useful if the log  file (GAMES:PLAY.LOG) gets too big, or  the
database file (GAMES:PROT.DAT) gets corrupted.

This command will cease all game playing for all users within the next
timer interval.   Game  playing  may be  re-allowed  with  the  Cancel

Cancels any current shutdown of game playing (see SHUTDOWN)
The set command allows the changing of the following:

SET WEEKDAY-RESTRICTIONS - This sets the hours for which game
                           playing is not permitted on weekdays.  You
                           will be asked for a From: time.  On the
                           same line you must enter both the from time
                           as well as the to time, or type a carriage
                           return for all day availability.  Setting
                           the weekend and holiday restrictions are

SET WEEKEND-RESTRICTIONS - This sets the hours for which game
                           playing is not permitted on weekends.

SET HOLIDAY-RESTRICTIONS - This sets the hours for which game
                           playing is not permitted on holidays.

SET LOAD-RESTRICTIONS    - This allows the load average restrictions
                           to be changed.  The startup load average is
                           the maximum load for which users may start
                           playing a games.  The Maximum load average
                           is the point where users will no longer be
                           able to play a game which they already
                           started.  Users will be issued a warning
                           that the load is getting too high at the
                           midpoint of these two numbers.  You may
                           also change the frequency that the load is
                           checked as well as which load.

Upon startup, PLAY reads a database file containing all of the  system
parameters.  This initializes all  of the restrictions governing  what
actions (if any)  which Play responds  to hours and  load.  PLAY  also
builds a table of all .EXE files  in the GAMES: directory in order  to
react to dynamic changes of available  games.  PLAY will only be  able
to run games saved as an executable image.

System Requirements

- A non public directory for the games (usually <PS:GAMES>)
- A system wide logical definition GAMES: pointing to the above
  directory.   Although not required, this directory should be setup
  as files-only directory.  The directory protection should be 774440.
- A special password which is only known to the Play program.
- Games!! Lots of them!
- The executable image of the game must be protected 120202 
  This is for two reasons:
    Play must be able to see the games and
    In order to keep the games from being copied, then must be
    protected execute only.

Associated with each game may be any of the following files:
- gamename.DESCRIPTION  A short description describing the object or
                        rules.  The DESCRIBE command types this out.
- gamename.MAINTAINER   An Xmailr header file of the current
                        maintainer if there is one.  If not, the mail
                        will be sent to GAMES (a mailing list.  At
                        Rutgers we have this mail go to a bboard)
- gamename.AGREEMENT    Used in the INFORMATION AGREEMENT command.
- gamename.SUPPORT      Used in the INFORMATION SUPPORT command.
                        These file describe what type of support or
                        agreement you may have with the author of the
                        game.  If these files don't exist, PLAY looks
                        for DEFAULT.AGREEMENT or DEFAULT.SUPPORT.

None of these files  are required (with the  exception of the  default
files), but all can be helpful if you have people developing games and
such.  The directory  protection should be  setup in such  a way  that
some games can maintain data files, or shared files.

At game startup

When the user types @Play gamename, PLAY first checks the database for
the currently established restrictions.  If all is ok to start a game,
PLAY will connect to  GAMES:, get the JFN  of the specified game,  and
connect back.  It then starts the  game in a lower fork,  interrupting
it in a specified interval to check time and load averages.

PLAY keeps a log  of username, gamename and  time, and has  provisions
for computing some statistics with a cross reference between games and
Required files

- SYS:PLAY.EXE (compiled from your sources)
  The interface for the users
  Initially a null file.  Use the Initialize command from within PLAY
  to set it up. 
  Initially a null file.  PLAY will append records to it.
- GAMES:PLAY.MAINTAINER (supplied - this sends bug-reports to me)
- GAMES:ABSENT.MAC (supplied)
  A small macro file which will go in place of any game if it has to be
  moved into Games: telling users how to access this game from now on.
- Play sources (see note)
  PLAY.PAS (Pascal source module)
  INIT.PAS (site dependent code)
  PLAY.DOC (this document)
  PLAY-READ-ME-AND-MAKEFILE.CMD (control file for compilation)

Please note about sources
I have a few small requests concerning the sources to PLAY.  

1) If you modify or enhance the source, let me know so I can make the
   same change to my version.

2) Please keep the sources well guarded.  Try to keep to a minimum the
   number of people who have access to them.  DO NOT GIVE OUT THE

3) Do not distribute PLAY to any other sites.  If you know someone who
   is interested in having a copy, or installing it at their site,
   please direct them to me.  I would be happy to distribute play, or
   give any help that I can.  If you have Games:Play.Maintainer setup
   correctly, they can contact me directly through the suggestion

4) Thank you for your cooperation in this matter.   ENJOY!