home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS 1992 June / SIMTEL_0692.cdr / msdos / hypertxt / hs25.arc / HSDEV.LZH / HSREF.DOC < prev   
Text File  |  1989-05-13  |  143KB  |  5,414 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.         
  9.  
  10.  
  11.                HyperShell Hypertext control system
  12.                    Version 2.5
  13.  
  14.                  Reference Guide
  15.  
  16.              Copyright (c) 1988,1989 Text Technology
  17.  
  18.         
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.     Text Technology
  36.     66 Kennedy Avenue
  37.     Macclesfield
  38.     Cheshire
  39.     England
  40.     SK10 3DE
  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 reference guide for use by HyperShell authors. 
  90.     It  describes the format of  the  HyperShell  control  file  and
  91.     describes  the    HyperShell  authoring  tools  -  the  Hypershell
  92.     Editor,  the HyperShell Checker, and  the  HyperShell  formatted
  93.     print program. 
  94.  
  95.     The manner of using HyperShell to browse hyperfiles is described
  96.     in the    Users  Guide, and the fundamentals of writing hyperfiles
  97.     is  presented  in  the    Authoring  Guide, knowledge of which  is
  98.     considered a prerequisite for readers of this document. 
  99.  
  100.     The creation of  the  hyperfile  can be done using a simple text
  101.     editor    or  word processor, or can be done using the  HyperShell
  102.     dedicated editor.  The relevant  chapters  should be referred to
  103.     for details of the  interactive  hyperfile editor, the hyperfile
  104.     checker and the formatted hyperfile print utility. 
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.                       - 2 -
  129.         
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.     HyperShell          The Hyperfile      Reference Guide
  138.         
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.                     Chapter 2
  148.  
  149.                   The Hyperfile
  150.  
  151.  
  152.  
  153.  
  154.     2.1 File contents
  155.  
  156.  
  157.     A hyperfile is a simple text file, containing identification and
  158.     formatting details  of    the frames in the hyperfile.  It is made
  159.     up of items general to the hyperfile, and items relating to each
  160.     frame in the hyperfile.  The order of certain items is critical,
  161.     but  in most cases HyperShell takes a  rather  relaxed    attitude
  162.     towards minor misdemeanors and will not  complain  if  it  finds
  163.     things it wasn't expecting.  This may  mean,  however,    that you
  164.     can make mistakes and that these will not be immediately obvious
  165.     when  you  run    HyperShell.  The  Authoring  system  provides  a
  166.     consistency checker which will go some way  towards checking out
  167.     the format of the file for you, but it pays to be careful in the
  168.     first place. 
  169.  
  170.  
  171.     2.1.1 Remarks
  172.  
  173.     A  remark section can appear anywhere in the hyperfile,  between
  174.     other  sections.   It  is followed by lines of    text  containing
  175.     information for the  hyperfile    author    only,  and  will  not be
  176.     displayed during a HyperShell session.    The remark section takes
  177.     the following form. 
  178.  
  179.  
  180.     .REMARK
  181.     text lines
  182.  
  183.     The  section,  like  all  sections,  is  terminated  by the next
  184.     section identifier (any line starting with '.').
  185.  
  186.  
  187.     2.1.2 Check
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.                        2-3             Version 2.5
  195.         
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.     HyperShell          The Hyperfile      Reference Guide
  204.         
  205.  
  206.  
  207.  
  208.     .CHECK {-options}{+options}
  209.  
  210.     The  Check  specification is a single line 'section'  signalling
  211.     the settings of flags for use by the  HyperShell Checker utility
  212.     (HC). For details of  the  parameters,    see  the  chapter on the
  213.     HyperShell  Checker.  This section  is    ignored  by  HyperShell,
  214.     although it does signify a new section, and therefore terminates
  215.     a previous section. 
  216.  
  217.  
  218.     2.1.3 Header
  219.  
  220.  
  221.     .HEADER
  222.     (text with references and formatting)
  223.  
  224.     The header section provides the text that will appear at the top
  225.     of the    frame  display.   By convention it contains the name and
  226.     title  of the frame being displayed, and may also contain  date,
  227.     time, hyperfile name etc. 
  228.  
  229.     Graphic  characters or others from the 256 character set may  be
  230.     used to draw boxes etc. 
  231.  
  232.     The header section is optional.  If omitted, a    default title is
  233.     displayed showing the frame name and title. 
  234.  
  235.     A 'null' header consisting of a .HEADER line followed by another
  236.     '.' line  may be used if each frame is to have a different form,
  237.     and does not need the default title. 
  238.  
  239.  
  240.     2.1.4 Footer
  241.  
  242.  
  243.     .FOOTER
  244.     (text with references and formatting)
  245.  
  246.     The  footer provides the text that will appear at the bottom  of
  247.     the frame display.  It is usual to position  it  at a fixed line
  248.     location  (Using ~Lnn) so that it appears in the same place  for
  249.     each frame.  The footer  usually  contains  references    that are
  250.     present for all frames in the file, such as a help note display,
  251.     a function key map, a backtrack count display etc. 
  252.  
  253.     Graphic characters or others from the 256 character  set  may be
  254.     used to draw boxes etc. 
  255.  
  256.  
  257.  
  258.  
  259.  
  260.                        2-4             Version 2.5
  261.         
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.     HyperShell          The Hyperfile      Reference Guide
  270.         
  271.  
  272.  
  273.     The footer section is optional. 
  274.  
  275.  
  276.     2.1.5 Global Notes
  277.  
  278.  
  279.     .NOTE name
  280.     (text with references and formatting)
  281.  
  282.     Global notes are notes that are accessible from any frame in the
  283.     hyperfile.  They are usually  for  providing  help  information,
  284.     function  key  displays  and  supportive material for the  frame
  285.     texts.    As notes may contain references, these references may be
  286.     used to provide further information in the form  of other notes,
  287.     or even frames. 
  288.  
  289.     The global note section is optional, and there may  be more than
  290.     one present.  Global notes should be kept together  if there are
  291.     a lot of global items. 
  292.  
  293.  
  294.     2.1.6 Global Menus
  295.  
  296.  
  297.     .MENU name
  298.     (options)
  299.  
  300.     Global    menus  are  menus  available  from  any   frame  in  the
  301.     hyperfile. 
  302.  
  303.     The global menu section is optional, and there    may be more than
  304.     one present.  Global menus should be kept together if there  are
  305.     a lot of global items. 
  306.  
  307.  
  308.     2.1.7 Global Scripts
  309.  
  310.  
  311.     .SCRIPT name
  312.     (actions)
  313.  
  314.     Global scripts are  scripts  available    from  any  frame  in the
  315.     current  hyperfile.   Scripts are sequences  of  actions.   Such
  316.     sequences  may    contain  control  flow    actions  for  performing
  317.     conditional branches and repeated  sequences  of  actions.  Each
  318.     line of the script  may  contain  a  number  of actions, up to a
  319.     maximum  length  of  128  characters.  A conditional action in a
  320.     line  affects  remaining  actions  on that line.  The J/j and  L
  321.     actions may  be  used  to  perform  control  flow.   A script is
  322.     terminated when a new frame is referenced. 
  323.  
  324.  
  325.  
  326.                        2-5             Version 2.5
  327.         
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.     HyperShell          The Hyperfile      Reference Guide
  336.         
  337.  
  338.  
  339.     The global script section is optional,    and  there  may  be more
  340.     than  one  present.   Global scripts should be kept together  if
  341.     there are a lot of global items. 
  342.  
  343.  
  344.     2.1.8 Setup Script
  345.  
  346.  
  347.     .SCRIPT SETUP
  348.     (limited actions)
  349.  
  350.     The  setup  global script is acted upon when  the  hyperfile  is
  351.     loaded, and when the  hyperfile  is  reentered    after displaying
  352.     frames    from  another  hyperfile.  It is  used    to  set  up  key
  353.     mappings and to set control options.  An initial note display or
  354.     certain other  actions    may also be performed at this stage, but
  355.     remember that the script is used on reentry  as  well as at load
  356.     time, so may well be executed many  times when the user switches
  357.     between hyperfiles.  It is imperative not to do a frame display,
  358.     or any action which would ultimately cause a frame display. 
  359.  
  360.     The setup script is optional. 
  361.  
  362.  
  363.     2.1.9 Index
  364.  
  365.     The .INDEX line may  be  present anywhere before the first frame
  366.     specification.    It signals that an index file is usually present
  367.     for the  frame.   An  index file is useful when the hyperfile is
  368.     above a certain size, as it saves HyperShell from having to read
  369.     all the way through the hyperfile  to build its internal index. 
  370.     Opening and reading the index file has its  overheads,    however,
  371.     so its not always  helpful  to    have  the index file in use.  An
  372.     index is generally of use when a hyperfile has above  30  frames
  373.     of reasonable size. 
  374.  
  375.     The index file is  maintained  automatically, and is kept in the
  376.     same directory as the hyperfile.  It has the same  name  as  the
  377.     hyperfile,  but  with  an  extension of .HIX. If you modify  the
  378.     hyperfile, HyperShell will detect this and rebuild the index for
  379.     you.  If you delete the index, a new one will also be built.  If
  380.     the .INDEX line is not present, HyperShell  does  not try to use
  381.     index files. 
  382.  
  383.  
  384.     2.1.10 Frames
  385.  
  386.     Frame  specifications  are  bracketed  by  the    .FRAME and  .END
  387.     keywords.  The    .END keyword can be ommitted, as the next .FRAME
  388.     will  terminate  the current one.  However the .END  keyword  is
  389.  
  390.  
  391.  
  392.                        2-6             Version 2.5
  393.         
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.     HyperShell          The Hyperfile      Reference Guide
  402.         
  403.  
  404.  
  405.     used by the hyperfile editor to determine the scope of the items
  406.     following a frame reference,  so  should  occur  after all local
  407.     items  and before any .REMARK or .CHECK which refers to the next
  408.     frame.    There  must  be  at  least  one frame specification in a
  409.     hyperfile, and there may be as many as three or four hundred. 
  410.  
  411.  
  412.     .FRAME name
  413.     .TITLE title text
  414.     (frame text with references and formatting)
  415.     .MENU name
  416.     (options)
  417.     .NOTE name
  418.     (text with references and formatting)
  419.     .SCRIPT name
  420.     (actions)
  421.     .END
  422.  
  423.  
  424.     2.1.10.1 Name
  425.  
  426.     The frame name provides  the  key  to  the  frame  and    is  very
  427.     important because of this.  When frame references exist in text,
  428.     it  is    useful to use the word (or set of words) in the text  as
  429.     the  key  to  the  frame  reference.   A name should be  chosen,
  430.     therefore, that will be the form  used    when  referring  to  the
  431.     topic of the frame.  Thus 'deleting' is a bad choice for a frame
  432.     about deleting, as it would more  likely  be  the  word 'delete'
  433.     when used in the context within a frame  text.     Fortunately the
  434.     rule is not rigid,  as    frame references can contain parameters,
  435.     hidden from display, that refer to the real frame name. 
  436.  
  437.  
  438.     2.1.10.2 Title
  439.  
  440.     This line is optional.    However, note the following:-
  441.  
  442.     The frame title is  normally  displayed  in  the  frame  display
  443.     header.   It  is  also displayed in any paged  menus  containing
  444.     frame lists,  and  is  used  by  the  'search' command to locate
  445.     frames about particular topics. 
  446.  
  447.     It is therefore reasonably important, and well worth providing. 
  448.  
  449.  
  450.     2.1.10.3 Text
  451.  
  452.     The frame text comes after the frame name (and title) lines.  It
  453.     contains the text specific to the frame.  This will be displayed
  454.     between the header and footer. 
  455.  
  456.  
  457.  
  458.                        2-7             Version 2.5
  459.         
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.     HyperShell          The Hyperfile      Reference Guide
  468.         
  469.  
  470.  
  471.     Graphic and other characters from the  256  character set may be
  472.     used to draw boxes etc. 
  473.  
  474.     The text may contain embedded references to other frames, notes,
  475.     menus  and  other  actions.   Frame  references  can  either  be
  476.     explicitly marked or may  be automatically highlighted using the
  477.     autoreference mode. 
  478.  
  479.     It is recommended that frame text does not take up more than the
  480.     number of  lines  left    after  the  header  and footer have been
  481.     allowed  for.    If  this  does    occur,    a  message  is displayed
  482.     indicating that further text may  be  displayed  by pressing the
  483.     PgDn key.  Also it  is possible to return to the first screen of
  484.     a frame by pressing  the  Home    key.   Whilst frames can contain
  485.     many  screens  full  of  data,    this   practice  is  not  to  be
  486.     encouraged,  as  multi-screen  frames are confusing to the  user
  487.     (Not  just  in    HyperShell  but  generally).   The  multi-screen
  488.     support is therefore minimal, and  nowhere  near  as powerful as
  489.     the support for paged  displays,  which  of  necessity    have  to
  490.     support  multiple  screens.   A  formatting trigger is    provided
  491.     which will force a 'screen break' after  the  line  in    which it
  492.     occurred.  This is the ~G trigger. 
  493.  
  494.  
  495.     2.1.10.4 Notes
  496.  
  497.     Local  notes  are supplied after the text for a frame.     As  for
  498.     global    notes  they  have  a  size  limit  of  22  lines  of  76
  499.     characters.   They  may contain formatting control sequences and
  500.     reference triggers, as used within the main frame text. 
  501.  
  502.  
  503.     2.1.10.5 Menus
  504.  
  505.     Local menus, as  for  global menus, have a limit of 22 entries. 
  506.     Each entry is supplied on  a  separate line, and consists of the
  507.     choice    text,  and optionally  the  associated    action    for  the
  508.     choice.  If an action string is not supplied, the default action
  509.     is to move to the frame with a name equal to the choice text. 
  510.  
  511.     An action string is separated from the    choice    text  by the '|'
  512.     character.  If the menu is to be presented  to    the  user, it is
  513.     good  practice to line up the  action  separator,  so  that  the
  514.     action    type  indicator symbols line up  to  the  right  of  the
  515.     options in the displayed menu. 
  516.  
  517.     A  menu  may also be used as a lookup table, and referenced  via
  518.     the lookup modifier (e.g. Mmenuname[key]). In this  case  it  is
  519.     necessary  to  place  the  action  separator directly after  the
  520.     option    text, and to always supply the action string.  If a menu
  521.  
  522.  
  523.  
  524.                        2-8             Version 2.5
  525.         
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.     HyperShell          The Hyperfile      Reference Guide
  534.         
  535.  
  536.  
  537.     is to be used with a direct index specifier (e.g. Mmenuname(3)),
  538.     the action string is not normally required. 
  539.  
  540.     The following menu has the actions described afterwards:-
  541.  
  542.  
  543.  
  544.     .MENU various
  545.     starting
  546.     help        |Nhelp
  547.     next frame  |F+
  548.     exit program|Q
  549.  
  550.     The  first option, when selected, displays the frame  'starting'
  551.     in the current hyperfile. 
  552.  
  553.     The second option displays a global popup note called 'help'.
  554.  
  555.     The third option moves to the next frame. 
  556.  
  557.     The fourth option quits the HyperShell program. 
  558.  
  559.  
  560.     2.1.10.6 Scripts
  561.  
  562.     Local scripts, as for global scripts, are limited  to  a maximum
  563.     of 100 lines, and each    line  may  contain a number of actions. 
  564.     Script processing is cancelled when a new  frame  is  displayed,
  565.     although remaining  actions  on  the current script line will be
  566.     executed. 
  567.  
  568.     A script  can be used to display a sequence of notes, to input a
  569.     number    of variables to construct a command line,  or  for  many
  570.     other more complex purposes.   A number of control actions exist
  571.     to  allow  looping  and  conditional  branching, and  expression
  572.     evaluation permits simple integer  arithmetic to be performed on
  573.     variables.   These  actions  are  not  normally used outside  of
  574.     scripts. 
  575.  
  576.  
  577.     2.1.10.7 End
  578.  
  579.     The .END keyword  signals  the    end  of  the  scope of the frame
  580.     specification. 
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.                        2-9             Version 2.5
  591.         
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.     HyperShell          The Hyperfile      Reference Guide
  600.         
  601.  
  602.  
  603.  
  604.  
  605.  
  606.  
  607.     2.2 Text annotation
  608.  
  609.  
  610.     In the frame text, in the text of a popup  note  and in the text
  611.     of  a  file  displayed    using  the  'Type file' action,  control
  612.     sequences  can    exist  to  perform   formatting   actions   when
  613.     displaying the text, or  to  indicate  references  of  differing
  614.     types to be highlighted in specific  ways.   The  text    may also
  615.     contain variable substitution  sequences  referring to system or
  616.     application variables (See the section on variables). 
  617.  
  618.  
  619.     2.2.1 References
  620.  
  621.     Reference control sequences have the general form:-
  622.  
  623.     ~?text string~E
  624.  
  625.     or
  626.  
  627.     ~?text string~Paction string~E
  628.  
  629.     Where ? is the reference type identifier, and text string is the
  630.     text to be displayed, highlighted in  a manner applicable to its
  631.     type, in  the  frame text display.  action string is an optional
  632.     action string which will be  performed    instead  of the implicit
  633.     action for the reference if the reference is selected. 
  634.  
  635.     The reference may also have a key mapping sequence before the ~E
  636.     sequence.   This is of the form ~Kx, where x  is  the  character
  637.     which will be mapped to the reference on  the  keyboard.  Thus a
  638.     reference of the form:-
  639.  
  640.     ~FNext frame~Pf+~K ~E
  641.  
  642.     will have  'Next  frame'  highlighted  as a frame reference, and
  643.     will move to the next frame when selected  directly  or when the
  644.     space bar is depressed. 
  645.  
  646.  
  647.     2.2.1.1 Frame
  648.  
  649.     The frame reference is introduced by the ~F or ~f sequence.  The
  650.     ~F  reference  adds  the  reference  to the backtrack list, when
  651.     selected.   The  ~f reference replaces    the  top  entry  on  the
  652.     backtrack  list.   Thus  ~F  is  used    for  browsing  or  cross
  653.  
  654.  
  655.  
  656.                       2-10             Version 2.5
  657.         
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.     HyperShell          The Hyperfile      Reference Guide
  666.         
  667.  
  668.  
  669.     references, and ~f is  used  for  deliberate frame sequencing or
  670.     hierarchical   references.   The  ~f  type   of   reference   is
  671.     highlighted  in  a  different  manner  to  tell  the  user  that
  672.     selection  of the reference  will  not    allow  backtracking.   A
  673.     parameter section (~P) may be added to supply an explicit action
  674.     string to be performed on selection. 
  675.  
  676.  
  677.     2.2.1.2 Note
  678.  
  679.     The note reference is introduced by the ~N  or ~n sequence.  The
  680.     ~N reference is a global note, whose specification occurs at the
  681.     start  of the hyperfile, before the first frame  specification. 
  682.     The  ~n  reference  is    a  local  note, whose specification lies
  683.     within the current frame specification, after the frame text and
  684.     before the next frame.    A parameter section (~P) may be added to
  685.     supply an explicit action string to be performed on selection. 
  686.  
  687.  
  688.     2.2.1.3 File note
  689.  
  690.     The file note reference is introduced by the  ~t sequence.  This
  691.     causes a  file    with  a  name  equal  to the reference (and with
  692.     default extension '.NTE') to be displayed as a    popup note.  See
  693.     the 't' action for further  details.   A  parameter section (~P)
  694.     may be added to supply an explicit action string to be performed
  695.     on selection. 
  696.  
  697.  
  698.     2.2.1.4 Menu
  699.  
  700.     The menu reference is introduced  by the ~M or ~m sequence.  The
  701.     ~M reference is a global menu, whose specification occurs at the
  702.     start of the hyperfile,  before  the first frame specification. 
  703.     The  ~m  reference  is    a  local menu, whose specification  lies
  704.     within the current frame specification, after the frame text and
  705.     before the next frame.    A parameter section (~P) may be added to
  706.     supply an explicit action string to be performed on selection. 
  707.  
  708.  
  709.     2.2.1.5 Script
  710.  
  711.     The script reference is introduced by the ~S  or  ~s  sequence. 
  712.     The ~S reference is a global script,  whose specification occurs
  713.     at   the   start  of  the  hyperfile,  before  the  first  frame
  714.     specification.     The  ~s  reference  is  a  local script,  whose
  715.     specification lies within the current frame specification, after
  716.     the frame  text  and before the next frame.  A parameter section
  717.     (~P) may be added to supply an    explicit  action  string  to  be
  718.     performed on selection. 
  719.  
  720.  
  721.  
  722.                       2-11             Version 2.5
  723.         
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.  
  731.     HyperShell          The Hyperfile      Reference Guide
  732.         
  733.  
  734.  
  735.  
  736.  
  737.     2.2.1.6 Action
  738.  
  739.     The action reference is introduced  by    the  ~A  sequence.  This
  740.     form of reference contains an action which is not a frame, note,
  741.     menu or script reference.   It    covers the miscellaneous actions
  742.     whose multiplicity precludes the use  of  specific  highlighting
  743.     schemes.  The action  reference  always  contains  the parameter
  744.     section (~P sequence), as it has no implicit action. 
  745.  
  746.  
  747.     2.2.1.7 Input field
  748.  
  749.     The input field is not exactly a reference, but is used to input
  750.     data to be used by the application.  Its  most general use is to
  751.     input variable values. 
  752.  
  753.     The  input  field  always has reference  text  and  a  parameter
  754.     section, which    specifies a pattern within which the input value
  755.     is substituted prior to execution. 
  756.  
  757.     The reference  text  part of the input field delimits the field,
  758.     and provides the text which is normally displayed in the field. 
  759.     If  the  input field is  being    used  to  set  a  variable,  the
  760.     reference  text usually contains  an  expansion  token    for  the
  761.     variable, so that when the frame is displayed, the current value
  762.     is  displayed  in  the field.  The field should contain a  width
  763.     specification after any reference text, which will determine the
  764.     width of the input field. 
  765.  
  766.     The parameter section usually  consists of a variable assignment
  767.     and sometimes some other action.  The parameter string    provides
  768.     a pattern,  within  which  the    input value is substituted.  The
  769.     string can  contain  up  to three occurences of the string '%s',
  770.     each of which will be replaced by the value when it is input. 
  771.  
  772.     An example of a line containing an input field is as follows:-
  773.  
  774.     Name : ~I$n~W10~PVn%s;scheckname~E
  775.  
  776.     This,  when  selected, allows a string to be entered  up  to  10
  777.     characters in length, which is assigned to variable 'n' and then
  778.     checked  using    local script 'checkname'. When    displayed,  this
  779.     will look like (assuming variable n contains 'Fred Jones'):-
  780.  
  781.     Name : Fred Jones
  782.  
  783.     The input  field  may  also be specified in a note, although the
  784.     note display will terminate after entry of the input field. 
  785.  
  786.  
  787.  
  788.                       2-12             Version 2.5
  789.         
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.  
  797.     HyperShell          The Hyperfile      Reference Guide
  798.         
  799.  
  800.  
  801.  
  802.  
  803.     2.2.1.8 Parameter section
  804.  
  805.     The parameter section, introduced  by  the  ~P sequence, permits
  806.     any action to be associated with a reference.  It  is usual, and
  807.     helpful, to use the same type of action as that suggested by the
  808.     initial introductory sequence, as it is  that  which has already
  809.     determined  the  highlighting  scheme  for the reference.  If  a
  810.     miscellaneous action for which there is  no set colour scheme is
  811.     to be performed, the 'action' reference type should be used. 
  812.  
  813.  
  814.     2.2.1.9 Key mapping
  815.  
  816.     The key mapping sequence, introduced by ~K, permits a key on the
  817.     keyboard to be mapped to the reference,  such  that  when  it is
  818.     pressed, the reference is selected.   This  is useful for 'menu'
  819.     frames.  A key mapped using the 'K' action takes precedence over
  820.     this form of key mapping. 
  821.  
  822.  
  823.     2.2.1.10 Immediate reference
  824.  
  825.     One reference on a frame  display,  but  not  any  other type of
  826.     display, may  be flagged as an 'immediate' reference, which will
  827.     be  selected  automatically  after   the  frame  text  has  been
  828.     displayed.  This is done by including  the sequence ~Q after the
  829.     complete reference sequence for  the  reference to be selected. 
  830.     This may be used for many purposes, but the most common would be
  831.     to  select  the first input field on a form frame, and therefore
  832.     put the frame into a data  input  mode    automatically on entry. 
  833.     The immediate reference flag  may  also be used with 'invisible'
  834.     references.   These  have a zero length reference string and  do
  835.     not therefore permit manual selection.    This could be  placed in
  836.     the  header or footer to, for instance,  write    a  log    file  of
  837.     frames visited.  It can also be  used to pop up a note or a menu
  838.     on moving to a    frame.     It may even invoke a script which could
  839.     perform a long sequence of actions. 
  840.  
  841.  
  842.     2.2.2 Formatting
  843.  
  844.     The formatting sequences permit the frame, and note, displays to
  845.     be controlled in a number of ways.  Absolute cursor  positioning
  846.     and colour control are the main uses for this feature. 
  847.  
  848.     Formatting  sequences  can be placed within the reference  text,
  849.     provided  that    a  parameter   section     is  provided  for  that
  850.     reference.  This facility can be used to highlight  a  letter in
  851.  
  852.  
  853.  
  854.                       2-13             Version 2.5
  855.         
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.  
  863.     HyperShell          The Hyperfile      Reference Guide
  864.         
  865.  
  866.  
  867.     the reference, if that letter key is mapped to the reference. 
  868.  
  869.  
  870.     2.2.2.1 Option display
  871.  
  872.     The option  display is an extended form of variable display.  It
  873.     allows the state of various runtime  options  to be displayed as
  874.     either    'ON'  or  'OFF'. The runtime  options  are  as    follows,
  875.     showing the option code,  the  command    line flag and the option
  876.     description  with  the    default state which is    toggled  by  the
  877.     flag. 
  878.  
  879.  
  880.     0 -n      Create notepad file (off)
  881.     1 -f      Symbols on menus (on)
  882.     2 -b      Backtrack recording (on)
  883.     3 -x      Suppress file suffix on noted frames (on)
  884.     4 -a      Auto reference (off)
  885.     5 -p      Select output route (off)
  886.     6 -r      Print remaining space on exit (off)
  887.     7 -t      Script label tracing (off)
  888.     8 -w      Give warning when item referenced is not available (on)
  889.     9 -l(-k)  List verbatim from 'T'action (with 8th bit stripped) (off)
  890.  
  891.  
  892.     2.2.2.2 Line positioning
  893.  
  894.     The  line  positioning    command, introduced by the ~L  sequence,
  895.     positions the text writing cursor  at the specified line, unless
  896.     that line is before or at the current line, or beyond the end of
  897.     the display.   The  full  form    of the sequence is either ~Ln or
  898.     ~Lnn, where n/nn is  the  line number, starting from 1. Thus ~L3
  899.     positions at line 3, ~L20 positions at line 20.
  900.  
  901.  
  902.     2.2.2.3 Column positioning
  903.  
  904.     The column positioning command,  introduced  by the ~C sequence,
  905.     positions  the text writing  cursor  at  the  specified  column,
  906.     unless    that  column is before or at the  current  position,  or
  907.     beyond the edge of  the  display.  The full form of the sequence
  908.     is either ~Cn or ~Cnn, where n/nn is the column number, starting
  909.     from 1. Thus ~C3 positions at column 3, ~C74 positions at column
  910.     74.
  911.  
  912.  
  913.     2.2.2.4 Width positioning
  914.  
  915.     The ~W sequence, of the form ~Wn or  ~Wnn,  is    used normally to
  916.     specify the width of an input field (viz.). It may, however,  be
  917.  
  918.  
  919.  
  920.                       2-14             Version 2.5
  921.         
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  
  929.     HyperShell          The Hyperfile      Reference Guide
  930.         
  931.  
  932.  
  933.     used for other purposes,  as  it  simply  specifies  a    relative
  934.     horizontal   displacement   from  the  start  of  the    previous
  935.     reference. 
  936.  
  937.  
  938.     2.2.2.5 Screen breaks
  939.  
  940.     In the frame text, a 'new page' (or  second  screen) of text may
  941.     be forced after the current line by the  inclusion of the screen
  942.     break  trigger.  The form of this sequence is ~G, and  this  may
  943.     occur at any point in the line, although it is    probably easiest
  944.     to maintain if placed at the end of the line. 
  945.  
  946.  
  947.     2.2.2.6 Hidden lines
  948.  
  949.     Lines in the text can be excluded from a frame or other  display
  950.     by  putting a ~H sequence at the start    of  the  line.     The  ~H
  951.     sequence  may be provided by a variable, which can be set to  an
  952.     empty  string  or to ~H, depending  upon  whether  the    line  is
  953.     required or not.  A sequence of lines can  be switched in or out
  954.     in this manner.  The ~H sequence  can be provided literally, but
  955.     is of limited use as such,  apart  from for embedding commentary
  956.     information in the text. 
  957.  
  958.  
  959.     2.2.2.7 Text/Background colours
  960.  
  961.     The text colour and background colour can be changed  by  use of
  962.     the ~T and ~B sequences.  The text can    have one of 16 different
  963.     'colours' and the background can have one of 8. It is helpful to
  964.     choose these so that they have a good contrast.  And yes, if you
  965.     make  them  both the same, the text is invisible.  Colour  codes
  966.     are as follows:-
  967.  
  968.  
  969.     K      Black
  970.     B      Blue
  971.     G      Green
  972.     C      Cyan
  973.     R      Red
  974.     M      Magenta
  975.     Y      Yellow (brown)
  976.     W      White (light grey)
  977.     k      Dark grey    (Foreground only)
  978.     b      Light blue    (Foreground only)
  979.     g      Light green    (Foreground only)
  980.     c      Light Cyan    (Foreground only)
  981.     r      Light red    (Foreground only)
  982.     m      Light magenta    (Foreground only)
  983.  
  984.  
  985.  
  986.                       2-15             Version 2.5
  987.         
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.  
  995.     HyperShell          The Hyperfile      Reference Guide
  996.         
  997.  
  998.  
  999.     y      Light yellow    (Foreground only)
  1000.     w      Bright white    (Foreground only)
  1001.  
  1002.  
  1003.     2.2.2.8 Display colour schemes
  1004.  
  1005.     The ~D sequence introduces a colour scheme selection.  There are
  1006.     26 colour  schemes,  mapped  to  the  letters A to Z. The scheme
  1007.     letter is specified  directly  after  the  ~D. The colour scheme
  1008.     sequence  works  slightly  differently    to  the  text/background
  1009.     settings  in  that  it is held over a  reference  display.   The
  1010.     available schemes are as follows, showing the scheme letter, the
  1011.     default  setting (foreground,background) and  the  normal  usage
  1012.     (items in brackets are not used by HyperShell):-
  1013.  
  1014.  
  1015.     A      wB      Action reference
  1016.     B      WK(bl)       (Blink)
  1017.     C      KY      Menu choice
  1018.     D      KW      Default title
  1019.     E      yK      Frame reference - replace backtrack
  1020.     F      wK      Frame reference - add to backtrack
  1021.     G      KK      (Ghost)
  1022.     H      KR      Menu heading
  1023.     I      yY      Input field
  1024.     J      KG      Note heading and border
  1025.     K      yG      Note
  1026.     L      RK      (Low intensity)
  1027.     M      KW      Menu reference
  1028.     N      gK      Note reference
  1029.     O      yB      Menu selection
  1030.     P      yR(bl)       Popup message
  1031.     Q      wR(bl)       (Quick)
  1032.     R      KW      Request / message
  1033.     S      yG      Script reference
  1034.     T      WK      Frame text
  1035.     U      YK      (User 1)
  1036.     V      MK      (User 2)
  1037.     W      GK      (User 3)
  1038.     X      RK      (User 4)
  1039.     Y      BK      (User 5)
  1040.     Z      rK      (User 6)
  1041.  
  1042.     Note that the above set is reconfigured if  -h    is  specified on
  1043.     the command line, or a monochrome display adaptor is used. 
  1044.  
  1045.     These  schemes are configurable using the option setting  action
  1046.     'O'.
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.                       2-16             Version 2.5
  1053.         
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.     HyperShell          The Hyperfile      Reference Guide
  1062.         
  1063.  
  1064.  
  1065.  
  1066.  
  1067.     2.2.2.9 Variables
  1068.  
  1069.     Variables  are strings that may be stored under a single  letter
  1070.     name, either  upper  or  lower    case.    Thus  there  can  be  52
  1071.     application variables.    Variables can  be set within a hyperfile
  1072.     and may be  'expanded'    within    the  frame  text or in an action
  1073.     string.  A variable expansion  token takes the form '$x' where x
  1074.     is the variable name.  This is expanded to the string  value  of
  1075.     the variable.  If  the    '$'  symbol is required in the text, two
  1076.     '$' symbols together will  be  taken to mean one, which will not
  1077.     be expanded when the text is displayed, or when an action string
  1078.     is expanded prior to execution.  This may be used when an action
  1079.     string in a reference in frame text needs to contain a    variable
  1080.     expansion token itself, but this must  not be expanded until the
  1081.     action is performed. 
  1082.  
  1083.     There are a number of additional variables, some of which may be
  1084.     set  by hyperfile applications,  and  some  which  can    only  be
  1085.     expanded.  The HyperShell system variables have the names '0' to
  1086.     '9' and  some  special characters, and have the following string
  1087.     values:-
  1088.  
  1089.  
  1090.     0      full pathname of HyperShell program used
  1091.     1      current frame name
  1092.     2      current frame title
  1093.     3      current file name
  1094.     4      current date
  1095.     5      current time
  1096.     6      backtrack list current depth
  1097.     7      current directory
  1098.     8      original directory
  1099.     9      HyperShell name and version
  1100.     ?      error code of last error that occurred
  1101.     <      file name returned from last paged directory display
  1102.     >      filename extension returned from last paged directory display
  1103.     :      list of filename extensions to be excluded from TYPE action
  1104.     @      Available memory
  1105.     _      File prompt (becomes null string when viewing file)
  1106.     ^      Exit status from X,x,D,d action program execution
  1107.  
  1108.     The ':'  variable is a string representing those file extensions
  1109.     for which  the    extended  directory  display  providing  actions
  1110.     (dynamic menu 'l') will not set a 'Type file' action.  It is set
  1111.     to the following string by default:-
  1112.  
  1113.     .EXE.COM.OBJ.SYS.DBF.LIB.
  1114.  
  1115.  
  1116.  
  1117.  
  1118.                       2-17             Version 2.5
  1119.         
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  
  1127.     HyperShell          The Hyperfile      Reference Guide
  1128.         
  1129.  
  1130.  
  1131.     Additional extensions can be  added  by resetting the variable. 
  1132.     Note that extensions should have a '.' to each side. 
  1133.  
  1134.     Further applications variables called 'named variables' are also
  1135.     available, and are described under the 'l' action, below. 
  1136.  
  1137.  
  1138.  
  1139.  
  1140.     2.3 Actions
  1141.  
  1142.  
  1143.     Actions are the fundamental level of control within  HyperShell.
  1144.     Action specifications can be supplied at a  number  of different
  1145.     places:-
  1146.  
  1147.       1.  The reference action in the text. 
  1148.  
  1149.       2.  A menu action. 
  1150.  
  1151.       3.  A script action. 
  1152.  
  1153.     Not  all  forms  of  action  specification  are permitted in all
  1154.     places.   It is normally obvious  where  a  particular    type  of
  1155.     action modifier string is not applicable, or where  a particular
  1156.     action is not sensible.  In particular, control flow actions are
  1157.     only relevant in scripts (although a  popup  note  or  menu  may
  1158.     cause a branch within a currently executing script). 
  1159.  
  1160.  
  1161.     2.3.1 Action tokens
  1162.  
  1163.     Action specifications start with  a single letter action token. 
  1164.     An action may also  have  parameters supplied directly after the
  1165.     token.     The  parameters  may  be  supplied directly as  literal
  1166.     strings   or  indirectly  via  one  of    a  number   of     'action
  1167.     modifiers'. 
  1168.  
  1169.  
  1170.     2.3.1.1 A - Action
  1171.  
  1172.     The 'A' action takes the following form:-
  1173.  
  1174.     Aactionspec
  1175.  
  1176.     This  action  is  provided to enable action modifiers  returning
  1177.     full action specifications to  be  serviced.   For  example  the
  1178.     extended directory listing modifier 'l' and the notepad  listing
  1179.     modifier 'R' both return action strings, and would be handled as
  1180.     follows:-
  1181.  
  1182.  
  1183.  
  1184.                       2-18             Version 2.5
  1185.         
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.  
  1193.     HyperShell          The Hyperfile      Reference Guide
  1194.         
  1195.  
  1196.  
  1197.     A@l*.*
  1198.  
  1199.     A@R
  1200.  
  1201.     Also the form 'A?Enter action' can be used to permit the user to
  1202.     enter an action specification for execution. 
  1203.  
  1204.  
  1205.     2.3.1.2 a - Conditional action
  1206.  
  1207.     The 'a' action has the following form:-
  1208.  
  1209.     acxxxxxxx
  1210.  
  1211.     acxxxxxxxx;xxxxx;xxxxx
  1212.  
  1213.     Where c is a condition under which the    action    (which    may be a
  1214.     multiple  action,  as  shown in the  second  example  above)  is
  1215.     executed.  The condition letter is one    of  those  described for
  1216.     the  'j'  action  below.   This  provides  a means of specifying
  1217.     conditional actions without having to use scripts. 
  1218.  
  1219.  
  1220.     2.3.1.3 B - Backtrack
  1221.  
  1222.     HyperShell  retains  a     list    of  frames  that  the  user  has
  1223.     displayed.  This list acts  like  a  'stack'  which  has a frame
  1224.     reference 'pushed' when a  new    frame  is  displayed.    The  'B'
  1225.     action 'pops' the frame  references  from  this  stack    one at a
  1226.     time, displaying the frame referenced. 
  1227.  
  1228.  
  1229.     2.3.1.4 b - Multiple backtrack
  1230.  
  1231.     The 'b' action permits a  number  of frames to be discarded from
  1232.     the  backtrack    list,  retaining   the     depth    specified  as  a
  1233.     parameter, and displays the  frame  referenced    at  that point. 
  1234.     This action is usually used with the 'B' dynamic menu, to permit
  1235.     the point in the list to be selected. 
  1236.  
  1237.     b@B
  1238.  
  1239.     To backtrack, leaving a depth of 3 entries, the following action
  1240.     is specified:-
  1241.  
  1242.     b3
  1243.  
  1244.  
  1245.  
  1246.  
  1247.  
  1248.  
  1249.  
  1250.                       2-19             Version 2.5
  1251.         
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.  
  1259.     HyperShell          The Hyperfile      Reference Guide
  1260.         
  1261.  
  1262.  
  1263.  
  1264.  
  1265.     2.3.1.5 C - Change drive / directory
  1266.  
  1267.     The 'C' action allows  the  working directory to be changed, and
  1268.     optionally  allows  the  working   drive  to  be  altered.   For
  1269.     example:-
  1270.  
  1271.     CB:\HYPER
  1272.  
  1273.     CSUBDIR
  1274.  
  1275.     C..\HYPER2
  1276.  
  1277.     The original drive:directory is held  in  system variable 8, and
  1278.     the current drive:directory  is  held in system variable 7. Thus
  1279.     the   action   'P$7'   would   display     the   current     working
  1280.     drive:directory,  and  the  action  'C$8'  changes  back to  the
  1281.     original directory. 
  1282.  
  1283.  
  1284.     2.3.1.6 D/d - DOS command execution
  1285.  
  1286.     This action starts the DOS command processor to run a command or
  1287.     to permit command line interaction.  If a parameter is supplied,
  1288.     it is issued as a command line to DOS. The  command can be a DOS
  1289.     built-in command, a batch  file,  or  an  external program.  The
  1290.     command can have parameters. 
  1291.  
  1292.     If  the action is specified  without  parameters,  it  runs  the
  1293.     command line interpreter to allow the user to interact with DOS.
  1294.     When  the  user has finished, the EXIT command is used to return
  1295.     to HyperShell.
  1296.  
  1297.     The uppercase form of the action indicates that when the command
  1298.     has finished, a key press is  required    before    redisplaying the
  1299.     current HyperShell frame  again.   The    lowercase form indicates
  1300.     that when the command has finished, HyperShell will  immediately
  1301.     redisplay the current frame.   The system variable '^' is set to
  1302.     the  exit  code  of  the  DOS command processor  (although  this
  1303.     appears to be 0 always!).  If the command line contains  a space
  1304.     character  as  the first character, the screen    is  not  cleared
  1305.     before invocation and refreshed  afterwards,  allowing    'silent'
  1306.     commands,  or  commands  with  redirected output to be    executed
  1307.     without  disturbing  the display.  If the command does output to
  1308.     the screen, the display will be disturbed, but can be  refreshed
  1309.     using  the  'y'  action.   It  is preferable to ensure that  the
  1310.     command  will never output to  the  screen.   Examples    of  this
  1311.     action follow:-
  1312.  
  1313.  
  1314.  
  1315.  
  1316.                       2-20             Version 2.5
  1317.         
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.  
  1325.     HyperShell          The Hyperfile      Reference Guide
  1326.         
  1327.  
  1328.  
  1329.     D
  1330.  
  1331.     DDIR/W *.HYP
  1332.  
  1333.     d DEL DATA.DAT
  1334.  
  1335.  
  1336.     2.3.1.7 E - Command chaining
  1337.  
  1338.     The 'E' action    executes another program, overwriting HyperShell
  1339.     in  memory.   Only  programs (files with  .EXE    or  .COM  as  an
  1340.     extension) can be executed  using  this  action.   If subsequent
  1341.     return to HyperShell is required, either  the  'D' action or the
  1342.     'X' action should be used, although  these  will  mean    that the
  1343.     program has  less  room  in  which  to    execute,  as  HyperShell
  1344.     occupies around 102k of memory. 
  1345.  
  1346.  
  1347.     2.3.1.8 e - expand variable
  1348.  
  1349.     The 'e' action allows a variable to be split  into  fields,  and
  1350.     assigned to a number of other variables.  It takes the form:-
  1351.  
  1352.     evsabc.. 
  1353.  
  1354.     Where 'v' is the name of the source variable, 's' is a character
  1355.     used to  separate the fields in the source variable, and abc... 
  1356.     are  the  target  variables  to  receive  the  fields.     If  the
  1357.     character  's'    is  ommitted,  the  fields  are  assumed  to  be
  1358.     separated  by  spaces.    See the appendix for a list of    reserved
  1359.     characters which cannot be used as separators. 
  1360.  
  1361.     The  opposite effect of this action is to store the values of  a
  1362.     number    of  variables in a variable, with  a  separator  between
  1363.     them.  This can easily be accomplished by the form:-
  1364.  
  1365.     Vv$as$bs$c
  1366.  
  1367.     Where the values of v,s,a,b,c are  as above.  This mechanism can
  1368.     be  used to pack a set    of  variables  for  storage  whilst  the
  1369.     variable  names are used for some other purpose.  Of course  the
  1370.     variable can be expanded  into a set of variables other than the
  1371.     original. 
  1372.  
  1373.  
  1374.     2.3.1.9 F/f - Frame selection
  1375.  
  1376.     The 'F' action selects a new frame to display. 
  1377.  
  1378.  
  1379.  
  1380.  
  1381.  
  1382.                       2-21             Version 2.5
  1383.         
  1384.  
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.  
  1391.     HyperShell          The Hyperfile      Reference Guide
  1392.         
  1393.  
  1394.  
  1395.     Fframename
  1396.  
  1397.     The parameter specifies the  frame  name  of  the  frame  to  be
  1398.     displayed.  If just a  frame  name  is    supplied,  the    frame is
  1399.     assumed to be in the local hyperfile.  If the extended form
  1400.  
  1401.     Fframename^hyperfilename
  1402.  
  1403.     is used, this indicates that the frame belongs    to the specified
  1404.     hyperfile.  The home frame of a hyperfile can  be  selected with
  1405.     the form:-
  1406.  
  1407.     F^hyperfilename
  1408.  
  1409.     Indeed the home frame of the  current hyperfile is selected with
  1410.     the form
  1411.  
  1412.     F
  1413.  
  1414.     The  lowercase    form  of   the    action    modifies  the  backtrack
  1415.     processing  so that the frame replaces the last frame  reference
  1416.     on  the  backtrack  list, rather than being added to the  list. 
  1417.     This is used to step through  related  frames  when  it is clear
  1418.     that the user is reading  them    through,  and  where  it  is not
  1419.     necessary  to  stack  the  frames  on  the backtrack list.   The
  1420.     example shows an action which will step to the next frame in the
  1421.     hyperfile, without retaining the previous frame reference. 
  1422.  
  1423.     f+
  1424.  
  1425.     The '+' modifier is only applicable to the 'F' or 'f' action. 
  1426.  
  1427.  
  1428.     2.3.1.10 H/h - Notepad maintenance
  1429.  
  1430.     The  notepad,  as  well as being maintained by the INS    and  DEL
  1431.     keys, may also have  data  added  and removed by the 'H' and 'h'
  1432.     actions.   The    items  on  the notepad would normally be  action
  1433.     specifications, although it is possible to store other    data  on
  1434.     the list  for selection for other purposes.  These actions cause
  1435.     the notepad scan pointer (used by !R) to be reset. 
  1436.  
  1437.  
  1438.     2.3.1.11 I - Select next input field
  1439.  
  1440.     The 'I' action is specific  to    frames containing input fields. 
  1441.     This action is    used  in  an input field action string to select
  1442.     the  next  input  field  after    input is complete on that  input
  1443.     field. 
  1444.  
  1445.  
  1446.  
  1447.  
  1448.                       2-22             Version 2.5
  1449.         
  1450.  
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456.  
  1457.     HyperShell          The Hyperfile      Reference Guide
  1458.         
  1459.  
  1460.  
  1461.  
  1462.  
  1463.     2.3.1.12 J/j - Jump within script
  1464.  
  1465.     The uppercase form 'J' is an unconditional branch, and transfers
  1466.     control to the script label denoted by the parameter. 
  1467.  
  1468.     Jstart
  1469.  
  1470.     Branches to the line containing 'Lstart' in the  script.  If the
  1471.     label  does  not  exist  in the script, the jump does  not  take
  1472.     place,    and  processing  continues with the  next  line  in  the
  1473.     script. 
  1474.  
  1475.     The lowercase form 'j' is a conditional jump, and is followed by
  1476.     a letter denoting the condition upon  which  a    jump will occur,
  1477.     followed  by  the  label  to which a branch will be made if  the
  1478.     condition is set.  This 'condition' is set up  by  the    variable
  1479.     testing  action  'v'.  The  conditions available are as  follows
  1480.     (note the lowercase form MUST be used):-
  1481.  
  1482.  
  1483.          e        variable equals string          *
  1484.          n        variable not equal to string
  1485.          g        variable greater than string      *
  1486.          l        variable less than string          *
  1487.          d        variable is defined
  1488.          u        variable is undefined
  1489.          c        variable contains string
  1490.          w        variable is contained within string
  1491.  
  1492.     Note  that  the conditions  marked  with  an  asterisk    indicate
  1493.     lexical comparisons unless the    comparand  string  starts with a
  1494.     numeric digit or a minus sign '-',  in    which case an arithmetic
  1495.     (integer) comparison is made. 
  1496.  
  1497.     In addition, the 'j'  action  can  be  used to test if the error
  1498.     status is set, by use of the following conditions:-
  1499.  
  1500.  
  1501.          s        jump if error status set
  1502.          o        jump if error status O.K.
  1503.  
  1504.     The error status can be cleared to 'O.K.' by the action 'Y', and
  1505.     will otherwise retain its  setting,  even  if successful actions
  1506.     are performed. 
  1507.  
  1508.  
  1509.  
  1510.  
  1511.  
  1512.  
  1513.  
  1514.                       2-23             Version 2.5
  1515.         
  1516.  
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.  
  1523.     HyperShell          The Hyperfile      Reference Guide
  1524.         
  1525.  
  1526.  
  1527.  
  1528.  
  1529.     2.3.1.13 K - Set key mapping
  1530.  
  1531.     The  'K' action maps a keyboard key to an action  string.   This
  1532.     action is  then  available  from a frame display (not from paged
  1533.     displays).  When the key is pressed, the action is performed. 
  1534.  
  1535.     Function  keys    and  printable    ascii  characters may be  mapped
  1536.     (subject    to     them    not    conflicting    with    HyperShell
  1537.     metacharacters).   The    key  to  be  mapped  is specified by the
  1538.     following notations:-
  1539.  
  1540.         
  1541.  
  1542.  
  1543.          K#xstring         Character x
  1544.          KFnstring         Function key n
  1545.          KSnstring         Shift/function key n
  1546.          KCnstring         Ctrl/function key n
  1547.          KAnstring         Alt/function key n
  1548.  
  1549.     Function key 10 is indicated by n = 0.
  1550.  
  1551.     Unshifted function keys equate to the main control menu actions,
  1552.     and mapping them changes  the  actions    for the main menu.  This
  1553.     can be used to disable certain control menu options.  The option
  1554.     text for the main menu can be set using the special form:-
  1555.  
  1556.     KMnstring Set menu option text n to string
  1557.  
  1558.     The control menu can be reset at any time by the special  option
  1559.     action
  1560.  
  1561.     O#
  1562.  
  1563.     This is useful for inclusion at the start of the SETUP script in
  1564.     a hyperfile, in case another hyperfile    has changed the settings
  1565.     in its own SETUP script. 
  1566.  
  1567.     Mapped    strings  may  be obtained by use of the string    function
  1568.     &Mx, which returns the string mapped  to the specified character
  1569.     'x'.
  1570.  
  1571.  
  1572.     2.3.1.14 L - Label in script
  1573.  
  1574.     The 'L' action does  not do any processing, but indicates a line
  1575.     in a script to    which the jump actions can branch.  If the trace
  1576.     flag is switched on, the script stops at each label it executes,
  1577.  
  1578.  
  1579.  
  1580.                       2-24             Version 2.5
  1581.         
  1582.  
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588.  
  1589.     HyperShell          The Hyperfile      Reference Guide
  1590.         
  1591.  
  1592.  
  1593.     showing the label name.  The label line takes the form:-
  1594.  
  1595.     Llabelname
  1596.  
  1597.     Where labelname is the    name  of the label, which may be used as
  1598.     the target of a jump statement. 
  1599.  
  1600.  
  1601.     2.3.1.15 l - load named variable
  1602.  
  1603.     Named  variables  can be  used    instead  of  the  single  letter
  1604.     variables  to hold information for expansion in text  or  in  an
  1605.     action.  A named variable is assigned a value by the action:-
  1606.  
  1607.     lvnamed
  1608.  
  1609.     Where v is a  single  letter variable and 'named' is the name of
  1610.     the named variable.  The contents of  the  variable v are loaded
  1611.     into the variable 'named'. Note that the name can be supplied by
  1612.     an action  modifier  or  by  the  expansion of a variable token,
  1613.     including that of the same or another named variable. 
  1614.  
  1615.     Named variables are expanded using the form:-
  1616.  
  1617.     $(named)
  1618.  
  1619.     and the name can  again  be  specified    by  an    expansion token,
  1620.     although  in  this  case  this    can  only  be  a  single  letter
  1621.     variable.  e.g. 
  1622.  
  1623.     $($n)
  1624.  
  1625.     Where n is  a  single letter variable containing the name of the
  1626.     named variable.  This feature  can  be used as a limited form of
  1627.     'subscripting', or indirection. 
  1628.  
  1629.  
  1630.     2.3.1.16 M/m - Popup menu display
  1631.  
  1632.     This action performs the action resulting from selection  by the
  1633.     user from the named menu.  The uppercase form is used for global
  1634.     menus and the lowercase form for local menus. 
  1635.  
  1636.     Mmenuname
  1637.  
  1638.     A menu action, and a menu  action  modifier,  may  have  special
  1639.     modifiers added to select  from  the  menu  by    means other than
  1640.     interaction.  The following form is used to select a menu choice
  1641.     by index:-
  1642.  
  1643.  
  1644.  
  1645.  
  1646.                       2-25             Version 2.5
  1647.         
  1648.  
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654.  
  1655.     HyperShell          The Hyperfile      Reference Guide
  1656.         
  1657.  
  1658.  
  1659.     Mmenuname(nn)
  1660.  
  1661.     Where nn is a number representing the option number in    the menu
  1662.     to  select.  If the number is outside the range of the menu,  no
  1663.     action is performed (or returned  for  an  action modifier), and
  1664.     the error status is set. 
  1665.  
  1666.     A menu can also be used as a lookup  table.   The  menu  is then
  1667.     accessed by a specification of the form:-
  1668.  
  1669.     Mmenuname[key]
  1670.  
  1671.     In this case, the lines in the menu section have to be set up in
  1672.     the following form:-
  1673.  
  1674.     key|action
  1675.  
  1676.     Where key is the key to  look  up,  and  action is the action to
  1677.     perform  if  a    match  is  found.   The  '|'  character  has  to
  1678.     immediately follow the key string for  this to work.  If the key
  1679.     is not found in the menu, no action  is  performed and the error
  1680.     status is set.    If the key is found, the action part is returned
  1681.     as the menu result. 
  1682.  
  1683.  
  1684.     2.3.1.17 N/n - Popup note display
  1685.  
  1686.     The  action  'N'  pops    up  the  named    note,  and waits  for  a
  1687.     key/button press before clearing  the  note.  The uppercase form
  1688.     applies to global notes  and the lowercase form applies to local
  1689.     notes.     Notes    can  contain  references  just as frames do, and
  1690.     these will be actioned if selected. 
  1691.  
  1692.     Na note
  1693.  
  1694.  
  1695.     2.3.1.18 O - Option setting
  1696.  
  1697.     The  action  'O'  is  used  to set HyperShell control flags  and
  1698.     colour schemes.   A  numeric  option sets a run control flag, an
  1699.     alphabetic option sets a  colour  scheme.  The control flags are
  1700.     set  to  0  for  OFF   or   1    for   ON.   This   example  sets
  1701.     autoreferencing:-
  1702.  
  1703.     O41
  1704.  
  1705.     An option can be 'toggled', that is set off if on and set on  if
  1706.     off,  by  specifying  an  alphabetic  value.   E.g.  to   toggle
  1707.     autoreferencing:-
  1708.  
  1709.  
  1710.  
  1711.  
  1712.                       2-26             Version 2.5
  1713.         
  1714.  
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720.  
  1721.     HyperShell          The Hyperfile      Reference Guide
  1722.         
  1723.  
  1724.  
  1725.     O4T
  1726.  
  1727.     The colour schemes are set to  a  two  character  colour setting
  1728.     consisting of the foreground  and background colours.  Note that
  1729.     the brighter 8 colours cannot be used for the background.   This
  1730.     example sets note references to be bright yellow on dark green:-
  1731.  
  1732.     ONyG
  1733.  
  1734.     A special option setting is used  to  reset  the control menu to
  1735.     its default values:-
  1736.  
  1737.     O#
  1738.  
  1739.  
  1740.     2.3.1.19 o - Printer output
  1741.  
  1742.     The 'o' action prints the supplied  string  to a route specified
  1743.     by the printer option.     The  valid  values,  along  with  their
  1744.     routes, are as follows:-
  1745.  
  1746.     0 - Display on bottom line
  1747.  
  1748.     1 - Print to printer
  1749.  
  1750.     2 - Send to standard output
  1751.  
  1752.     3 - Send to standard 'AUX' (e.g. RS232)
  1753.  
  1754.     4 - Send to 'output file' (that opened by action 'w')
  1755.  
  1756.     If  an    invalid  route    is specified, output goes to the  bottom
  1757.     line.  The printer is enabled by using '-p' on the command line,
  1758.     or by issuing the action 'O51' to  set    option    5  to 1. The 'o'
  1759.     action adds a carriage    return and a line feed character to each
  1760.     line supplied. 
  1761.  
  1762.     oListing of items
  1763.  
  1764.     To  output  a control code to the printer, such as a form  feed,
  1765.     the string function &Cnn can be used:-
  1766.  
  1767.     o&C12
  1768.  
  1769.     Other routes are set using the O5n form, which sets the route to
  1770.     'n', where n is one of the above. 
  1771.  
  1772.  
  1773.  
  1774.  
  1775.  
  1776.  
  1777.  
  1778.                       2-27             Version 2.5
  1779.         
  1780.  
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786.  
  1787.     HyperShell          The Hyperfile      Reference Guide
  1788.         
  1789.  
  1790.  
  1791.  
  1792.  
  1793.     2.3.1.20 P - Popup message
  1794.  
  1795.     The 'P' action pops up a flashing  message  at the current mouse
  1796.     cursor    position,  and    awaits    a key/button  depression  before
  1797.     'popping down'. 
  1798.  
  1799.     PHello there! 
  1800.  
  1801.     If  a null string is passed as a  parameter,  an  asterisk  will
  1802.     flash in the bottom right hand corner of the screen.   This  can
  1803.     be  used  as  a  pause    to await a key depression from the  user
  1804.     before continuing with a series of actions. 
  1805.  
  1806.  
  1807.     2.3.1.21 p - Print message
  1808.  
  1809.     The 'p' action prints a message at the bottom of the screen, and
  1810.     continues without waiting for any inputs. 
  1811.  
  1812.     pThis is a long message to stay on the screen
  1813.  
  1814.  
  1815.     2.3.1.22 Q - Quit HyperShell
  1816.  
  1817.     This  action  is  used    to  exit  the HyperShell program.  If  a
  1818.     parameter string is given, its numeric value is used as the exit
  1819.     status    for the HyperShell program.   This  means  you    can  use
  1820.     hypershell in batch  files to control the flow, just as with the
  1821.     'ask', 'choose'  etc.  type programs that set the exit status to
  1822.     be  tested  with  the  'IF ERRORLEVEL' statement.   It    is  also
  1823.     possible  that    you may wish to return information to a  program
  1824.     that has invoked HyperShell directly. 
  1825.  
  1826.  
  1827.     2.3.1.23 q - Quit script
  1828.  
  1829.     This action cancels any  current  script being executed.  It can
  1830.     be used to abort a script if an error status occurs. 
  1831.  
  1832.  
  1833.     2.3.1.24 R - Formatted read
  1834.  
  1835.     The  'R'  action  allows  a line to be read from the input  file
  1836.     (opened via the 'r' action), split  into fields, and assigned to
  1837.     a number of variables.    It takes the form:-
  1838.  
  1839.     Rsabc..
  1840.  
  1841.  
  1842.  
  1843.  
  1844.                       2-28             Version 2.5
  1845.         
  1846.  
  1847.  
  1848.  
  1849.  
  1850.  
  1851.  
  1852.  
  1853.     HyperShell          The Hyperfile      Reference Guide
  1854.         
  1855.  
  1856.  
  1857.     Where 's' is a character used to  separate  the  fields  in  the
  1858.     input  line,  and  abc...   are  the  variables to  receive  the
  1859.     fields.  If  the  character  's'  is  ommitted,  the  fields are
  1860.     assumed  to be separated by spaces.  See the appendix for a list
  1861.     of reserved characters which cannot be used as separators. 
  1862.  
  1863.     When  the  end    of  the file  is  reached,  no    assignments  are
  1864.     performed and the error status is set. 
  1865.  
  1866.  
  1867.     2.3.1.25 r - Open/close input file
  1868.  
  1869.     This action  is  used  for  opening  or  closing  an  input file
  1870.     dedicated to applications use.    If a  parameter  is supplied, it
  1871.     contains the name of  a file to open for input.  If no parameter
  1872.     is supplied, the input file is closed.    The file opened via this
  1873.     action can be read  by    the action modifier '!' or by the action
  1874.     'R'.  Note that on opening an input file, any already open input
  1875.     file will be  put  in  suspension  until  the file is closed, at
  1876.     which  time  the  original  file  will again  be  available  for
  1877.     reading.  There can only be two suspended input files. 
  1878.  
  1879.  
  1880.     2.3.1.26 S/s - Execute script
  1881.  
  1882.     The  'S'  action  executes  a named  script.   If  a  script  is
  1883.     currently  being  executed,  it is cleared prior to running  the
  1884.     specified script. 
  1885.  
  1886.     The uppercase form refers to a global script, the lowercase form
  1887.     to a local script. 
  1888.  
  1889.  
  1890.     2.3.1.27 T - Type file
  1891.  
  1892.     The 'T' action presents a paged display of the named text file. 
  1893.     If no  parameter is supplied, reentry to a file display that has
  1894.     been interrupted is assumed.   The  paged display highlights any
  1895.     references  embedded  in the text file, allowing an  alternative
  1896.     hypertext  structure.  Autoreferencing can also be used to  good
  1897.     effect, where for instance the current hyperfile contains frames
  1898.     named with topic which are mentioned in the file being browsed. 
  1899.     For instance, if an MSDOS help hyperfile is being used, any file
  1900.     containing references to the  MSDOS  commands  will  have  those
  1901.     references  highlighted  as frame references,  selection  of  an
  1902.     applicable frame is then possible, followed by further hyperfile
  1903.     browsing prior to return to the file browsing. 
  1904.  
  1905.     Option 9 switches off reference highlighting (and strips 8 bit).
  1906.  
  1907.     A number of control  keys  are    supported  during the paged file
  1908.     display.  The PgDn key    may  be used to move to the next page of
  1909.  
  1910.                       2-29             Version 2.5
  1911.         
  1912.  
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918.  
  1919.     HyperShell          The Hyperfile      Reference Guide
  1920.         
  1921.  
  1922.  
  1923.     text.  The PgUp key may be used to move  to the previous page of
  1924.     text.    The  Home key will move back to the start of the  file. 
  1925.     The '#' key will prompt for a page number, and will move to that
  1926.     page,  if present.  The '/' key will prompt for a search string,
  1927.     and search forward through the file for that string, stopping at
  1928.     the page containing the string and highlighting  the line within
  1929.     which the string was  found.   The  End  key terminates the file
  1930.     display, without cancelling any script that is in progress.  The
  1931.     ESCAPE cancels the file display, along with any current script. 
  1932.     The RETURN key returns to the current frame display, and permits
  1933.     viewing of the file to continue by use of the 'T' action with no
  1934.     parameter.   A    further  T  action, supplying a parameter,  will
  1935.     cancel the current file display and start a new one. 
  1936.  
  1937.     The function keys can also be used  during  this display and are
  1938.     mapped as follows:-
  1939.  
  1940.  
  1941.          F1   Help
  1942.          F2   Go to page
  1943.          F3   Previous page
  1944.          F4   Go to start
  1945.          F6   Search for string
  1946.          F9   Suspend typing
  1947.          F10  Exit typing
  1948.  
  1949.  
  1950.     2.3.1.28 t - file note
  1951.  
  1952.     The 't' action displays the contents of a file as a popup note. 
  1953.     The note contents can be as for the 'n' and 'N' actions, and can
  1954.     contain references which can be selected.  The file note is used
  1955.     for a number of purposes, and usually indicates that the note is
  1956.     less  permanent than one included in the hyperfile.   It  could,
  1957.     for  instance,    be  a scratchpad note created by the  HyperShell
  1958.     user. 
  1959.  
  1960.  
  1961.     2.3.1.29 V - Set variable
  1962.  
  1963.     The  'V'  action allows a variable to  be  set.   There  are  52
  1964.     applications variables    named  'a'  to 'z' and 'A' to 'Z'. There
  1965.     are a few  system  variables  that may be set using this command
  1966.     also, although the numeric ones cannot be changed.  The variable
  1967.     is set to the value supplied as a parameter:-
  1968.  
  1969.     Vxstring
  1970.  
  1971.     Sets the variable 'x' to the value 'string'.  Variables can hold
  1972.     any string value,  and    can  also hold numeric data as a numeric
  1973.  
  1974.  
  1975.  
  1976.                       2-30             Version 2.5
  1977.         
  1978.  
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984.  
  1985.     HyperShell          The Hyperfile      Reference Guide
  1986.         
  1987.  
  1988.  
  1989.     string.  Variables can    be expanded into the frame text display,
  1990.     a note display, or into an  action  string,  by  specifying  the
  1991.     variable substitution token '$x' where x is the variable name. 
  1992.  
  1993.     The 'named' variables described  under the 'l' action may not be
  1994.     set using this action. 
  1995.  
  1996.  
  1997.     2.3.1.30 v - Test variable
  1998.  
  1999.     All single letter variables can be tested using the 'v' action. 
  2000.     The specification of a 'v' action is:-
  2001.  
  2002.     vxstring
  2003.  
  2004.     Where x is the variable name and string is the string to perform
  2005.     a comparison against.  A lexical comparison is performed, unless
  2006.     the comparand  string  starts  with  a    numeric digit or a minus
  2007.     sign,  in  which case an integer numeric comparison is made.   A
  2008.     substring  search  of  both  operands  within  each other.   The
  2009.     resulting condition codes are used in the 'j' action. 
  2010.  
  2011.     To  test  a  named  variable,  it first has to be loaded into  a
  2012.     single letter variable. 
  2013.  
  2014.  
  2015.     2.3.1.31 W - Write record to file
  2016.  
  2017.     The 'W'  action  writes  the parameter string to the output file
  2018.     opened via the 'w'  action.   A line can be formatted to contain
  2019.     the  values  of variables  by  simply  specifying  the    variable
  2020.     expansion tokens at the  required  place  in  the line.  Thus to
  2021.     write a line with variables  a,b,c in it separated by colons, we
  2022.     specify:-
  2023.  
  2024.     W$a:$b:$c
  2025.  
  2026.  
  2027.     2.3.1.32 w - Open/close output file
  2028.  
  2029.     This action is used  for  opening  or  closing    an  output  file
  2030.     dedicated to applications use.    If  a  parameter is supplied, it
  2031.     contains the name of a file to open for output.  If no parameter
  2032.     is supplied, the output  file  is  closed.   The file opened via
  2033.     this action can be written to using the 'W' action.  If the file
  2034.     cannot be  opened, an error status is set.  Note that on opening
  2035.     an  output  file,  any    already open output file will be put  in
  2036.     suspension until the file is closed, at which  time the original
  2037.     file will again be available for writing.  There can only be two
  2038.     suspended output files. 
  2039.  
  2040.  
  2041.  
  2042.                       2-31             Version 2.5
  2043.         
  2044.  
  2045.  
  2046.  
  2047.  
  2048.  
  2049.  
  2050.  
  2051.     HyperShell          The Hyperfile      Reference Guide
  2052.         
  2053.  
  2054.  
  2055.  
  2056.  
  2057.     2.3.1.33 X/x - Execute program
  2058.  
  2059.     The 'X' action executes the  program  and parameters supplied in
  2060.     the parameter string, and returns to HyperShell when the program
  2061.     terminates.  The uppercase form waits for  a  key  press  before
  2062.     redisplaying  the  current frame,  the    lowercase  form  returns
  2063.     immediately to the display.   The  system variable '^' is set to
  2064.     the numeric exit code of the program. 
  2065.  
  2066.     Care should be exercised when specifying the program invocation,
  2067.     as  certain  errors  will  'crash'  the computer and  require  a
  2068.     reboot.  If in doubt, use the 'D' action, which is safer.  The X
  2069.     actions are more efficient  in    speed  and  memory  utilisation,
  2070.     however, and the exit code of the program is always available. 
  2071.  
  2072.  
  2073.     2.3.1.34 Y - Null action
  2074.  
  2075.     The  'Y' action does nothing, apart from reset the error  status
  2076.     to 0.  It  is also used to 'throw away' the results of an action
  2077.     modifier. 
  2078.  
  2079.  
  2080.     2.3.1.35 y - refresh frame display
  2081.  
  2082.     The 'y' action    refreshes  the    current  frame    display.   If  a
  2083.     parameter is  supplied,  and  the  frame  occupies more than one
  2084.     screenful, the next screen of the frame is displayed. 
  2085.  
  2086.  
  2087.     2.3.2 Action Modifiers
  2088.  
  2089.     The action may have its parameter string supplied indirectly via
  2090.     an action modifier, or the first character supplied directly and
  2091.     the  rest  supplied indirectly.  The  action  modifier    argument
  2092.     string    may contain variable tokens, which are expanded prior to
  2093.     evaluation.  The result of the action modifier can optionally be
  2094.     further formatted via a pattern string.  The resulting parameter
  2095.     string then has any variable token specifiers expanded prior  to
  2096.     being applied to the action.  Action modifiers are as follows:-
  2097.  
  2098.  
  2099.     2.3.2.1 Prompts
  2100.  
  2101.     The modifier form for a prompt is
  2102.  
  2103.     ?prompt string
  2104.  
  2105.  
  2106.  
  2107.  
  2108.                       2-32             Version 2.5
  2109.         
  2110.  
  2111.  
  2112.  
  2113.  
  2114.  
  2115.  
  2116.  
  2117.     HyperShell          The Hyperfile      Reference Guide
  2118.         
  2119.  
  2120.  
  2121.     Where prompt string is a string which  will  be  output  to  the
  2122.     user.    The input response will form the actual  parameter.   If
  2123.     the first character of the prompt is a ':', the response is  not
  2124.     echoed to the user,  allowing  passwords  and other confidential
  2125.     material to be input. 
  2126.  
  2127.  
  2128.     2.3.2.2 Input file
  2129.  
  2130.     A number of file  input  facilities  are available for the input
  2131.     file (that file opened by an 'r' action).  The    modifier  for  a
  2132.     file read is
  2133.  
  2134.     !F{key}
  2135.  
  2136.     Where {key} is an optional key string, which is compared against
  2137.     the start of each record read  until  a  match    is  found.   The
  2138.     comparison  is case insensitive.  If '!' or '!F' appears on  its
  2139.     own, it  returns  the  next  line read from the input file.  Any
  2140.     search    starts    immediately  after  the  last record read.   The
  2141.     modifier
  2142.  
  2143.     !L{key}
  2144.  
  2145.     Causes the file to be rewound prior to the search taking place. 
  2146.     The EOF status is set if the end of file  is  reached for any of
  2147.     these modifiers. 
  2148.  
  2149.  
  2150.     2.3.2.3 Noted references
  2151.  
  2152.     The noted references, set up  using  the  INS  key  or    the  'H'
  2153.     action, can be obtained using the modifier
  2154.  
  2155.     !R{key}
  2156.  
  2157.     The {key}, if present, causes the  references  to be scanned for
  2158.     the next one starting with the key string.  For example:-
  2159.  
  2160.     !RF
  2161.  
  2162.     returns the next frame reference. 
  2163.  
  2164.     Any  search  or  step  is  taken  from after the last  reference
  2165.     obtained.  The scan pointer is reset  whenever    a  reference  is
  2166.     added or removed from the list, and can  be rewound with a dummy
  2167.     'remove' action:-
  2168.  
  2169.     h
  2170.  
  2171.  
  2172.  
  2173.  
  2174.                       2-33             Version 2.5
  2175.         
  2176.  
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182.  
  2183.     HyperShell          The Hyperfile      Reference Guide
  2184.         
  2185.  
  2186.  
  2187.     The  EOF  status  is  set when the  end  of  the  references  is
  2188.     reached. 
  2189.  
  2190.  
  2191.     2.3.2.4 Environment Variables
  2192.  
  2193.     An environment variable modifier takes the form:-
  2194.  
  2195.     %variablename
  2196.  
  2197.     Where variablename is the name of a DOS  shell variable, set via
  2198.     the SET command under  DOS,  whose  value  will  form the actual
  2199.     parameter. 
  2200.  
  2201.  
  2202.     2.3.2.5 Expression evaluation
  2203.  
  2204.     An expression evaluation modifier takes the form
  2205.  
  2206.     =expression
  2207.  
  2208.     Where expression is an    integer  expression involving the simple
  2209.     arithmetic operators +,-,*,/ and parentheses to direct order  of
  2210.     evaluation.   The expression  can  involve  integer  values  and
  2211.     alphabetic variable names (used directly without the $    token). 
  2212.     The  expression  must  not  contain  any  embedded spaces.   For
  2213.     example to calculate a value and assign it to the variable 'c':-
  2214.  
  2215.     Vc=(22*r*2)/7
  2216.  
  2217.     Four byte signed integers  are    used  in  the  evaluation of the
  2218.     expression. 
  2219.  
  2220.     The condition flags are set  after  an    expression evaluation as
  2221.     though    the  result  had been compared against zero.  Thus if  a
  2222.     negative  result  needs  to  be  tested, the condition flag  'l'
  2223.     should be used. 
  2224.  
  2225.  
  2226.     2.3.2.6 Functions
  2227.  
  2228.     There  are  a  number  of  functions  which return a string or a
  2229.     number.  The function modifiers take the form:-
  2230.  
  2231.     &FParg
  2232.  
  2233.     Where 'F' is the function code, 'P' is an optional parameter and
  2234.     'arg' is the argument string to apply the function against.  The
  2235.     functions are as follows:-
  2236.  
  2237.  
  2238.  
  2239.  
  2240.                       2-34             Version 2.5
  2241.         
  2242.  
  2243.  
  2244.  
  2245.  
  2246.  
  2247.  
  2248.  
  2249.     HyperShell          The Hyperfile      Reference Guide
  2250.         
  2251.  
  2252.  
  2253.     The 'L' function returns the length of the remaining text string
  2254.     in the action, and is the same as the BASIC LEN() function. 
  2255.  
  2256.     &Labc returns '3'
  2257.  
  2258.     The 'A' function returns the ASCII value of  the first character
  2259.     of  the remaining string, and is the same  as  the  BASIC  ASC()
  2260.     function. 
  2261.  
  2262.     &AA returns '65'
  2263.  
  2264.     The 'I' function takes the next character as  a search argument,
  2265.     and returns the  index    of  this  character within the remaining
  2266.     string, or zero if it is not found.   This  is    similar  to  the
  2267.     BASIC INSTR() function, but only deals with a  single  character
  2268.     search argument. 
  2269.  
  2270.     &Icabcdef returns '3'
  2271.  
  2272.     The 'C' function returns the character    equivalent  to the ASCII
  2273.     value provided by the remaining string, which is expected to  be
  2274.     numeric, and is the same as the BASIC CHR$() function. 
  2275.  
  2276.     &C66 returns 'B'
  2277.  
  2278.     The 'N' function takes the next character as a numeric    argument
  2279.     specifying  an index into the string.  The character indexed  in
  2280.     the string is returned as the result of the function. 
  2281.  
  2282.     &N4abcdef returns 'd'
  2283.  
  2284.     The 'S' function takes    the next character as a numeric argument
  2285.     specifying an index into the string.  The substring  indexed  in
  2286.     the string  is    returned as the result of the function.  This is
  2287.     similar to a variant of the BASIC MID$() function. 
  2288.  
  2289.     &S4abcdef returns 'def'
  2290.  
  2291.     The 'U' function takes the next character as a search  argument,
  2292.     and returns the substring up to, but not  including, the located
  2293.     character, or a null string if this is not found. 
  2294.  
  2295.     &Udabcdefg returns 'abc'
  2296.  
  2297.     The 'F'  function takes the next character as a search argument,
  2298.     and  returns  the  substring  from,  and including, the  located
  2299.     character, or the full string if this is not found. 
  2300.  
  2301.     &Fdabcdefg returns 'defg'
  2302.  
  2303.  
  2304.  
  2305.  
  2306.                       2-35             Version 2.5
  2307.         
  2308.  
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314.  
  2315.     HyperShell          The Hyperfile      Reference Guide
  2316.         
  2317.  
  2318.  
  2319.     The 'T' function takes the remaining string as a frame name, and
  2320.     returns the title string for that frame. 
  2321.  
  2322.     &Tstart could return 'initial frame'
  2323.  
  2324.     The  'M'  function takes the next character as a key  character,
  2325.     and returns the string mapped to  that    character (using the 'K'
  2326.     action), or a null string if nothing is mapped. 
  2327.  
  2328.     &Mh could return 'NHelp'
  2329.  
  2330.     The 'K' function takes the remaining string as a popup    message,
  2331.     awaits    a key depression, and returns the character for the  key
  2332.     pressed.  This is similar to the BASIC INKEY$() function. 
  2333.  
  2334.     &KPress Y or N could return 'Y' or 'N'
  2335.  
  2336.  
  2337.     2.3.2.7 Dynamic menus
  2338.  
  2339.     The dynamic menu modifier takes the form:-
  2340.  
  2341.     @menuspec
  2342.  
  2343.     Where  menuspec  is one of the    available  dynamic  menus.   The
  2344.     selected  choice  from    the  dynamic  menu  becomes  the  actual
  2345.     parameter to the action. 
  2346.  
  2347.     Dynamic menus available are:-
  2348.  
  2349.       1.  Backtrack list (returning level number)
  2350.  
  2351.       2.  Current Hyperfile contents list
  2352.  
  2353.       3.  Directory listing (extension stripped)
  2354.  
  2355.       4.  Directory listing (with extension)
  2356.  
  2357.       5.  Directory listing (directories only)
  2358.  
  2359.       6.  Contents of file as popup menu
  2360.  
  2361.       7.  Extended directory display
  2362.  
  2363.       8.  Extended directory display with actions added
  2364.  
  2365.       9.  Global/local menu - resulting choice
  2366.  
  2367.       10. Global/local/file note - resulting selection
  2368.  
  2369.  
  2370.  
  2371.  
  2372.                       2-36             Version 2.5
  2373.         
  2374.  
  2375.  
  2376.  
  2377.  
  2378.  
  2379.  
  2380.  
  2381.     HyperShell          The Hyperfile      Reference Guide
  2382.         
  2383.  
  2384.  
  2385.       11. Reference notepad paged display
  2386.  
  2387.       12. Search for string in titles of current hyperfile
  2388.  
  2389.       13. Search for string in titles of visited hyperfiles
  2390.  
  2391.       14. Search for string in titles and texts of current hyperfile
  2392.  
  2393.       15.  Search  for  string  in     titles  and  texts  of  visited
  2394.           hyperfiles
  2395.  
  2396.     The various dynamic menus are described in a separate section. 
  2397.  
  2398.  
  2399.     2.3.2.8 Pattern strings
  2400.  
  2401.     The  pattern  string may be optionally specified after an action
  2402.     modifier to format the returned value into a  form  expected  by
  2403.     the action.  Pattern strings consist of the string expected as a
  2404.     parameter, with all occurences of the chosen string  represented
  2405.     by the string '%s'. Up to three occurrences of the chosen string
  2406.     may be expanded in the pattern    string.  An example is a command
  2407.     to copy a  file  selected  from  a directory display to the root
  2408.     directory of drive C:-
  2409.  
  2410.     d@d*.*|COPY %s C:\%s
  2411.  
  2412.  
  2413.     2.3.2.9 Multiple actions
  2414.  
  2415.     Multiple  action specifications can exist in an action    string. 
  2416.     The action  specifications  are  separated  by    ';' characters. 
  2417.     Multiple actions are allowed wherever an action specification is
  2418.     expected. 
  2419.  
  2420.  
  2421.  
  2422.  
  2423.     2.4 Dynamic menus
  2424.  
  2425.  
  2426.     Dynamic  menus supply the parameter to an '@' action  modifier. 
  2427.     These menus  are  not  necessarily  'dynamic', but the term does
  2428.     apply to some  of  them,  and  is  used  collectively for all of
  2429.     them.  These menus come in three types:-
  2430.  
  2431.  
  2432.  
  2433.  
  2434.  
  2435.  
  2436.  
  2437.  
  2438.                       2-37             Version 2.5
  2439.         
  2440.  
  2441.  
  2442.  
  2443.  
  2444.  
  2445.  
  2446.  
  2447.     HyperShell          The Hyperfile      Reference Guide
  2448.         
  2449.  
  2450.  
  2451.  
  2452.  
  2453.     2.4.1 Paged displays
  2454.  
  2455.     Paged displays provide    a  full screen display offering one line
  2456.     per   option,    and  offering  multiple  pages    of  options   if
  2457.     necessary.   Paged displays allow forward (and backward in  some
  2458.     cases)    pageing,  and  either  direct  selection,  or  reference
  2459.     'noting' using the INS and DEL keys.  The  various  paged  menus
  2460.     are described here. 
  2461.  
  2462.  
  2463.     B          Backtrack list as menu (returning level number)
  2464.     C          Current Hyperfile contents list as menu
  2465.     Lwildspec      Extended directory display
  2466.     lwildspec      Extended directory display with actions added
  2467.     R          Reference notepad paged display
  2468.     Sstring       Search for string in titles of current file
  2469.     sstring       Search for string in titles of open files
  2470.     Xstring       Search for string in titles and texts of current file
  2471.     xstring       Search for string in titles and texts of open files
  2472.  
  2473.     The backtrack list menu  returns the backtrack level number, and
  2474.     is usually used with the 'b' action. 
  2475.  
  2476.     The current contents menu returns a  frame selection action, and
  2477.     should be used with the 'A' action. 
  2478.  
  2479.     The search menus normally return a  frame  selection action, but
  2480.     may  also  return other reference actions.  They should be  used
  2481.     with the 'A' action. 
  2482.  
  2483.     The notepad display returns  reference    actions,  and  should be
  2484.     used with the 'A' action. 
  2485.  
  2486.     The extended directory display returns a filename, and should be
  2487.     used in an action requiring a filename as a parameter. 
  2488.  
  2489.     The extended directory display    with  actions added provides its
  2490.     own action strings  for  typing  a  text  file    or changing to a
  2491.     directory, and should be used with the 'A' action. 
  2492.  
  2493.  
  2494.     2.4.2 Simple menus
  2495.  
  2496.     Simple menus appear as 'popup' menus. 
  2497.  
  2498.  
  2499.     Dwildspec     Directory listing (extension stripped)
  2500.     dwildspec     Directory listing (with extension)
  2501.  
  2502.  
  2503.  
  2504.                       2-38             Version 2.5
  2505.         
  2506.  
  2507.  
  2508.  
  2509.  
  2510.  
  2511.  
  2512.  
  2513.     HyperShell          The Hyperfile      Reference Guide
  2514.         
  2515.  
  2516.  
  2517.     Ewildspec     Directory listing (directories only)
  2518.     Ffilename     Contents of file as popup menu
  2519.     M(or m)name     Global/local menu
  2520.  
  2521.     The directory listings return  the filename, with or without the
  2522.     file extension. 
  2523.  
  2524.     The  file  contents  menu  returns  the  result  for  the choice
  2525.     selected as defined in the file.   The    file  should contain the
  2526.     same textual content as a normal menu section  (with  or without
  2527.     separate actions). 
  2528.  
  2529.     The  normal menus  return  the    choice    itself,  or  a    separate
  2530.     'action', if specified. 
  2531.  
  2532.  
  2533.     2.4.3 Other types
  2534.  
  2535.     The other types are
  2536.  
  2537.     N(or n or t)name Global/local/file note
  2538.  
  2539.     This returns the 'parameter'  resulting  from the selection of a
  2540.     reference in the text of the displayed note. 
  2541.  
  2542.  
  2543.  
  2544.  
  2545.     2.5 Variables
  2546.  
  2547.  
  2548.     A  number of string variables are provided to allow a  hyperfile
  2549.     to  modify  its  behaviour   depending    on  circumstances.   For
  2550.     instance, variables  may  be  used  to input parameters one at a
  2551.     time  in  order  to  build up a command line for execution under
  2552.     DOS,  or  to  build  an  action specification.    Popup menus  are
  2553.     useful for setting variables to one of a fixed set of values. 
  2554.  
  2555.  
  2556.     2.5.1 Variable assignment
  2557.  
  2558.     Variables are assigned using the V action.  The assignment takes
  2559.     the form:-
  2560.  
  2561.     Vxvalue
  2562.  
  2563.     Where  x represents any upper or lower case letter, which is the
  2564.     variable  name, and value represents the value to assign to  the
  2565.     variable.   The  normal action string assigns a constant  value,
  2566.     and action modifiers are used to supply variable  values for the
  2567.  
  2568.  
  2569.  
  2570.                       2-39             Version 2.5
  2571.         
  2572.  
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578.  
  2579.     HyperShell          The Hyperfile      Reference Guide
  2580.         
  2581.  
  2582.  
  2583.     variable.  For example,  the  value may be chosen from a menu or
  2584.     input from the user via a prompt. 
  2585.  
  2586.  
  2587.     2.5.2 Variable substitution
  2588.  
  2589.     The variable may be expanded in the frame  text, in a note text,
  2590.     or in an action string, where it may form any part of  an action
  2591.     string    apart  from the action token itself  (although    the  'A'
  2592.     action can be used to permit the expansion  of    a variable to an
  2593.     action token). 
  2594.  
  2595.     The variable  expansion specifier is simply the flag character $
  2596.     followed by the variable name character.  e.g.    :-
  2597.  
  2598.     $a
  2599.  
  2600.     Further variables called 'named variables'  are  available,  and
  2601.     are described under the 'l' action. 
  2602.  
  2603.  
  2604.  
  2605.  
  2606.     2.6 Alternative hypertext
  2607.  
  2608.  
  2609.     The HyperShell hyperfile format described above is normally used
  2610.     for hypertext systems.     HyperShell  does,  however,  provide  a
  2611.     number of features which support an alternative to this format. 
  2612.  
  2613.     The 'T' and 't' actions,  described  above,  permit  normal text
  2614.     files to  be  displayed,  and  these  files  can  contain simple
  2615.     embedded  references  to  other  files,  for display in a  paged
  2616.     fashion  using 'T' or as a popup note using 't'.  The  authoring
  2617.     guide gives a description of how this can be done. 
  2618.  
  2619.     If  HyperShell    is  given  the name of one of these simple  text
  2620.     files, rather  than  that of a normal hyperfile, it displays the
  2621.     file as a single frame, possibly with multiple pages.  Thus,  it
  2622.     is not even necessary to have a controlling hyperfile.    Although
  2623.     it  would  not    be  usual  to  do so, such a file could  contain
  2624.     HEADER, FOOTER and global  items,  provided  these were supplied
  2625.     AFTER the main text in the file. 
  2626.  
  2627.  
  2628.  
  2629.  
  2630.  
  2631.  
  2632.  
  2633.  
  2634.  
  2635.  
  2636.                       2-40             Version 2.5
  2637.         
  2638.  
  2639.  
  2640.  
  2641.  
  2642.  
  2643.  
  2644.  
  2645.     HyperShell          The Hyperfile      Reference Guide
  2646.         
  2647.  
  2648.  
  2649.  
  2650.  
  2651.  
  2652.  
  2653.     2.7 Limits
  2654.  
  2655.  
  2656.     2.7.1 sizes
  2657.  
  2658.     Line size,  including  flag characters, expanded variables etc. 
  2659.     is limited to 255 characters. 
  2660.  
  2661.     Frame name may be up to 30 characters. 
  2662.  
  2663.     Title length may be up to 40 characters. 
  2664.  
  2665.     Reference text length may be up to 40 characters. 
  2666.  
  2667.     Action strings may be up to 40 characters, or 79 in scripts. 
  2668.  
  2669.     Frame text can be up to 79 characters wide. 
  2670.  
  2671.     Frame  text  can  be  any  number  of lines  deep  although  the
  2672.     recommended limit is 24 - (header lines + footer lines). 
  2673.  
  2674.     Note  text  can  be up to 76 characters wide and 20 lines  deep,
  2675.     extra text being truncated. 
  2676.  
  2677.  
  2678.     2.7.2 numbers
  2679.  
  2680.     There  can  be    up  to    100  references  per  displayed  screen,
  2681.     including headers and footers, and any note popped up containing
  2682.     references. 
  2683.  
  2684.     A menu can be up to 22 entries. 
  2685.  
  2686.     A script can contain up to 100 actions. 
  2687.  
  2688.         
  2689.  
  2690.  
  2691.  
  2692.  
  2693.  
  2694.  
  2695.  
  2696.  
  2697.  
  2698.  
  2699.  
  2700.  
  2701.  
  2702.                       2-41             Version 2.5
  2703.         
  2704.  
  2705.  
  2706.  
  2707.  
  2708.  
  2709.  
  2710.  
  2711.     HyperShell        HyperShell Editor     Reference Guide
  2712.         
  2713.  
  2714.  
  2715.  
  2716.  
  2717.  
  2718.  
  2719.  
  2720.  
  2721.                     Chapter 3
  2722.  
  2723.                 HyperShell Editor
  2724.  
  2725.  
  2726.  
  2727.  
  2728.     3.1 Introduction
  2729.  
  2730.  
  2731.     The HyperShell editor  allows  new  hyperfiles to be created and
  2732.     existing  hyperfiles to be edited.  It permits the structure  of
  2733.     the hyperfile to be edited, as well as the  textual  content  of
  2734.     the  items held within the hyperfile, in a  manner  common  with
  2735.     some outline processors. 
  2736.  
  2737.  
  2738.  
  2739.  
  2740.     3.2 Invocation
  2741.  
  2742.  
  2743.     The editor is invoked from the DOS prompt with a command line of
  2744.     the following form:-
  2745.  
  2746.     HE {flags} hyperfilename {outputfilename}
  2747.  
  2748.     Where 'flags' are command line flags of the form
  2749.  
  2750.     -x -y -z
  2751.  
  2752.     and have the following meanings:-
  2753.  
  2754.     The  -c  flag  is  used when a file is to be created.  A warning
  2755.     message is  otherwise  output  to  say    that  the file cannot be
  2756.     opened.  When a file is created, a single  frame  is  created to
  2757.     permit the editor to load  the    file.    This  frame can have its
  2758.     name and title changed as required. 
  2759.  
  2760.     The -s    flag  causes the contents of the screen at invocation to
  2761.     be saved for redisplay upon exiting the editor. 
  2762.  
  2763.     The  -n flag indicates that a backup file is not to be    retained
  2764.     after the editor exits. 
  2765.  
  2766.  
  2767.  
  2768.                       3-42             Version 2.5
  2769.         
  2770.  
  2771.  
  2772.  
  2773.  
  2774.  
  2775.  
  2776.  
  2777.     HyperShell        HyperShell Editor     Reference Guide
  2778.         
  2779.  
  2780.  
  2781.     The -m flag causes the editor to attempt to use the mouse driver
  2782.     directly. 
  2783.  
  2784.     The -r flag causes the remaining memory to be displayed prior to
  2785.     exit. 
  2786.  
  2787.     The -d flag causes BIOS calls to be  used  for    screen    update. 
  2788.     This option should only  be  used  for    non-compatible computers
  2789.     that do not have the screen mapped in a conventional way. 
  2790.  
  2791.     The -h flag indicates that an alternative highlighting scheme is
  2792.     to be used, for support of  MDA  and  Hercules    adapters, and is
  2793.     used if the program does not detect that a monochrome adaptor is
  2794.     in use.  This also causes the mouse cursor  to    flash  if -m has
  2795.     not been specified. 
  2796.  
  2797.     The -g flag causes the default    highlighting scheme to be used. 
  2798.     It is used if the program falsely detects a monochrome monitor. 
  2799.  
  2800.     The  -z  flag  causes  the  emulation  mouse  cursor  to  flash,
  2801.     permitting it to be spotted more readily. 
  2802.  
  2803.     The  'outputfilename'  parameter  is  optional,  and if  present
  2804.     indicates  that  the  output of the editor is to go to the  file
  2805.     specified, rather than to the original file name. 
  2806.  
  2807.     The TEMP environment variable  may be set to indicate the device
  2808.     and directory path to be used for the temporary file.  It speeds
  2809.     up the save and exit processes if this    is  on a different drive
  2810.     to  the original file.    Sufficient space must  be  available  to
  2811.     accommodate the temporary file,  which    will  be as large as the
  2812.     edited    file.    The  COMMAND.COM  file    must  be  available  and
  2813.     specified using the COMSPEC environment variable. 
  2814.  
  2815.     The 'hyperfile' parameter indicates the name of the hyperfile to
  2816.     be edited, and has a default extension of '.HYP'.
  2817.  
  2818.  
  2819.  
  2820.  
  2821.     3.3 Editor processing
  2822.  
  2823.  
  2824.     An  index  is  built  in  memory for the items contained in  the
  2825.     hyperfile.   When  an item is edited within the  hyperfile,  the
  2826.     text  for the item is read from the original  file,  edited  and
  2827.     stored in memory.  When the editor is exited,  the  changes held
  2828.     in  memory are merged with the original  file,    replacing  those
  2829.     items that have been edited, ignoring those items that have been
  2830.     deleted,  inserting  new  items  that  have  been  created,  and
  2831.  
  2832.  
  2833.  
  2834.                       3-43             Version 2.5
  2835.         
  2836.  
  2837.  
  2838.  
  2839.  
  2840.  
  2841.  
  2842.  
  2843.     HyperShell        HyperShell Editor     Reference Guide
  2844.         
  2845.  
  2846.  
  2847.     reordering the items to  the  sequence    specified  in  the  item
  2848.     list.    The  merged file is produced with an extension of  .TMP,
  2849.     and if the file is successfully written, the original is renamed
  2850.     to have a .BAK extension and the temporary file renamed  to have
  2851.     the  original  name.   If  the temporary file  has  a  different
  2852.     pathname, it  is  copied  to  the  original  filename  and  then
  2853.     deleted. 
  2854.  
  2855.     It is important, therefore, to ensure that there  is  sufficient
  2856.     space on the disk to hold the edited copy of the file as well as
  2857.     the backup.  If the temporary file is created on another  drive,
  2858.     and no backup is retained,  just  the  additional space required
  2859.     for  additional  items    needs  to be available on  the    original
  2860.     drive.    If the temporary file is created on the same drive, when
  2861.     the save operation is performed there will  be    a  lot    of  disk
  2862.     activity,  which  may seem alarming at first, particularly on  a
  2863.     large file. 
  2864.  
  2865.  
  2866.  
  2867.  
  2868.     3.4 Editor interaction
  2869.  
  2870.  
  2871.     There are three types of display that the editor uses, these are
  2872.     the normal  frame  display,  from  which frame navigation can be
  2873.     carried out, paged displays from which    frames    or  items can be
  2874.     selected for display or editing, and the  editor display, within
  2875.     which the text is edited. 
  2876.  
  2877.  
  2878.  
  2879.  
  2880.     3.5 Frame Navigation
  2881.  
  2882.  
  2883.     The  text  editor  initially  displays    the first frame  in  the
  2884.     hyperfile.  The text for the frame  is displayed, along with any
  2885.     header and footer text.  From this point, a number of directions
  2886.     are possible.  Frame references  can be selected, as they can be
  2887.     in  HyperShell,  and  will   cause  the  selected  frame  to  be
  2888.     displayed.  A backtrack list is not maintained in the editor, so
  2889.     retracing of steps is not  possible.   Other  references have an
  2890.     action    depending  on  type.   Note, menu and script  references
  2891.     cause a menu of options to be presented, allowing the referenced
  2892.     item  to  be  viewed, edited or checked for  existance,  or  the
  2893.     reference to be displayed literally or 'explained'. Other  types
  2894.     of reference just cause the reference string to be explained. 
  2895.  
  2896.  
  2897.  
  2898.  
  2899.  
  2900.                       3-44             Version 2.5
  2901.         
  2902.  
  2903.  
  2904.  
  2905.  
  2906.  
  2907.  
  2908.  
  2909.     HyperShell        HyperShell Editor     Reference Guide
  2910.         
  2911.  
  2912.  
  2913.     The editor also supplies two direct frame selection mechanisms -
  2914.     the  contents list and the text  search  list.     These    work  as
  2915.     within    HyperShell,  and  provide 'paged displays' from which  a
  2916.     frame reference selection can be made, resulting  in  the editor
  2917.     moving to the selected frame. 
  2918.  
  2919.  
  2920.     3.5.1 Control keys
  2921.  
  2922.     The  following    control keys  are  available  during  the  frame
  2923.     display:-
  2924.  
  2925.     CURSOR KEYS    MOVE  CURSOR   -  The cursor keys can be used to
  2926.             move the mouse cursor, as can  the  mouse if one
  2927.             is connected as required. 
  2928.  
  2929.     RETURN        SELECT   -  The  return  key  (or the left mouse
  2930.             button)  has  the  effect,  as in HyperShell, of
  2931.             selecting a highlighted frame reference, if  the
  2932.             mouse  cursor  is  positioned over one.  If  the
  2933.             mouse  cursor  is not positioned  over    a  frame
  2934.             reference, the key press is ignored. 
  2935.  
  2936.     TAB        NEXT REFERENCE - This moves the mouse  cursor to
  2937.             the  next   reference    in  the  frame    display,
  2938.             wrapping around to the first when it reaches the
  2939.             last.    Note  that  not all references    will  be
  2940.             frame  references,  and therefore  not    all  are
  2941.             selectable. 
  2942.  
  2943.     SHIFT TAB    PREVIOUS REFERENCE - This moves the mouse cursor
  2944.             to the previous reference in the  frame display,
  2945.             wrapping around to the    last when it reaches the
  2946.             first. 
  2947.  
  2948.     ESCAPE        The  escape key  (or  the  right  mouse  button)
  2949.             causes the main  control  menu    to appear.  This
  2950.             menu  permits    selection   of    certain  general
  2951.             control functions,  and is described below.  The
  2952.             options  on  the  menu may be selected with  the
  2953.             mouse cursor,  or by depression of the indicated
  2954.             function  key.    The actions associated with  the
  2955.             control menu options are  as  described  for the
  2956.             function keys below:-
  2957.  
  2958.     FUNCT KEY 1    HELP - This causes the    main  HELP  menu  to  be
  2959.             displayed, and permits selection from this. 
  2960.  
  2961.     FUNCT KEY 2    CONTENTS - This  causes  a  paged display of the
  2962.             frames contained  in  the current hyperfile, and
  2963.  
  2964.  
  2965.  
  2966.                       3-45             Version 2.5
  2967.         
  2968.  
  2969.  
  2970.  
  2971.  
  2972.  
  2973.  
  2974.  
  2975.     HyperShell        HyperShell Editor     Reference Guide
  2976.         
  2977.  
  2978.  
  2979.             permits selection of a frame for display. 
  2980.  
  2981.     FUNCT KEY 3    SEARCH    FRAMES- This option prompts for a search
  2982.             string, and then searches the  frame  texts  for
  2983.             the string, presenting a list of matching frames
  2984.             in a paged display,  and permitting selection of
  2985.             one of these for display. 
  2986.  
  2987.     FUNCT KEY 4    EDIT THIS  FRAME  - This causes the text editing
  2988.             mode  to  be  entered to edit the current  frame
  2989.             text. 
  2990.  
  2991.     FUNCT KEY 5    GLOBAL ITEM LIST - This presents a paged display
  2992.             of all global items, including the frames in the
  2993.             hyperfile,    and   permits   various     editing
  2994.             activities to  be  performed  upon  the list and
  2995.             upon selected items. 
  2996.  
  2997.     FUNCT KEY 6    LOCAL ITEM LIST - This presents a paged display
  2998.             of items local to the current frame, and permits
  2999.             various editing activities to  be performed upon
  3000.             the list and upon selected items. 
  3001.  
  3002.     FUNCT KEY 7    DOS SHELL - This causes a 'DOS Escape' whereby a
  3003.             DOS  command  line   is   presented   permitting
  3004.             operations  to    be  performed  outside    of   the
  3005.             editor, and  allowing  subsequent  return to the
  3006.             editor by use of the 'EXIT' command. 
  3007.  
  3008.     FUNCT KEY 8    SAVE / CHECK - This causes the current state  of
  3009.             the edited hyperfile to be saved to a  temporary
  3010.             file,  and  optionally    permits  the  HyperShell
  3011.             check  program    to be run on the saved file.  If
  3012.             no  edits  have  been  performed,  a message  is
  3013.             issued and the save is not done. 
  3014.  
  3015.     FUNCT KEY 9    QUIT -  This option causes the HyperShell editor
  3016.             to quit, without saving any edits.  A warning is
  3017.             issued    if  edits  have   been     performed,  and
  3018.             confirmation is sought before quitting. 
  3019.  
  3020.     FUNCT KEY 10    SAVE AND EXIT  -    This causes any edits to  be
  3021.             saved to  a  new  file with the same name as the
  3022.             original (unless the -n option was supplied upon
  3023.             invocation).  The  original file is renamed with
  3024.             an extension of .BAK,  unless  the -n option was
  3025.             supplied  on  invocation,  in  which case it  is
  3026.             deleted.  If no edits have been  performed,  the
  3027.             editor simply quits without attempting to update
  3028.             the original file. 
  3029.  
  3030.  
  3031.  
  3032.                       3-46             Version 2.5
  3033.         
  3034.  
  3035.  
  3036.  
  3037.  
  3038.  
  3039.  
  3040.  
  3041.     HyperShell        HyperShell Editor     Reference Guide
  3042.         
  3043.  
  3044.  
  3045.     SHIFT FKEY 1    ADD NEW FRAME  -   This causes a dialogue to  be
  3046.             entered requesting  frame  name  and  title, and
  3047.             presents  the frame for editing to permit  input
  3048.             of the frame text. 
  3049.  
  3050.     SHIFT FKEY 2    ADD LOCAL NOTE  -  This causes a dialogue to  be
  3051.             entered  requesting  the name of the local note,
  3052.             and enters  edit  mode to allow the note text to
  3053.             be input. 
  3054.  
  3055.     SHIFT FKEY 3    ADD LOCAL MENU - This  causes  a  dialogue to be
  3056.             entered requesting the name  of  the local menu,
  3057.             and enters  edit  mode to allow the menu text to
  3058.             be input. 
  3059.  
  3060.     SHIFT FKEY 4    ADD  LOCAL SCRIPT - This causes a dialogue to be
  3061.             entered requesting the name of the local script,
  3062.             and enters edit mode to allow the script text to
  3063.             be input. 
  3064.  
  3065.     SHIFT FKEY 5    CHANGE DETAILS  -   This causes a dialogue to be
  3066.             entered requesting the revised name and title of
  3067.             the current frame, and permits the current value
  3068.             to  be    taken    as   default.     The   frame  is
  3069.             redisplayed after the change is made. 
  3070.  
  3071.     PAGE DOWN    NEXT SCREEN  -    If  the frame occupies more than
  3072.             one screen, this key moves to the next screen of
  3073.             the frame, otherwise it does nothing.    When the
  3074.             final screen has been shown, the first screen is
  3075.             reshown. 
  3076.  
  3077.     HOME        FIRST  SCREEN  - If the frame occupies more than
  3078.             one screen, this key  moves  to the first screen
  3079.             of the frame, otherwise it does nothing. 
  3080.  
  3081.  
  3082.     3.5.2 Control menu
  3083.  
  3084.     The control menu offers  the  options  described  above  for the
  3085.     function keys and the shifted function keys. 
  3086.  
  3087.  
  3088.     3.5.3 Help menu
  3089.  
  3090.     The main help menu offers the following choices:-
  3091.  
  3092.       -  F1 - GENERAL INFO
  3093.  
  3094.  
  3095.  
  3096.  
  3097.  
  3098.                       3-47             Version 2.5
  3099.         
  3100.  
  3101.  
  3102.  
  3103.  
  3104.  
  3105.  
  3106.  
  3107.     HyperShell        HyperShell Editor     Reference Guide
  3108.         
  3109.  
  3110.  
  3111.       -  F2 - FRAME DISPLAY
  3112.  
  3113.       -  F3 - EDIT/VIEW MODE
  3114.  
  3115.       -  F4 - PAGED DISPLAY
  3116.  
  3117.     The  general  information  option gives  information  about  the
  3118.     current editing session, including the amount of memory left for
  3119.     edited items, and the number of edits that have been performed. 
  3120.  
  3121.     The  frame  display  option gives information about the  control
  3122.     keys available during the frame display mode. 
  3123.  
  3124.     The  edit and view mode option presents the  editing  /  viewing
  3125.     help menu, which is described below under the section describing
  3126.     the text editor. 
  3127.  
  3128.     The paged display option gives the help text associated with the
  3129.     paged displays. 
  3130.  
  3131.  
  3132.  
  3133.  
  3134.     3.6 Text editing
  3135.  
  3136.  
  3137.     The text editing screen is displayed  whenever an edit operation
  3138.     is  selected.    This  presents    the  text  for editing using the
  3139.     keyboard for text input and control commands. 
  3140.  
  3141.     For most items the  text  is contained within one screenful, but
  3142.     in some cases more  than  one screen is required, and a facility
  3143.     is offered to page down and up the text in part pages. 
  3144.  
  3145.     References, tabs and horizontal formatting controls are  handled
  3146.     in the main display to    give  the  appearance the text will take
  3147.     when displayed in HyperShell. The current line,  being that over
  3148.     which the cursor is placed, is also displayed at the  bottom  of
  3149.     the screen in its  'raw  text'    form,  as  it  is  held  in  the
  3150.     hyperfile. 
  3151.  
  3152.     In the    case  of  menus, scripts and remarks, no highlighting or
  3153.     formatting is expected.   Nevertheless,  the same display format
  3154.     is used. 
  3155.  
  3156.     The bottom line of  the  display  shows the type and name of the
  3157.     item being  edited,  the  current  page number and the number of
  3158.     pages.    A 'page' in this case is the screenful of text displayed
  3159.     by the editor, and most likely will not match the page number of
  3160.     a multiple screen frame display. 
  3161.  
  3162.  
  3163.  
  3164.                       3-48             Version 2.5
  3165.         
  3166.  
  3167.  
  3168.  
  3169.  
  3170.  
  3171.  
  3172.  
  3173.     HyperShell        HyperShell Editor     Reference Guide
  3174.         
  3175.  
  3176.  
  3177.     The bottom  line  is  also  used to display any warning messages
  3178.     issued as a result of limits being exceeded  etc.   It    is  also
  3179.     used  to display the overwrite mode when this is in  effect,  to
  3180.     indicate  when a function key macro is being  recorded,  and  to
  3181.     indicate when the symbol shift is in effect. 
  3182.  
  3183.  
  3184.     3.6.1 Moving around
  3185.  
  3186.     The  cursor  keys  are    used to move around the text, and permit
  3187.     character, word, line and  page movement in both directions.  If
  3188.     a mouse is mapped to the cursor keys, this may also be used  for
  3189.     moving around,    although  you  may  find  that    it  is difficult
  3190.     positioning with the mouse in edit mode. 
  3191.  
  3192.  
  3193.     3.6.2 Inserting text
  3194.  
  3195.     Text  is  inserted  at    the  current  cursor  position by typing
  3196.     characters.   An  OVERWRITE mode  may  be  toggled-in  to  allow
  3197.     existing text to be overwritten.  The RETURN (or NEWLINE) key is
  3198.     used to start a new line (or to split a  line  if  the cursor is
  3199.     positioned within a line).  The TAB  key inserts a tab character
  3200.     in the current position,  and  uses  this to tab to the next tab
  3201.     position, which occurs on the next 8th character boundary. 
  3202.  
  3203.     Control  characters, other than tabs, are not inserted, nor  are
  3204.     decimal  codes above 159  entered  via    the  ALT/Numeric  keypad
  3205.     keys.  Any key, including  a  control  key,  can  be inserted by
  3206.     preceding  it  with  a    Ctrl-Q key press,  although  caution  is
  3207.     advised when doing this. 
  3208.  
  3209.     Special symbols, with codes above  decimal  159,  are entered by
  3210.     use of a special 'symbol shift' which is toggled using    Function
  3211.     Key 8.    When  the  symbol  shift  is  in  effect, all characters
  3212.     entered  have  decimal    128  added  to    their codes before being
  3213.     inserted, also all  characters    between  128  and  159    have 128
  3214.     subtracted   from   their  codes.   This  means   that     graphic
  3215.     characters, greek symbols etc.    can then be  entered with single
  3216.     key  strokes,  and  have the benefit of keyboard auto-repeat for
  3217.     such  purposes    as  drawing  lines etc.  The mapping between the
  3218.     characters  can  easily  be  determined  by  inspecting the  256
  3219.     character set chart for your machine.    As  an    example, the 'M'
  3220.     character will draw a double horizontal  line, and 'c' will draw
  3221.     a greek 'pi' symbol. 
  3222.  
  3223.     As an assistance to entering symbols, CONTROL F10 can be pressed
  3224.     to present a map of symbols, and to  allow one of the symbols to
  3225.     be selected using the mouse cursor, for insertion in the text at
  3226.     the text cursor position. 
  3227.  
  3228.  
  3229.  
  3230.                       3-49             Version 2.5
  3231.         
  3232.  
  3233.  
  3234.  
  3235.  
  3236.  
  3237.  
  3238.  
  3239.     HyperShell        HyperShell Editor     Reference Guide
  3240.         
  3241.  
  3242.  
  3243.  
  3244.  
  3245.     3.6.3 Deleting text
  3246.  
  3247.     Text is deleted in a number of ways.  Single characters and line
  3248.     breaks can be deleted either side of the cursor using the DELETE
  3249.     key  and the cursor pad DEL key.  Entire lines can  be    deleted,
  3250.     and  ranges  of  lines can be deleted  and  optionally    inserted
  3251.     elsewhere using the function keys. 
  3252.  
  3253.  
  3254.     3.6.4 Moving text
  3255.  
  3256.     Text  can  be  moved  from  one part of the text to another,  in
  3257.     blocks of lines, using    the  CUT  and PASTE facilities.  Partial
  3258.     lines can be  deleted  by  inserting newlines at the appropriate
  3259.     places prior to CUTting. The CUT  lines  can  be  pasted  in the
  3260.     current item text, and are retained until another item is edited
  3261.     for when text has to be moved between items. 
  3262.  
  3263.     The entire text  of another global or local item can be appended
  3264.     to the item text, and a named external file can be appended. 
  3265.  
  3266.  
  3267.     3.6.5 Referencing
  3268.  
  3269.     Reference flags  can  be inserted in a number of ways.    The flag
  3270.     characters can be typed directly into the text    at  the required
  3271.     point (this may give strange and  confusing  results in the main
  3272.     display area whilst  in  progress - you are advised to watch the
  3273.     raw text area at the bottom of    the display whilst doing this). 
  3274.     If a line  has    an  incomplete    reference in it, the editor will
  3275.     flash a '~' character  at  the    end of the line, to indicate the
  3276.     presence of an incomplete reference. 
  3277.  
  3278.     Menus are provided to assist with the selection  of  the correct
  3279.     flags,    and  placement    of  the  flags    can be assisted.   Other
  3280.     parameteric information is requested for ends of references. 
  3281.  
  3282.     Automatic referencing from the list of global or  local items is
  3283.     also  possible,  although parametric information then has to  be
  3284.     added manually if required. 
  3285.  
  3286.     Complete references  can  be easily removed by moving the cursor
  3287.     to the reference and pressing CTRL F3.
  3288.  
  3289.  
  3290.  
  3291.  
  3292.  
  3293.  
  3294.  
  3295.  
  3296.                       3-50             Version 2.5
  3297.         
  3298.  
  3299.  
  3300.  
  3301.  
  3302.  
  3303.  
  3304.  
  3305.     HyperShell        HyperShell Editor     Reference Guide
  3306.         
  3307.  
  3308.  
  3309.  
  3310.  
  3311.     3.6.6 Other functions
  3312.  
  3313.     Other functions provide help  on  flags and action codes, permit
  3314.     sequences of  editing  operations  to be mapped to function keys
  3315.     and  allow  the item edit to be exited retaining the  edits,  or
  3316.     quitted without retaining the changes. 
  3317.  
  3318.  
  3319.     3.6.7 Control Keys
  3320.  
  3321.     The  following    control  keys  are  available  during  the  edit
  3322.     operation, and provide the various editing functions:-
  3323.  
  3324.     ESCAPE        EDIT  MENU - This option presents the edit menu,
  3325.             which  offers    the  options  available  on  the
  3326.             function keys as shown below. 
  3327.  
  3328.     FUNCT KEY 1    HELP  -  This  presents  the editing help menu. 
  3329.             This is described below. 
  3330.  
  3331.     FUNCT KEY 2    REFRESH SCREEN -  This    key refreshes the screen
  3332.             display for when you  want  to    ensure    that the
  3333.             highlighting is properly done,    and  that a line
  3334.             just edited  is  displayed  to correctly reflect
  3335.             any references. 
  3336.  
  3337.     FUNCT KEY 3    >> QUICK REFERENCE  -  This  presents  a menu of
  3338.             immediate references which can    be  applied to a
  3339.             single word of text.   This  menu  is  described
  3340.             below. 
  3341.  
  3342.     FUNCT KEY 4    >> REFERENCE / INSERT   -     This presents  the
  3343.             REFERENCE  and INSERT menu  which  is  described
  3344.             below. 
  3345.  
  3346.     FUNCT KEY 5    MARK START LINE FOR CUT - This notes the current
  3347.             line as the start line for a cut operation. 
  3348.  
  3349.     FUNCT KEY 6    CUT LINES FROM MARKED - This cuts all lines from
  3350.             and including the marked one to the current one,
  3351.             placing  the  lines into a  paste  buffer.   Any
  3352.             previously cut lines will  be  lost.   The paste
  3353.             buffer    is  retained  until  overwritten with  a
  3354.             further  cut operation, and is available  within
  3355.             the edit of a subsequent item.    There is a limit
  3356.             to  the  number  of lines cut of  99  (around  4
  3357.             screensful).  The message "Too many  lines - not
  3358.             cut!"  is displayed if this is exceeded. 
  3359.  
  3360.  
  3361.  
  3362.                       3-51             Version 2.5
  3363.         
  3364.  
  3365.  
  3366.  
  3367.  
  3368.  
  3369.  
  3370.  
  3371.     HyperShell        HyperShell Editor     Reference Guide
  3372.         
  3373.  
  3374.  
  3375.     FUNCT KEY 7    PASTE CUT LINES   -    This  inserts  the  lines
  3376.             contained in the paste buffer before the current
  3377.             line.  The  lines  are    still  available  in the
  3378.             paste buffer for insertion elsewhere. 
  3379.  
  3380.     FUNCT KEY 8    TOGGLE SYMBOL SHIFT  -  This toggles the  symbol
  3381.             shift mode, turning it on if it is  off, and off
  3382.             if it is on.  The Symbol  shift mode is used for
  3383.             entering symbol characters. 
  3384.  
  3385.     FUNCT KEY 9    QUIT - This abandons  the  changes  made  to the
  3386.             item and retains the item in the state it was in
  3387.             prior to the edit,  and  returns  to  the  frame
  3388.             display. 
  3389.  
  3390.     FUNCT KEY 10    EXIT - This applies the changes made  during the
  3391.             edit to the item  being  edited,  and returns to
  3392.             the frame display. 
  3393.  
  3394.     RETURN        SPLIT LINE   -  This has the effect of splitting
  3395.             the current line before the current  character. 
  3396.             If the cursor is at the end of a line,    this has
  3397.             the effect of 'starting a new line'. 
  3398.  
  3399.     CTRL PGUP    JOIN LINES - This joins the current line and the
  3400.             next line together. 
  3401.  
  3402.     CTRL PGDN    DELETE LINE    - This deletes the whole current
  3403.             line. 
  3404.  
  3405.     PGUP        PREVIOUS PAGE - This moves back one screenful of
  3406.             text within the edit  buffer.    If at the start,
  3407.             no action is taken. 
  3408.  
  3409.     PGDN        NEXT PAGE - This moves to the  next screenful of
  3410.             text within the text  buffer.    If at the end of
  3411.             the text buffer, no action is taken. 
  3412.  
  3413.     UP ARROW    PREVIOUS LINE  -  This    moves  the cursor to the
  3414.             previous line, retaining the  cursor position in
  3415.             the  line  if possible.  If at the start of  the
  3416.             text buffer, no action is taken. 
  3417.  
  3418.     DOWN ARROW    NEXT LINE - This moves    the  cursor  to the next
  3419.             line, retaining the cursor position in    the line
  3420.             if possible.  If at the  end of the text buffer,
  3421.             no action is taken. 
  3422.  
  3423.     RIGHT ARROW    NEXT CHARACTER    -  This  moves the cursor to the
  3424.             next  character,  moving  to  a  new   line   if
  3425.  
  3426.  
  3427.  
  3428.                       3-52             Version 2.5
  3429.         
  3430.  
  3431.  
  3432.  
  3433.  
  3434.  
  3435.  
  3436.  
  3437.     HyperShell        HyperShell Editor     Reference Guide
  3438.         
  3439.  
  3440.  
  3441.             necessary.  Note  that    the real contents of the
  3442.             line are used to  determine  the location of the
  3443.             next  character, and the position  in  the  main
  3444.             display  may  not change,  if  it  is  within  a
  3445.             reference or formatting operation. 
  3446.  
  3447.     LEFT ARROW    PREVIOUS CHARACTER - This  moves  the  cursor to
  3448.             the previous  character,  moving to the previous
  3449.             line if necessary.  Note that the  real contents
  3450.             of  the line are used to determine the    location
  3451.             of the previous  character,  and the position in
  3452.             the main display may not change, if it is within
  3453.             a reference or formatting sequence. 
  3454.  
  3455.     HOME        START OF LINE  -  This    moves  the cursor to the
  3456.             start of the current line. 
  3457.  
  3458.     END        END OF LINE  -  This moves the cursor to the end
  3459.             of the current line. 
  3460.  
  3461.     CTRL HOME    START OF WORD  -   This moves the cursor to  the
  3462.             start of the current word. 
  3463.  
  3464.     CTRL END    END OF WORD - This moves  the  cursor to the end
  3465.             of the current word. 
  3466.  
  3467.     CTRL RIGHT    DELETE TO END OF LINE   -     This  deletes  all
  3468.             characters  from  and  including   the     current
  3469.             character to the end of the current line. 
  3470.  
  3471.     CTRL LEFT    DELETE TO START OF LINE    -  This  deletes  all
  3472.             characters before  the    current character on the
  3473.             current line. 
  3474.  
  3475.     INS        TOGGLE  MODE  -  This    toggles   the  INSERT   /
  3476.             OVERWRITE  mode.    In    INSERT    mode,  all  (non
  3477.             control) characters typed are  inserted  at  the
  3478.             current cursor    position.   In    OVERWRITE  mode,
  3479.             characters  typed  overwrite characters  at  the
  3480.             current cursor position, unless the cursor is at
  3481.             the end of a line, in which  case the characters
  3482.             are inserted. 
  3483.  
  3484.     DEL        DELETE  CURRENT CHARACTER -  This  deletes  the
  3485.             current character,  this  being  the one beneath
  3486.             which the cursor is displayed.    If at the end of
  3487.             a line, the next  line    is joined to the current
  3488.             line. 
  3489.  
  3490.  
  3491.  
  3492.  
  3493.  
  3494.                       3-53             Version 2.5
  3495.         
  3496.  
  3497.  
  3498.  
  3499.  
  3500.  
  3501.  
  3502.  
  3503.     HyperShell        HyperShell Editor     Reference Guide
  3504.         
  3505.  
  3506.  
  3507.     DELETE        DELETE  PREVIOUS  CHARACTER  - This deletes the
  3508.             character just before the  current position.  If
  3509.             at the start of a line,  the line is joined with
  3510.             the previous one. 
  3511.  
  3512.     CTRL B        BLANK LINE BEFORE -  This causes a blank line to
  3513.             be  inserted  BEFORE  the  current  line  in the
  3514.             text. 
  3515.  
  3516.     CTRL A        BLANK LINE AFTER - This  causes  a blank line to
  3517.             be inserted AFTER the current line in the text. 
  3518.  
  3519.     CTRL  Q     SPECIAL  CHARACTER - This permits the next key
  3520.             depression  to    be  inserted  verbatim into  the
  3521.             text.     Caution   should   be    exercised   when
  3522.             inserting   certain   control    characters,   as
  3523.             unpredictable results can occur. 
  3524.  
  3525.     CTRL  E     EXPLAIN  ACTION  -  When  the  text cursor  is
  3526.             positioned  at    the  start  of an action string,
  3527.             depressing this key will cause an explanation of
  3528.             the action to be displayed.  Using this key when
  3529.             positioned  randomly  in  the  text  will  cause
  3530.             meaningless explanations to be displayed. 
  3531.  
  3532.     Other keys have the effect of having the corresponding character
  3533.     inserted into the text at the current point. 
  3534.  
  3535.  
  3536.     3.6.8 Quick references
  3537.  
  3538.     The quick  reference  menu  provides  for  the rapid addition of
  3539.     references which can be  applied  to a single word in the text. 
  3540.     It also provides for references to be added  automatically  from
  3541.     either the global list of items or the local list of items.  The
  3542.     quick  reference options are available directly using the  SHIFT
  3543.     key along with the function keys.  The options available are:-
  3544.  
  3545.         
  3546.  
  3547.     SHIFT FKEY 1    FRAME  REFERENCE  - This causes the current word
  3548.             in the text to    be  flagged  as  a  frame  cross
  3549.             reference, with backtrack. 
  3550.  
  3551.     SHIFT FKEY 2    STEP FRAME REF - This causes the current word in
  3552.             the   text  to    be  flagged  as  a  frame   step
  3553.             reference, with no backtrack. 
  3554.  
  3555.     SHIFT FKEY 3    GLOBAL NOTE REF - This causes the  current  word
  3556.             in the text  to  be  flagged  as  a  global note
  3557.  
  3558.  
  3559.  
  3560.                       3-54             Version 2.5
  3561.         
  3562.  
  3563.  
  3564.  
  3565.  
  3566.  
  3567.  
  3568.  
  3569.     HyperShell        HyperShell Editor     Reference Guide
  3570.         
  3571.  
  3572.  
  3573.             reference. 
  3574.  
  3575.     SHIFT FKEY 4    LOCAL NOTE REF - This causes the current word in
  3576.             the   text  to    be  flagged  as  a  local   note
  3577.             reference. 
  3578.  
  3579.     SHIFT FKEY 5    GLOBAL MENU REF  -  This causes the current word
  3580.             in  the  text  to be flagged as  a  global  menu
  3581.             reference. 
  3582.  
  3583.     SHIFT FKEY 6    LOCAL MENU REF - This causes the current word in
  3584.             the   text  to    be  flagged  as  a  local   menu
  3585.             reference. 
  3586.  
  3587.     SHIFT FKEY 7    GLOBAL SCRIPT REF - This causes the current word
  3588.             in the    text  to  be  flagged as a global script
  3589.             reference. 
  3590.  
  3591.     SHIFT FKEY 8    LOCAL SCRIPT REF - This causes the current word
  3592.             in the text to    be  flagged  as  a  local script
  3593.             reference. 
  3594.  
  3595.     SHIFT FKEY 9    GLOBAL AUTOREFERENCE -    This  uses  the  list of
  3596.             global    items  to  flag  any occurrence of those
  3597.             items in the current item text. 
  3598.  
  3599.     SHIFT FKEY 10    LOCAL  AUTOREFERENCE    -  This uses the list of
  3600.             local  items  to flag any  occurrence  of  those
  3601.             items in the current item text. 
  3602.  
  3603.  
  3604.     3.6.9 Reference and insert Menu
  3605.  
  3606.     The reference and insert menu presents a number of types of item
  3607.     for insertion, and controls the setting up of  references.   The
  3608.     options are  also  available  directly    using  the CTRL key as a
  3609.     shift  with  the  function  keys.   The  menu  has the following
  3610.     options:-
  3611.  
  3612.         
  3613.  
  3614.     CTRL FKEY 1    ADD REFERENCE START - This presents a menu from
  3615.             which a reference type    can  be selected.  After
  3616.             selection,  the reference flags are inserted  at
  3617.             the start of the word within which the cursor is
  3618.             pointing.    The   rest  of  the  line    will  be
  3619.             highlighted, and the  reference  has  to have an
  3620.             end flagged using  the END OF REFERENCE function
  3621.             (see below). 
  3622.  
  3623.  
  3624.  
  3625.  
  3626.                       3-55             Version 2.5
  3627.         
  3628.  
  3629.  
  3630.  
  3631.  
  3632.  
  3633.  
  3634.  
  3635.     HyperShell        HyperShell Editor     Reference Guide
  3636.         
  3637.  
  3638.  
  3639.     CTRL FKEY 2    END OF REFERENCE - This issues a request for the
  3640.             Parameter  value,  whereupon  a  suitable action
  3641.             string should be input, or the ESCAPE key should
  3642.             be  pressed  if  no  parameter    is  required.  A
  3643.             request   is   then  issued  for  the  Map  key,
  3644.             whereupon  if a key  mapping  is  required,  the
  3645.             single key to map  to  the  reference  should be
  3646.             entered,  followed  by RETURN. If no mapping  is
  3647.             required,  the ESCAPE key  should  be  pressed. 
  3648.             After this, the reference  end    details  will be
  3649.             inserted  at the end of the current word.   This
  3650.             word can be the one to    which the reference flag
  3651.             was added, or a subsequent one. 
  3652.  
  3653.     CTRL FKEY 3    REMOVE REFERENCE FLAGS     -   This removes  the
  3654.             reference  flags for the reference within  which
  3655.             the  cursor  is  placed.   If the cursor is  not
  3656.             within a reference the action is ignored. 
  3657.  
  3658.     CTRL FKEY 4    INSERT FULL REFERENCE    -  This  option permits
  3659.             entry of a complete reference string,  prompting
  3660.             for each part as it is built up, and inserts the
  3661.             resulting   string   at   the    current   cursor
  3662.             position.  When the action part is  requested, a
  3663.             '?'  may  be   entered,  which    will  cause  the
  3664.             interactive action  builder to create the action
  3665.             specification. 
  3666.  
  3667.     CTRL FKEY 5    INSERT ACTION -  This option presents a dialogue
  3668.             which    interactively    builds    up   an   action
  3669.             specification, presenting menus and  prompts  as
  3670.             it  goes, then inserts it at the current  cursor
  3671.             position.  A  full  action  specification is the
  3672.             result    (apart    from   the  optional  formatting
  3673.             pattern,  which  may  be  added  manually  after
  3674.             creation if required). 
  3675.  
  3676.     CTRL FKEY 6    INSERT GLOBAL ITEM - This option allows the text
  3677.             from a global item to be  inserted at the end of
  3678.             the  current item.  It requests the name of  the
  3679.             item and then appends it to the text buffer. 
  3680.  
  3681.     CTRL FKEY 7    INSERT LOCAL ITEM - This option allows the  text
  3682.             from  a local item to be inserted at the end  of
  3683.             the current item.  It  requests  the name of the
  3684.             item and then appends it to the text buffer. 
  3685.  
  3686.     CTRL FKEY 8    INSERT FILE - This option allows the contents of
  3687.             a named  file  to  be inserted at the end of the
  3688.             current item.  It requests  the name of the file
  3689.  
  3690.  
  3691.  
  3692.                       3-56             Version 2.5
  3693.         
  3694.  
  3695.  
  3696.  
  3697.  
  3698.  
  3699.  
  3700.  
  3701.     HyperShell        HyperShell Editor     Reference Guide
  3702.         
  3703.  
  3704.  
  3705.             and then appends it to the text buffer. 
  3706.  
  3707.     CTRL FKEY 9    DEFINE    MACRO  KEY  - This function is described
  3708.             below. 
  3709.  
  3710.     CTRL FKEY 10    GRAPHIC  MAP  - This presents a popup display of
  3711.             the graphic  symbols,  from  which one character
  3712.             can be selected for insertion by positioning the
  3713.             mouse cursor and depressing  RETURN. The display
  3714.             can be cancelled with ESCAPE if no character  is
  3715.             to be selected. 
  3716.  
  3717.  
  3718.     3.6.10 Help
  3719.  
  3720.     The help function presents  the  editing  help menu, which gives
  3721.     help text on the following topics:-
  3722.  
  3723.       -  GENERAL KEYS - Keys applicable to editing and viewing
  3724.  
  3725.       -  EDITING KEYS - Keys only applicable to editing
  3726.  
  3727.       -  FUNCTION KEYS - Function key mappings
  3728.  
  3729.       -  SHIFT FKEYS - Mappings for shifted function keys
  3730.  
  3731.       -  CTRL FKEYS - Mappings for function keys shifted with CTRL
  3732.  
  3733.       -  REFERENCE LETTERS - Flag letters for references
  3734.  
  3735.       -  CONTROL ACTIONS - Tokens for HyperShell control
  3736.  
  3737.       -  DOS/FILE ACTIONS - Tokens for program and file control
  3738.  
  3739.       -  SYSTEM VARIABLES - Variable names for system variables
  3740.  
  3741.       -  ACTION MODIFIERS - modifier flags
  3742.  
  3743.       -  DYNAMIC MENUS - Types of dynamic menu
  3744.  
  3745.       -  COLOUR SCHEMES - Colour scheme codes
  3746.  
  3747.       -  OPTION CODES - Option flag codes
  3748.  
  3749.       -  FUNCTION CODES - String function codes
  3750.  
  3751.       -  LENGTHS / LIMITS - Limits for HyperShell strings etc. 
  3752.  
  3753.       -  SYMBOL KEYMAP - Mapping of characters to symbols
  3754.  
  3755.  
  3756.  
  3757.  
  3758.                       3-57             Version 2.5
  3759.         
  3760.  
  3761.  
  3762.  
  3763.  
  3764.  
  3765.  
  3766.  
  3767.     HyperShell        HyperShell Editor     Reference Guide
  3768.         
  3769.  
  3770.  
  3771.       -  GRAPHIC MAP - Map showing graphic symbols
  3772.  
  3773.       -  CHECK LETTERS - flags for HyperShell Check utility
  3774.  
  3775.  
  3776.     3.6.11 Key macros
  3777.  
  3778.     The define macro function, CTRL FKEY 9, issues the message:-
  3779.  
  3780.     Press Alt-X sequence Alt-X
  3781.  
  3782.     and awaits the depression of a mappable  Alt  shift / letter key
  3783.     combination.  Those combinations that  may  be    mapped are Alt-A
  3784.     through Alt-Z. The macro definition is performed by pressing the
  3785.     key to be mapped, followed by the sequence of key strokes  which
  3786.     are to form the macro, followed by another depression of the key
  3787.     to be mapped.  After the key  has  been  mapped,  whenever it is
  3788.     depressed, it 'plays back' the sequence of key strokes.  All key
  3789.     strokes are recordable, apart from menu selections, which cannot
  3790.     be  replayed.    During recording, the key depressions are  acted
  3791.     upon, so the cursor should be positioned where the sequence will
  3792.     be applicable. 
  3793.  
  3794.     This  is  useful for  storing  common  key  sequences  for  easy
  3795.     replay.  Thus a macro to set the current  word    up  as    a  frame
  3796.     reference would be mapped to Alt-W as follows:-
  3797.  
  3798.  
  3799.          CTRL F9
  3800.          Alt-W
  3801.          CTRL HOME
  3802.          ~
  3803.          F
  3804.          CTRL END
  3805.          ~
  3806.          E
  3807.          Alt-W
  3808.  
  3809.     Thereafter,  to set any word up as a frame reference, the cursor
  3810.     is simply moved within    the  word  and Alt-W pressed.  Note that
  3811.     this function is only an example, and the  function described is
  3812.     mapped to the SHIFT Fkey 1 combination normally. 
  3813.  
  3814.     The macro, once set up,  remains  in  effect  until  the  key is
  3815.     remapped, or the program is finally exited.  This not only means
  3816.     that the macro    can  be  used when editing other items, but also
  3817.     means  that  a key mapped to a frame name, for instance, can  be
  3818.     used in response to prompts issued from non-editing parts of the
  3819.     program. 
  3820.  
  3821.  
  3822.  
  3823.  
  3824.                       3-58             Version 2.5
  3825.         
  3826.  
  3827.  
  3828.  
  3829.  
  3830.  
  3831.  
  3832.  
  3833.     HyperShell        HyperShell Editor     Reference Guide
  3834.         
  3835.  
  3836.  
  3837.  
  3838.  
  3839.  
  3840.  
  3841.     3.7 View mode
  3842.  
  3843.  
  3844.     View mode is entered whenever an item is selected for viewing. 
  3845.  
  3846.     The view mode display is like the edit    mode display, only it is
  3847.     restricted to operations which cannot affect the contents of the
  3848.     item  viewed.    The  interaction is otherwise very similar,  and
  3849.     does  not  need  explaining  separately.   Function  key  9  and
  3850.     Function key 10 can be used to exit from view mode. 
  3851.  
  3852.  
  3853.  
  3854.  
  3855.     3.8 Selecting items
  3856.  
  3857.  
  3858.     The main menu offers a    number of options which result in 'paged
  3859.     displays'.  These  are    the  contents  list and the search list,
  3860.     which offer selection for frame navigation, and  the  global and
  3861.     local item lists, which offer item list editing and selection of
  3862.     items for editing. 
  3863.  
  3864.     The various paged displays all have a similar appearance, with a
  3865.     heading showing the page number and  type  of  display,  and the
  3866.     items presented one to a line, apart from the search list, which
  3867.     offers one item every two lines,  preceded  by    the located line
  3868.     containing the search string. 
  3869.  
  3870.     The left column shows the key mapped to the item for selection. 
  3871.     This is followed by a blank area in which a '*'  appears  if the
  3872.     item  has  been  edited,  or a '@' appears if the item has  been
  3873.     moved.    This is followed by the item reference, which names  the
  3874.     item,  and  provides  an area selectable by the mouse.    This  is
  3875.     followed by an area containing the  frame  title,  or  the  item
  3876.     type, or the check options.  This is followed by a blank area in
  3877.     which  embedded  errors from the HyperShell checker program  are
  3878.     flagged. 
  3879.  
  3880.  
  3881.     3.8.1 Control keys
  3882.  
  3883.     The following control keys are    available  during  the item list
  3884.     display, and provide the various item list editing functions:-
  3885.  
  3886.  
  3887.  
  3888.  
  3889.  
  3890.                       3-59             Version 2.5
  3891.         
  3892.  
  3893.  
  3894.  
  3895.  
  3896.  
  3897.  
  3898.  
  3899.     HyperShell        HyperShell Editor     Reference Guide
  3900.         
  3901.  
  3902.  
  3903.     RETURN        SELECT -  This    option is only available for the
  3904.             frame  list  displays,    and has  the  effect  of
  3905.             selecting  the frame referenced.  If the  cursor
  3906.             is  not  over  a  reference,  the  next page  is
  3907.             displayed. 
  3908.  
  3909.     RETURN         ITEM  EDIT MENU - This option is only available
  3910.             for  the  item     list    displays,  and    is  only
  3911.             activated if the  mouse cursor is currently over
  3912.             an item.  It presents  the item edit menu, which
  3913.             offers the options described for  the  item edit
  3914.             menu below. 
  3915.  
  3916.     ESCAPE         EXIT PAGED DISPLAY - This key cancels the paged
  3917.             display, returning to the frame  display for the
  3918.             last frame referenced. 
  3919.  
  3920.     KEY '/'     SEARCH - This key  is  only  available    for  the
  3921.             global    item  list  display,  and  causes a text
  3922.             search mode to be entered, to enable a search to
  3923.             be made of all global items for a given string. 
  3924.             The  search is    made  against  all  item  names,
  3925.             titles    and  item  texts.  This  is  useful  for
  3926.             finding  all  items that reference a  particular
  3927.             item, or for finding an item by name. 
  3928.  
  3929.     FUNCT KEY 3    SEARCH - as for above. 
  3930.  
  3931.     FUNCT KEY 1    HELP  - This key causes the help display for the
  3932.             paged display mode to be presented. 
  3933.  
  3934.  
  3935.     3.8.2 Item Edit Menu
  3936.  
  3937.     The item edit menu permits editing of the item list, and of  the
  3938.     items.    It offers the following options:-
  3939.  
  3940.       -  EDIT ITEM - Presents item for editing
  3941.  
  3942.       -  VIEW ITEM - Presents item for viewing
  3943.  
  3944.       -  CHANGE DETAILS - Allows item name etc.  to be modified
  3945.  
  3946.       -  INSERT NEW AFTER - Permits new item to be added
  3947.  
  3948.       -  MARK ITEM - Marks item for later reference
  3949.  
  3950.       -  INSERT MARKED ITEM AFTER - Moves marked item to after this
  3951.  
  3952.  
  3953.  
  3954.  
  3955.  
  3956.                       3-60             Version 2.5
  3957.         
  3958.  
  3959.  
  3960.  
  3961.  
  3962.  
  3963.  
  3964.  
  3965.     HyperShell        HyperShell Editor     Reference Guide
  3966.         
  3967.  
  3968.  
  3969.       -  DELETE ITEM - Confirms, then deletes item
  3970.  
  3971.     The edit item option enters edit  mode    on  the  item  selected,
  3972.     permitting the text of the item to be edited. 
  3973.  
  3974.     The  view  item option enters view mode on  the  item  selected,
  3975.     permitting the text of the item to be displayed. 
  3976.  
  3977.     The change details option allows the name  and title of the item
  3978.     (or equivalent details) to be modified. 
  3979.  
  3980.     The insert after  option  permits  a  new item to be created and
  3981.     inserted after    the  selected  item.   An  existing  item can be
  3982.     duplicated by first marking it, and  then  requesting a new item
  3983.     creation, or by specifying the name  of  the  existing item when
  3984.     prompted. 
  3985.  
  3986.     The mark item option  simply  remembers the selected item, ready
  3987.     for further operations involving that item. 
  3988.  
  3989.     The  move  marked item option moves a previously marked item  to
  3990.     after  the  selected  item.  The marked item need not be on  the
  3991.     currently displayed page, and can be moved forward  or    backward
  3992.     in the file. 
  3993.  
  3994.     The  delete  item  option  deletes  the  selected  item,   after
  3995.     confirming that the deletion is required.  The first page of the
  3996.     item list is  always  displayed  after a deletion, regardless of
  3997.     which page was on display when the delete was requested. 
  3998.  
  3999.     In order to create the first 'local' item after a frame, an item
  4000.     creation should be specified  from the global item display after
  4001.     the  desired  frame.   This  will create the first local  item. 
  4002.     Selecting the local item list from the frame  display  will then
  4003.     permit the item to be  edited,    or  further  local  items  to be
  4004.     created.  Alternatively, local items  can  be  inserted from the
  4005.     frame display using the control menu or shifted function keys. 
  4006.  
  4007.  
  4008.  
  4009.  
  4010.  
  4011.  
  4012.  
  4013.  
  4014.  
  4015.  
  4016.  
  4017.  
  4018.  
  4019.  
  4020.  
  4021.  
  4022.                       3-61             Version 2.5
  4023.         
  4024.  
  4025.  
  4026.  
  4027.  
  4028.  
  4029.  
  4030.  
  4031.     HyperShell           HyperShell Checker     Reference Guide
  4032.         
  4033.  
  4034.  
  4035.  
  4036.  
  4037.  
  4038.  
  4039.  
  4040.  
  4041.                     Chapter 4
  4042.  
  4043.                    HyperShell Checker
  4044.  
  4045.  
  4046.  
  4047.  
  4048.     4.1 Introduction
  4049.  
  4050.  
  4051.     The HyperShell Checker program is a  utility  designed    to  do a
  4052.     certain degree of integrity checking on the Hyperfile.
  4053.  
  4054.     It performs  a number of checks on cross references, duplicates,
  4055.     action    codes  in action references, scripts and menus,  dynamic
  4056.     menu   codes,  formatting  codes,  sizing  checks  and     section
  4057.     ordering. 
  4058.  
  4059.     It can provide summary totals showing the number  of  frames and
  4060.     other reference items, as well as diagnostic counts. 
  4061.  
  4062.     It can produce a cross-reference file for reference when editing
  4063.     the hyperfile. 
  4064.  
  4065.     It  can  automatically    generate frames and items which  do  not
  4066.     exist, and for which there is a reference. 
  4067.  
  4068.     It  can embed error  messages  for  use  within  the  HyperShell
  4069.     editor. 
  4070.  
  4071.  
  4072.  
  4073.  
  4074.     4.2 Invocation
  4075.  
  4076.  
  4077.     The HyperShell Checker is  invoked  with  the  following command
  4078.     line. 
  4079.  
  4080.  
  4081.  
  4082.          HC {options} hyperfile
  4083.  
  4084.     The hyperfile specification is the name  of  the hyperfile to be
  4085.  
  4086.  
  4087.  
  4088.                       4-62             Version 2.5
  4089.         
  4090.  
  4091.  
  4092.  
  4093.  
  4094.  
  4095.  
  4096.  
  4097.     HyperShell           HyperShell Checker     Reference Guide
  4098.         
  4099.  
  4100.  
  4101.     checked.  It has a default extension  of  .HYP. The command line
  4102.     options control the program execution as follows:-
  4103.  
  4104.  
  4105.  
  4106.          -a      check actions for menus with action strings
  4107.          -b      flag references in text to frames and global items
  4108.          -c      create unresolved referenced items
  4109.          -e      create listing with embedded errors (sets -l, -n)
  4110.          -f      check frame references for menus without actions
  4111.          -g      full generation processing - options -e -c -u
  4112.          -l      list file during second phase
  4113.          -n      suppress line numbers in listing
  4114.          -p      suppress frame length check (for paged frames)
  4115.          -r      produce reference counts for items
  4116.          -s      suppress summary totals
  4117.          -t      suppress audit trail
  4118.          -u      suppress errors for unresolved references
  4119.          -x      suppress menu length check
  4120.          -z      produce cross reference file
  4121.  
  4122.  
  4123.  
  4124.  
  4125.     4.3 Operation
  4126.  
  4127.  
  4128.     The program performs four phases of processing. 
  4129.  
  4130.     The first phase reads through the hyperfile,  creating    an index
  4131.     of frames, menus, notes and scripts.  Items with duplicate names
  4132.     (apart from items local to frames) are reported  as  errors.  If
  4133.     no frame references are found the program aborts. 
  4134.  
  4135.     The second phase reads through the file  again, and is the stage
  4136.     at  which the most  processing    is  performed.     References  are
  4137.     checked, actions are checked, sizes are  checked.   A listing is
  4138.     optionally produced on standard  output,  containing  the errors
  4139.     embedded  within   it.     Unresolved  references  are  optionally
  4140.     created.  Line    numbers  are  added to each line output, and can
  4141.     optionally be suppressed.  References to frames and global items
  4142.     can optionally have flags added - this takes quite a  while  for
  4143.     large  hyperfiles,  so should  be  used  infrequently  -  it  is
  4144.     advisable to check  the  results  of  this action afterwards, as
  4145.     some unexpected flagging may  have  occurred.    The  matching of
  4146.     these  references  is  done  on  a selective basis, and not  all
  4147.     expected  occurrences  will be flagged.  If the cross  reference
  4148.     file has been requested, this is created during this pass. 
  4149.  
  4150.  
  4151.  
  4152.  
  4153.  
  4154.                       4-63             Version 2.5
  4155.         
  4156.  
  4157.  
  4158.  
  4159.  
  4160.  
  4161.  
  4162.  
  4163.     HyperShell           HyperShell Checker     Reference Guide
  4164.         
  4165.  
  4166.  
  4167.     The third phase scans the index for items  that  have  not  been
  4168.     referenced directly, producing a warning message for these.  The
  4169.     items may have been referenced indirectly, so  the  warnings are
  4170.     only a rough guide.  Reference counts are optionally printed out
  4171.     at this stage. 
  4172.  
  4173.     The  fourth  phase  prints the summary counts on standard  error
  4174.     output. 
  4175.  
  4176.     An audit trail is produced throughout the run  to show progress,
  4177.     and the  location of errors.  This is produced on standard error
  4178.     output. 
  4179.  
  4180.     The standard output can  be  redirected to a file.  This is used
  4181.     with the options  which  generate listings such as -e or -g, and
  4182.     the  -b option.  For example, to generate a processed  hyperfile
  4183.     with  added  unreferenced  items  and  flagged    references,  the
  4184.     following command line could be used:-
  4185.  
  4186.     hc -g -b draft1 > draft2.hyp
  4187.  
  4188.     As standard error output  is not redirected, the audit trail and
  4189.     summary are printed to the screen. 
  4190.  
  4191.  
  4192.  
  4193.  
  4194.     4.4 Check switches
  4195.  
  4196.  
  4197.     Some of the settings can be controlled via the .CHECK section in
  4198.     the hyperfile.    This takes the form:-
  4199.  
  4200.  
  4201.  
  4202.          .CHECK {-options}{+options}
  4203.  
  4204.     The options following '-'  are    disabled,  the options following
  4205.     '+'  are  enabled.   The   following   option    letters  can  be
  4206.     specified:-
  4207.  
  4208.  
  4209.          a         check actions for menus with action strings
  4210.          f         check frame references for menus without actions
  4211.          p         suppress frame length check (for paged frames)
  4212.          u         suppress errors for unresolved references
  4213.          x         suppress menu length check
  4214.  
  4215.     The check section can appear a number of times in the hyperfile,
  4216.     and can be used to suppress unwanted checking within menus etc. 
  4217.  
  4218.  
  4219.  
  4220.                       4-64             Version 2.5
  4221.         
  4222.  
  4223.  
  4224.  
  4225.  
  4226.  
  4227.  
  4228.  
  4229.     HyperShell           HyperShell Checker     Reference Guide
  4230.         
  4231.  
  4232.  
  4233.     An example sets options 'a' and 'u' and disables options 'f' and
  4234.     'p':-
  4235.  
  4236.     .CHECK -f+au-p
  4237.  
  4238.     Note that the + and - flags can  appear  more  than once, and in
  4239.     any order, and can be followed by a number of options. 
  4240.  
  4241.  
  4242.  
  4243.  
  4244.     4.5 Cross reference file
  4245.  
  4246.  
  4247.     The cross reference file is produced by specifying the -z switch
  4248.     on the command line.  This causes a file  to be created with the
  4249.     same name as the hyperfile, but with an extension of .XRF.  This
  4250.     file contains two columns  of  information.   The  first  column
  4251.     shows the type and name of the reference  made by the item whose
  4252.     type and name  appear in the second column.  The sequence of the
  4253.     file  is  the  same  as  the  sequence    of  occurrences  of  the
  4254.     references  in    the  hyperfile,  and  will  be    grouped  by  the
  4255.     referencing item.  To group the file by the  referenced item, to
  4256.     show which items reference  each  item,  the  file can be sorted
  4257.     using the MSDOS SORT filter.  This is done as follows:-
  4258.  
  4259.     SORT < DEMO.XRF > DEMO.XRR
  4260.  
  4261.     This will produce a file  called  DEMO.XRR  containing the cross
  4262.     references sorted and grouped by referenced item. 
  4263.  
  4264.     The cross  reference  files  can  be  printed  out and used as a
  4265.     reference when editing the hyperfile. 
  4266.  
  4267.  
  4268.  
  4269.  
  4270.     4.6 Using the Checker
  4271.  
  4272.  
  4273.     The   various    options  are  valuable    at  various  stages   of
  4274.     preparation of the hyperfile,  and  familiarity  with these will
  4275.     prove beneficial. 
  4276.  
  4277.     It is useful to run the checker after every major edit, in order
  4278.     that unreferenced items and non-existant referenced items can be
  4279.     determined. 
  4280.  
  4281.     The  reference counts are  a  measure  of  the    balance  of  the
  4282.     hyperfile, particularly when considered together, and  can  give
  4283.  
  4284.  
  4285.  
  4286.                       4-65             Version 2.5
  4287.         
  4288.  
  4289.  
  4290.  
  4291.  
  4292.  
  4293.  
  4294.  
  4295.     HyperShell           HyperShell Printer     Reference Guide
  4296.         
  4297.  
  4298.  
  4299.     some indication of the usability of the material. 
  4300.  
  4301.  
  4302.  
  4303.  
  4304.  
  4305.  
  4306.  
  4307.  
  4308.  
  4309.  
  4310.  
  4311.  
  4312.  
  4313.  
  4314.  
  4315.  
  4316.  
  4317.  
  4318.  
  4319.  
  4320.  
  4321.  
  4322.  
  4323.  
  4324.  
  4325.  
  4326.  
  4327.  
  4328.  
  4329.  
  4330.  
  4331.  
  4332.  
  4333.  
  4334.  
  4335.  
  4336.  
  4337.  
  4338.  
  4339.  
  4340.  
  4341.  
  4342.  
  4343.  
  4344.  
  4345.  
  4346.  
  4347.  
  4348.  
  4349.  
  4350.  
  4351.  
  4352.                       5-66             Version 2.5
  4353.         
  4354.  
  4355.  
  4356.  
  4357.  
  4358.  
  4359.  
  4360.  
  4361.     HyperShell           HyperShell Printer     Reference Guide
  4362.         
  4363.  
  4364.  
  4365.  
  4366.  
  4367.  
  4368.  
  4369.  
  4370.  
  4371.                     Chapter 5
  4372.  
  4373.                    HyperShell Printer
  4374.  
  4375.  
  4376.  
  4377.  
  4378.     5.1 Introduction
  4379.  
  4380.  
  4381.     The HyperShell Printer program provides a means  of  producing a
  4382.     formatted listing of a hyperfile.  In its simplest form, this is
  4383.     just  a  list  of  the frames in the hyperfile,  with  an  index
  4384.     printed at the end.  Additional  items    and  information  can be
  4385.     listed by use of control flags.  These are as follows:-
  4386.  
  4387.         
  4388.  
  4389.  
  4390.  
  4391.          -p   Send output straight to printer
  4392.          -e   As for 'p', but highlight using Epson compatible codes
  4393.          -s   Do 'soft' form feeds between pages
  4394.          -n   Don't do page breaks or index
  4395.          -d   Produce heading giving file name, rather than 1st title
  4396.          -r   List references after item
  4397.          -f   Produce full list of all items
  4398.  
  4399.     The output goes, by  default, to the screen.  It can be directed
  4400.     to a printer  using  the  -p  or  -e  flags,  or to a file using
  4401.     command line redirection - e.g. 
  4402.  
  4403.     hp test > test.lis
  4404.  
  4405.     The  full  list  flag  causes all items to be listed,  including
  4406.     menus, notes, scripts etc. 
  4407.  
  4408.     The list reference flag is used to list  the  actions  mapped to
  4409.     each reference after HEADER, FOOTER, NOTE and FRAME items. 
  4410.  
  4411.     If page breaks are suppressed, an index is not produced. 
  4412.  
  4413.  
  4414.  
  4415.  
  4416.  
  4417.  
  4418.                       5-67             Version 2.5
  4419.         
  4420.  
  4421.  
  4422.  
  4423.  
  4424.  
  4425.  
  4426.  
  4427.     HyperShell         Quick Reference     Reference Guide
  4428.         
  4429.  
  4430.  
  4431.  
  4432.  
  4433.  
  4434.  
  4435.  
  4436.  
  4437.                    Appendix A
  4438.  
  4439.                  Quick Reference
  4440.  
  4441.  
  4442.  
  4443.  
  4444.     A.1 File format
  4445.  
  4446.  
  4447.  
  4448.     .REMARK
  4449.     (text)
  4450.     .CHECK settings
  4451.  
  4452.     .NOTE name
  4453.     (text with formatting and references)
  4454.     .MENU name
  4455.     (options)
  4456.     .SCRIPT name
  4457.     (actions)
  4458.     .SCRIPT SETUP
  4459.     (limited actions)
  4460.     .HEADER
  4461.     (text with formatting and references)
  4462.     .FOOTER
  4463.     (text with formatting and references)
  4464.     .INDEX
  4465.  
  4466.     .FRAME name
  4467.     .TITLE title text
  4468.     (text with formatting and references)
  4469.     .MENU name
  4470.     (options)
  4471.     .NOTE name
  4472.     (text with formatting and references)
  4473.     .SCRIPT name
  4474.     (actions)
  4475.     .END
  4476.  
  4477.  
  4478.  
  4479.  
  4480.  
  4481.  
  4482.  
  4483.  
  4484.                       5-68             Version 2.5
  4485.         
  4486.  
  4487.  
  4488.  
  4489.  
  4490.  
  4491.  
  4492.  
  4493.     HyperShell         Quick Reference     Reference Guide
  4494.         
  4495.  
  4496.  
  4497.  
  4498.  
  4499.  
  4500.  
  4501.     A.2 References
  4502.  
  4503.  
  4504.     Curly braces indicate optional parameters. 
  4505.  
  4506.  
  4507.     ~Fframename{~Paction}{~Kx}~E
  4508.     ~fframename{~Paction}{~Kx}~E
  4509.     ~nlocalnote{~Paction}{~Kx}~E
  4510.     ~Nglobalnote{~Paction}{~Kx}~E
  4511.     ~tfilenote{~Paction}{~Kx}~E
  4512.     ~mlocalmenu{~Paction}{~Kx}~E
  4513.     ~Mglobalmenu{~Paction}{~Kx}~E
  4514.     ~slocalscript{~Paction}{~Kx}~E
  4515.     ~Sglobalscript{~Paction}{~Kx}~E
  4516.     ~Aname~Paction{~Kx}~E
  4517.     ~Ientry area~Paction pattern{~Kx}~E
  4518.  
  4519.  
  4520.  
  4521.  
  4522.     A.3 Formatting
  4523.  
  4524.  
  4525.  
  4526.     ~Ln     (nn = 1 to 23)                Line
  4527.     ~Cn     (nn = 1 to 80)                Column
  4528.     ~Wn     (nn = 1 to 72)                Field width
  4529.     ~G                           Screen break
  4530.     ~Tc     (c= K,B,G,C,R,M,Y,W,k,b,g,c,r,m,y,w)  Text color
  4531.     ~Bc     (c= K,B,G,C,R,M,Y,W)               Background color
  4532.     ~Vi     (i= L,N,H)     Low, Normal, High Video (for mono displays)
  4533.     ~Dstb     (s=A to Z;t,b as for ~T,~B)           Colour scheme
  4534.     ~On     (n=0,1,2 etc) - prints ON or OFF      Option setting
  4535.     ~H                           Hidden line
  4536.     ~Q                           Immediate reference
  4537.  
  4538.  
  4539.  
  4540.  
  4541.     A.4 Menu format
  4542.  
  4543.  
  4544.  
  4545.     In a menu, choices can have an action specification appended :-
  4546.  
  4547.  
  4548.  
  4549.  
  4550.                       5-69             Version 2.5
  4551.         
  4552.  
  4553.  
  4554.  
  4555.  
  4556.  
  4557.  
  4558.  
  4559.     HyperShell         Quick Reference     Reference Guide
  4560.         
  4561.  
  4562.  
  4563.     choice 1  |action
  4564.     choice 2  |action
  4565.     etc      |action
  4566.  
  4567.  
  4568.  
  4569.  
  4570.     A.5 Variables
  4571.  
  4572.  
  4573.     System variables - these cannot be set, but can be expanded. 
  4574.  
  4575.         
  4576.  
  4577.  
  4578.     $0    full path name of current HyperShell program
  4579.     $1    current frame name
  4580.     $2    current frame title
  4581.     $3    current file name
  4582.     $4    current date
  4583.     $5    current time
  4584.     $6    backtrack list depth
  4585.     $7    current directory
  4586.     $8    original directory
  4587.     $9    HyperShell name and version
  4588.     $?    Error status of last error
  4589.     $@    Remaining memory
  4590.     $_    File prompt (becomes null string when viewing file)
  4591.     $^    Numeric exit code from command executed via X/x action.
  4592.  
  4593.     These can be set
  4594.  
  4595.     $:    Exclusion list of file extensions
  4596.     $<    Filename from directory display
  4597.     $>    File extension from directory display
  4598.  
  4599.     Application  variables    -  these  are  set  by    an   application
  4600.     hyperfile, and can be expanded. 
  4601.  
  4602.  
  4603.  
  4604.     $A to $Z      application variables
  4605.     $a to $z      application variables
  4606.     $(xxxxxx)     named application variable
  4607.  
  4608.     Variables are expanded in each line in text before it is displayed
  4609.     and in each action string before it is executed.
  4610.  
  4611.  
  4612.  
  4613.  
  4614.  
  4615.  
  4616.                       5-70             Version 2.5
  4617.         
  4618.  
  4619.  
  4620.  
  4621.  
  4622.  
  4623.  
  4624.  
  4625.     HyperShell         Quick Reference     Reference Guide
  4626.         
  4627.  
  4628.  
  4629.  
  4630.  
  4631.  
  4632.  
  4633.     A.6 Actions
  4634.  
  4635.  
  4636.  
  4637.     Axxxxx           do action xxxxx
  4638.     acxxxxx        do action xxxxx if condition c is set
  4639.     B           backtrack one frame
  4640.     bn           backtrack to depth n
  4641.     C           Change drive/directory
  4642.     D{command line}    Dos shell command
  4643.     d{command line}    Dos shell command (don't wait when finished)
  4644.     E           Execute command with no return (Chain)
  4645.     evsabc...       Expand (split) v on s to a,b,c etc.
  4646.     F{name{^file}}       Go to frame (first) {in file} (stack backtrack)
  4647.     f{name{^file}}       Go to frame (first) {in file} (replace backtrack)
  4648.     H           Add note to notepad
  4649.     h           Remove note from notepad
  4650.     I           Select next input field
  4651.     Jnn           Unconditional jump (in script)
  4652.     jxnn           Conditional jump (in script)
  4653.     Kkkaction       Map key kk to action
  4654.                kk = F1-F0,S1-S0,A1-A0,C1-C0,=x
  4655.     Lname           Label name - in script. No action otherwise.
  4656.     lvnamed        Load variable v into named variable 'named'
  4657.     Mname           Global menu
  4658.     mname           local menu
  4659.     Nname           Global note
  4660.     nname           local note
  4661.     Oos           Set run flag o(1=menusym,2=backtrack,3=savescr,
  4662.                4=autoref,7=tracing) to s(0=off,1=on)
  4663.                Set colour option o(A-Z - See below)
  4664.     ostring        Output to printer if enabled, else display
  4665.     Pstring        Pop message with string in it
  4666.     pstring        Display message with string in it (no wait)
  4667.     Q           Quit to DOS
  4668.     q           Quit script
  4669.     R           Read file (formatted)
  4670.     rfilename       Open file for reading (close if no param)
  4671.     Sname           Global script
  4672.     sname           local script
  4673.     Tfilename       Type file
  4674.     tfilename       Display file as popup note
  4675.     Vxvalue        Set variable x to value
  4676.     vxvalue        Test variable x
  4677.     Wstring        Write string to file
  4678.     wfilename       Open file for writing (close if no param)
  4679.  
  4680.  
  4681.  
  4682.                       5-71             Version 2.5
  4683.         
  4684.  
  4685.  
  4686.  
  4687.  
  4688.  
  4689.  
  4690.  
  4691.     HyperShell         Quick Reference     Reference Guide
  4692.         
  4693.  
  4694.  
  4695.     Xcomm args       Execute command with arguments
  4696.     xcomm args       Execute command with arguments (no wait)
  4697.     Y           Reset error status to zero
  4698.     yx           Refresh frame display (if param, display next page)
  4699.  
  4700.  
  4701.  
  4702.  
  4703.     A.7 Action modifiers
  4704.  
  4705.  
  4706.  
  4707.     In place of direct values (if second letter not modifier, tries third)
  4708.     on actions.
  4709.  
  4710.     ?prompt        Issue prompt, get string and pass back as
  4711.                parameter to action
  4712.  
  4713.     %envvar        Use value of environment variable as action parameter
  4714.  
  4715.     &funcspec       Use resulting string from function evaluation
  4716.  
  4717.     @menuspec       Use chosen value/action from menu display
  4718.  
  4719.     +           'Next' frame in current file
  4720.  
  4721.     !{F/L/R}{key}       next line from input file / noted references
  4722.  
  4723.     =           integer arithmetic expression (involving variables)
  4724.  
  4725.     Action modifier can be followed by '|pattern' where pattern contains
  4726.     instances of '%s' to replace with result of modifier. e.g.
  4727.  
  4728.              xxxxxx %s yyyyy %s zzzzz %s hhhhhh
  4729.  
  4730.     A maximum of three '%s' is allowed in the pattern.
  4731.  
  4732.  
  4733.  
  4734.  
  4735.     A.8 Function codes
  4736.  
  4737.  
  4738.  
  4739.     The available function codes are as follows:-
  4740.  
  4741.     L  -  Length of arg
  4742.     A  -  ASCII value of first char of arg
  4743.     C  -  character with ASCII value arg
  4744.     Nn -  nth character in arg
  4745.  
  4746.  
  4747.  
  4748.                       5-72             Version 2.5
  4749.         
  4750.  
  4751.  
  4752.  
  4753.  
  4754.  
  4755.  
  4756.  
  4757.     HyperShell         Quick Reference     Reference Guide
  4758.         
  4759.  
  4760.  
  4761.     Sn -  substring starting at nth character of arg
  4762.     T  -  Title of frame with name arg
  4763.     Mk -  string mapped to key 'k'
  4764.     Uc -  substring of arg up to, but not including character 'c'
  4765.     Fc -  substring of arg from character 'c' inclusive
  4766.     Ic -  index of character 'c' in arg, or 0 if not found
  4767.     K  -  character typed in response to arg as popup message
  4768.  
  4769.  
  4770.  
  4771.  
  4772.     A.9 Dynamic menus
  4773.  
  4774.  
  4775.  
  4776.     These are available via the @ action modifier, and replace
  4777.     the 'menuspec'.
  4778.  
  4779.     B           Backtrack list as menu (returning level number)
  4780.     C           Current Hyperfile contents list as menu
  4781.     Dwildspec      Directory listing (extension stripped)
  4782.     dwildspec      Directory listing (with extension)
  4783.     Ewildspec      Directory listing (directories only)
  4784.     Ffilename      Contents of file as popup menu
  4785.     Lwildspec      Extended directory display
  4786.     lwildspec      Extended directory display with actions added
  4787.     M(or m)name    Global/local menu
  4788.     N(n or t)name  Global/local/file note
  4789.     R           Notepad paged display
  4790.     Sstring        Search for string in titles of current file
  4791.     sstring        Search for string in titles of open files
  4792.     Xstring        Search for string in titles and texts of current file
  4793.     xstring        Search for string in titles and texts of open files
  4794.  
  4795.  
  4796.  
  4797.  
  4798.     A.10 Option codes
  4799.  
  4800.  
  4801.  
  4802.  
  4803.     Showing option code, command line flag, and default setting.
  4804.  
  4805.           0 -n    Notepad file creation (off)
  4806.           1 -f    Symbols on menus (on)
  4807.           2 -b    Backtrack recording (on)
  4808.           3 -x    Notepad reference extension (on)
  4809.           4 -a    Auto reference (off)
  4810.           5 -p    Enable printer (off)
  4811.  
  4812.  
  4813.  
  4814.                       5-73             Version 2.5
  4815.         
  4816.  
  4817.  
  4818.  
  4819.  
  4820.  
  4821.  
  4822.  
  4823.     HyperShell         Quick Reference     Reference Guide
  4824.         
  4825.  
  4826.  
  4827.           6 -r    Display remaining space on exit (off)
  4828.           7 -t    Script label tracing (off)
  4829.           8 -w    Give warning of unavailable references (on)
  4830.           9 -l(-k)    Stop highlight in 'T' list (strip 8th bit for
  4831.                 for WordStar(tm) format files)
  4832.  
  4833.  
  4834.  
  4835.     A.11 Colours
  4836.  
  4837.  
  4838.  
  4839.     Option names for colour settings (with defaults) are:-
  4840.  
  4841.          A        wB        Action reference
  4842.          B        WK(bl)  (Blink)
  4843.          C        yB        Menu choice
  4844.          D        KW        Default title
  4845.          E        yK        Frame reference (replace)
  4846.          F        wK        Frame reference (stack)
  4847.          G        KK        (Ghost)
  4848.          H        KR        Menu heading
  4849.          I        yY        Input field
  4850.          J        KG        Note heading and border
  4851.          K        yG        Note
  4852.          L        RK        (Low intensity)
  4853.          M        KW        Menu reference
  4854.          N        gK        Note reference
  4855.          O        KY        Menu selection
  4856.          P        yR(bl)  Popup message
  4857.          Q        wR(bl)  (Quick)
  4858.          R        KW        Request / message
  4859.          S        yG        Script reference
  4860.          T        WK        Frame text
  4861.          U        YK        (User 1)
  4862.          V        MK        (User 2)
  4863.          W        GK        (User 3)
  4864.          X        RK        (User 4)
  4865.          Y        BK        (User 5)
  4866.          Z        rK        (User 6)
  4867.  
  4868.  
  4869.  
  4870.  
  4871.     A.12 Colour codes
  4872.  
  4873.  
  4874.  
  4875.  
  4876.          K        Black
  4877.  
  4878.  
  4879.  
  4880.                       5-74             Version 2.5
  4881.         
  4882.  
  4883.  
  4884.  
  4885.  
  4886.  
  4887.  
  4888.  
  4889.     HyperShell         Quick Reference     Reference Guide
  4890.         
  4891.  
  4892.  
  4893.          B        Blue
  4894.          G        Green
  4895.          C        Cyan
  4896.          R        Red
  4897.          M        Magenta
  4898.          Y        Yellow (brown)
  4899.          W        White (light grey)
  4900.          k        Dark grey         (Foreground only)
  4901.          b        Light blue         (Foreground only)
  4902.          g        Light green      (Foreground only)
  4903.          c        Light Cyan         (Foreground only)
  4904.          r        Light red         (Foreground only)
  4905.          m        Light magenta    (Foreground only)
  4906.          y        Light yellow     (Foreground only)
  4907.          w        Bright white     (Foreground only)
  4908.  
  4909.  
  4910.  
  4911.  
  4912.  
  4913.  
  4914.  
  4915.  
  4916.  
  4917.  
  4918.  
  4919.  
  4920.  
  4921.  
  4922.  
  4923.  
  4924.  
  4925.  
  4926.  
  4927.  
  4928.  
  4929.  
  4930.  
  4931.  
  4932.  
  4933.  
  4934.  
  4935.  
  4936.  
  4937.  
  4938.  
  4939.  
  4940.  
  4941.  
  4942.  
  4943.  
  4944.  
  4945.  
  4946.                       5-75             Version 2.5
  4947.         
  4948.  
  4949.  
  4950.  
  4951.  
  4952.  
  4953.  
  4954.  
  4955.     HyperShell         Quick Reference     Reference Guide
  4956.         
  4957.  
  4958.  
  4959.  
  4960.  
  4961.  
  4962.  
  4963.     A.13 Error codes
  4964.  
  4965.  
  4966.     The following error codes are set  in variable '?'. The variable
  4967.     is only reset on command (by the 'Y' action). 
  4968.  
  4969.  
  4970.          0        Success - (after status cleared)
  4971.          1        Operation cancelled
  4972.          2        No choice from menu
  4973.          3        End of file when reading
  4974.          4        Cannot open file
  4975.          5        File is not open
  4976.          6        File is already open
  4977.          7        File has changed
  4978.          8        At start of backtrack
  4979.          9        Divide by 0 in expression
  4980.          10     Value not expected in expression
  4981.          11     Value expected in expression
  4982.          12     Undefined opcode in expression
  4983.          13     Unmatched parenthesis in expression
  4984.          14     Syntax error in expression
  4985.          15     Script not available
  4986.          16     Menu not available
  4987.          17     Note not available
  4988.          18     Frame not available
  4989.          19     Key not defined
  4990.          20     Invalid key code
  4991.          21     Local reference - cannot be noted
  4992.          22     Not at reference when key pressed
  4993.          23     Key not mapped
  4994.          24     No action or action disabled
  4995.          25     Invalid action code
  4996.          26     No command present
  4997.          27     Environment variable not defined
  4998.          28     Invalid dynamic menu
  4999.          29     Line too wide for screen
  5000.          30     String too long
  5001.          31     Too many lines in frame
  5002.          32     Maximum script size reached
  5003.          33     Maximum menu size reached
  5004.  
  5005.  
  5006.  
  5007.  
  5008.  
  5009.  
  5010.  
  5011.  
  5012.                       5-76             Version 2.5
  5013.         
  5014.  
  5015.  
  5016.  
  5017.  
  5018.  
  5019.  
  5020.  
  5021.     HyperShell         Quick Reference     Reference Guide
  5022.         
  5023.  
  5024.  
  5025.  
  5026.  
  5027.  
  5028.  
  5029.     A.14 Jump conditions
  5030.  
  5031.  
  5032.     The following condition codes are used in the 'j' action. 
  5033.  
  5034.  
  5035.          e        variable equals string (lexical or numeric)
  5036.          n        variable not equal to string
  5037.          g        variable greater than string (lexical or numeric)
  5038.          l        variable less than string (lexical or numeric)
  5039.          d        variable is defined
  5040.          u        variable is undefined
  5041.          c        variable contains string
  5042.          w        variable is contained within string
  5043.          s        jump if error status set
  5044.          o        jump if error status O.K.
  5045.  
  5046.  
  5047.  
  5048.  
  5049.     A.15 Reserved characters
  5050.  
  5051.  
  5052.     The  following    characters  cannot appear within the second  (or
  5053.     third if the second is not one of  them)  position  of an action
  5054.     specification, apart from for their stated purpose. 
  5055.  
  5056.  
  5057.          @        Dynamic menu
  5058.          &        String function
  5059.          !        Read record
  5060.          +        Next framename
  5061.          =        Expression evaluation
  5062.          %        Environment variable
  5063.          ?        Prompted input
  5064.  
  5065.     The following characters cannot appear in  the body of an action
  5066.     specification, apart from for their stated purpose. 
  5067.  
  5068.  
  5069.          $        Variable expansion token
  5070.          |        Action modifier pattern specification
  5071.          ^        (Within frame names) Hyperfile separator
  5072.          ;        Multiple action separator
  5073.  
  5074.  
  5075.  
  5076.  
  5077.  
  5078.                       5-77             Version 2.5
  5079.         
  5080.  
  5081.  
  5082.  
  5083.  
  5084.  
  5085.  
  5086.  
  5087.     HyperShell         Quick Reference     Reference Guide
  5088.         
  5089.  
  5090.  
  5091.     The following characters cannot appear within frame text,  apart
  5092.     from for their stated purpose. 
  5093.  
  5094.         
  5095.  
  5096.  
  5097.          ~        Reference and formatting directive flag
  5098.          $        Variable expansion token
  5099.          .        (At beginning of line) Section flag
  5100.  
  5101.     - END OF DOCUMENT -
  5102.  
  5103.  
  5104.  
  5105.  
  5106.  
  5107.  
  5108.  
  5109.  
  5110.  
  5111.  
  5112.  
  5113.  
  5114.  
  5115.  
  5116.  
  5117.  
  5118.  
  5119.  
  5120.  
  5121.  
  5122.  
  5123.  
  5124.  
  5125.  
  5126.  
  5127.  
  5128.  
  5129.  
  5130.  
  5131.  
  5132.  
  5133.  
  5134.  
  5135.  
  5136.  
  5137.  
  5138.  
  5139.  
  5140.  
  5141.  
  5142.  
  5143.  
  5144.                       5-78             Version 2.5
  5145.         
  5146.  
  5147.  
  5148.  
  5149.  
  5150.  
  5151.  
  5152.  
  5153.     HyperShell         Quick Reference     Reference Guide
  5154.         
  5155.  
  5156.  
  5157.  
  5158.  
  5159.  
  5160.  
  5161.                Table of Contents
  5162.  
  5163.  
  5164.     Chapter 1 Introduction                       2
  5165.  
  5166.        1.1 Introduction                       2
  5167.  
  5168.     Chapter 2 The Hyperfile                    3
  5169.  
  5170.        2.1 File contents                       3
  5171.  
  5172.           2.1.1 Remarks                       3
  5173.           2.1.2 Check                       3
  5174.           2.1.3 Header                       4
  5175.           2.1.4 Footer                       4
  5176.           2.1.5 Global Notes                   5
  5177.           2.1.6 Global Menus                   5
  5178.           2.1.7 Global Scripts                   5
  5179.           2.1.8 Setup Script                   6
  5180.           2.1.9 Index                       6
  5181.           2.1.10 Frames                       6
  5182.  
  5183.          2.1.10.1 Name                       7
  5184.          2.1.10.2 Title                    7
  5185.          2.1.10.3 Text                       7
  5186.          2.1.10.4 Notes                    8
  5187.          2.1.10.5 Menus                    8
  5188.          2.1.10.6 Scripts                   9
  5189.          2.1.10.7 End                       9
  5190.  
  5191.        2.2 Text annotation                       10
  5192.  
  5193.           2.2.1 References                       10
  5194.  
  5195.          2.2.1.1 Frame                       10
  5196.          2.2.1.2 Note                       11
  5197.          2.2.1.3 File note                   11
  5198.          2.2.1.4 Menu                       11
  5199.          2.2.1.5 Script                    11
  5200.          2.2.1.6 Action                    12
  5201.          2.2.1.7 Input field                   12
  5202.          2.2.1.8 Parameter section               13
  5203.          2.2.1.9 Key mapping                   13
  5204.          2.2.1.10 Immediate reference               13
  5205.  
  5206.           2.2.2 Formatting                       13
  5207.  
  5208.  
  5209.  
  5210.                       5-79             Version 2.5
  5211.         
  5212.  
  5213.  
  5214.  
  5215.  
  5216.  
  5217.  
  5218.  
  5219.     HyperShell         Quick Reference     Reference Guide
  5220.         
  5221.  
  5222.  
  5223.  
  5224.          2.2.2.1 Option display                14
  5225.          2.2.2.2 Line positioning               14
  5226.          2.2.2.3 Column positioning               14
  5227.          2.2.2.4 Width positioning               14
  5228.          2.2.2.5 Screen breaks                   15
  5229.          2.2.2.6 Hidden lines                   15
  5230.          2.2.2.7 Text/Background colours           15
  5231.          2.2.2.8 Display colour schemes            16
  5232.          2.2.2.9 Variables                   17
  5233.  
  5234.        2.3 Actions                           18
  5235.  
  5236.           2.3.1 Action tokens                   18
  5237.  
  5238.          2.3.1.1 A - Action                   18
  5239.          2.3.1.2 a - Conditional action            19
  5240.          2.3.1.3 B - Backtrack                   19
  5241.          2.3.1.4 b - Multiple backtrack            19
  5242.          2.3.1.5 C - Change drive / directory           20
  5243.          2.3.1.6 D/d - DOS command execution           20
  5244.          2.3.1.7 E - Command chaining               21
  5245.          2.3.1.8 e - expand variable               21
  5246.          2.3.1.9 F/f - Frame selection               21
  5247.          2.3.1.10 H/h - Notepad maintenance           22
  5248.          2.3.1.11 I - Select next input field           22
  5249.          2.3.1.12 J/j - Jump within script           23
  5250.          2.3.1.13 K - Set key mapping               24
  5251.          2.3.1.14 L - Label in script               24
  5252.          2.3.1.15 l - load named variable           25
  5253.          2.3.1.16 M/m - Popup menu display           25
  5254.          2.3.1.17 N/n - Popup note display           26
  5255.          2.3.1.18 O - Option setting               26
  5256.          2.3.1.19 o - Printer output               27
  5257.          2.3.1.20 P - Popup message               28
  5258.          2.3.1.21 p - Print message               28
  5259.          2.3.1.22 Q - Quit HyperShell               28
  5260.          2.3.1.23 q - Quit script               28
  5261.          2.3.1.24 R - Formatted read               28
  5262.          2.3.1.25 r - Open/close input file           29
  5263.          2.3.1.26 S/s - Execute script               29
  5264.          2.3.1.27 T - Type file                29
  5265.          2.3.1.28 t - file note                30
  5266.          2.3.1.29 V - Set variable               30
  5267.          2.3.1.30 v - Test variable               31
  5268.          2.3.1.31 W - Write record to file           31
  5269.          2.3.1.32 w - Open/close output file           31
  5270.          2.3.1.33 X/x - Execute program            32
  5271.          2.3.1.34 Y - Null action               32
  5272.          2.3.1.35 y - refresh frame display           32
  5273.  
  5274.  
  5275.  
  5276.                       2-80             Version 2.5
  5277.         
  5278.  
  5279.  
  5280.  
  5281.  
  5282.  
  5283.  
  5284.  
  5285.     HyperShell         Quick Reference     Reference Guide
  5286.         
  5287.  
  5288.  
  5289.  
  5290.           2.3.2 Action Modifiers                   32
  5291.  
  5292.          2.3.2.1 Prompts                   32
  5293.          2.3.2.2 Input file                   33
  5294.          2.3.2.3 Noted references               33
  5295.          2.3.2.4 Environment Variables               34
  5296.          2.3.2.5 Expression evaluation               34
  5297.          2.3.2.6 Functions                   34
  5298.          2.3.2.7 Dynamic menus                   36
  5299.          2.3.2.8 Pattern strings               37
  5300.          2.3.2.9 Multiple actions               37
  5301.  
  5302.        2.4 Dynamic menus                       37
  5303.  
  5304.           2.4.1 Paged displays                   38
  5305.           2.4.2 Simple menus                   38
  5306.           2.4.3 Other types                    39
  5307.  
  5308.        2.5 Variables                       39
  5309.  
  5310.           2.5.1 Variable assignment                39
  5311.           2.5.2 Variable substitution               40
  5312.  
  5313.        2.6 Alternative hypertext                   40
  5314.        2.7 Limits                           41
  5315.  
  5316.           2.7.1 sizes                       41
  5317.           2.7.2 numbers                       41
  5318.  
  5319.     Chapter 3 HyperShell Editor                   42
  5320.  
  5321.        3.1 Introduction                       42
  5322.        3.2 Invocation                       42
  5323.        3.3 Editor processing                   43
  5324.        3.4 Editor interaction                   44
  5325.        3.5 Frame Navigation                    44
  5326.  
  5327.           3.5.1 Control keys                   45
  5328.           3.5.2 Control menu                   47
  5329.           3.5.3 Help menu                       47
  5330.  
  5331.        3.6 Text editing                       48
  5332.  
  5333.           3.6.1 Moving around                   49
  5334.           3.6.2 Inserting text                   49
  5335.           3.6.3 Deleting text                   50
  5336.           3.6.4 Moving text                    50
  5337.           3.6.5 Referencing                    50
  5338.           3.6.6 Other functions                   51
  5339.  
  5340.  
  5341.  
  5342.                       2-81             Version 2.5
  5343.         
  5344.  
  5345.  
  5346.  
  5347.  
  5348.  
  5349.  
  5350.  
  5351.     HyperShell         Quick Reference     Reference Guide
  5352.         
  5353.  
  5354.  
  5355.           3.6.7 Control Keys                   51
  5356.           3.6.8 Quick references                   54
  5357.           3.6.9 Reference and insert Menu               55
  5358.           3.6.10 Help                       57
  5359.           3.6.11 Key macros                    58
  5360.  
  5361.        3.7 View mode                       59
  5362.        3.8 Selecting items                       59
  5363.  
  5364.           3.8.1 Control keys                   59
  5365.           3.8.2 Item Edit Menu                   60
  5366.  
  5367.     Chapter 4 HyperShell Checker                   62
  5368.  
  5369.        4.1 Introduction                       62
  5370.        4.2 Invocation                       62
  5371.        4.3 Operation                       63
  5372.        4.4 Check switches                       64
  5373.        4.5 Cross reference file                   65
  5374.        4.6 Using the Checker                   65
  5375.  
  5376.     Chapter 5 HyperShell Printer                   67
  5377.  
  5378.        5.1 Introduction                       67
  5379.  
  5380.     Appendix A Quick Reference                   68
  5381.  
  5382.        A.1 File format                       68
  5383.        A.2 References                       69
  5384.        A.3 Formatting                       69
  5385.        A.4 Menu format                       69
  5386.        A.5 Variables                       70
  5387.        A.6 Actions                           71
  5388.        A.7 Action modifiers                    72
  5389.        A.8 Function codes                       72
  5390.        A.9 Dynamic menus                       73
  5391.        A.10 Option codes                       73
  5392.        A.11 Colours                        74
  5393.        A.12 Colour codes                       74
  5394.        A.13 Error codes                       76
  5395.        A.14 Jump conditions                    77
  5396.        A.15 Reserved characters                   77
  5397.  
  5398.  
  5399.  
  5400.  
  5401.  
  5402.  
  5403.  
  5404.  
  5405.  
  5406.  
  5407.  
  5408.                       3-82             Version 2.5
  5409.         
  5410.  
  5411.  
  5412.  
  5413.  
  5414.