home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 14 / CDACTUAL.iso / cdactual / demobin / share / program / Pascal / TMENUSYS.ZIP / MENU.DOC next >
Encoding:
Text File  |  1989-07-24  |  20.6 KB  |  633 lines

  1. Page 1MAXX DATA SYSTEMS, INC. PROGRAM LICENSE AGREEMENT
  2.  
  3. YOU SHOULD CAREFULLY READ THE FOLLOWING TERMS AND CONDITIONS
  4. BEFORE OPENING, INSTALLING, AND/OR EXECUTING THIS
  5. APPLICATION/DISKETTE(S) PACKAGE.  OPENING, INSTALLING, AND/OR
  6. EXECUTING THIS APPLICATION/DISKETTE(S) INDICATES YOUR ACCEPTANCE
  7. OF THESE TERMS AND CONDITIONS.  IF YOU DO NOT AGREE WITH THEM, 
  8. YOU SHOULD PROMPTLY RETURN THE PACKAGE UNOPENED OR DESTROY ALL
  9. COPIES IN YOUR POSSESION.
  10.  
  11. Maxx Data Systems, Inc. provides this program and licenses its
  12. use in the United States and Puerto Rico.  Anyone wishing to license
  13. this program for use outside the United States should contact
  14. Maxx Data Systems, Inc. for licensing information.  You assume
  15. responsibility for the selection of the program to achieve your
  16. intended results, and for the installation, use, and results
  17. obtained from the program.
  18.  
  19. SHAREWARE LICENSE
  20.  
  21. The following  is the shareware license agreement and understanding:
  22.  
  23. 1. You are requested to make a shareware contribution of $25 U.S.
  24.    dollars for use of this program (see REGISTRATION information);
  25.  
  26. 2. Maxx Data Systems, Inc. retains the sole right to sell the program;
  27.  
  28. 3. You are encouraged to copy and distribute the program within
  29.    the following constraints:
  30.  
  31.         -  all program files remain unaltered and are distributed
  32.            together in their entirety;
  33.         -  only non-registered versions with the built-in
  34.            time delays be distributed;
  35.         -  no attempt is made to sell the program, or to make
  36.            money from it or any modified version of it;
  37.  
  38. 4. Continued use of the program (more than two weeks) by any
  39.    individual, corporation, or institution without a Single User or
  40.    Site license is prohibited and constitutes an infringement of 
  41.    copyright;
  42.  
  43. 5. Single User licenses are obtained by sending the $25 shareware 
  44.    contribution (See REGISTRATION information);
  45.  
  46. 6. Corporations and other institutions (including government and 
  47.    educational) which desire a Site license should contact Maxx Data
  48.    Systems, Inc. for more information.
  49.  
  50. REGISTRATION
  51.  
  52. 1. Only those users who have registered the software are eligible for
  53.    technical support.
  54.  
  55. Page 22. By paying the registration fee of $25 you will receive the
  56.    source code without the delay screen, a manual which
  57.    thoroughly explains the program, and unlimited technical support.
  58.  
  59. 3. The registration fee may be paid by check, money order,
  60.    American Express, MasterCard, or Visa.  Checks or money orders
  61.    may be sent to
  62.           Maxx Data Systems, Inc.
  63.           1126 S. Cedar Ridge, Ste. 115
  64.           Duncanville, Tx. 75137
  65.    Credit card orders may be placed by calling
  66.           1-800-622-8366
  67.  
  68. 4. Technical support is available between the hours of 8:30 am to
  69.    4:30 pm Central Time to registered users of the package by calling
  70.           1-214-298-1384
  71.    No technical support will be provided on the 800 number.
  72.  
  73. LIMITED WARRANTY
  74.  
  75. MAXX DATA SYSTEMS, INC. (MAXX DATA) WARRANTS THAT THE DISKETTE
  76. AND DOCUMENTATION ARE FREE OF PHYSICAL DEFECTS IN MATERIALS AND
  77. WORKMANSHIP UNDER NORMAL USE FOR A PERIOD OF 30 DAYS FROM THE
  78. DATE OF PURCHASE.  IF YOU NOTIFY MAXX DATA WITHIN THE WARRANTY
  79. PERIOD OF ANY PHYSICAL DEFECTS IN MATERIAL OR WORKMANSHIP AND
  80. RETURN THE DEFECTIVE PRODUCT, MAXX DATA WILL REPLACE THE
  81. DEFECTIVE DISKETTE OR DOCUMENTATION.  REPLACEMENT OF PHYSICALLY
  82. DEFECTIVE MATERIALS CONSTITUTES THE ENTIRE REMEDY FOR BREACH OF
  83. THIS WARRANTY, AND MAXX DATA SHALL NOT BE LIABLE FOR ANY OTHER
  84. DAMAGES, INCLUDING, BUT NOT LIMITED TO, LOSS OF PROFIT, AND
  85. SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGE CLAIMS.
  86.  
  87. OTHER THAN THE WARRANTIES AGAINST PHYSICAL DEFECTS SET OUT ABOVE,
  88. THERE ARE NO WARRANTIES, EXPRESS OR IMPLIED WHICH EXTEND BEYOND
  89. THE FACE OF THIS DOCUMENT AND MAXX DATA SPECIFICALLY DISCLAIMS
  90. ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED
  91. TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
  92. PARTICULAR PURPOSE.  PURCHASER IS SOLELY RESPONSIBLE FOR
  93. DETERMINIG THE DESIRED RESULTS FROM USE OF THE DISKETTE AND
  94. DOCUMENTATION, FOR EVALUATING THEIR CAPABILITIES AND FOR
  95. SUCCESSFULLY OPERATING THE PROGRAM.
  96.  
  97. THIS WARRANTY SHALL BE INTERPRETED UNDER THE LAWS OF THE STATE OF TEXAS.
  98.  
  99. THE PURCHASER AGREES THAT ANY CLAIM, CONTROVERSY OR DISPUTE
  100. ARISING OUT OF OR RELATING TO THIS WARRANTY OR THE PERFORMANCE
  101. THEREOF WHICH CANNOT BE AMICABLY SETTLED SHALL BE RESOLVED
  102. EXCLUSIVELY BY A PROCEEDING IN A COURT IN DALLAS COUNTY, TEXAS
  103. AND PURCHASER IRREVOCABLY ACCEPTS THE JURISDICTION OF THE COURTS
  104. OF THE STATE OF TEXAS AND THE FEDERAL COURTS LOCATED IN DALLAS
  105. COUNTY, TEXAS FOR SUCH CLAIMS, CONTROVERSIES OR DISPUTES.
  106.  
  107. Maxx Data and Maxx Data TurboMenu are trademarks of Maxx Data
  108. Systems, Inc.  Other brand and product names are trademarks or
  109. Page 3registered trademarks of their respective holders.
  110.  
  111. Copyright 1989 Maxx Data Systems, Inc.
  112.  
  113. GENERAL DESCRIPTION AND INFORMATION
  114.  
  115.     The Maxx Data TurboMenu system is based on a linked list type 
  116. structure with a header block used for tracking.  Information that 
  117. is common to the whole menu,such as color or shadow information, 
  118. is held within the header block.  Data that is specific to an option, 
  119. such as theoption output string, is held within a node of the list.  
  120. This dynamic structure makes it possible for the configuration of a
  121. menu to be changed at run-time.
  122.     Due to the nature of the menu structure, commands have to be
  123. given in a certain order.  The first command given is always
  124. InitMenu or SetUpMenu.  The InitMenu command initializes the data
  125. structure in preparation for your menu definition.  The SetUpMenu
  126. command initializes the data structure too, but it also defines
  127. the number of options, the screen mode of the menu, and loads the
  128. text into the menu.  All of these things can be done with single
  129. commands, SetUpMenu just does them for you.  The command set for
  130. the Maxx Data TurboMenu system can be broken down into three 
  131. categories. The first is commands that have to be given before the 
  132. menu is built.  The second is commands that can be given at any time. 
  133. The third is commands that have to be given after the menu is
  134. built.  These commands are listed in the categories below.
  135.  
  136.     Before            After            Anytime
  137.  
  138.     InitMenu            SetMenuOptionCode    SetMenuRect
  139.     SetMenuOptions        SetMenuText        SetMenuColors
  140.     SetUpMenu            SetMenuSpacing        SetMenuShadow
  141.                                     SetMenuSpaces
  142.                                     FreeList
  143.  
  144.     The commands listed above are used to define the menus for
  145. an application.  The remaining commands are used to display,
  146. control and track the menus in the application.  There are three
  147. display commands: OpenMenu, CloseMenu, and Invert.  There are two
  148. control commands: MoveCursor and JumpCursor.  There are two
  149. tracking commands: MenuBackOut and MenuToggle.  The tracking is
  150. done by means of two global variables declared in the menu unit. 
  151. They are: MenuList, an array of pointers to menus, and MenuNum,
  152. which tracks the current open menu and the number of open menus.
  153.     The automatic tracking does not have to be used but
  154. simplifies things if it is.  When a menu is opened it is added to
  155. the MenuList and MenuNum is incremented.  The first menu opened
  156. assigns the value zero to MenuNum.  This menu is considered the
  157. main menu from that point on.  The identifier MenuList[MenuNum]^
  158. marks the current menu.  If this identifier is passed to the
  159. MoveCursor or JumpCursor procedures the menu affected will always
  160. be the current menu.  MenuBackOut closes the current menu and
  161. resets the next higher menu to active.  The menuToggle command
  162. closes all menus but the main menu.
  163. Page 4    To use the Maxx Data TurboMenu system simply load the menu 
  164. unit to your hard disk or your unit floppy.  Include the menu 
  165. directory in your Pascal directories setup.  Include the menu 
  166. unit in the Uses statement of your program.  Menu variables are 
  167. declared of type MenuType.
  168.  
  169.  
  170. REFERENCE GUIDE - Menu Unit
  171.  
  172. Procedure CursorOn;
  173.  
  174.     The CursorOn command enables the flashing text cursor if it
  175. has been turned off;
  176.  
  177.  
  178. Procedure CursorOff;
  179.  
  180.     This procedure disables the flashing cursor on text screens.  This 
  181. command is useful when you want to write something to the screen
  182. without the cursor appearing.
  183.  
  184.  
  185. Procedure Invert(Name : MenuType);
  186.  
  187.     This is the routine used to invert or highlight the
  188. currently active option in a menu.
  189.  
  190.  
  191. Procedure InitMenu(Var Name : MenuType; Mode : Boolean);
  192.  
  193.     The InitMenu procedure initializes the menu data structure
  194. using the default values for menus and defines the screen mode
  195. of the menu, either text or graphics.  Two constants are defined
  196. for use with this command.  The constants are shown below with
  197. the example.
  198.  
  199. Ex:
  200.    Const
  201.      TextMenu  = False;
  202.      GraphMenu = True;
  203.  
  204.    Var MainMenu : MenuType;
  205.  
  206.    Begin
  207.      InitMenu(MainMenu,GraphMenu);
  208.    End;
  209.  
  210.  
  211. Procedure BuildMenu(Var Name : MenuType);
  212.  
  213.     The BuildMenu command builds the list structure the menu
  214. system is based on.  This command is necessary before many others
  215. can be used.
  216.  
  217.  
  218. Page 5Procedure FreeList(Var Name : MenuType);
  219.  
  220.     This command releases the memory used by the menu.  This
  221. allows you to dispose of a menu that is no longer going to be used.
  222.  
  223.  
  224.  
  225. Procedure SetMenuRect(Var Name : MenuType; X1,Y1,X2,Y2 : Integer);
  226.  
  227.     The menu rectangle is automatically calculated in the
  228. SetMenuSpacing command.  You may wish to override these
  229. coordinates with some of your own.  Be very careful how you alter
  230. these values.  The OpenMenu command accepts an (X,Y) coordinate
  231. to position the upper left corner of the menu at.  If you change
  232. the X1,Y1 coordinates from 0,0 the offset will change
  233. accordingly.  For instance, if you change the X1,Y1 values to
  234. 25,25 and try to open the menu at 25,25 the menu will actually
  235. open at screen location 50,50.  Another thing to be aware of is
  236. that if you are depending on the automatic calculation of the
  237. spacing within the menu, do not change the menu rectangle values. 
  238. The spacing of the option strings will not recalculate to match
  239. the new rectangle coordinates.  An example is shown of the
  240. possible use for the SetMenuRect command.  In this instance a
  241. horizontal menu has been calculated for use as a main menu bar. 
  242. The calculations did not stretch the menu all the way across the
  243. screen though.  Here is how to correct that, without altering
  244. anything important.
  245.  
  246. Ex: 
  247.    Var MainMenu : MenuType;
  248.  
  249.    Begin
  250.      SetMenuSpacing(MainMenu);
  251.      SetMenuRect(MainMenu,MenuMinX(MainMenu),MenuMinY(MainMenu),
  252.                           GetMaxX - 1,MenuMaxY(MainMenu));
  253.    End;
  254.  
  255.  
  256. Procedure SetMenuColors(Var Name : MenuType; Fore,Back : Byte);
  257.  
  258.     This command sets the foreground and background colors of the
  259. menu.  The border and text are drawn in the foreground color and
  260. the menu rectangle is filled in the background color.
  261.  
  262. Ex:
  263.    Var MainMenu : MenuType;
  264.  
  265.    Begin
  266.      SetMenuColors(MainMenu,Black,LightBlue);
  267.    End;
  268.  
  269.  
  270. Procedure SetMenuOptions(Var Name : MenuType; OptionsX,OptionsY : Byte);
  271.  
  272. Page 6    The menu system must know how many options in any direction
  273. the menu will have.  This command is very important since it not
  274. only tells the system how many options will be needed, but also
  275. derives from those values the direction and dimensional size of
  276. the menu.
  277.  
  278. Ex:
  279.    Var MainMenu : MenuType;
  280.  
  281.    Begin
  282.      SetMenuOptions(MainMenu,5,0);  { Defines a one dimensional, 
  283.                                       horizontal menu }
  284.      
  285.      SetMenuOptions(MainMenu,0,5);  { Defines a one dimensional,
  286.                                       vertical menu }
  287.  
  288.      SetMenuOptions(MainMenu,5,5);  { Defines a two dimensional
  289.                                       menu }
  290.    End.
  291.  
  292.  
  293. Procedure SetMenuOptionCode(Var Name : MenuType; X,Y,Code : Integer);
  294.  
  295.     Since the menu system is based on the concept of integer
  296. return codes the programmer must have a means of assigning these
  297. integer codes to the menu options.  The SetMenuOptionCode command
  298. does the trick.  By passing the procedure the menu, the X,Y
  299. location of the option, and the code to be assigned the option
  300. you can assign the necessary return codes.
  301.  
  302. Ex:
  303.    Var MainMenu : MenuType;
  304.        I        : Integer;
  305.  
  306.    Begin
  307.      For I := 1 to OptionsX(MainMenu) do
  308.        SetMenuOptionCode(MainMenu,I,0,100 + I);
  309.    End;
  310.  
  311.  
  312. Procedure SetMenuShadow(Var Name : MenuType; Shadow,ShadowColor : Byte);
  313.  
  314.     The menu system supports shadowing of the menu rectangles. 
  315. The Shadow parameter defines the direction of the shadow and the
  316. ShadowColor parameter defines the color of the shadow.  The
  317. following constants are defined for assigning the shadow direction:
  318.  
  319.    NoShadow         = 0;
  320.    ShadowUpperLeft  = 1;
  321.    ShadowUpperRight = 2;
  322.    ShadowLowerLeft  = 3;
  323.    ShadowLowerRight = 4;
  324.  
  325.  
  326. Page 7Procedure SetMenuText(Var Name : MenuType; Var Text);
  327.  
  328.     This procedure takes the strings listed in an array and
  329. loads them into the menu.  The Text parameter is untyped so that
  330. the procedure can accept both one and two dimensional arrays to
  331. support both type of menus.  The predeclared types of OneList
  332. and TwoList are used to define the option list for the menu system.
  333. The OneList type is used to define string lists for one
  334. dimensional menus and the TwoList array is used to define the
  335. lists for two dimensional menus. This command can only be given
  336. after the BuildMenu command.
  337.  
  338. Ex:
  339.    Var Options  : OneList;
  340.        MainMenu : MenuType;
  341.  
  342.    Begin
  343.      BuildMenu(MainMenu);
  344.      Options[1] := 'File';
  345.      Options[2] := 'Mode';
  346.      Options[3] := 'Edit';
  347.      Options[4] := 'Print';
  348.      Options[5] := 'Options';
  349.      SetMenuText(MainMenu,Options);
  350.    End;
  351.  
  352.  
  353. Procedure SetMenuSpaces(Var Name : MenuType; X,Y : Byte);
  354.  
  355.     The SetMenuSpaces procedure changes the value of the spacing 
  356. constants used to calculate the size of the menu rectangle and
  357. the location of the text strings.
  358.  
  359.  
  360. Procedure SetMenuSpacing(Var Name : MenuType);
  361.  
  362.     This command actually does the spacing calculations and sets
  363. the location for the inversion rectangles.
  364.  
  365.  
  366. Procedure JumpCursor(Var Name : MenuType; Location : Byte);
  367.  
  368.     The JumpCursor command allows you to jump to the first or
  369. last options in a menu.  A good example is to program the Home
  370. and End keys to jump to the beginning and end of the menu.  Two
  371. constants are defined for use in this command.
  372.  
  373.    Const
  374.      First = 1;
  375.      Last  = 2;
  376.  
  377.  
  378. Procedure MoveCursor(Var Name : MenuType; Direction : Byte);
  379.  
  380. Page 8    This command moves you through a menu on the screen.  The
  381. direction parameter defines which way the inversion rectangle
  382. will move.  The command is defined such that no horizontal
  383. movement is allowed on a vertical menu, and vice versa. 
  384. Direction constants are defined for use with this procedure.
  385.  
  386.    Const
  387.      Left  = 1;
  388.      Right = 2;
  389.      Up    = 3;
  390.      Down  = 4;
  391.  
  392.  
  393. Procedure OpenMenu(Var Name : MenuType; X,Y : Integer);
  394.  
  395.     The OpenMenu command opens a menu on the screen with the
  396. upper left corner at the X,Y coordinates.
  397.  
  398.  
  399. Procedure CloseMenu(Var Name : MenuType);
  400.  
  401.     Closes the specified menu and restores the previous image to
  402. the screen.
  403.  
  404.  
  405. Procedure MenuBackOut(Var List : MenuList);
  406.  
  407.     This command will close a sub-menu and set the next higher
  408. menu active.  This command is designed for use with the Escape
  409. key to back out of sub-menus to the main menu.
  410.  
  411.  
  412. Procedure MenuToggle;
  413.  
  414.     The MenuToggle command closes all sub-menus and resets the
  415. main menu to the active menu.
  416.  
  417.  
  418.  
  419. Function ScreenMode : Boolean;
  420.  
  421.     Returns a True for graphics mode and a False for text mode.
  422.  
  423.  
  424. Function MenuMouse(Var List : MenuList; X,Y : Integer) : Integer;
  425.  
  426.     Performs automatic menu tracking of the mouse.  Returns the
  427. integer code of an option if cursor is in an option rectangle.
  428.  
  429.  
  430. Function ReturnCode(Name : MenuType) : Integer;
  431.  
  432.     Returns the integer code of the current option.
  433.  
  434.  
  435. Page 9Function MenuMinX(Name : MenuType) : Integer;
  436.  
  437.     Returns the X coordinate of the upper left corner of the
  438. menu rectangle.
  439.  
  440.  
  441. Function MenuMinY(Name : MenuType) : Integer;
  442.  
  443.     Returns the Y coordinate of the upper left corner of the
  444. menu rectangle.
  445.  
  446.  
  447. Function MenuMaxX(Name : MenuType) : Integer;
  448.  
  449.     Returns the X coordinate of the lower right corner of the
  450. menu rectangle.
  451.  
  452.  
  453. Function MenuMaxY(Name : MenuType) : Integer;
  454.  
  455.     Returns the Y coordinate of the lower right corner of the
  456. menu rectangle.
  457.  
  458.  
  459. Function OptMinX(Name : MenuType) : Integer;
  460.  
  461.     Returns the X coordinate of the upper left corner of the
  462. current option rectangle.
  463.  
  464.  
  465. Function OptMinY(Name : MenuType) : Integer;
  466.  
  467.     Returns the Y coordinate of the upper left corner of the
  468. current option rectangle.
  469.  
  470.  
  471. Function OptMaxX(Name : MenuType) : Integer;
  472.  
  473.     Returns the X coordinate of the lower right corner of the
  474. current option rectangle.
  475.  
  476.  
  477. Function OptMaxY(Name : MenuType) : Integer;
  478.  
  479.     Returns the Y coordinate of the lower right corner of the
  480. current option rectangle.
  481.  
  482.  
  483. Function MenuSpacesX(Name : MenuType) : Integer;
  484.  
  485.     Returns the horizontal spacing value used by the
  486. SetMenuSpacing procedure's calculations.
  487.  
  488.  
  489. Page 10Function MenuSpacesY(Name : MenuType) : Integer;
  490.  
  491.     Returns the vertical spacing value used by the
  492. SetMenuSpacing procedure's calculations.
  493.  
  494.  
  495. Function MenuForeColor(Name : MenuType) : Integer;
  496.  
  497.     Returns the foreground color for the menu.
  498.  
  499.  
  500. Function MenuBackColor(Name : MenuType) : Integer;
  501.  
  502.     Returns the background color for the menu.
  503.  
  504.  
  505. Function MenuShadow(Name : MenuType) : Integer;
  506.  
  507.     Returns the shadow direction for the menu.
  508.  
  509.  
  510. Function MenuShadowColor(Name : MenuType) : Integer;
  511.  
  512.     Returns the color of the shadow for the menu.
  513.  
  514.  
  515. Function MenuActive(Name : MenuType) : Integer;
  516.  
  517.     Returns true if the current option is the active highlight
  518. on the screen.
  519.  
  520.  
  521. Function MenuDirection(Name : MenuType) : Integer;
  522.  
  523.     Returns the direction, horizontal or vertical, of one
  524. dimensional menus.
  525.  
  526.  
  527. Function MenuString(Name : MenuType) : String;
  528.  
  529.     Returns the output string of the current option.
  530.  
  531.  
  532. Function MenuDimensions(Name : MenuType) : Boolean;
  533.  
  534.     Returns False for one dimensional menu and True for a two
  535. dimensional menu.
  536.  
  537.  
  538. Function MenuOpen(Name : MenuType) : Boolean;
  539.  
  540.     Returns true if the menu is open on the screen.
  541.  
  542.  
  543. Page 11Function MenuMode(Name : MenuType) : Boolean;
  544.  
  545.     Returns False for a text menu and True for a graphics menu.
  546.  
  547.  
  548. Function OptionsX(Name : MenuType) : Integer;
  549.  
  550.     Returns the number of options in the horizontal direction.
  551.  
  552. Function OptionsY(Name : MenuType) : Integer;
  553.  
  554.     Returns the number of options in the vertical direction.
  555.  
  556.  
  557. REFERENCE GUIDE - Mouse Unit
  558.  
  559. Procedure ResetMouse;
  560.  
  561.     This procedure initializes the mouse and resets its position 
  562. to the center of the screen.  It also checks to see if the mouse is 
  563. installed and sets the global variable MouseExists true if the mouse 
  564. is installed.
  565.  
  566.  
  567. Procedure ShowMouse;
  568.  
  569.     Activates the mouse cursor on the screen and makes it visible.
  570.  
  571. Procedure HideMouse;
  572.  
  573.     Makes the mouse cursor invisible on the screen.
  574.  
  575. Procedure ReadMouse(Var Mouse : MouseType);
  576.  
  577.     Checks the position and button status of the mouse and loads
  578. the information into the MouseType record.  The type definition
  579. of MouseType is :
  580.  
  581.    Type MouseType = Record
  582.                       Buttons : 0..7;
  583.                       Count,
  584.                       Column,
  585.                       Row     : Integer;
  586.                     End;
  587.  
  588. Procedure MoveMouse(Column,Row : Integer);
  589.  
  590.     Moves the mouse cursor to the specified location on the screen.
  591.  
  592. Procedure Released(Button : Integer; Var Mouse : MouseType);
  593.  
  594.     Returns the numbers of times the specified button has been
  595. released in the Count field of the MouseType parameter.
  596.  
  597. Procedure SetXRange(XMin,XMax : Integer);
  598.  
  599.     Limits the operational range of the mouse cursor along the 
  600. X axis. 
  601.  
  602. Procedure SetYRange(Ymin,YMax : Integer);
  603.  
  604.     Limits the operational range of the mouse cursor along the
  605. Y axis.
  606.  
  607. Procedure TextCursor(CursorType,P1,P2 : Integer);
  608.  
  609.     This allows you to change the default text mouse cursor or,
  610. assume control of the hardware cursor.  P1 is the screen mask.
  611. It should have the value 77FFh if the cursor is a see through
  612. rectangle, and 0000h if the cursor uses one of the 256 characters
  613. as its shape.  P2 defines the cursor.  The high order byte of the
  614. parameter holds the foreground/background attribute byte and the 
  615. low order byte holds the ASCII value of the character.  For an
  616. independent cursor CursorType must be set to 0.  If the CursorType
  617. is set to 1 then the mouse simply assumes control of the hardware
  618. cursor.
  619.  
  620. Procedure LPenOn;
  621.  
  622.     Activates a light pen emulation.
  623.  
  624. Procedure LPenOff;
  625.  
  626.     Disable the light pen emulation.
  627.  
  628. Procedure GraphRatio(X,Y : Integer);
  629.  
  630.     Sets the motion to pixel ratio.  Defines the number of pixels 
  631. moved per mickey or 1/100 of an inch.
  632.  
  633.