Classic Computer Magazine Archive PROGRAM LISTING: 89-10a/ADVENT.DOC

  By David Woolley
  You awake suddenly, and find
  yourself with slight amnesia. The
  only thing you can remember is that
  you are captain of the starship
  Discovery, which should be on a
  direct course from the star system
  Nu Draconis to Earth. But what has
  happened while you were unconcious?
  Why has the crew mysteriously
  disappeared? And does the strange,
  alien cannister in the launch bay
  have anything to do with it?
  Your job is to find out what went
  wrong aboard the Discovery, and, if
  possible, correct the situation.
  You use one- and two-word commands,
  with the basic sentence structure
  of a verb and a noun.  In this
  adventure, you use the standard
  commands of GO (followed by a
  direction), GET (followed by an
  object), and INVENTORY (which
  displays a list of your current
  objects) and others.
  You'll find The Discovery Incident
  on disk as ADVENT.BAS.  You can run
  this game directly from the disk,
  but it you want to SAVE your games
  you MUST copy this program to
  another disk containing the DOS.SYS
  When you first RUN the game the
  menu will appear, with options 0-4:
  4- LEAVE
  Option 0 starts the game where you
  left it. To return to the menu
  during the game, simply type MENU.
  Option 1 loads a saved game, and
  option 2 saves the game in
  progress.  If you are using a
  cassette data recorder, add these
  9155 OPEN #A2,A8,O,"C:"
  9185 OPEN #A2,A4,O,"C:"
  This will SAVE and LOAD from tape
  instead of disk.
  Option 3, swap sets, toggles
  between the special character set I
  designed, and the standard Atari
  character set.
  Option 4 returns you to BASIC,
  clearing all variables.
  Playing the Game

  Select option 0.  The screen turns
  black, and at the top of the screen
  is a short description of your
  present location, including any
  nearby objects that you could
  carry.  Note: the items listed
  beside OBJECTS are not the only
  objects in that location, just the
  ones that you can pick up. You can
  still manipulate other objects
  described in the text.
  When referring to items you can
  pick up, always use the name that
  is listed under OBJECTS, but when
  referring to items listed in the
  description, use only one word.
  So, when you are talking about the
  alien cannister, use CANNISTER.
  You can use several commands to
  move in a certain direction.  For
  instance, to go up a ladder you
  could type GO UP, UP, U, or CLIMB
  LADDER.  Other commands you will
  use frequently are GET, DROP and
  INVENTORY.  To repeat your last
  command, just press [RETURN].
  Program Take-Apart
  All verbs and nouns are assigned a
  number. This is done in the
  subroutines from 8030 to 8060.  The
  program finds the number by sorting
  through either the ACT$ string for
  verbs, or the OBJ$ string for
  nouns.  The number of the command
  is its starting position in the
  string.  So, the number for the
  verb INVENTORY is 13, because
  ACT$(13,15)="INV".  Note that only
  the first three letters are used.
  The variables VB and NN are made
  equal to these 'command numbers'.
  A set of variables, A0-A9, O, and
  LI, are established in the first
  line, and are used in places to
  refer to numbers. This is to save
  memory.  So, instead of using 0, we
  use O(see line 3), A0 instead of
  10(as in line 9077), and LI to
  refer to line 52, which is often
  The custom character set was
  designed to add "character" to the
  game.  Lines 9036 to 9045 contain
  data for numbers 0-9, and lines
  9046 to 9071 contains data for
  letters A-Z.Line 9072 contains data
  for the ? character, and lines
  9073-9074 contains data for
  characters ( and ).  If you have no
  experience with custom character
  sets, try reading the article
  Ultrafont (Antic August 1986), or
  take a look at Instedit(AP0117)
  from The Catalog.
  Which line the object is on depends
  upon its position in the OBJ$
  string.  So, WATCH is at line
  11019, because WAT holds the
  positions 19-21 in OBJ$.  The
  coordinates of each object that can
  be picked up and moved are
  contained in the two-dimensional
  array OBJECTS, which is DIMed to a
  maximum of (11,3) because there are
  11 objects that can be TAKEn, and
  there 3 coordinates.  So,
  OBJECTS(3,x) would refer to the
  Manual, because it is the third
  object in the OBJ$ string. Take a
  look at this:
  This means that the Manual's
  coordinates are (7,4,3).If the
  player was carring the Manual, then
  three zeros would be placed into
  OBJECTS(3,1-3).  The starting
  position of each object is placed
  into the array at lines 9900 to

Back to previous page