--------------------------------------------------------------------------------
                                  MusClick.TXT
          The documentation below is for the .BIN file: MUSCLICK.BIN
          and is taken from the header for MusClick.ASM.
--------------------------------------------------------------------------------
       Programmers:    Jay Parsons (Jparsons)
                       and Ken Chan (HazMatZak)
       Inspiration:    Bowen Moursund (Bowen)
                       and the folks at BORBBS
       Date:           July 6, 1992
       Version:        1.1

      dBASE usage syntax, after LOAD musclick:

      cSuccess = call( "MUSCLICK", "I", [<arg2>] ) && install
      cSuccess = call( "MUSCLICK", "U" )           && uninstall

      store chr( 255 ) TO cMRow, cMCol
      call MUSCLICK with cMRow, cMCol              && report row, col
      nMRow = asc( cMRow )
      nMCol = asc( cMCol )

     A call with "I" must be made to install the alternate mouse
     event handler for this to work.  After that call, this .bin
     will push a Ctrl-PgUp, or the character specified in the optional
     <arg2> argument to the "I" call, into the BIOS buffer when
     the left mouse button is released.  The <arg2> character must be
     a chr() value from 1 to 254, or the argument may be a string
     composed of two chr() values, the first of which is chr(255) and
     the second of which is the chr() value of the second (high) byte
     of an extended code for a key or key combination that has no
     ASCII value.

     For example, a call with a second argument of chr(255) + chr(97)
     will stuff Ctrl-F4.  It is likely that you will want to use a
     key or key combination that has an inkey() and that works with
     ON KEY.  Note that the extended codes are always positive
     and not always the same as the inkey() values.

    The installation call will return "T" if successful, and "F" if not.

    If the BIOS buffer happens to be full when the mouse button is
    released, the click will go unreported, but the row and column
    will be updated.

    If you wish a default character different from Ctrl-PgUp, change
    the DEFAULTKEY value before assembly.  For an extended code,
    set it to the value of the second byte * 256 (100h).  The ESC key
    is the only key that will attract dBASE's attention in the middle
    of a dBASE operation such as "LIST" or "INDEX".  However, that
    operation will be cancelled if ESC is pressed, so consider what is
    going on and whether you want to have it recognize a click.

    Calls to get the row and column must have the first argument
    be chr(255), and must have a second argument.  Both MUST be variables.
    A call to find the row and column if no "I" call has been made,
    or no clicks have occurred, will return chr(255) for each.
    The row and column reported are those as of the last click, which are
    not necessarily those current at the time of the call.  They are
    determined by dividing the values in pixels reported by the mouse
    by 8 each and ignoring any remainder.

    After one call has been made to get the mouse row and column,
    subsequent calls to get the row and column will return chr(254) for
    each if no click has occurred since the previous call.  This allows
    the dBASE program to differentiate between actual keypresses
    and "keypresses" made by this routine to report mouse clicks.

    The recommended way to test for an actual mouse click is to see if the
    row value returned is below 200; all row values 200 and above are
    reserved for future expansion (only 254 and 255 are currently used).

    A call with "U" should be made to uninstall the alternate event
    handler before installing it with a different key, and also before
    ending the dBASE program for safety.  Repeated calls to install
    the handler without uninstalling it will overwrite the address of
    the dBASE handler and prevent restoring it.

    The dBASE mouse-event handler is disabled while the one in this
    .bin is installed.  Consequently, dBASE will not know of the
    current mouse position or click status, and calls to the .bins
    in the recent Technotes article, uploaded as MOUSE_FU.TXT, will
    not return correct information.  Use this .bin or those, but not
    both at once.

            Following are as specified by Microsoft for its mouse:

    Register usage on call of an alternate event handler

            AX = condition mask ( bits 0-4 set for events occurred )
            BX = button state   ( bit 0 set if left button pressed;
                                  bit 1 if right; bit 2, center.) <unused>
            CX = horizontal mouse cursor coordinate in pixels
            DX = vertical    "     "        "        "   "
            SI = last horizontal mickey count ( vertical? )   <unused>
            DI = last vertical mickey count   ( horizontal? ) <unused>
            DS = mouse driver data segment <unused>

    Event mask bits, 1 to respond to that event:
             0 = mouse has moved       ( value  1 )
             1 = left button pressed   ( value  2 )
             2 = left button released  ( value  4 )
             3 = right button pressed  ( value  8 )
             4 = right button released ( value 16 )

    Thus, if our handler were to be called whenever the mouse moved
    or either button were released, the mask would be 10101, or
    16 + 4 + 1, decimal value 21, rather than the 4 we use because
    we care only about release of the left button.

    If an event not specified in our event mask occurs, our handler
    will not be called at all.  If the left button is released, it
    will be called.  AX, the condition mask, will report all events
    that have occurred, not only the one specified in the event mask.

--------------------------------------------------------------------------------
End of File: MUSCLICK.TXT
--------------------------------------------------------------------------------
