Menu                                              25 November 1982




       Menu  is  a  general  purpose menu processor for CP/M. It can join
       programs and systems written in various languages together into  a
       single  coherent  menu-driven structure. Menu is invoked from CP/M
       by typing:

       menu <menufile>

       where <menufile> is expected to be a file whose file name ends  in
       the  extension  '.MNU'.  The  '.MNU' extension does not need to be
       given. The <menufile> must consist of lines  describing  a  screen
       to  be  displayed,  a  set  of  single-character responses to that
       screen, and a command  line  for  each  response.  The  associated
       command  line  is  executed  by  Menu  when  the  user  has made a
       permissible response.

       The menu file consists of two main sections. First, the screen  to
       be  displayed.  Second, the allowed responses to the menu and CP/M
       command lines for these responses.

       The first lines in the menu file  are  simply  the  screen  to  be
       displayed.  The  first line will usually be a series of characters
       to clear the screen. The next lines  are  an  image  of  the  menu
       screen.

       These  image lines are followed by a single period ('.') on a line
       by itself. This line is not displayed; it is only used to end  the
       screen  image.  The cursor is left on the screen at the end of the
       last screen line; that is, at the character  position  immediately
       following   the  last  character  in  the  line  before  the  line
       containing a single period.

       The last section is a series of  lines  describing  the  responses
       allowed  and  the CP/M command lines to be executed based on those
       responses. Each  line  consists  of  three  fields.  These  are  a
       response character, a return character and a CP/M command line.

       The  response  character is a single character representing one of
       the allowable responses. This is the character to be typed by  the
       user  to  select  that  particular  response. Upper and lower case
       response characters are treated as  if  they  were  all  the  same
       case.  A  blank  can  be  used  to  represent a response of just a
       <RETURN>.

       The response character is followed by a return character. This  is
       a  '<'  if  the  system  is  to  return  to  this  particular menu
       immediately after executing the CP/M command line. If  the  system
       should  not  automatically  return  to  this  menu,  the character
       following the allowable response character is a '>'.



                                    - 1 -









       Menu                                              25 November 1982


       The rest of the line, that portion following the '>'  or  '<',  is
       the  CP/M  command  line  to  be invoked if the response character
       which began this  line  is  the  actual  character  selected.  For
       readability,   blanks  may  be  used  freely  after  the  response
       character as well as the '<' and '>' characters.

       For example :

            =======================================================

                               << End of Period Processing >>


                               < 1 >           End of Day

                               < 2 >           End of Week

                               < 3 >           End of Month

                               < 4 >           End of Year

                               < 5 >           Return to Master Menu


                Your Selection ?
        .
        1 < ENDDAY
        2 < ENDWEEK
        3 < ENDMONTH
        4 < ENDYEAR
        5 > MASTMENU
            =======================================================

       Everything from

                               "<< End of Period Processing >>"

       through

               "Your Selection ? "

       would appear on the screen. The cursor  would  appear  just  after
       the '?' in "Your Selection ? ".

       The  user  may  then  choose  one of the selections. The allowable
       responses in this example are the characters '1', '2',  '3',  '4',
       and  '5'.  Menu  will  not accept anything other than one of these
       characters or a ^C.

       If '1', '2', '3' or  '4'  is  typed,  the  programs  'ENDDAY.COM',
       'ENDWEEK.COM',  'ENDMONTH.COM'  and  'ENDYEAR.COM',  respectively,


                                    - 2 -









       Menu                                              25 November 1982


       would be executed. For each  of  these,  this  menu  would  appear
       again  after  the  selected  program is finished. If option '5' is
       chosen,  the  program  'MASTMENU.COM'  is  called,  and  will  not
       return.

       Menus  can,  of course, invoke other menus for a heirarchical menu
       structure.

       Since Menu uses CP/M's submit facility, the system drive must  not
       be  write  protected. Using the submit facility also means that if
       CP/M detects  a  character  at  the  console  while  preparing  to
       process  a submitted command line, the entire submitted batch will
       be aborted. There seems to be  no  way  to  stop  this,  short  of
       patching  CP/M.  To avoid this hole as much as possible, Menu will
       execute CP/M command lines  directly,  and  will  use  the  submit
       facility  only  to return to a menu afterwards. Menu may itself be
       called  within  a  submit  file  without  disturbing  the  ongoing
       submitted  process. However, the standard CP/M program Submit will
       make it impossible to return to any previous menus.

       For information or to report bugs, contact:

                          Concept Development Systems
                       Compuserve (Micronet) #70235,403





























                                    - 3 -