home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS 1992 June / SIMTEL_0692.cdr / msdos / hypertxt / hs25.arc / HSDEV.LZH / HSAUTH.DOC < prev    next >
Text File  |  1989-05-08  |  66KB  |  2,378 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.         
  9.  
  10.  
  11.                HyperShell Hypertext control system
  12.                    Version 2.5
  13.  
  14.                  Authoring Guide
  15.  
  16.                Copyright (c) 1989 Text Technology
  17.  
  18.         
  19.  
  20.  
  21.     Text Technology
  22.     66 Kennedy Avenue
  23.     Macclesfield
  24.     Cheshire
  25.     England
  26.     SK10 3DE
  27.  
  28.         
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.                       - 1 -
  63.         
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.                     Chapter 1
  80.  
  81.                   Introduction
  82.  
  83.  
  84.  
  85.  
  86.     1.1 Introduction
  87.  
  88.  
  89.     This  manual is a guide to the production of hypertext files for
  90.     the HyperShell system. 
  91.  
  92.     It describes the mechanism  for producing and maintaining simple
  93.     hyperfiles,  and  provides  an    introduction  to  more    advanced
  94.     programming using HyperShell. It is recommended that the  reader
  95.     becomes  familiar  with the operation of HyperShell, by  reading
  96.     the Users guide  and  by  using  HyperShell, before reading this
  97.     document.  An understanding of the fundamentals of MSDOS is also
  98.     useful. 
  99.  
  100.     The  full specification of HyperShell files, and full details of
  101.     the operation of the  editor and support utilities are described
  102.     in the Reference Guide.
  103.  
  104.     The  hypertext concept and the HyperShell product are  described
  105.     in the Shareware notice document. 
  106.  
  107.  
  108.  
  109.  
  110.     1.2 Authoring
  111.  
  112.  
  113.     Creating  Hypertext  documents    is  known  as  'authoring'.  The
  114.     process of creating an    effective  Hypertext document is similar
  115.     to producing a reference book, although the  structure    is  very
  116.     different.   A    great  deal of planning is  necessary  before  a
  117.     hyperfile is created, as  the  information has to be broken down
  118.     into  units  called 'frames', and links created  to  bind  these
  119.     frames together. 
  120.  
  121.     HyperShell files, known as  'hyperfiles', consist of the text to
  122.     be read by the 'user', and control information.  In its simplest
  123.     form, a HyperShell document has to be split into  'frames'  of a
  124.     certain size and each frame needs to be identified.  Some  means
  125.  
  126.  
  127.  
  128.                       - 2 -
  129.         
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.     HyperShell          Introduction         Authoring Guide
  138.         
  139.  
  140.  
  141.     of moving from a frame to related frames is also necessary, even
  142.     if  it    is  just   to    permit     stepping   through  the  frames
  143.     sequentially.    HyperShell provides some  standard  commands  to
  144.     provide  selection  from  a  table  of contents, searching for a
  145.     string etc.  The real power of    Hypertext,  however, is provided
  146.     by embedded references in the text to other frames or sources of
  147.     information.  HyperShell provides these in a straightforward and
  148.     powerful way,  and also provides popup menus and paged displays,
  149.     as well as a whole range of generic actions. 
  150.  
  151.     The creation of the hyperfile  can  be    done using a simple text
  152.     editor or word processor,  or  can  be done using the HyperShell
  153.     authoring tools.   The    tutorial  will    assume    the  use  of the
  154.     HyperShell editor. 
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.                        1-3             Version 2.5
  195.         
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.     HyperShell            Tutorial         Authoring Guide
  204.         
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.                     Chapter 2
  214.  
  215.                     Tutorial
  216.  
  217.  
  218.  
  219.  
  220.     2.1 File contents
  221.  
  222.  
  223.     A hyperfile is a simple text file, in that it contains lines  of
  224.     text  which  can  be viewed or    edited    with  conventional  text
  225.     handling utilities such as text editors.  The hyperfile contains
  226.     identification and formatting details  of  the    frames and other
  227.     items in the file.   It  is  made  up  of  items  general to the
  228.     hyperfile, and items relating to each frame  in  the hyperfile. 
  229.     Note that the order of certain items is critical for the correct
  230.     operation of the hyperfile, but in most cases HyperShell takes a
  231.     rather relaxed attitude towards  minor misdemeanors and will not
  232.     complain if it finds things it wasn't expecting.  This may mean,
  233.     however, that you can  make  mistakes and that these will not be
  234.     immediately  obvious  when  you  run  HyperShell.  The    checking
  235.     utility is provided to assist with  the  detection of errors and
  236.     of unresolved cross references. 
  237.  
  238.  
  239.  
  240.  
  241.     2.2 Tutorial
  242.  
  243.  
  244.     2.2.1 Simple hypertext
  245.  
  246.     The most simple hyperfile  contains  a number of small blocks of
  247.     text held in frames.  A frame is the unit of presentation, being
  248.     the  set  of  information  presented  at  one time.  The  frames
  249.     usually hold information about    one subject, and the name of the
  250.     subject  usually  forms  the  name  of the frame.  To produce  a
  251.     hyperfile,  we    can  use the HyperShell editor.  To  invoke  the
  252.     editor, make  sure you have the program HE.EXE available to run,
  253.     and that you have  sufficient  space  on  the  default drive and
  254.     directory to store  the  resulting  file  (about  40k).  For the
  255.     example, we will create a hyperfile about  cars, called CAR.HYP.
  256.     To create this, type:-
  257.  
  258.  
  259.  
  260.                        2-4             Version 2.5
  261.         
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.     HyperShell            Tutorial         Authoring Guide
  270.         
  271.  
  272.  
  273.     A> he -c car
  274.  
  275.     The  editor will create a file    with  one  frame  in  it  called
  276.     'introduction', and will display that frame.  To change the name
  277.     and title of this frame, we just press    Shift-F5.  At the bottom
  278.     of the screen, the editor will ask for the new name and then the
  279.     new title.  We can call the frame 'the car' and give it  a title
  280.     of 'all  about    cars'.     After changing the details the new name
  281.     and title will be displayed at the top of the frame display.  We
  282.     can now enter some  text  for the frame.  Pressing F4 will cause
  283.     the editor to  enter  edit  mode  on the current frame.  In edit
  284.     mode, you can type in text just as with a word processor or text
  285.     editor.  You  can  move  around  the text using the cursor keys,
  286.     delete text using the delete keys, and enter  new  text  at  any
  287.     point just by typing.  If you now enter the  following text, you
  288.     can see how this works (don't worry if    the  text  isn't  in the
  289.     exact format).    If you get in a mess,  you  can always exit from
  290.     the editor, delete the file, and start over. 
  291.  
  292.  
  293.  
  294.          The car is a very important item in our everyday life, yet
  295.          we do not think about what is going on inside the engine
  296.          of the car, or of how the brakes make the car stop. The
  297.          bodywork of a car does more than keep the rain out, and
  298.          the electric system provides much more than is at first
  299.          apparent.
  300.  
  301.     When you have completed this,  you  can  exit  the  edit mode by
  302.     pressing F10. The text will appear along with the name and title
  303.     in the frame display.    We  now  need  to  create further frames
  304.     about the engine etc.  To add  a  frame,  press  Shift-F1,  then
  305.     supply    the frame name and title.  Do this  now,  supplying  the
  306.     name 'engine' and title 'the power plant'.  After  you have done
  307.     this, the editor automatically puts you into edit  mode to enter
  308.     the text for the frame.  Enter the following text:-
  309.  
  310.  
  311.  
  312.          The engine provides the central power unit for the car. It
  313.          powers the wheels to move the car along. It generates
  314.          electricity for the battery and the electric system. It
  315.          provides heat to keep the windscreen clear of condensation,
  316.          and to keep you warm. The engine runs on some form of fuel.
  317.  
  318.     After you have    entered  this,    type  F10 to exit.  Use the same
  319.     mechanism to enter the following frames:-
  320.  
  321.     name 'electric system' title 'electrical components'
  322.  
  323.  
  324.  
  325.  
  326.                        2-5             Version 2.5
  327.         
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.     HyperShell            Tutorial         Authoring Guide
  336.         
  337.  
  338.  
  339.  
  340.  
  341.          The electric system of the car provides a number of essential
  342.          services. The battery is used to store electricity for starting
  343.          the car, and to act as a reservoir for when a heavy load is
  344.          placed on the electric system. The ignition system is used to
  345.          provide the sparks to ignite the fuel in the engine. The
  346.          lighting system provides lights for indicating, warning, and
  347.          night driving. The in car entertainment system is used to stop
  348.          you from getting bored on long trips.
  349.  
  350.     name 'bodywork' title 'the shell of the car'
  351.  
  352.  
  353.  
  354.          The bodywork of the car provides the main structure which holds
  355.          together the components of the car. It provides a secure and
  356.          weatherproof compartment for you to travel in, and gives you
  357.          something to polish in the summer and worry about in the
  358.          winter.
  359.  
  360.     name 'brakes' title 'the braking system'
  361.  
  362.  
  363.  
  364.          The braking system of the car provides the means of stopping
  365.          the car. Brakes on a car need two independant systems for
  366.          braking, so that one system can act as a backup if the
  367.          other one fails. Normally, there is a hydraulic footbrake
  368.          system and a cable operated handbrake, although some cars
  369.          have hydraulic handbrakes.
  370.  
  371.     name 'ignition system' title 'to ignite the fuel'
  372.  
  373.  
  374.  
  375.          The ignition system provides a spark to ignite the fuel
  376.          vapour drawn into the cylinders through the carburettor.
  377.          The spark is timed to ignite the fuel just before the
  378.          piston gets to the top of its stroke, so that the energy
  379.          will peak during the downward stroke. A distributor directs
  380.          the spark from the coil to the correct sparking plug.
  381.  
  382.     When you have done  this,  you    have a very simple hyperfile set
  383.     up.  To provide some cross-references, the  autoreference action
  384.     can be performed on each frame.  To select  each  frame in turn,
  385.     select the contents list from the frame display control menu (or
  386.     press F2), then select the frame from  the  list by pressing the
  387.     letter in brackets at the left, or by using the mouse or TAB key
  388.     to  select  the  frame reference.  This should put you in  frame
  389.  
  390.  
  391.  
  392.                        2-6             Version 2.5
  393.         
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.     HyperShell            Tutorial         Authoring Guide
  402.         
  403.  
  404.  
  405.     display mode for the  frame  selected.     If you select the first
  406.     frame ('the car'), you    can  then press F4 to enter edit mode on
  407.     that  frame.  When in edit mode, you can press    SHIFT  F9  which
  408.     causes    reference  flags to be added to the frame text.  You can
  409.     now press F10 to  exit    the  edit mode for that frame and select
  410.     the  next  one    from the contents list.  When you have    finished
  411.     doing this to all the frames, you should  be  able  to    navigate
  412.     around the frames by selecting the highlighted references. 
  413.  
  414.     It is normally best to do  the    autoreferencing  after    you have
  415.     added  all frames and other items to the hyperfile.  When you do
  416.     this  on  your    own  files,  you  may    see  certain  references
  417.     highlighted that  are not what you expected, and are meaningless
  418.     in  the  context  in  which  they  occur.   To    remove    unwanted
  419.     references  whilst still in edit mode, simply position the  text
  420.     cursor over the reference and press CTRL F3.
  421.  
  422.     Now that you have set up your hyperfile, you can exit the editor
  423.     by  pressing  F10.  You may now run the browser  against  it  by
  424.     typing:-
  425.  
  426.     hs car
  427.  
  428.     You can now see your  first  hyperfile    in  action.  You can see
  429.     that  it  is  fairly easy to set up a simple hyperfile, but  you
  430.     will want to improve the appearance of the display, and to offer
  431.     more supporting  information  in many cases, so we will progress
  432.     the hyperfile. 
  433.  
  434.  
  435.     2.2.2 Adding features
  436.  
  437.     Suppose you want to  add  your    own special heading to appear on
  438.     each  frame  of  the  hyperfile.   This  is easier than you  may
  439.     imagine.  Reenter the editor now, so  we can add some more items
  440.     to the hyperfile. 
  441.  
  442.     he car
  443.  
  444.     As we want to add a header section,  we  will need to select the
  445.     global item list by  pressing  F5  from  the frame display.  You
  446.     will see that at the start of the list is  a  .REMARK  item.  We
  447.     will add  the header after this.  To do this, select the .REMARK
  448.     item by pressing the  letter  to the left of it, or by selecting
  449.     the  reference.   A  menu will now popup, and you should  select
  450.     INSERT NEW ITEM AFTER. This will in turn  pop  up  a menu asking
  451.     what  type  of item you want  to  insert  -  select  the  HEADER
  452.     option.   You will now be prompted for the name of the item  you
  453.     wish  to copy text from.  You may just press RETURN here to  not
  454.     copy any text.    To  enter  the    text for the header, you need to
  455.  
  456.  
  457.  
  458.                        2-7             Version 2.5
  459.         
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.     HyperShell            Tutorial         Authoring Guide
  468.         
  469.  
  470.  
  471.     select    the  HEADER item, and take the EDIT ITEM option  on  the
  472.     menu.  You will now be put into edit mode on the HEADER section,
  473.     and should enter the following text:-
  474.  
  475.  
  476.  
  477.          [$1] [$2]    All about cars    [$4] [$5]
  478.  
  479.     This  sets up the header to contain the frame name and title,  a
  480.     general heading and the date and time.    When you have done this,
  481.     you  can press F10 to exit the edit mode.  This will return  you
  482.     to  the global item list.  If you now  select  the  HEADER  item
  483.     again, only this time select INSERT NEW ITEM  AFTER,  and choose
  484.     FOOTER    from  the  item type menu.  Again press RETURN when  the
  485.     request for copied item prompt    appears.  Then select the FOOTER
  486.     item and take the EDIT ITEM option on the menu.  This will enter
  487.     edit mode  for    the  FOOTER. Enter the following text, this time
  488.     watching  the  display line at the bottom to see what  is  being
  489.     entered:-
  490.  
  491.  
  492.     ~L20
  493.          ~MTerms~E
  494.  
  495.     This sets up a footer  section at line 20 which will give a menu
  496.     of terms used in the hyperfile, each explained by a popup note. 
  497.     Then exit from    edit mode by pressing F10. You now want to add a
  498.     global    menu  item, which can be done by  selecting  the  FOOTER
  499.     item, and then taking  the INSERT NEW ITEM AFTER option.  Select
  500.     MENU from the item menu, and enter 'Terms'  as    the  name of the
  501.     menu.  Press  RETURN  for the copy from item prompt again.  Then
  502.     select the 'Terms'  reference  and  take  the EDIT ITEM option. 
  503.     Enter the following text:-
  504.  
  505.  
  506.     Carburettor |NCarburettor
  507.     Fuel        |NFuel
  508.     Spark        |NSpark
  509.  
  510.     This sets up the  menu    of terms, with a note reference for each
  511.     term.  Exit from the edit mode by pressing F10. You now need  to
  512.     add the three notes.  Do  each    in turn by following the example
  513.     as  for  the 'Terms' menu, adding each note after  the    menu  or
  514.     after the previous note, and enter the following note texts:-
  515.  
  516.  
  517.     name 'Carburettor'
  518.  
  519.     A carburettor is a device which
  520.     is used to mix air with fuel.
  521.  
  522.  
  523.  
  524.                        2-8             Version 2.5
  525.         
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.     HyperShell            Tutorial         Authoring Guide
  534.         
  535.  
  536.  
  537.     The air is drawn in by the piston
  538.     descending on alternative strokes.
  539.     The air is first filtered through
  540.     an air filter. The fuel is kept
  541.     at a certain level in a float
  542.     chamber next to the carburettor,
  543.     and is sucked into the air stream.
  544.  
  545.     name 'Fuel'
  546.  
  547.     Fuel is the liquid or gas used in
  548.     the engine to produce the energy.
  549.     When the fuel vapour ignites, the
  550.     gas expands and pushes the piston
  551.     down. The mixture is generally
  552.     ignited by a spark from a spark
  553.     plug fed from an ignition coil.
  554.  
  555.     name 'spark'
  556.  
  557.     A spark is caused by the discharge
  558.     of a high electric voltage across
  559.     a gap. The voltage is generated by
  560.     a coil with two windings, one a low
  561.     voltage winding connected to the
  562.     battery, and interrupted by the
  563.     contact breaker and the other a high
  564.     voltage winding connected through
  565.     the distributor to the spark plug.
  566.  
  567.     After you have    done  this,  press  ESC  to  return to the frame
  568.     display. 
  569.  
  570.     The menu and notes provide additional material in support of the
  571.     main  frames.    Note that these  global  notes    should    be  kept
  572.     together, as should global  menus  and scripts.  You can add the
  573.     note  references  to  the  frames  by  using  the  autoreference
  574.     facility again, as you did to begin  with,  for  all  frames and
  575.     notes.     Whilst  you are in edit mode for the 'ignition  system'
  576.     frame, try positioning the  cursor  on    the  word 'distributor',
  577.     then press SHIFT F4. This will flag the word as a local note. 
  578.  
  579.     When you have done this you can exit  the editor and try out the
  580.     hyperfile with HyperShell. You will note  that    when  you select
  581.     the 'distributor' reference, a message is issued saying that the
  582.     item is  not available.  If you try running the checker program,
  583.     it will check all the references and tell you what is wrong:-
  584.  
  585.     hc car
  586.  
  587.  
  588.  
  589.  
  590.                        2-9             Version 2.5
  591.         
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.     HyperShell            Tutorial         Authoring Guide
  600.         
  601.  
  602.  
  603.     You  should now reenter the editor and use the contents list  to
  604.     select    the  'ignition    system'  frame.  When you have    selected
  605.     this, press SHIFT F2. This will prompt for a note name, and  you
  606.     should enter 'distributor'. It will then enter edit mode and you
  607.     can enter the following text:-
  608.  
  609.  
  610.  
  611.     The distributor is used to direct
  612.     the high voltage current from the
  613.     coil to one of the spark plugs.
  614.     It also contains the low voltage
  615.     contact breaker points, which
  616.     determine when the sparks are
  617.     produced.
  618.  
  619.     When you have done this, press F10 to exit edit mode, and  again
  620.     to save the file and exit  the    editor.   Try  out the hyperfile
  621.     again, and the distributor  note  should  popup  when selected. 
  622.     This note is available only from this one frame, and is known as
  623.     a 'local' note.  A note with the same name can exist for another
  624.     frame, but will be a different note, local to that frame. 
  625.  
  626.     With the knowledge you now have, you can set up your own complex
  627.     hyperfiles.  You may like  to extend the car hyperfile, and play
  628.     around with adding further notes and  menus,  and  modifying the
  629.     header and footer texts. 
  630.  
  631.  
  632.     2.2.3 Adding further features
  633.  
  634.     The straightforward hyperfile design described above, along with
  635.     the  HyperShell  browser,  provides a full traditional hypertext
  636.     system. 
  637.  
  638.     Additional  features specific to  HyperShell  can  be  added  to
  639.     enhance the operation of a hypertext  document.   Some    of these
  640.     are described in this section. 
  641.  
  642.  
  643.     2.2.3.1 Help
  644.  
  645.     A simple help facility is probably the first  feature  you  will
  646.     want  to  add to your system.  The '?' key is used to attempt to
  647.     invoke    a  global menu called 'help', which should only  contain
  648.     global    note  actions.     This  may  be    used  for a simple  help
  649.     system.  Note that this form of help is available from the paged
  650.     display screen as well.  The help system may be used to describe
  651.     the operation of HyperShell and any specific operational aspects
  652.     of  the hyperfile, or  can  be    used  in  support  of  the  main
  653.  
  654.  
  655.  
  656.                       2-10             Version 2.5
  657.         
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.     HyperShell            Tutorial         Authoring Guide
  666.         
  667.  
  668.  
  669.     hyperfile  material.   The  'car' hyperfile could have a  simple
  670.     system describing how to  use HyperShell to navigate around.  To
  671.     add such a system to  the  car    hyperfile,  insert a global menu
  672.     called 'help' containing the following text:-
  673.  
  674.         
  675.  
  676.  
  677.     Selecting    |NSelecting
  678.     Control keys |NControl keys
  679.  
  680.     and some global notes as follows:-
  681.  
  682.     Note name 'Selecting' containing:-
  683.  
  684.  
  685.       You can follow references
  686.       to move between frames and
  687.       to display popup notes and
  688.       menus. To select a reference
  689.       position the mouse cursor
  690.       using the mouse, cursor keys
  691.       or TAB and SHIFT/TAB, then
  692.       select by pressing ENTER, or
  693.       the LEFT mouse button.
  694.  
  695.     and the note 'Control keys' containing:-
  696.  
  697.  
  698.       You can use the function keys to control
  699.       the system. The function keys are setup
  700.       as follows:-
  701.  
  702.       F1 - Go to introductory frame
  703.       F2 - Display contents of file
  704.       F3 - Move back to previous reference
  705.       F4 - Move back a number of steps
  706.       F5 - Display list of noted frame
  707.       F6 - Search file for text string
  708.       F7 - Display contents of text file
  709.       F8 - Perform requested action
  710.       F9 - Temporary exit to DOS
  711.       F10 - Quit to DOS
  712.  
  713.     This provides a fairly simple  help  system.  To provide further
  714.     features in a help system, the F1 key  can  be mapped to provide
  715.     the help menu.    More complex interaction with the help system is
  716.     then possible,    and  the help menu is not limited to simple note
  717.     references.   To  do  this, you will  need  to    create    a  SETUP
  718.     script.  This is simply  a  global script with the name 'SETUP'.
  719.  
  720.  
  721.  
  722.                       2-11             Version 2.5
  723.         
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.  
  731.     HyperShell            Tutorial         Authoring Guide
  732.         
  733.  
  734.  
  735.     This should contain the following lines:-
  736.  
  737.         
  738.  
  739.  
  740.     KF1MHelp
  741.     MF1Help
  742.  
  743.     The  first  of    these  lines maps the F1 key to the global  menu
  744.     'Help'.  Note  that  frame,note,menu  and  script names are  not
  745.     sensitive  to  whether the name is in uppercase or lowercase  or
  746.     mixed case, and references can use  cases  different to the item
  747.     names. 
  748.  
  749.     The second line changes the text of the  control menu for the F1
  750.     action to be 'Help', rather than the default of 'Home Frame'.
  751.  
  752.     The SETUP script  is  run  whenever  the  hyperfile is 'entered'
  753.     which is  usually on startup when running HyperShell against the
  754.     file.  It will also be executed if you    select    a  reference  to
  755.     this hyperfile from another hyperfile.    It can therefore be used
  756.     to  set  up  any  key mappings, colour    schemes,  options  etc. 
  757.     required by a hyperfile. 
  758.  
  759.  
  760.     2.2.3.2 Narrative flow
  761.  
  762.     Someone reading the hyperfile will normally follow a sequence of
  763.     frames, and only divert to references when required.  To provide
  764.     a means of stepping through the frames of  information,  you can
  765.     add a 'next frame' reference to the FOOTER  text.  To do this in
  766.     the car hyperfile, edit the FOOTER frame text to the following:-
  767.  
  768.         
  769.  
  770.  
  771.     ~L20
  772.          ~MTerms~E           ~APress space bar to continue~PF+~K ~E
  773.  
  774.     This will provide a selectable action in the footer of each page
  775.     which  will cause the next frame to be displayed.  It also  maps
  776.     the space key (or  bar)  to this reference ('~K ' does this), to
  777.     enable the user to simply step through.  Note that this  type of
  778.     frame  reference (F+) will keep a backtrack list  to  allow  the
  779.     user  to step back through the frames.    It is also  possible  to
  780.     step through so that no backtrack information is retained.  This
  781.     is done using the lowercase form of the  reference (f+) in place
  782.     of the other. 
  783.  
  784.  
  785.  
  786.  
  787.  
  788.                       2-12             Version 2.5
  789.         
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.  
  797.     HyperShell            Tutorial         Authoring Guide
  798.         
  799.  
  800.  
  801.  
  802.  
  803.     2.2.3.3 Supporting files
  804.  
  805.     Normal text files, and files with  just reference flags in them,
  806.     can be used in support of the hyperfile in two ways.  The F7 key
  807.     allows    a  filename to be entered, and effectively issues a  'T'
  808.     action to display the file a page at a time.  The 'T' action can
  809.     also be called from a reference in the text, as can any action. 
  810.     This reference takes the form e.g. 
  811.  
  812.     ~ACar manual~PTmanual.txt~E
  813.  
  814.     The text  'Car manual' will appear as a highlighted reference in
  815.     the text, and when selected will cause the file 'manual.txt'  to
  816.     be  typed.   This  file  may  contain embedded references to the
  817.     frames in the car  hyperfile.    One way to achieve this is to do
  818.     it  automatically  when typing the file, rather than  having  to
  819.     actually modify the file.  This is known as autoreferencing, and
  820.     is  similar to the autoreference feature we met in the    editor. 
  821.     To enable this, the line:-
  822.  
  823.     O41
  824.  
  825.     would be added to the SETUP  script (this starts with the LETTER
  826.     O, not the figure 0). When this is  done,  a  reference  in  the
  827.     manual.txt file to 'bodywork'  or  'brakes' would be highlighted
  828.     when  the  file was typed, and could be selected, whereupon  the
  829.     relevant  frame  would    be displayed.  This feature permits  the
  830.     file viewing to be continued by  simply  issuing  the action 'T'
  831.     without a  file  name parameter.  This action is provided by the
  832.     F7 key. 
  833.  
  834.     Another  way that text    files  may  be    used  in  support  of  a
  835.     hyperfile is the 'file note'.  A reference of the form:-
  836.  
  837.     ~tradios~E
  838.  
  839.     refers to  a  file  called  'radios.nte' which is displayed as a
  840.     popup note when the reference is selected.  You can try this out
  841.     in the car hyperfile, by inserting  the  above    reference in the
  842.     electric system  frame, and by providing a simple text file with
  843.     the correct name.  Note that the  extension '.NTE' is added only
  844.     if one is not  supplied  in the reference, so for instance if we
  845.     had a file called 'radios.txt' we could have a reference  of the
  846.     form:-
  847.  
  848.     ~tradios~Ptradios.txt~E
  849.  
  850.  
  851.  
  852.  
  853.  
  854.                       2-13             Version 2.5
  855.         
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.  
  863.     HyperShell            Tutorial         Authoring Guide
  864.         
  865.  
  866.  
  867.     Note that this    uses  the  action  code  't', which has the same
  868.     effect as the reference flag. 
  869.  
  870.  
  871.     2.2.4 Menu systems
  872.  
  873.     HyperShell can be used as a versatile menu  system,  but  cannot
  874.     remain resident with heavyweight software or software  requiring
  875.     lots of data storage.  It  can    still be used with such systems,
  876.     as it permits 'chaining'  and allows an exit code to be given on
  877.     exit. 
  878.  
  879.     A simple menu system can be built using  a frame for each menu. 
  880.     The higher levels of menu consist of  frames  containing choices
  881.     leading to frame references to the lower levels.   At the bottom
  882.     level, selection of a reference will cause the    invocation  of a
  883.     program command line. 
  884.  
  885.     A simple  one  frame menu can be used to drive a small number of
  886.     programs.  This example shows  the actual text in the hyperfile,
  887.     but can  be built using the HyperShell editor, entering an empty
  888.     HEADER item and the text from the FRAME as below:-
  889.  
  890.         
  891.  
  892.  
  893.     .HEADER
  894.     .FRAME menu1
  895.  
  896.           --- My Menu ---
  897.  
  898.          ~A1.     Accounts~PDaccounts~K1~E
  899.  
  900.          ~A2.     Invoices~PDinvoices~K2~E
  901.  
  902.          ~A3.     Payroll~PDpayroll~K3~E
  903.  
  904.          ~A4.     Spreadsheet~PE123~K4~E
  905.  
  906.          ~A5.     Exit~PQ~K5~E
  907.     .
  908.  
  909.     This menu allows the options to be selected as normal, or by use
  910.     of the numeric keys 1 to 5.
  911.  
  912.     Note  that  the  spreadsheet option causes  the  program  to  be
  913.     chained rather    than  executed    as  a  subprocess,  to allow the
  914.     spreadsheet to have all the memory to itself. 
  915.  
  916.  
  917.  
  918.  
  919.  
  920.                       2-14             Version 2.5
  921.         
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  
  929.     HyperShell            Tutorial         Authoring Guide
  930.         
  931.  
  932.  
  933.     This  little  example  can be tried out, although of course  the
  934.     programs will not be available. 
  935.  
  936.     The null  header  can  be  used  in  other  hyperfiles, and will
  937.     suppress the default header display. 
  938.  
  939.  
  940.  
  941.  
  942.  
  943.  
  944.  
  945.  
  946.  
  947.  
  948.  
  949.  
  950.  
  951.  
  952.  
  953.  
  954.  
  955.  
  956.  
  957.  
  958.  
  959.  
  960.  
  961.  
  962.  
  963.  
  964.  
  965.  
  966.  
  967.  
  968.  
  969.  
  970.  
  971.  
  972.  
  973.  
  974.  
  975.  
  976.  
  977.  
  978.  
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.                       2-15             Version 2.5
  987.         
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.  
  995.     HyperShell           Guidelines         Authoring Guide
  996.         
  997.  
  998.  
  999.  
  1000.  
  1001.  
  1002.  
  1003.  
  1004.  
  1005.                     Chapter 3
  1006.  
  1007.                    Guidelines
  1008.  
  1009.  
  1010.  
  1011.  
  1012.     3.1 Naming
  1013.  
  1014.  
  1015.     The names of frames  and other items in the hyperfile are a very
  1016.     important  ingredient  of  the    file,  and  careful naming  will
  1017.     contribute  both  to  the  setting  up and to  the  use  of  the
  1018.     hyperfile.  The names of  items are not limited to single words,
  1019.     and  can  contain  spaces.  It is preferable to  avoid    multiple
  1020.     spaces, and you must ensure that no trailing spaces are added to
  1021.     the name.  The name, when used as a  key, is not case sensitive,
  1022.     so  the  most  appropriate  case mix can be used for the  name. 
  1023.     Names  of items must not exceed 30 characters, but is  is  hoped
  1024.     that the majority will not exceed half of this.  Names should be
  1025.     as simple  as  possible,  whilst retaining sufficient text to be
  1026.     meaningful and distinguishable. 
  1027.  
  1028.  
  1029.     3.1.1 Frame names
  1030.  
  1031.     The choice of suitable frame names is most  important,    and  the
  1032.     names should  be chosen as part of the planning activity, rather
  1033.     than as and when you need to supply them.  As the names are used
  1034.     in  references from other frames, they could be chosen to  match
  1035.     the words or phrases  used  in    the  text.   This is very much a
  1036.     chicken  and  egg  situation,  as you may well want to enter the
  1037.     text after setting up the skeleton file. 
  1038.  
  1039.     One  way of achieving this is to produce  a  list  of  temporary
  1040.     names for the frames to  act  as  place  holders.  Once you have
  1041.     entered the text for all the frames, and before  you  have added
  1042.     any references, you could study the text to see  what  form  the
  1043.     references  would  take.   You    can  then  make  the  references
  1044.     consistent,  change  the  frame  names    to  reflect  these,  and
  1045.     autoreference  the  frames.   This  will  help    you  to  see  if
  1046.     sufficient references have been flagged. 
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.                       3-16             Version 2.5
  1053.         
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.     HyperShell           Guidelines         Authoring Guide
  1062.         
  1063.  
  1064.  
  1065.  
  1066.  
  1067.     3.1.2 Frame Titles
  1068.  
  1069.     The frame title text is almost as  important  as  the  name.  It
  1070.     appears in the contents list and search list, and is used in the
  1071.     fast search.  It is  therefore important to choose a title which
  1072.     will give a good indication of what the frame is about. 
  1073.  
  1074.  
  1075.     3.1.3 Other items
  1076.  
  1077.     The note, menu    and  script names are important only if they are
  1078.     directly  referenced from the frame or    note  text,  but  it  is
  1079.     obviously helpful to keep these  names    short and meaningful for
  1080.     all cases.  The menu name and the note name will be displayed at
  1081.     the top of the respective popup displays, so should be kept to a
  1082.     length commensurate with the options or text lines. 
  1083.  
  1084.  
  1085.  
  1086.  
  1087.     3.2 Style
  1088.  
  1089.  
  1090.     The  hyperfile    should    be  clearly  laid out to permit ease  of
  1091.     maintenance. 
  1092.  
  1093.     The  HEADER  and  FOOTER  should  come     at  the  start  of  the
  1094.     hyperfile.  Global notes,  menus and scripts should come next in
  1095.     the  file,  and should be grouped by type.  The INDEX  specifier
  1096.     should come next, followed  by    the  frame specifications.  Each
  1097.     frame specification contains the  FRAME section, followed by any
  1098.     local notes, menus and scripts. 
  1099.  
  1100.     The format and content of the information should be consistent. 
  1101.     The frames  and  notes    should    be  written  in plain, simple to
  1102.     understand  language, and technical terms should be confined  to
  1103.     the vocabulary of the intended user.  Terms should be consistent
  1104.     in  use.  Text should be  presented  in  short    paragraphs,  and
  1105.     should have a consistent left hand margin and a reasonable right
  1106.     hand  margin.    The  justification  of    text by inserting  extra
  1107.     spaces throughout the line to give a uniform  right  hand margin
  1108.     is  not  recommended,  as  it  may  cause  references  to become
  1109.     inaccurate,  and  is  now widely recognized as not being of  any
  1110.     help when viewed on a screen in this form. 
  1111.  
  1112.     The  information  held within  a  frame  or  a    note  should  be
  1113.     complete, and capable of being read on its own.  A  frame should
  1114.     not present more than  half  a    dozen  different concepts, and a
  1115.  
  1116.  
  1117.  
  1118.                       3-17             Version 2.5
  1119.         
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  
  1127.     HyperShell           Guidelines         Authoring Guide
  1128.         
  1129.  
  1130.  
  1131.     note should only present one  new concept.  The information must
  1132.     be as  accurate  as possible as any inaccuracies will reduce the
  1133.     users confidence. 
  1134.  
  1135.  
  1136.  
  1137.  
  1138.     3.3 Developing a hyperfile
  1139.  
  1140.  
  1141.     Before producing  a  hyperfile,  it  is advisable to decide what
  1142.     form  it is to take, what fixed information is to appear on  the
  1143.     frame display, whether any  changes  to  the  control  menu  are
  1144.     necessary,  whether any  keys  are  to    be  mapped  globally  or
  1145.     locally, and whether any special highlighting schemes  are to be
  1146.     used.    These factors  can  then  be  taken  into  account  when
  1147.     producing the main text. 
  1148.  
  1149.  
  1150.     3.3.1 Using existing material
  1151.  
  1152.     Existing textual files, provided  they    are  not  special format
  1153.     Word Processor files containing control characters etc., can  be
  1154.     adapted fairly readily.  A text editor or word    processor can be
  1155.     used to break the file into sections, inserting a .FRAME section
  1156.     header before each, with a suitable topic  name.  The HyperShell
  1157.     editor can then be  used  to  alter the layout of the frames, to
  1158.     split  the  frames  into  further frames or local notes, to  add
  1159.     references  using   autoreferencing,   and  to    restructure  the
  1160.     hyperfile.  The hyperfile checker can also be used to add  cross
  1161.     references using the autoreference  facility,  and  to check the
  1162.     cross reference integrity of the hyperfile. 
  1163.  
  1164.     Small  text files can be inserted into    frames    by  use  of  the
  1165.     insert file facility in the editor. 
  1166.  
  1167.     Small  text  files can be used as popup notes,    although  it  is
  1168.     preferable to integrate these with the main hyperfile, as global
  1169.     notes. 
  1170.  
  1171.  
  1172.  
  1173.  
  1174.     3.4 Types of application
  1175.  
  1176.  
  1177.     For narrative  hypertext, the frames should be organised so that
  1178.     a logical thread can be followed.  Supporting threads then  form
  1179.     offshoots  from this main thread.  The resultant structure  will
  1180.     probably  be  a  network  structure,  based  on   a   linear  or
  1181.  
  1182.  
  1183.  
  1184.                       3-18             Version 2.5
  1185.         
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.  
  1193.     HyperShell           Guidelines         Authoring Guide
  1194.         
  1195.  
  1196.  
  1197.     hierarchical backbone.    Global and local  notes  can  be used in
  1198.     support of the main text. 
  1199.  
  1200.     For a help system, each frame can relate to a particular command
  1201.     name, command mode or technical term.  Each frame should provide
  1202.     a  complete  packet  of information, and supportive frames  need
  1203.     only be produced  and referenced as required.  The structure for
  1204.     a  help  system  is   usually    a   hierarchy,    with  occasional
  1205.     cross-references forming network links.   Global and local notes
  1206.     can again be used to explain odd terms    used  in the main text. 
  1207.     For context related help,  a  number  of  'entry'  frames can be
  1208.     created,  each    supporting  a hierarchy of further  information,
  1209.     breaking down the detail of a topic; a top level frame providing
  1210.     a  menu of these entry frames is also useful as a general  entry
  1211.     point.     HyperShell  can  be  used  as    a  context  related help
  1212.     facility  from your own programs.  Your program needs to execute
  1213.     the  HyperShell  program, specifying the hyperfile name and  the
  1214.     'entry' frame  name  as parameters.  HyperShell can set its exit
  1215.     status to pass numeric information back to your program on exit,
  1216.     if required, by use of a numeric parameter on the Q action. 
  1217.  
  1218.     For a menu system, each frame forms a  menu node in a hierarchy,
  1219.     although a hierarchy is  not  strictly    necessary.  Input fields
  1220.     can  be  used  to supply parameters to programs.  Dynamic  menus
  1221.     formed from wildcard directories can be used to select a file to
  1222.     be used  as  a    parameter, the resultant value being placed in a
  1223.     variable  prior to program invocation.    Scripts can be    executed
  1224.     to  perform sequences of programs, and to do limited  validation
  1225.     on input parameters.  The  HyperShell  exit status can be set by
  1226.     use  of  a  numeric  parameter to the Q action, and this may  be
  1227.     tested in a batch command file to influence the control flow. 
  1228.  
  1229.     For an expert system, a hierarchy of frames  can  be  set  up to
  1230.     reflect the  nodes in a decision tree.    Hierarchies of menus can
  1231.     be used as well as,  or  instead  of  frames  in  this    decision
  1232.     process.   Local  notes  can be used as 'help'    about  choices. 
  1233.     Scripts can be used to perform    limited  processing and decision
  1234.     making using control flow and expression evaluation. 
  1235.  
  1236.     For computer aided instruction, a sequence of frames can present
  1237.     information about a  topic,  then offer a multiple choice answer
  1238.     frame.    Correct answers move on to  next  topic frame, incorrect
  1239.     answers move back to original topic  frame.   Variables  can  be
  1240.     used to monitor progress and record error levels. 
  1241.  
  1242.     For user interface prototyping, a number of different frames can
  1243.     be  set up to present alternative  layouts  for  an  application
  1244.     input screen.  Input fields, menus, notes  and    scripts  can  be
  1245.     used to simulate interaction style.  Programs can be executed to
  1246.     provide substance to the application. 
  1247.  
  1248.  
  1249.  
  1250.                       3-19             Version 2.5
  1251.         
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.  
  1259.     HyperShell           Guidelines         Authoring Guide
  1260.         
  1261.  
  1262.  
  1263.     For a DOS manager, a basic  script  running  extended  directory
  1264.     listings  should  be  set  up  to  allow  browsing of  directory
  1265.     structures  and examination of    text  files.   Actions    to  take
  1266.     against a particular file can then depend on file type, or could
  1267.     be selected from menus.  Use  of system variables < and > permit
  1268.     file name and extension to be accessed within the script. 
  1269.  
  1270.     For  a    general  text  file  viewer,  with  supporting     'topic'
  1271.     hyperfile, a  hyperfile  should be set up with topic frame names
  1272.     chosen to pick up topics mentioned  in    the general text files. 
  1273.     Autoreferencing should be switched  on in the setup script using
  1274.     the action 'O41'.
  1275.  
  1276.     For an adventure system,  the  network    of frames can be made as
  1277.     complex as possible, and menus, notes and scripts can be used to
  1278.     good effect.  Variables  can be used to hold the state of play. 
  1279.     The 'ghost' highlighting scheme is effective in an adventure, as
  1280.     the text  highlighted  in  this  manner is not visible until the
  1281.     mouse cursor  is moved over it.  A new wave of adventures, known
  1282.     as 'hyperware', is due to arrive shortly, and will use hypertext
  1283.     principles, albeit in a graphic context. 
  1284.  
  1285.  
  1286.  
  1287.  
  1288.     3.5 Master hyperfile
  1289.  
  1290.  
  1291.     Where a  number of hyperfiles are used together, it is useful to
  1292.     bind  them with a master  hyperfile  which  describes  each  and
  1293.     references  the  introductory  frame  in  each.    More  complex
  1294.     structures are, of course,  possible,  and  the structuring then
  1295.     depends on the application. 
  1296.  
  1297.  
  1298.  
  1299.  
  1300.     3.6 Alternative structure
  1301.  
  1302.  
  1303.     An  alternative  hypertext  structure is possible which  permits
  1304.     existing  text    files to be more readily adapted to a  hypertext
  1305.     system.  With this structure, a small controlling hyperfile  may
  1306.     be  set  up, which may provide a set of  supporting  frames  and
  1307.     switch on autoreferencing.  The main hypertext material will  be
  1308.     held in a number of simple text files.    These files will contain
  1309.     cross    references   to   other   such     files     in   the   form
  1310.     ~Areference~PTfilename.txt~E. These cross references could occur
  1311.     anywhere in the text of the file, and would be highlighted  when
  1312.     the file is browsed.  Other forms of highlighting can be  chosen
  1313.  
  1314.  
  1315.  
  1316.                       3-20             Version 2.5
  1317.         
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.  
  1325.     HyperShell           Guidelines         Authoring Guide
  1326.         
  1327.  
  1328.  
  1329.     by using ~F, ~N, ~M etc.  as introductory flags. 
  1330.  
  1331.     The 'file  as note' reference is particularly applicable to this
  1332.     form  of  hypertext  structure,  and permits a set of supporting
  1333.     popup notes  to  be  supplied  from small text files.  These can
  1334.     contain  references  to  further note files, or to further  text
  1335.     files to be 'typed'.
  1336.  
  1337.     The control  hyperfile    could provide an action in its header or
  1338.     footer text, or on its control menu, which will have  the action
  1339.     T@D*.TXT (or  T@L*.TXT    if  there are more than 20 text files). 
  1340.     This  will  enable a menu of these files  to  be  presented  for
  1341.     initial selection.   Of  course  the  files  could be grouped by
  1342.     initial letter and a  number  of  actions of the form T@DA*.TXT,
  1343.     T@DB*.TXT etc.    could be provided, possibly  from  a menu.  Also
  1344.     the  popup notes can be made available from a menu in a  similar
  1345.     fashion using the action t@D*.NTE. 
  1346.  
  1347.     The MSDOS subdirectory facilities  provide a convenient means of
  1348.     structuring sets of text  files  in a hierarchy.  The 'C' action
  1349.     allows selection  of a subdirectory, and the same set of dynamic
  1350.     menus can be used at each level.  The original directory path is
  1351.     always available  via  a  system  variable  for when a return to
  1352.     'base'    is  required.    The  intermediate  levels  of  directory
  1353.     pathname can be stored in a list to permit 'backtracking'.
  1354.  
  1355.     Other forms of reference  can be used in the text files, and the
  1356.     text file display will be reentered  after  a  Note display, and
  1357.     after  DOS command execution.  Explicit reentry can be    achieved
  1358.     by  including  ';T'  at  the end of any action strings in  other
  1359.     forms of reference. 
  1360.  
  1361.     It is  not strictly necessary to have a controlling hyperfile at
  1362.     all.  If  a  simple  text file with embedded references etc.  is
  1363.     named instead of a hyperfile  when  HyperShell    is invoked, then
  1364.     that  file  will  be  treated  as  a hyperfile    with  one  frame
  1365.     containing the text in the file. 
  1366.  
  1367.     The degree of integration of the two approaches is variable, and
  1368.     it  is    quite  possible  to  have  a  hybrid  approach    offering
  1369.     substantial material from both hyperfiles and text files. 
  1370.  
  1371.     The alternative  approach  has the advantage that the text files
  1372.     and  notes  can  be  produced 'on the fly' using a  text  editor
  1373.     possibly  driven from the controlling hyperfile.  This offers  a
  1374.     number    of attractions to those gathering information for  cross
  1375.     referencing. 
  1376.  
  1377.  
  1378.  
  1379.  
  1380.  
  1381.  
  1382.                       3-21             Version 2.5
  1383.         
  1384.  
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.  
  1391.     HyperShell           Advanced techniques     Authoring Guide
  1392.         
  1393.  
  1394.  
  1395.  
  1396.  
  1397.  
  1398.  
  1399.  
  1400.  
  1401.                     Chapter 4
  1402.  
  1403.                    Advanced techniques
  1404.  
  1405.  
  1406.  
  1407.  
  1408.     4.1 Programming
  1409.  
  1410.  
  1411.     The HyperShell browser can be thought of as an interpreter.   It
  1412.     is  similar  in  many ways to a high level language  interpreter
  1413.     such as BASIC. Because it was designed for  the  presentation of
  1414.     information,  it   does   not    contain   conventional    language
  1415.     statements,  floating  point  arithmetic,   arrays   or  control
  1416.     structures.   Nevertheless, a lot  of  conventional  programming
  1417.     constructs can be achieved using the SCRIPT  facility,    and  the
  1418.     set of actions. 
  1419.  
  1420.     We will approach this  topic as we would a programming language,
  1421.     and  will  demonstrate    each construct by giving the  equivalent
  1422.     BASIC statements, where possible. 
  1423.  
  1424.  
  1425.     4.1.1 Actions
  1426.  
  1427.     The 'action'  is  the  HyperShell  equivalent  of a command in a
  1428.     normal programming language.  An  action  is  a  command  string
  1429.     which causes an action to be taken depending on the first letter
  1430.     of the action string.    The  parameters or operands of an action
  1431.     comprise the remainder of  the    action string.    This part of the
  1432.     string    can  be supplied literally, or can be  supplied  as  the
  1433.     result of a function,  which  is  called an 'action modifier' in
  1434.     HyperShell.  Thus  to set a variable to a  constant  value,  the
  1435.     action would be:-
  1436.  
  1437.     Vafred
  1438.  
  1439.     This  would  give  variable  'a' the value 'fred'.  To    set  the
  1440.     variable dynamically to a  value  chosen from a menu, the action
  1441.     would be:-
  1442.  
  1443.     Va@Mnames
  1444.  
  1445.  
  1446.  
  1447.  
  1448.                       4-22             Version 2.5
  1449.         
  1450.  
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456.  
  1457.     HyperShell           Advanced techniques     Authoring Guide
  1458.         
  1459.  
  1460.  
  1461.     This  would popup the menu called 'names' to allow one of a  set
  1462.     of names  to  be  selected by the user.  The selected name would
  1463.     replace  the  modifier    string    in  the  action  before  it  was
  1464.     executed.  Action modifiers can  be  'cascaded'  to give complex
  1465.     interaction functionality.  For example, to type a file selected
  1466.     from  a  menu  formed from a directory listing of files  with  a
  1467.     wildcard  specification  input    from the user, the action  would
  1468.     be:-
  1469.  
  1470.     T@D?Wildcard specification
  1471.  
  1472.     This  would  prompt the user for a wildcard specification, which
  1473.     would be used to select files from the current directory to form
  1474.     a menu from which the user  could select a file to type.  If the
  1475.     result of  an  action  modifier  is  not  usable in its provided
  1476.     state, it can be further formatted using a format string:-
  1477.  
  1478.     D@D*.DAT|COPY %s A:%s
  1479.  
  1480.     This  would present a menu of all files with the extension  .DAT
  1481.     in the current directory, and would then copy the selected  file
  1482.     to the A: drive. 
  1483.  
  1484.  
  1485.     4.1.2 Variables
  1486.  
  1487.     Variables do not need to be declared, and come into existance by
  1488.     assignment.  Single letter variables  are assigned using the 'V'
  1489.     action, and take the value of the remaining text  in  the action
  1490.     string.  e.g. 
  1491.  
  1492.     Vafred (BASIC LET a = "fred")
  1493.  
  1494.     assigns  the value 'fred' to the variable 'a'. The variable  can
  1495.     have  another value subsequently assigned to it, or  it  can  be
  1496.     cleared by use of a null string (a string of zero length). 
  1497.  
  1498.     Named variables  are assigned using the 'l' action, and can only
  1499.     be assigned values from single letter variables.  e.g. 
  1500.  
  1501.     laname (BASIC LET name = a)
  1502.  
  1503.     Note  that the name in this case can be provided from an  action
  1504.     modifier, or from a variable token expansion.  e.g. 
  1505.  
  1506.     la$b
  1507.  
  1508.     This loads the contents of 'a' into the  variable  whose name is
  1509.     the contents of variable 'b'. There is no  equivalent of this in
  1510.     BASIC,    or  any of the other common interpretive  languages  for
  1511.  
  1512.  
  1513.  
  1514.                       4-23             Version 2.5
  1515.         
  1516.  
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.  
  1523.     HyperShell           Advanced techniques     Authoring Guide
  1524.         
  1525.  
  1526.  
  1527.     that matter. 
  1528.  
  1529.     The  variable may be used in a number of ways.    The most  common
  1530.     is as an expansion token in the frame or  note    text,  or  in an
  1531.     action string.     The  above  example  does  not reflect the full
  1532.     power  of  this as the variable can in fact be expanded anywhere
  1533.     in an action string after the first letter.  So for instance, to
  1534.     load the variable whose name is a concatenation of the    contents
  1535.     of the    variables  'c'    and  'd' from the single letter variable
  1536.     whose name is contained in variable 'x', we would write:-
  1537.  
  1538.     l$x$c$d
  1539.  
  1540.     The named variable expansion token takes the form:-
  1541.  
  1542.     $(name)
  1543.  
  1544.     Where 'name' is the name of the named variable.  This itself can
  1545.     be supplied by a single letter variable.  e.g. 
  1546.  
  1547.     $($b)
  1548.  
  1549.     Thus to do the opposite of 'la$b' we would write:-
  1550.  
  1551.     Va$($b)
  1552.  
  1553.     Variable  token  substitution  is done in frame  and  note  text
  1554.     before    displaying the text (so variables can contain  reference
  1555.     flags).   Variable token substitution is done in action  strings
  1556.     AFTER  any  action  modifiers have been actioned and before  the
  1557.     action is executed.  Thus an action string of the form:-
  1558.  
  1559.     Vb?value of b
  1560.  
  1561.     could have  a value of '$c' typed in by the user, which would be
  1562.     expanded to the contents of variable 'c'  before  the assignment
  1563.     was made. 
  1564.  
  1565.     A variable token expansion can be 'deferred' one step by putting
  1566.     two  $    signs.     This  will  be converted to one $ on the  first
  1567.     expansion and will be expanded on  the    second.  Thus a variable
  1568.     token in an action  string  in    a  reference  on a frame display
  1569.     should    have  two  $ signs, as the expansion  on  display  would
  1570.     otherwise preempt the intended expansion when the reference  was
  1571.     actioned. 
  1572.  
  1573.     Single letter  variables  can  be  used  directly  in an integer
  1574.     expression action modifier.  Thus an action of the form:-
  1575.  
  1576.  
  1577.  
  1578.  
  1579.  
  1580.                       4-24             Version 2.5
  1581.         
  1582.  
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588.  
  1589.     HyperShell           Advanced techniques     Authoring Guide
  1590.         
  1591.  
  1592.  
  1593.     Va=b+c (BASIC LET a = b + c)
  1594.  
  1595.     will do as expected. 
  1596.  
  1597.     Variables can also be used in this manner  in tests, thus we can
  1598.     have:-
  1599.  
  1600.     va=b+c+d;je10 (BASIC IF a = b + c + d GOTO 10)
  1601.  
  1602.     When a    variable  comparison is performed, a number of condition
  1603.     codes are set, and can be tested.   If    the  variable  and  test
  1604.     string are numeric, the  comparison  is  a  numeric  comparison,
  1605.     otherwise it  is  a  string  comparison  and  works  as an ASCII
  1606.     collating sequence string  compare.   This compares variable 'a'
  1607.     against 23 and jumps to LESS if it is less than 23.
  1608.  
  1609.     va23;jlLESS
  1610.  
  1611.     This compares  variable  'n' against 'fred' and jumps to FRED if
  1612.     it is equal. 
  1613.  
  1614.     vnfred;jeFRED
  1615.  
  1616.     Also, a substring and  superstring  compare is done, so that you
  1617.     can test whether the variable is contained within the string, or
  1618.     contains  the  string.     This  sees if variable 'e'  is  one  of
  1619.     'one','two','three' and jumps to Lone, Ltwo or Lthree if so:-
  1620.  
  1621.     veone two three;jw$e
  1622.  
  1623.     It is  sometimes  useful to test whether the variable is defined
  1624.     at  all.   This  sees  if  variable  'j' is defined and jumps to
  1625.     DEFINED if so:-
  1626.  
  1627.     vj;jdDEFINED
  1628.  
  1629.     A  number of system  variables    are  available,  mapped  to  the
  1630.     numeric and other characters.  Most of these cannot have  values
  1631.     explicitly assigned  to them, but can be expanded in exactly the
  1632.     same  way as single letter variables.  See the    reference  guide
  1633.     for details of these. 
  1634.  
  1635.     It  is often necessary to break a string into, for  instance,  a
  1636.     number of fields.  The fields can be specified    as those strings
  1637.     separated by a specified  character.   Thus  a string could have
  1638.     the form "aaaa:bbbbbb:ccc:dd". This can be split into  a  number
  1639.     of variables with an action of the form
  1640.  
  1641.     es:abcd
  1642.  
  1643.  
  1644.  
  1645.  
  1646.                       4-25             Version 2.5
  1647.         
  1648.  
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654.  
  1655.     HyperShell           Advanced techniques     Authoring Guide
  1656.         
  1657.  
  1658.  
  1659.     Where 's' is the variable containing the string, and a,b,c and d
  1660.     are the variables to receive the fields.  In  the example above,
  1661.     variable 'a' would receive  'aaaa',  variable  'b' would receive
  1662.     'bbbbbb' etc. 
  1663.  
  1664.     Whilst arrays  are not supported as such, constant arrays can be
  1665.     implemented using a menu, and using the form:-
  1666.  
  1667.     Vn@Mnames($v)
  1668.  
  1669.     This uses the value of    variable 'v' as an index into the set of
  1670.     strings  specified  in    the  menu called 'names', returning  the
  1671.     indexed  entry    and  assigning    it to variable 'n'.  Associative
  1672.     arrays i.e.  arrays subscripted by character strings, can be set
  1673.     up using menus with entries containing    the  key  string and the
  1674.     associated string, and indexed using the form:-
  1675.  
  1676.     Vs@Msurnames[$n]
  1677.  
  1678.     This takes  the  contents of variable 'n' as a key to look up an
  1679.     entry in the menu 'surnames', returning the  action  string from
  1680.     the located entry and assigning it to the string  's'.    The menu
  1681.     'surnames' would have the following form:-
  1682.  
  1683.  
  1684.     fred|jones
  1685.     jim|smith
  1686.     joe|davies
  1687.     harry|hodgson
  1688.     nick|taylor
  1689.  
  1690.  
  1691.     4.1.3 Scripts
  1692.  
  1693.     The script facilities in HyperShell permit a form of programming
  1694.     to be achieved.  A  simple  sequence of actions may be performed
  1695.     in a  script,  and  control  flow  actions are provided to allow
  1696.     loops, conditional branching and computed branching to occur.  A
  1697.     trace  facility is provided to    assist    with  the  debugging  of
  1698.     scripts.  HyperShell does not yet have any specific loop control
  1699.     instructions,  but  loops  are    easy  to program using the  Jump
  1700.     action.  Thus, a BASIC loop of the form:-
  1701.  
  1702.  
  1703.  
  1704.          FOR A = 1 TO 20
  1705.          ...
  1706.          NEXT A
  1707.  
  1708.     is handled as follows:-
  1709.  
  1710.  
  1711.  
  1712.                       4-26             Version 2.5
  1713.         
  1714.  
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720.  
  1721.     HyperShell           Advanced techniques     Authoring Guide
  1722.         
  1723.  
  1724.  
  1725.  
  1726.          VA1
  1727.          Lloop
  1728.          ...
  1729.          VA=A+1;va21;jlloop
  1730.  
  1731.     As the expression evaluation modifier sets the condition code, a
  1732.     decreasing loop is  easier  to use when the variable is not used
  1733.     in the loop body. 
  1734.  
  1735.  
  1736.  
  1737.          VA20
  1738.          Lloop
  1739.          ...
  1740.          VA=A-1;jnloop
  1741.  
  1742.     Beware     an   unexpected  side    effect    of  HyperShell    compound
  1743.     statements.  If further actions  follow  a Jump instruction in a
  1744.     compound statement,  the further actions are executed regardless
  1745.     of whether the jump is actioned. 
  1746.  
  1747.     Computed GOTO statements in BASIC of the form:-
  1748.  
  1749.     ON a GOTO 110,120,130,140
  1750.  
  1751.     can be    coded  in  HyperShell  with a simple Jump specifying the
  1752.     value of a variable. 
  1753.  
  1754.     J$a
  1755.  
  1756.     The  variable,    'a'  in  this  case, need not contain a  numeric
  1757.     value, as a label can be any alphabetic string.  E.g. to  branch
  1758.     depending on the value returned from a confirmation prompt:-
  1759.  
  1760.         
  1761.  
  1762.  
  1763.          J$c
  1764.          ...
  1765.          LYes
  1766.          ... actions if Yes ...
  1767.          Jend
  1768.          LNo
  1769.          ... actions if No ...
  1770.          Lend
  1771.  
  1772.     Of course,  the Jump action can have its parameter supplied from
  1773.     one of a number of action modifiers, so  a  number  of potential
  1774.     labels could be presented as a menu:-
  1775.  
  1776.  
  1777.  
  1778.                       4-27             Version 2.5
  1779.         
  1780.  
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786.  
  1787.     HyperShell           Advanced techniques     Authoring Guide
  1788.         
  1789.  
  1790.  
  1791.     J@Mchoices
  1792.  
  1793.     It  is    not  possible  to supply the name of a label in  an  'L'
  1794.     action in this fashion. 
  1795.  
  1796.  
  1797.     4.1.4 Simple interaction
  1798.  
  1799.     The BASIC interaction commands are very useful for communicating
  1800.     with  the  user.  HyperShell has some equivalents to the  simple
  1801.     interaction commands as follows:-
  1802.  
  1803.     Vn?Enter your name (BASIC INPUT "Enter your name";n$)
  1804.  
  1805.     PHello (BASIC PRINT "Hello")
  1806.  
  1807.     PYour name is $n (BASIC PRINT "Your name is ";n$)
  1808.  
  1809.     Do  not  confuse  the  use of the dollars in the last  example. 
  1810.     HyperShell  uses  dollar  signs  for  an   altogether  different
  1811.     purpose. 
  1812.  
  1813.     HyperShell provides  powerful  extensions  to  this interaction,
  1814.     however.  If one of a number of fixed  strings is to be entered,
  1815.     the  set  of  strings  can  be    presented as a menu.  If a  more
  1816.     elaborate prompting method is required, a  note can be popped up
  1817.     as a dialogue box.  The menu or note are then used to supply the
  1818.     value to the variable:-
  1819.  
  1820.     Vt@MCar type
  1821.  
  1822.     Vc@NConfirm
  1823.  
  1824.     Where a single character input is required, the Key function can
  1825.     be used.  This is coded as e.g. 
  1826.  
  1827.     Vx&KPress a key
  1828.  
  1829.     And is the equivalent of the BASIC:-
  1830.  
  1831.  
  1832.  
  1833.          30 PRINT "Press a key"
  1834.          40 X$ = ""
  1835.          50 X$ = INKEY$(): IF X$ = "" GOTO 50
  1836.  
  1837.  
  1838.  
  1839.  
  1840.  
  1841.  
  1842.  
  1843.  
  1844.                       4-28             Version 2.5
  1845.         
  1846.  
  1847.  
  1848.  
  1849.  
  1850.  
  1851.  
  1852.  
  1853.     HyperShell           Advanced techniques     Authoring Guide
  1854.         
  1855.  
  1856.  
  1857.  
  1858.  
  1859.     4.1.5 Functions
  1860.  
  1861.     A  number  of  string    functions   are   available  as  'action
  1862.     modifiers'.  Strictly, all action  modifiers  are functions of a
  1863.     sort, but the string functions are  classified as 'functions' to
  1864.     separate   them   from    the  dynamic  menus  and  other   string
  1865.     providers.  The string functions  provide  a  set  of facilities
  1866.     analogous to the BASIC    functions, although even those returning
  1867.     a  numeric  result  are classified as string functions    in  this
  1868.     case, both because they operate on  strings,  and  because  they
  1869.     return the result as an ASCII string  regardless.  The functions
  1870.     take the form:-
  1871.  
  1872.     &FParg
  1873.  
  1874.     Where 'F' is the function code, 'P' is an optional parameter and
  1875.     'arg' is the argument string to apply the function against.  The
  1876.     function codes are as follows:-
  1877.  
  1878.     L - Length of argument (BASIC LEN)
  1879.  
  1880.     A - ASCII value of first char of argument (BASIC ASC)
  1881.  
  1882.     C - character with ASCII value argument (BASIC CHR$)
  1883.  
  1884.     Nn - nth character in argument
  1885.  
  1886.     Sn  - substring starting at nth  character  of    argument  (BASIC
  1887.     MID$)
  1888.  
  1889.     T - Title of frame with name argument
  1890.  
  1891.     Uc - substring of argument up to, but  not  including  character
  1892.     'c'
  1893.  
  1894.     Fc - substring of argument from character 'c' inclusive
  1895.  
  1896.     Ic  -  index  of  character  'c' in argument, or 0 if not  found
  1897.     (BASIC INSTR)
  1898.  
  1899.     K  - character typed in response to argument  as  popup  message
  1900.     (Basic INKEY$)
  1901.  
  1902.  
  1903.     4.1.6 File input/output
  1904.  
  1905.     Most  languages  provide  some    form  of  file    I/O.  HyperShell
  1906.     provides a fairly straightforward means of reading or writing to
  1907.  
  1908.  
  1909.  
  1910.                       4-29             Version 2.5
  1911.         
  1912.  
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918.  
  1919.     HyperShell           Advanced techniques     Authoring Guide
  1920.         
  1921.  
  1922.  
  1923.     a file.  It is not intended as a fully fledged language, so only
  1924.     permits one input and one output file at a time.  It is possible
  1925.     to have one file open for input and  to  keep  this  open whilst
  1926.     another file is opened, read and closed, however. 
  1927.  
  1928.     To open a file for reading or writing, the action:-
  1929.  
  1930.     rfilename / wfilename
  1931.  
  1932.     is issued (r for  read,  w  for  write).   To read a record, two
  1933.     mechanisms are provided.  The  formatted  read    allows    a set of
  1934.     variables to be loaded from 'fields' in a  text record.  The 'R'
  1935.     action is used for this:-
  1936.  
  1937.     R:abcdef
  1938.  
  1939.     Reads  the  next  input  record  and  splits it  into  variables
  1940.     a,b,c,d,e and f on a separator ':'.
  1941.  
  1942.     The other  means  of reading an input record is provided via the
  1943.     action modifier '!'. This can be used in a number of ways.   The
  1944.     simplest  form    is  '!' by itself, which returns the next  input
  1945.     record.  The form:-
  1946.  
  1947.     !Fkey
  1948.  
  1949.     reads the next record starting with the string    'key'.    If it is
  1950.     necessary to read the frist record in the file starting with the
  1951.     'key', the format:-
  1952.  
  1953.     !Lkey
  1954.  
  1955.     is  used  instead.   Thus  this  method can be used to provide a
  1956.     lookup    facility.   This  lookup   is    performed  sequentially,
  1957.     however, so cannot be practically used    if the file concerned is
  1958.     huge. 
  1959.  
  1960.     File output is done using the 'W' action.  This simply takes its
  1961.     argument as the  record to be written.    The record can be formed
  1962.     from any of  the  standard  action  modifiers,    or from variable
  1963.     tokens:-
  1964.  
  1965.     W$a:$b:$c:$d:$e:$f
  1966.  
  1967.     which  would write a record made up of    the  variables    a  to  f
  1968.     separated by ':' characters. 
  1969.  
  1970.  
  1971.  
  1972.  
  1973.  
  1974.  
  1975.  
  1976.                       4-30             Version 2.5
  1977.         
  1978.  
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984.  
  1985.     HyperShell           Advanced techniques     Authoring Guide
  1986.         
  1987.  
  1988.  
  1989.  
  1990.  
  1991.  
  1992.  
  1993.     4.2 Form Fill
  1994.  
  1995.  
  1996.     HyperShell  frames  can  also  be used as data    entry  forms  or
  1997.     database browsing forms.  This is  brought about by one powerful
  1998.     type of reference - the input field.  An input field is like any
  1999.     other reference, until you select it.    It then becomes an input
  2000.     area into which you can type a string.    It is generally the case
  2001.     that the input string  is  used  to set a variable, and that the
  2002.     variable is displayed in the field  until  it  is selected.  The
  2003.     width  of  the    field  is  generally  specified   in  the  field
  2004.     specification, as it is this which  determines    the maximum size
  2005.     of the field.  A typical input field would look like:-
  2006.  
  2007.     ~I$v~W10~PVv%s~E
  2008.  
  2009.     This  specifies an input  field  of  length  10,  in  which  the
  2010.     variable 'v' is displayed.   After  entering  a  string,  it  is
  2011.     assigned to the variable. 
  2012.  
  2013.     Where a number of  fields  are    supplied  in  a  frame to form a
  2014.     formfill screen, they can be  'chained' to the next input by use
  2015.     of the 'I' action.   This  causes  the    next  input  field to be
  2016.     selected.  e.g. 
  2017.  
  2018.     ~I$v~W10~PVv%s;I~E
  2019.  
  2020.     does  the same as the above field, and    then  selects  the  next
  2021.     input  field.    The  user  sees  this  as  a  typical    formfill
  2022.     interaction,  and  can    press  ESCAPE  to cancel the sequence of
  2023.     inputs. 
  2024.  
  2025.     So, what do we do with the data we have entered.  One  thing  we
  2026.     could do would be to write it to a file.  An action reference in
  2027.     the frame text could be used for opening the file for starters:-
  2028.  
  2029.     ~AOpen file for writing~Pwdata.txt~E
  2030.  
  2031.     The last input field could then write the data out after input:-
  2032.  
  2033.     ~I$f~W10~PVf%s;W$$a:$$b:$$c:$$d:$$e:$$f~E
  2034.  
  2035.     This would write out a line  containing  variables  'a'  to  'f'
  2036.     separated by ':' characters.   As  an  alternative,  a    separate
  2037.     action reference  can  be  used  for  writing  a record, so that
  2038.     changes can be made to the fields before writing:-
  2039.  
  2040.  
  2041.  
  2042.                       4-31             Version 2.5
  2043.         
  2044.  
  2045.  
  2046.  
  2047.  
  2048.  
  2049.  
  2050.  
  2051.     HyperShell           Advanced techniques     Authoring Guide
  2052.         
  2053.  
  2054.  
  2055.     ~AWrite record~PW$$a:$$b:$$c:$$d:$$e:$$f~E
  2056.  
  2057.     Note  that  the  double dollars are needed to stop the    variable
  2058.     expansion taking place when the  frame    is  displayed.    To close
  2059.     the file, another action reference of the form:-
  2060.  
  2061.     ~AClose file~Pw~E
  2062.  
  2063.     can be supplied. 
  2064.  
  2065.     How about using the form to browse through a database.    To  open
  2066.     a file for reading, we have an action:-
  2067.  
  2068.     ~AOpen for reading~Prdata.txt~E
  2069.  
  2070.     If the database consists of text records with  fields  separated
  2071.     by a  special  character  (like ':' above), we can read a record
  2072.     into a number of variables with one action string:-
  2073.  
  2074.     ~ARead file~PR:abcdef;y~E
  2075.  
  2076.     This reads the next record  and  refreshes  the screen, allowing
  2077.     any  variable expansion tokens for the    variables  input  to  be
  2078.     expanded.   These  could  be  in input field specifications,  or
  2079.     elsewhere in the frame text. 
  2080.  
  2081.     If we  want  to  perform a lookup in a text file, the 'R' action
  2082.     cannot be used.  In  this  case  we  could use an input field to
  2083.     input the first variable as a key, and lookup the record. 
  2084.  
  2085.     ~I$a~W20~PVr!L%s;er:abcdef;y~E
  2086.  
  2087.     This rather complex action uses the input string  as  a  key  to
  2088.     look up a record starting with the key field, reading the record
  2089.     into  variable    'r'. It then expands 'r' into  a,b,c,d,e  and  f
  2090.     before refreshing the screen to display the values.  Note that a
  2091.     slightly more complicated action is  required in practise, as it
  2092.     has to handle the case where the record is not found - the above
  2093.     example would set all variables to a null string (which  may  be
  2094.     acceptable in some cases). 
  2095.  
  2096.     The 'immediate reference' flag can be used with  form  frames to
  2097.     select the  first  input  field,  or to execute a script to open
  2098.     files etc.  prior to any processing. 
  2099.  
  2100.  
  2101.  
  2102.  
  2103.  
  2104.  
  2105.  
  2106.  
  2107.  
  2108.                       4-32             Version 2.5
  2109.         
  2110.  
  2111.  
  2112.  
  2113.  
  2114.  
  2115.  
  2116.  
  2117.     HyperShell            Glossary         Authoring Guide
  2118.         
  2119.  
  2120.  
  2121.  
  2122.  
  2123.  
  2124.  
  2125.  
  2126.  
  2127.                    Appendix A
  2128.  
  2129.                     Glossary
  2130.  
  2131.  
  2132.  
  2133.     Action        An  action  is    a  command  string  executed  by
  2134.             HyperShell. This command may be mapped to a key,
  2135.             executed when  a reference is selected, selected
  2136.             from a menu or performed as a step in a script. 
  2137.  
  2138.     Cursor        A   single  character  line  or  block used  for
  2139.             indicating   a    'current  position'   upon   the
  2140.             computer screen.  HyperShell has its own  'mouse
  2141.             cursor',  which is a block, and the normal  text
  2142.             cursor, which  is  usually a blinking underscore
  2143.             character.   The  text cursor is only used  when
  2144.             inputting text.  The  mouse  cursor  is used for
  2145.             selecting references and menu options. 
  2146.  
  2147.     Frame        The unit of display of HyperShell.  A  Frame  is
  2148.             the information  displayed  to describe a topic,
  2149.             and  is  usually  presented  in  a  full  screen
  2150.             display. 
  2151.  
  2152.     Global/local    A HyperShell item,  such  as  a  Note,    Menu  or
  2153.             Script    is  either  global  or local.  If it  is
  2154.             Global,  it  is  available  from all frames  and
  2155.             other  items.    If  it    is  Local,  it    is  only
  2156.             available when the frame to which it is local is
  2157.             currently displayed. 
  2158.  
  2159.     Hyperfile    A hyperfile  is  the  text  file  used    to drive
  2160.             HyperShell. It contains the text for  frames and
  2161.             other  items, specifications of  menus,  scripts
  2162.             etc.  and embedded reference  flags  to indicate
  2163.             cross reference links. 
  2164.  
  2165.     Item        An  item  is  one  of    the  HyperShell  control
  2166.             structures,  such   as     frames,  notes,  menus,
  2167.             scripts, headers, footers etc. 
  2168.  
  2169.     Menu        A menu is a popup display offering a choice from
  2170.             a number of selections. 
  2171.  
  2172.  
  2173.  
  2174.                       4-33             Version 2.5
  2175.         
  2176.  
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182.  
  2183.     HyperShell            Glossary         Authoring Guide
  2184.         
  2185.  
  2186.  
  2187.     Mouse        A mouse  is  a    device    used for controlling the
  2188.             location  of  a  cursor on the screen.    A  mouse
  2189.             usually has one or  more buttons, which act like
  2190.             keys on  the  keyboard.  In HyperShell, a cursor
  2191.             is  provided  to  imitate the action of a  mouse
  2192.             cursor, even if a  mouse  is  not  available.  A
  2193.             direct mouse driver is    also  supplied for those
  2194.             who have a mouse. 
  2195.  
  2196.     Note        A  note  is a small  popup  display  of  textual
  2197.             information.  This display can occupy a  section
  2198.             of  screen  nearly  as    big  as  a  full  screen
  2199.             display. 
  2200.  
  2201.     Option        An  option is a control setting for  HyperShell,
  2202.             used to control the way in which HyperShell runs
  2203.             and  the  colour  schemes  used  to display  the
  2204.             items. 
  2205.  
  2206.     Popup        A type of display where  a  small area of screen
  2207.             is  overwritten  temporarily  by  a  highlighted
  2208.             block of text used as a  menu  or  some  form of
  2209.             display.  When the display is finished with, the
  2210.             area  of screen is rewritten with  its    original
  2211.             contents. 
  2212.  
  2213.     Reference    A  highlighted  word  or sequence  of words in a
  2214.             frame or note display,    which can be selected to
  2215.             perform some kind of  action,  such as moving to
  2216.             another frame display. 
  2217.  
  2218.     Select        You 'select' a    reference  by  moving  the mouse
  2219.             cursor to it and either pressing the RETURN  (or
  2220.             ENTER,    or  that  big  key  on    the right of the
  2221.             alphabetic group you use  for  finishing lines),
  2222.             or the left hand mouse button. 
  2223.  
  2224.     Script        A  script  is    a  sequence  of actions  grouped
  2225.             together.  It is similar to a small program, and
  2226.             can contain programming contructs. 
  2227.  
  2228.     Variable    A  variable is a named storage area used to hold
  2229.             strings of characters and numbers. 
  2230.  
  2231.     - END OF DOCUMENT -
  2232.  
  2233.  
  2234.  
  2235.  
  2236.  
  2237.  
  2238.  
  2239.  
  2240.                       4-34             Version 2.5
  2241.         
  2242.  
  2243.  
  2244.  
  2245.  
  2246.  
  2247.  
  2248.  
  2249.     HyperShell            Glossary         Authoring Guide
  2250.         
  2251.  
  2252.  
  2253.  
  2254.  
  2255.  
  2256.  
  2257.                Table of Contents
  2258.  
  2259.  
  2260.     Chapter 1 Introduction                       2
  2261.  
  2262.        1.1 Introduction                       2
  2263.        1.2 Authoring                       2
  2264.  
  2265.     Chapter 2 Tutorial                       4
  2266.  
  2267.        2.1 File contents                       4
  2268.        2.2 Tutorial                        4
  2269.  
  2270.           2.2.1 Simple hypertext                   4
  2271.           2.2.2 Adding features                   7
  2272.           2.2.3 Adding further features               10
  2273.  
  2274.          2.2.3.1 Help                       10
  2275.          2.2.3.2 Narrative flow                12
  2276.          2.2.3.3 Supporting files               13
  2277.  
  2278.           2.2.4 Menu systems                   14
  2279.  
  2280.     Chapter 3 Guidelines                       16
  2281.  
  2282.        3.1 Naming                           16
  2283.  
  2284.           3.1.1 Frame names                    16
  2285.           3.1.2 Frame Titles                   17
  2286.           3.1.3 Other items                    17
  2287.  
  2288.        3.2 Style                           17
  2289.        3.3 Developing a hyperfile                   18
  2290.  
  2291.           3.3.1 Using existing material               18
  2292.  
  2293.        3.4 Types of application                   18
  2294.        3.5 Master hyperfile                    20
  2295.        3.6 Alternative structure                   20
  2296.  
  2297.     Chapter 4 Advanced techniques                   22
  2298.  
  2299.        4.1 Programming                       22
  2300.  
  2301.           4.1.1 Actions                       22
  2302.           4.1.2 Variables                       23
  2303.  
  2304.  
  2305.  
  2306.                       4-35             Version 2.5
  2307.         
  2308.  
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314.  
  2315.     HyperShell            Glossary         Authoring Guide
  2316.         
  2317.  
  2318.  
  2319.           4.1.3 Scripts                       26
  2320.           4.1.4 Simple interaction                   28
  2321.           4.1.5 Functions                       29
  2322.           4.1.6 File input/output                   29
  2323.  
  2324.        4.2 Form Fill                       31
  2325.  
  2326.     Appendix A Glossary                       33
  2327.  
  2328.  
  2329.  
  2330.  
  2331.  
  2332.  
  2333.  
  2334.  
  2335.  
  2336.  
  2337.  
  2338.  
  2339.  
  2340.  
  2341.  
  2342.  
  2343.  
  2344.  
  2345.  
  2346.  
  2347.  
  2348.  
  2349.  
  2350.  
  2351.  
  2352.  
  2353.  
  2354.  
  2355.  
  2356.  
  2357.  
  2358.  
  2359.  
  2360.  
  2361.  
  2362.  
  2363.  
  2364.  
  2365.  
  2366.  
  2367.  
  2368.  
  2369.  
  2370.  
  2371.  
  2372.                       4-36             Version 2.5
  2373.         
  2374.  
  2375.  
  2376.  
  2377.  
  2378.