Barry C. Breen
P.O. Box 1964
Bellevue, Washington 98009
28-OCT-80
Rev. 3-DEC-82
>> History -- This version of the "Adventures" game is written in OMSI
PASCAL V1.2 running under RSX11M V3.2 BL26 on a PDP 11/23. It contains
special display text files for the VT-100 which makes use of double
width and double height characters for special effect. It was written
as an exercise in learning PASCAL and RSX while developing software for
the Sundstrand Data Control Digital Ground Proximity Warning Computer
for the Boeing 767/757 series aircraft.
Adapted from a FORTRAN-IV-PLUS version found in a cave, not from the
latest DECUS version.
The comments on the original read as follows:
ADVENTURES
MODIFIED BY KENT BLACKETT
ENGINEERING SYSTEMS GROUP
DIGITAL EQUIPMENT CORP.
15-JUL-77
ORIGINAL VERSION WAS FOR DECSYSTEM-10
THIS VERSION IS FOR FORTRAN IV-PLUS UNDER
THE IAS OPERATING SYSTEM ON THE PDP-11/70
The FORTRAN version also had a notice in the text files (listed in the
instructions at the beginning of the game) which credited the original
authors as follows:
THIS PROGRAM WAS ORIGINALLY DEVELOPED BY WILLIE CROWTHER. MOST OF THE
FEATURES OF THE CURRENT PROGRAM WERE ADDED BY DON WOODS (DON @ SU-AI).
CONTACT DON IF YOU HAVE ANY QUESTIONS, COMMENTS ETC.
I have retained most of the data structures and algorithms as they were
in the F4P version with the following changes:
1) The entire game is organized into separately compileable
PASCAL modules which run overlaid when built into a task. The
resulting task file is huge, but the task image runs in less than
12 Kwords of memory. Modules and procedures which correspond to
subroutines in the F4P version have the same or similar names,
as do the data variables and constants. Also the original comments
were retained where applicable. These features should make it
easy for someone familiar with the original to follow this version.
2) The travel array, vocabulary data, and "atloc" arrays make
use of PASCAL pointer types and linked lists rather than the
integer array linkage used in the F4P version.
3) The ASCII text and data file is split up into smaller files by
a special "files initialization" task before installation; then
these smaller files are used when running the game rather than
re-initializing from the main database each time the game is run.
The main data files (ADVENTURE.DAT and ADVENTURE.100) are organized
similar to the original F4P database file (TEXT.TXT), which makes
them easy to edit. The smaller files (ADVTXT.DTA (or .100),
ADVDAT.DTA (or .100), KATAB.DTA, and ADVENT.DTA) are PASCAL
structured file types. Refer to the comments in the initialization
module (ADVINI) for a description of the database. Constants,
variables and type structures are described in the comments in
the global declarations module (ADVGBL).
4) Vocabulary searches are done on a letter by letter basis
via a linked tree file structure rather than searching a vocabulary
table for a word match. This results in much faster word
recognition time.
5) Maintenence and wizardry routines which had only been partially
implemented in the Blackett F4P version I worked from were restored
and enhanced slightly:
1. All wizardry data and variables are saved in an external
file of integers, ADVWIZ.DTA.
2. The "message of the day" works and allows wizards to
put out a 10 line by 70 character message at the beginning
of the game.
3. The test for wizards now requires knowledge of a magic
word and number and a new algorithm for correct response.
4. The pause feature does not require saving a core image;
player name and variables are written to ADVWIZ.
5. POOF (wizardry data initialization) was made into a separate
task; it simply creates an initial ADVWIZ file. I also added
a task named PEEK which allows the "Grand Wizard" (presumably
the system manager) to cheat and list out the current contents
of ADVWIZ.
If you come across a copy of this program and have any questions or
comments, write to me at the address at the start of this readme file.
>> Contents of Distribution:
1 ** PASCAL Source Files Library
ADV.ULB
Besides containing the source files for each of the game
modules (see list below), this file contains the source for PEEK,
POOF, and the files initialization tasks, ADVFLS and 100FLS. It
also includes the overlay description file for the main task, ADVBLD.ODL.
You need to add an overlay description for the OMSI and RSX stuff,
derived from their PAS.ODL, and rename it ADVPAS.ODL. It need only
reference the SYSLIB tree (if no FCSRES) and the following OMSI PASLIB
modules:
$INIT,$IO,$INPUT,$OUTPT,$ERROR,$WRINT,$DYNMM,$GETF,$PUTF,$CLOSE,
$RSIM,ERROR,$ARITH,$OPEN,$READI,$SEEK,$FTIME,$FPSIM,$CNVRT
2 ** Assembled Object Code Library
ADV.OLB
OMSI compiled and improved and MAC assembled version of all the
game modules. The OMSI Improver was used to condense the code, some
modules are reduced in size by as much as 12% from the compiler output.
Compiler used was the EIS/FIS V1.2 but no floating math is used. Note
that the modules recommended to include in the overlay description for
the PASCAL runtime stuff has the floating math packages removed (except
for the "time" function, which is used to seed the pseudo-random number
generator and in DATIME).
All modules were compiled with the following command to PAS:
PAS <module>=ADVGBL,<module>/E
except MAIN which is the main program block and doesn't use the
"/E" switch.
3 ** Useful Command Files
It is recommended that you read and modify to suit your
installation before using.
ADVEDT.CMD -- "Do-all" command file for extracting modules
from the source library, editing, replacement,
compilation, improvement, assembly, listing,
task build, library compression, etc. You
may want to edit this to suit your own needs.
ADVPRT.CMD -- Prints source listings from ADV.ULB using the
serial print spooler or QMG.
ADVBLD.CMD -- Task building sub-set of ADVEDT.
4 ** Database Files
ADVENTURE.DAT -- ASCII format data
ADVENTURE.100 -- ASCII format data (VT100 version)
ADVTXT.DTA -- Text Files from ADVENTURE.DAT
KATAB.DTA -- Tree-structured version of vocabulary
from ADVENTURE.DAT (or ADVENTURE.100)
ADVDAT.DTA -- Arrays of record pointers into text and
vocabulary files.
ADVTXT.100 -- Text Files from ADVENTURE.100
ADVDAT.100 -- Record pointers into vocabulary and VT100
text files.
ADVENT.DTA -- Remainder of data from ADVENTURE.DAT
(same as ADVENTURE.100)
>> General Instructons:
You need at least EIS instructions to use the object library as is for
task building. In this case, modify a copy of the OMSI supplied PAS.ODL
to include only the modules in the above list (see ADV.ULB description).
Use PIP to rename it ADVPAS.ODL and insert into ADV.ULB using LBR. Then
invoke ADVBLD.CMD, it does the rest.
If you wish to recompile everything first, examine and edit ADVEDT so
that task names, devices, and UIC's correspond to your installation and
then use it. All three command files may be used as a guide for doing
it all by hand.
I have supplied enough goodies so you can easily change the game
at any level of the process. Note that the source files make heavy
use of OMSI extentions to standard PASCAL so if you are using
someone else's PASCAL watch out for the following:
1) Random files access using the OMSI "SEEK" procedure
and non-standard REWRITE and RESET procedures.
2) ELSE clause in CASE statements.
3) EXIT statement.
4) TIME function.
5) EXTERNAL declarations, {$E+} imbedded switch,
and handling of globals.
6) Imbedded MACRO code using the {$C} switch.
Have fun!!
>> Index to Source Modules --
Here is a list of what procedures are contained in each of the
game modules. Only the global level procedures are listed.
>> Final Notes and Novice Wizard's Disclaimer, 2-DEC-82:
I have yet to run this on V4 RSX or the VAX AME, but if OMSI works there,
so should this. It is currently up and running on a friend's 11/23 and
another's 11/34A, both running V3.2. It will be re-written in VAX PASCAL
when I find the time. Current work address:
Barry C. Breen
Senior Design Engineer
Sundstrand Data Control
Redmond, Wash. 98052