home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / BEEHIVE / ZSUS / Z3HELP-5.LBR / V.LBR / VLIB3.HZP / VLIB3.HLP
Text File  |  2000-06-30  |  21KB  |  560 lines

  1.  Introduction
  2.  Graphics Init       - GZ3INIT
  3.  Graphics Enable     - GRXON, GRXOFF
  4.  Block Graphics      - DRFULL, DRHASH
  5.  Corner Routines     - ULEFT, URIGHT, LLEFT, LRIGHT
  6.  Intersect Routines  - LTISEC, RTISEC, UISEC, LISEC, ISEC
  7.  Horizontal Bars     - DRHBAR, DRHORZ, ERAHORZ, GHBAR, ERAHBAR
  8.  Vertical Bars       - DRVBAR, DRVERT, ERAVERT, GVBAR, ERAVBAR
  9.  Box Draw Routines   - DRFBOX, DRBOX, ERABOX, GFBOX, GBOX, GERBOX, CHKBOX
  10.  Pull-Down Menus     - SETPDM, CLRPDM, SELPDM, MCLS
  11.  P-D Menu Support    - PDMINI, ISPDM, SPDMCHR
  12. :             INTRODUCTION 
  13.  
  14.              8 April 1989
  15.  
  16. These extensions to VLIB incorporate many of the interfaces of
  17. the origina Echelon/Dennis Write GRXLIB and GRWLIB, and provide
  18. additional functionality for easier interfacing.  They require
  19. the extended TCAP definitions in order to work.
  20.  
  21.                     Harold F. Bower
  22.                     P.O. Box 313
  23.                     Ft. Meade, MD  20755
  24.  
  25. :GZ3INIT - Initialize Z3LIB & VLIB, return TCAP flags
  26.  
  27.   ENTER: HL = Pointer to Z3 Environment Descriptor
  28.   EXIT :  A = Bitmap of capabilities, Zero set on results as:
  29.         B0 = 1 if Delete/Insert Line present, 0 if absent
  30.         B1 = 1 if Clear to EOS present, 0 if absent
  31.         B2 = 1 if Graphics On/Off present, 0 if absent
  32.         B3 = 1 if 13 Graphics chars exist, 0 if any absent
  33.   USES : AF
  34.  
  35.  Usage: This routine calls Z3VINIT and therefore may be
  36.   substituted for it to set the Z3LIB ENVPTR and initialize
  37.   VLIB routines.  Flag bits are returned to show whether the
  38.   TCAP extended functions are present.
  39.  
  40. :GRXON  - Place Terminal in Graphics Mode
  41.  GRXOFF - Return Terminal to Alphanumeric Mode
  42.  
  43.   ENTER: None
  44.   EXIT :  A <> 0, Zero Flag Clear (NZ) if Operation Successful
  45.           A = 0, Zero Flag Set (Z) if NOT implemented
  46.   USES : AF
  47.  
  48.  Usage: These two routines control the graphics capabilites of
  49.   your terminal as defined in the extended TCAP.  If these
  50.   routines are not implemented, any calls to Graphic routines
  51.   will print the defined strings in normal Alphanumeric mode.
  52.  
  53. Example:
  54.     EXT    GRXON,GRXOFF    ; Define the routines
  55.     ...            ; ..do VIDINIT/Z3VINIT up here
  56.     CALL    GRXON        ; Put Terminal in Graphics mode
  57.     JR    Z,NOGRAF    ; .jump if No Graphics Mode
  58.     ...            ; ..Else print in Graphics
  59.     CALL    GRXOFF        ; Return to Alphanumeric mode
  60.  
  61. :DRFULL - Print a Full Graphics Block character
  62.  DRHASH - Print a Hashed or Shaded Graphics Block character
  63.  
  64.   ENTER: None
  65.   EXIT :  A <> 0, Zero Flag Clear (NZ) if character printed
  66.           A = 0, Zero Flag Set (Z) if NOT implemented
  67.   USES : AF
  68.  
  69.  Usage: This routine is used by several of the added routines
  70.   to print full-block graphics characters to the screen.
  71.   Examples are the line draw routines.
  72.  
  73. Example:
  74.     EXT    DRFULL,DRHASH    ; Declare the routines
  75.     ...            ; ..other code including Z3INIT
  76.     CALL    DRFULL        ; Print full block graphics
  77.     CALL    DRHASH        ; ..and Hashed (shaded) block
  78.     ...            ; Carry On!
  79.  
  80. :ULEFT  - Print Upper-Left Corner Graphics character  (+)
  81.  URIGHT - Print Upper-Right Corner Graphics character (+)
  82.  LLEFT  - Print Lower-Left Corner Graphics character  (+)
  83.  LRIGHT - Print Lower-Right Corner Graphics character (+)
  84.  
  85.   ENTER: None
  86.   EXIT :  A <> 0, Zero Flag Clear (NZ) if character printed
  87.           A = 0, Zero Flag Set (Z) if NOT implemented
  88.   USES : AF
  89.  
  90.  Usage: These routines print the respective corner graphics
  91.   characters and are used in the Box drawing routine described
  92.   elsewhere.  If you have no Graphics capability, use chars
  93.   in parens in TCAP strings.
  94.  
  95. :LTISEC - Print Left Intersection Graphics character  (+)
  96.  RTISEC - Print Right Intersection Graphics character (+)
  97.  UISEC  - Print Upper Intersection Graphics character (+)
  98.  LISEC  - Print Lower Intersection Graphics character (+)
  99.  ISEC   - Print Intersection character                (+)
  100.  
  101.   ENTER: None
  102.   EXIT :  A <> 0, Zero Flag Clear (NZ) if character printed
  103.           A = 0, Zero Flag Set (Z) if NOT implemented
  104.   USES : AF
  105.  
  106.  Usage: As with the corner routines, these print the respective
  107.   Graphics character for their function.  Define the TCAP
  108.   string for these functions to be the ASCII character in
  109.   parentheses if you have no Graphics capability.
  110.  
  111. Example:
  112.     EXT    LTISEC,RTISEC,UISEC,LISEC,ISEC    ; Declare routines
  113.     ...            ; ..preceding code
  114.     CALL    LTISEC        ; (or RTISEC, etc)
  115.  
  116. :                   Horizontal Bars 
  117.  
  118. DRHBAR - Print Heavy Horizontal Bar with the Graphics Full or
  119.     Hashed Block character from Inline code.
  120.  
  121.   ENTER: None.  The top of Stack points to parameters
  122.   EXIT : None.  Execution resumes after the parameters
  123.   USES : None.
  124.  
  125.  Usage: This routine is used where fixed parameters exist.  For
  126.   variable bar parameters, use GHBAR which executes the same from
  127.   parameters passed in registers.  Parameters are:
  128.  
  129.     call    drhbar
  130.  
  131.     defb    Type    ; - 1 = Full Block, 2 = Hashed Block
  132.     defb    Row    ; - 1 = Top Row on screen
  133.     defb    Column    ; - 1 = Left Most Column on screen
  134.     defb    Length    ; - Number of characters to print
  135.     defb    Direc    ; - 0 = Left-to-Right, 1 = R-to-L
  136.  
  137. Example:
  138.     EXT    DRHBAR        ; Declare the routine
  139.     ...            ; ..preceding code
  140.     CALL    DRHBAR        ; Draw heavy bar at:
  141.     DEFB    1,2,10,20,0    ; Full, Row 2, Col 10, Len 20
  142.                 ; ..Print Left-to-right
  143.     ...            ; Execution resumes here
  144.  
  145.  NOTE: When bars are specified as Right-to-Left, the left
  146.  margin is validated for exceeding the left margin, and only
  147.  the valid portion is printed.  Actual printing is always
  148.  Left-to-Right.
  149.  
  150. DRHORZ  - Print Graphics Horizontal Line from Inline parms
  151. ERAHORZ - Erase a Horizontal Line from Inline parameters by over-
  152.      writing with Spaces
  153.  
  154.   ENTER: None.  The top of Stack points to parameters
  155.   EXIT : None.  Execution resumes after the parameters
  156.   USES : None.
  157.  
  158.  Usage: These routines draw a thin graphics horizontal line,
  159.   and erase a line by overwriting wih spaces respectively.
  160.   They are used where fixed parameters exist.  For variable bar
  161.   parameters, use GHBAR and ERAHBAR which execute the same from
  162.   parameters passed in registers.  Parameters are:
  163.  
  164.     call    drhorz (or erahorz)
  165.  
  166.     defb    Row    ; - 1 = Top Row on screen
  167.     defb    Column    ; - 1 = Left Most Column on screen
  168.     defb    Length    ; - Number of characters to print.
  169.     defb    Direc    ; - 0 = Left-to-Right, 1 = Right-to-Left.
  170.  
  171. Example:
  172.     EXT    DRHORZ,ERAHORZ    ; Declare the routines
  173.     ...            ; ..preceding code
  174.     CALL    DRHORZ        ; Draw horizontal line at:
  175.     DEFB    2,10,20,0    ; Row 2, Col 10, Length 20
  176.                 ; ..Print Left-to-right
  177.     ...            ; Execution resumes here
  178.     CALL    ERAHORZ        ; Erase the horizontal line at:
  179.     DEFB    5,60,20,1    ; Row 5, Col 60, Length 20
  180.                 ; ..from Right-to-Left
  181.  
  182.  NOTE: When lines are specified as Right-to-Left, the left
  183.  margin is validated for exceeding the left margin, and only
  184.  the valid portion is printed.  Actual printing is always
  185.  Left-to-Right.
  186.  
  187. GHBAR - Print a Graphics Horiz Bar/Line from parms in Regs
  188.  
  189.   ENTER:  A = Bar Type (0=Line, 1=Full Block, 2=Hashed Block)
  190.       B = Length of Bar
  191.       C = Print Direction (0=Left-to-Right,1=Right-to-Left)
  192.       H = Starting Row (1=Top of screen)
  193.       L = Starting Column (1=Leftmost Column)
  194.   EXIT : None.  Registers are meaningless, the bar is printed
  195.   USES : AF,BC,HL
  196.  
  197.  Usage: This routine is used where horizontal bar parameters
  198.   are calculated by a program, or not known at assembly time.
  199.  
  200. Example:       (See Note in DRHORZ Example)
  201.     EXT    GHBAR        ; Declare the routine
  202.     ...            ; ..preceding code
  203.     LD    A,2        ; Print bar w/Hashed Block char
  204.     LD    HL,10*256+25    ; .Start at Row 10, Column 25
  205.     LD    BC,15*256+0    ; ..Length of 15, Left-to-Right
  206.     CALL    GHBAR        ; Print it Graphically
  207.  
  208. ERAHBAR - Erase Horizontal bar from Register parameters
  209.  
  210.   ENTER:  B = Length of Bar
  211.       C = Print Direction (0=Left-to-Right,1=Right-to-Left)
  212.       H = Starting Row (1=Top of screen)
  213.       L = Starting Column (1=Leftmost Column)
  214.   EXIT : None.  Registers are meaningless, the bar is erased
  215.   USES : AF,BC,HL
  216.  
  217.  Usage: This routine is used to erase a horizontal bar by over-
  218.   writing with spaces where parameters are calculated by a
  219.   program, or are not known at assembly time.
  220.  
  221. Example:       (See Note in ERAHORZ Example)
  222.     EXT    ERAHBAR        ; Declare the routine
  223.     ...            ; ..preceding code
  224.     LD    HL,8*256+50    ; .Start at Row 8, Column 50
  225.     LD    BC,40*256+1    ; ..Length of 40, Right-to-Left
  226.     CALL    ERAHBAR        ; Erase it
  227.  
  228. :                      Vertical Bars 
  229.  
  230. DRVBAR - Draw Heavy Vertical Bar from parms passed on stack
  231.  
  232.   ENTER: None.  Parameters are addressed by Top of Stack
  233.   EXIT : None.  Execution resumes after parms, bar is printed
  234.   USES : None
  235.  
  236.  Usage: This routine is used when a Heavy fixed-location bar is
  237.   needed, or bar location and size are known at assembly time.
  238.   Bar characters may be Full or Hashed Block, either single or
  239.   width.  See GVBAR for the same functions from parms passed in
  240.   registers. Parameters are:
  241.  
  242.     call    drvbar    ; Call routine passing params address
  243.     defb    Type    ; 1=Solid Single, 2=Solid Double wide
  244.             ; 3=Hashed Single, 4=Hashed Double wide
  245.     defb    Row    ; Starting Row (1=Top row)
  246.     defb    Column    ; Starting Column (1=Leftmost row)
  247.     defb    Length    ; Number of Columns in bar
  248.     defb    Dir    ; 0=Top-to-Bottom, 1=Bottom-to-Top
  249.  
  250. Example:
  251.     EXT    DRVBAR        ; Declare the routine
  252.     ...            ; ..preceding code
  253.     CALL    DRVBAR        ; Draw vertical bar as:
  254.     DEFB    2,20,10,5,0    ; Solid single-width, Row 20,
  255.                 ; ..Col 10, 5 long, Top-to-Bot
  256.     ...            ; Execution resumes here
  257.  
  258.  NOTE: When a bar is drawn from Bottom-to-Top, checks are
  259.  made for exceeding the top of screen (Row 1).  The length is
  260.  adjusted if so to print only the part on screen.  Bars are
  261.  always printed Top-To-Bottom.
  262.  
  263. DRVERT  - Print Graphics Vertical Line from Inline params
  264. ERAVERT - Erase a Vertical Line from Inline parameters
  265.  
  266.   ENTER: None.  The top of Stack points to parameters
  267.   EXIT : None.  Execution resumes after the parameters
  268.   USES : None.
  269.  
  270.  Usage: These routines are used where fixed parameters exist.
  271.   For variable bar parameters, use GVBAR and ERAVBAR which
  272.   execute the same from parameters passed in registers.
  273.   Parameters are:
  274.  
  275.     call    drvert (or eravert)
  276.  
  277.     defb    Row    ; 1 = Top Row on screen
  278.     defb    Column    ; 1 = Left Most Column on screen
  279.     defb    Length    ; Number of characters to print
  280.     defb    Direc    ; 0 = Top-to-Bottom, 1 = Bottom-to-Top
  281.  
  282. Example:
  283.     EXT    DRVERT,ERAVERT    ; Declare the routines
  284.     ...            ; ..preceding code
  285.     CALL    DRVERT        ; Draw vertical line at:
  286.     DEFB    2,10,15,0    ; Row 2, Col 10, Length 15
  287.                 ; ..Print Top-to-Bottom
  288.     ...            ; Execution resumes here
  289.     CALL    ERAVERT        ; Erase the vertical line at:
  290.     DEFB    22,60,20,1    ; Row 22, Col 60, Length 20
  291.                 ; ..from Bottom-to-Top
  292.  
  293.  NOTE: When a bar is drawn from Bottom-to-Top, checks are
  294.  made for exceeding the top of screen (Row 1).  The length is
  295.  adjusted if so to print only the part on screen.  Bars are
  296.  always printed Top-To-Bottom.
  297.  
  298. GVBAR - Print Graphics Vertical Bar/Line from Register parms
  299.  
  300.   ENTER:  A = Bar Type (0=Line, 1=Single Full Block, 2=Double
  301.           Full Block, 3=Single Hash Block, 4=Double Hash)
  302.       B = Length of Bar (# of characters)
  303.       C = Print Direction (0=Top-to-Bottom,1=Bottom-to-Top)
  304.       H = Starting Row (1=Top of screen)
  305.       L = Starting Column (1=Leftmost Column)
  306.   EXIT : None.  Registers are meaningless, the bar is printed
  307.   USES : AF,BC,HL
  308.  
  309.  Usage: This routine used to print calculated Vert bars from
  310.   programs where parameters are not known at assembly time.
  311.  
  312. Example:       (See Note in DRVERT Example)
  313.     EXT    GVBAR        ; Declare the routine
  314.     ...            ; ..preceding code
  315.     LD    A,2        ; Double bar w/Full Block char
  316.     LD    HL,22*256+60    ; .Start at Row 22, Column 60
  317.     LD    BC,15*256+1    ; ..Length of 15, Bottom-to-Top
  318.     CALL    GVBAR        ; Print it Graphically
  319.  
  320. ERAVBAR - Erase Vertical bar from Register Parameters
  321.  
  322.   ENTER:  B = Length of Bar (# of chars)
  323.       C = Print Direction (0=Top-to-Bottom,1=Bottom-to-Top)
  324.       H = Starting Row (1=Top of screen)
  325.       L = Starting Column (1=Leftmost Column)
  326.   EXIT : None.  Registers are meaningless, the bar is erased
  327.   USES : AF,BC,HL
  328.  
  329.  Usage: This routine is used to erase a Vertical bar by
  330.   overwriting with spaces where parameters are calculated by a
  331.   program, or are not known at assembly time.  Do twice for
  332.   double-width bar.
  333.  
  334. Example:       (See Note in ERAVERT Example)
  335.     EXT    ERAVBAR        ; Declare the routine
  336.     ...            ; ..preceding code
  337.     LD    HL,8*256+10    ; .Start at Row 8, Column 10
  338.     LD    BC,15*256+0    ; ..Length of 15, Top-to-Bottom
  339.     CALL    ERAVBAR        ; Erase it
  340.  
  341. :                   Box Draw Routines 
  342.  
  343. DRFBOX - Draw Box with the Graphics Full Block char
  344. DRBOX  - Draw Box with Graphics line and corner characters
  345. ERABOX - Erase a Box by overwriting with spaces
  346.  
  347.   ENTER: None.  The Top of Stack addresses Box parameters
  348.   EXIT : None.  Execution resumes at byte following the parms
  349.   USES : None
  350.  
  351.  Usage: These routines are used to draw Graphics boxes framed
  352.   with Full Block characters (DRFBOX), normal Graphics line and
  353.   corner characters (DRBOX), or erase a box (ERABOX).  Boxes
  354.   are drawn from top-left to bottom right, and erased by
  355.   overwriting with spaces.  Parameters are:
  356.  
  357.     call    drfbox    ; (or drbox or erabox)
  358.  
  359.     defb    Row    ; Starting Row (1 = Top row)
  360.     defb    Column    ; Starting Column
  361.     defb    Height    ; Height of box in Character Rows
  362.     defb    Width    ; Width of box in Character positions
  363. Example:
  364.     EXT    DRFBOX,DRBOX,ERABOX    ; Declare routines
  365.     ...            ; ..preceding code
  366.     CALL    DRBOX        ; Draw a Normal Box
  367.     DEFB    5,5,10,20    ; Row 5, Col 5, 10 Spaces High
  368.                 ; ..and 20 spaces wide
  369.     CALL    DRFBOX        ; Draw box framed w/solid blks
  370.     DEFB    10,30,6,25    ; Row 10, Col 30, 6 Spaces High
  371.                 ; ..and 25 wide
  372.     CALL    ERABOX        ; Erase the first box
  373.     DEFB    5,5,10,20
  374.     ...            ; ..and continue on
  375.  
  376. GFBOX  - Draw Graphics Box framed with Solid Block Character
  377. GBOX   - Draw Box framed with line and corner Graphics chars
  378. GERBOX - Erase Box by overwriting with spaces
  379.  
  380.   ENTER:  B = Width of Box in Character spaces
  381.       C = Height of Box in Lines
  382.       H = Starting Row (Top Left Corner, 1=Top row)
  383.       L = Starting Column (Top Left Corner, 1=Leftmost Col)
  384.   EXIT : None.  Registers indeterminate, Box drawn
  385.   USES : AF,BC,HL
  386.  
  387.  Usage: These routines implement the same functions as previous
  388.   Box routines, but derive their parameters from CPU registers.
  389.   Use these routines for calculated values or for parameters
  390.   not known at assembly.
  391.  
  392. Example:
  393.     EXT    GFBOX,GBOX,GERBOX    ; Declare the routines
  394.     ...                ; ..preceding code
  395.     LD    BC,30*256+10        ; 30 spaces wide, 10 Hi
  396.     LD    HL,10*256+20        ; ..at Row 10, Col 20
  397.     CALL    GBOX            ; Draw it!
  398. CHKBOX - Check & Adjust Box Parameters
  399.  
  400.   ENTER:  B = Width of Box in Character spaces
  401.       C = Height of Box in Lines
  402.       H = Starting Row (Top Left Corner, 1=Top row)
  403.       L = Starting Column (Top Left Corner, 1=Leftmost Col)
  404.   EXIT :  A <> 0, Zero Clear (NZ) if box drawable, parms set
  405.               A = 0, Zero Flag Clear (Z) if Box NOT drawable
  406.   USES : AF  (maybe B,C,H,L if parameters adjusted)
  407.  
  408.  Usage: This routine is used internally to adjust box dimen-
  409.   sions to screen size reflected in the CRT data in the Z3
  410.   Environment.  Starting Row/Column exceeding the maximum
  411.   Height/Width will cause the error status.  It may be used
  412.   after setting registers for a GRBOX/GRFBOX call to save the
  413.   actual box parameters which will be drawn.
  414.  
  415. Example:
  416.     EXT    CHKBOX,GBOX    ; Declare the routines
  417.     ...            ; ..set up for box draw
  418.     CALL    CHKBOX        ; Validate the dimentions/loc'n
  419.     JR    Z,NOGOOD    ; ..jump if can't draw this one
  420.     LD    (HITWID),BC    ; Else save width/height
  421.     LD    (ROWCOL),HL    ; ..and Row/Col Start loc'n
  422.     CALL    GBOX        ; Draw this box
  423.     ...
  424. :                     Pull-Down Menus 
  425.  
  426. SETPDM - Set Select Menu and Item Menu Bar for PDM from Stack
  427. SETPDR - Set Select Menu and Item Menu Bar for PDM from Regs
  428.  
  429.   ENTER: (SETPDM) None.  Top of Stack points to Menu Data Area
  430.          (SETPDR) HL = Pointer to Menu Data Area
  431.   EXIT :  A <> 0, Zero Flag Clear (NZ) if Pull-Down Menu Ok
  432.           A = 0, Zero Set (Z) if Error or Not Supported
  433.          (SETPDR) HL = Address of byte after terminating Null
  434.   USES : AF (SETPDR also uses HL)
  435.  
  436.  Usage: These routines are used to establish a single Menu
  437.   selection, and set information for the Pull-Down Item
  438.   Selection bar.  The number of Menu selections is determined
  439.   by screen width, and up to ten selections may be supported.
  440.   Menu Data descriptions are ASCII text strings with binary
  441.   values of one to ten (only 1-5 currently used) to denote
  442.   special features and fields.
  443.  
  444. Menus are structured as:
  445.     The first byte is the Menu Number in the range of 1..10
  446.     The Menu Name string is next terminated by a binary 1
  447.     Item Selection strings are terminated by a binary 3
  448.     Optional fields may be interspersed with Select strings as:
  449.     Sub-Header strings terminated by a binary 2
  450.     Separator lines which are shown with a binary 4
  451.     Blank lines which are shown with a binary 5
  452.  
  453. Example:
  454.     EXT    SETPDM        ; Declare the routine
  455.     ...            ; ..call PDMINI up here
  456.     CALL    SETPDM
  457.     DEFB    1        ; Menu number (1..10)
  458.     DEFB    'MenuName',1    ; Name on Menu Bar
  459.     DEFB    'Subheader',2    ; Optional subheader(s)
  460.     DEFB    4        ; Optional Separator Line
  461.     DEFB    'Item 1',3    ; First Item Name
  462.     DEFB    5        ; Optional Blank Line
  463.     DEFB    'Item 2',3    ; Second Item Name
  464.     DEFB    0        ; End of Menu Item List
  465.     ...            ; ..execution resumes here
  466. CLRPDM - Clear a Pull-Down Menu from the Menu Selection Bar
  467.  
  468.   ENTER:  A = Menu Number to Clear (0 = Clear All)
  469.   EXIT :  A <> 0, Zero Flag Clear (NZ) if Operation Successful
  470.               A = 0, Zero Flag Set (Z) if Entry Not Found
  471.   USES : AF
  472.  
  473.  Usage: This routine deletes an entry from the Menu Bar and
  474.   moves all subsequent entries to the left.  Logical entry
  475.   numbers stay the same as when loaded, but this function
  476.   refers to the physical positioning on the Menu Bar.
  477.  
  478. Example:
  479.     EXT    CLRPDM        ; Declare the variable
  480.     ...            ; ..establish Pull-Down Menus
  481.     LD    A,4        ; Remove the 4th entry
  482.     CALL    CLRPDM        ; ..in the bar
  483.     JR    NZ,REMOK    ; Jump if removal Ok
  484.     ...
  485.  
  486. SELPDM - Enter Pull-Down Menu.  Return Menu/Item Selections
  487.  
  488.   ENTER: None
  489.   EXIT :  A = 0, Zero Flag Set (Z) if PDM Escape key pressed
  490.       A <> 0, Zero Clear (NZ) if Menu Item selected,
  491.       H = Menu Number
  492.       L = Item Selection Number
  493.   USES : AF,HL
  494.  
  495.  Usage: This routine forms the heart of the Pull-Down Menu
  496.   system.  When entered, control will not return to the program
  497.   until either the PDM Escape character is pressed, or a valid
  498.   menu and item are selected.  By evaluating the returned
  499.   values, specific actions may be taken such as selecting
  500.   programs to run, items to list, etc.
  501.  
  502. MCLS - Clear Terminal Screen except for Pull-Down Menu Bar
  503.  
  504.   ENTER: None
  505.   EXIT :  A <> 0, Zero Flag Reset (NZ) if Screen Cleared Ok
  506.           A = 0 Zero Flag Set (Z) if CLREOS Not implemented
  507.   USES : AF
  508.  
  509.  Usage: This routine is used to clear the screen from Line 2 to
  510.   End-of-Screen, to preserve Pull-Down Menu Selection bar on
  511.   line 1.
  512.  
  513. :                 Pull-Down Menu Support 
  514.  
  515. PDMINI - Initialize Pull-Down Menu Functions
  516.  
  517.   ENTER: None
  518.   EXIT : None.  Internal Menu variables are initialized
  519.   USES : None
  520.  
  521.  Usage: This routine MUST be called before the Pull-Down Menu
  522.   system is used.  It clears needed variables and sets the
  523.   default PDM Escape character to ESC (1BH).
  524.  
  525. Example:
  526.     EXT    PDMINI        ; Declare the routine
  527.     ...            ; ..preliminary code sections
  528.     CALL    PDMINI        ; Initialize Pull-Down Menus
  529.     ...            ; ..now set menus, etc
  530.  
  531. ISPDM - Check character for Pull-Down Menu Escape Character
  532.  
  533.   ENTER:  A = Character to check
  534.   EXIT :  A = Char, Zero Clear (NZ) if it IS the Escape char
  535.         Zero Flag Set (Z) if NOT the Escape char
  536.   USES : Flags
  537.  
  538.  Usage: This routine is used in the Pull-Down Menu Selection
  539.   code to sense for the Escape character, and may be used in a
  540.   similar mode in other programs.  Set the desired character
  541.   with SPDMCHR.
  542.  
  543. Example:
  544.     EXT    ISPDM,CIN    ; Declare some routines
  545.     ...            ; ..preceding code
  546.     CALL    CIN        ; Get a character from console
  547.     CALL    ISPDM        ; Is it the Escape char?
  548.     JR    NZ,HAVIT    ; ..jump if so
  549.     ...            ; Else loop or whatever..
  550.  
  551. SPDMCHR - Change the value of the Pull-Down Menu Escape Char
  552.  
  553.   ENTER: A = New character to use as PD Menu Escape char
  554.   EXIT : None.  The char is set (Normally ESC-1BH, or ^\ - 1CH)
  555.   USES : None
  556.  
  557.  Usage: This routine is used to change the Pull-Down Menu
  558.   Escape character from the initial value of ESC (1BH).  Normal
  559.   values are either ESC (1BH) or Control-\ (1CH).
  560.