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. Description 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 program. HELP:: 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. PLAY:: 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. INFORMATION:: The INFORMATION commands displays the following information. INFORMATION LOAD - Displays the current load restrictions for game-playing 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. BUG-REPORT:: 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. SUGGESTION:: 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. DESCRIBE:: 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 TYPE:: 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. PUSH:: 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 publicized. ENABLE:: 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. INSERT:: 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. REMOVE:: 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. NEW:: 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. SHUTDOWN:: This command will cease all game playing for all users within the next timer interval. Game playing may be re-allowed with the Cancel command. CANCEL:: Cancels any current shutdown of game playing (see SHUTDOWN) SET:: 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 similar. 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. Initialization 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 ) - 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 users. Required files - SYS:PLAY.EXE (compiled from your sources) The interface for the users - GAMES:PROT.DAT Initially a null file. Use the Initialize command from within PLAY to set it up. - GAMES:PLAY.LOG Initially a null file. PLAY will append records to it. - GAMES:DEFAULT.AGREEMENT (supplied) - GAMES:DEFAULT.SUPPORT (supplied) - 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. - HLP:GAMES.HLP - 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 SOURCE TO ANY NON SYSPROGS! 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 command. 4) Thank you for your cooperation in this matter. ENJOY!