'===========================================================================
' Subject: MOUSE AND JOYSTICK ROUTINES        Date: 07-12-99 (19:10)       
'  Author: Daryl Dubbs                        Code: QB, QBasic, PDS        
'  Origin: www.wcnet.org/~royals/qbasic/    Packet: MOUSE.ABC
'===========================================================================
'Original coding by Daryl Dubbs
'
'Recoded and restructured by:
'
'Kevin Wolfe from...
'
'gkSoftware
'   Finance Head
'   Developer/Production Specialist
'   Advertisement Head
'
'gk_software@yahoo.com
'http://www.geocities.com/SiliconValley/Lab/5335
'
'
'CHECK IT OUT!!! HERE BEGINS THE PROGRAM!!!
'
'
'Mouse (which)
'      0 = Mouse Init
'      1 = Mouse Driver
'      2 = Mouse Put
'      3 = Mouse Status
'      4 = Mouse Hide
'      5 = Mouse Show
'
DECLARE SUB Mouse (which!)
DECLARE SUB STICKS ()
DIM SHARED mouser$, JoyXPos, JoyYPos, but1%, but2%, but3%, but4%, MouseLeftButton, MouseRightButton, MouseXPos, MouseYPos, AX%, bx%, cx%, dx%
SCREEN 12

Mouse 0

CLS

DO

'Mouse Routines
Mouse 3
LOCATE 2, 1
PRINT "Mouse       "
PRINT "        Left Button :"; MouseLeftButton
PRINT "        Right Button:"; MouseRightButton
PRINT "        X Position:"; MouseXPos
PRINT "        Y Position:"; MouseYPos
PRINT
PRINT

'Joystick Routines (Beware, they slow your program down alot!)
'                  (Plus a calibration program needs to be build)
'                  (I don't have enough time to do it!)

STICKS
PRINT "Joystick    "
PRINT "        Button 1:"; but1%
PRINT "        Button 2:"; but2%
PRINT "        Button 3:"; but3%
PRINT "        Button 4:"; but4%
PRINT "        X Position:"; JoyXPos
PRINT "        Y Position:"; JoyYPos

LOOP





DATA 55,89,E5,8B,5E,0C,8B,07,50,8B,5E,0A,8B,07,50,8B
DATA 5E,08,8B,0F,8B,5E,06,8B,17,5B,58,1E,07,CD,33,53
DATA 8B,5E,0C,89,07,58,8B,5E,0A,89,07,8B,5E,08,89,0F
DATA 8B,5E,06,89,17,5D,CA,08,00

SUB Mouse (which)
'0 = Mouse Init
'1 = Mouse Driver
'2 = Mouse Put
'3 = Mouse Status
'4 = Mouse Hide
'5 = Mouse Show
IF which = 0 THEN
  mouser$ = SPACE$(57)
  FOR I% = 1 TO 57
    READ A$
    H$ = CHR$(VAL("&H" + A$))
    MID$(mouser$, I%, 1) = H$
  NEXT I%
  AX% = 0
  bx% = 0
  cx% = 0
  dx% = 0
  Mouse 1
  MouseInit% = AX%
  Mouse 5
END IF
IF which = 1 THEN
  DEF SEG = VARSEG(mouser$)
  mouser% = SADD(mouser$)
  CALL Absolute(AX%, bx%, cx%, dx%, mouser%)
END IF
IF which = 2 THEN
  AX% = 4
  cx% = X%
  dx% = Y%
  bx% = 0
  Mouse 1
END IF
IF which = 3 THEN
  AX% = 3
  Mouse 1
  MouseLeftButton = ((bx% AND 1) <> 0)
  MouseRightButton = ((bx% AND 2) <> 0)
  MouseXPos = cx%
  MouseYPos = dx%
END IF
IF which = 4 THEN
 AX% = 2
 bx% = 0
 cx% = 0
 dx% = 0
 Mouse 1
END IF
IF which = 5 THEN
  AX% = 1
  bx% = 0
  cx% = 0
  dx% = 0
  Mouse 1
END IF
END SUB

SUB STICKS
JoyXPos = STICK(0)
JoyYPos = STICK(1)
but1% = STRIG(0)
but2% = STRIG(2)
but3% = STRIG(4)
but4% = STRIG(6)
END SUB

