'$INCLUDE: 'QB.BI'
'$INCLUDE: 'MOUSE.BI'
TYPE MouseFlagsType
	Active AS INTEGER
	button AS INTEGER
	Cursor AS INTEGER
END TYPE
DIM SHARED MouseFlags AS MouseFlagsType
CONST NoArg = 0
CONST FALSE = 0
CONST TRUE = NOT FALSE

'MouseBorder SUB PROGRAM
'
'
'      (Quick Library) MOUSE.QLB
'      (INCLUDE FILE)  QB.BI, MOUSE.BI
'
SUB MouseBorder (row1%, col1%, row2%, col2%)
	IF MouseReady% = FALSE THEN ERROR 68
	MouseDriver 7, NoArg, col1%, col2%  '
											 
	MouseDriver 8, NoArg%, row1%, row2%
											 
END SUB

'MouseDriver SUB PROGRAM
'
'
'     (Quick Library) MOUSE.QLB
'      (INCLUDE FILE)  QB.BI, MOUSE.BI
'
SUB MouseDriver (M0%, M1%, M2%, M3%)
	DIM inreg AS RegType
	DIM outreg AS RegType
	inreg.ax = M0%
	inreg.bx = M1%
	inreg.cx = M2%
	inreg.dx = M3%
	INTERRUPT &H33, inreg, outreg
	M0% = outreg.ax
	M1% = outreg.bx
	M2% = outreg.cx
	M3% = outreg.dx
END SUB

'MouseHide SUB PROGRAM
'
'
'      (Quick Library) MOUSE.QLB
'      (INCLUDE FILE)  QB.BI, MOUSE.BI
'
SUB MouseHide
	IF MouseReady% = FALSE THEN ERROR 68
	IF MouseFlags.Cursor THEN
		MouseDriver 2, NoArg, NoArg, NoArg
		MouseFlags.Cursor = FALSE
	END IF
END SUB

'MouseInit SUB PROGRAM
'
'
'      (Quick Library) MOUSE.QLB
'      (INCLUDE FILE)  QB.BI, MOUSE.BI
'
SUB MouseInit
	IF MouseReady% = FALSE THEN ERROR 68
	M0% = 0
	MouseDriver M0%, M1%, NoArg, NoArg
	MouseFlags.button = M1%
	MouseFlags.Active = TRUE
END SUB

'MouseLocate SUB PROGRAM
'
'
'      (Quick Library) MOUSE.QLB
'      (INCLUDE FILE)  QB.BI, MOUSE.BI
'
SUB MouseLocate (row%, col%)
	IF MouseReady% = FALSE THEN ERROR 68
	MouseDriver 4, NoArg, col%, row%
END SUB

'MouseMode SUB PROGRAM
'
'
'      (Quick Library) MOUSE.QLB
'      (INCLUDE FILE)  QB.BI, MOUSE.BI
'
'
SUB MouseMode (Func%)
	IF MouseReady% = FALSE THEN ERROR 68
	MouseHide
	IF Func% = FALSE THEN
		MouseInit
	ELSE
		CLS
		M0% = 10
		M1% = 0
		M2% = &H70FF
		M3% = &H500
		MouseDriver M0%, M1%, M2%, M3%
	END IF
END SUB

'MousePoll SUB PROGRAM
'
'
'      (Quick Library) MOUSE.QLB
'      (INCLUDE FILE)  QB.BI, MOUSE.BI
'
SUB MousePoll (row%, col%, lbutton%, rbutton%)
	IF MouseReady% = FALSE THEN ERROR 68
	MouseDriver 3, M1%, M2%, M3%
	row% = M3%
	col% = M2%
	lbutton% = (M1% AND 1) <> 0
	rbutton% = (M1% AND 2) <> 0
END SUB

'MousePush SUB PROGRAM
'
'
'      (Quick Library) MOUSE.QLB
'      (INCLUDE FILE)  QB.BI, MOUSE.BI
'
SUB MousePush (button%, row%, col%, lbutton%, rbutton%)
	IF MouseReady% = FALSE THEN ERROR 68
	M0% = 5
	M1% = button%
	MouseDriver M0%, M1%, M2%, M3%
	lbutton% = (M0% AND 1) = 1
	rbutton% = (M0% AND 2) = 2
	button% = M1%
	col% = M2%
	row% = M3%
END SUB

'
'      (Quick Library) MOUSE.QLB
'      (INCLUDE FILE)  QB.BI, MOUSE.BI
FUNCTION MouseReady% STATIC
	IF NotFirstCall% THEN
	   MouseReady% = NotFirstCall%
	ELSE
		M0% = 0
		MouseDriver M0%, M1%, NoArg, NoArg
		MouseFlags.button = M1%
		MouseReady% = (M0% <> 0)
		NotFirstCall% = (M0% <> 0)
	END IF
END FUNCTION

'MouseRelease SUB PROGRAM
'
'
'      (Quick Library) MOUSE.QLB
'      (INCLUDE FILE)  QB.BI, MOUSE.BI
'
SUB MouseRelease (button%, row%, col%, lbutton%, rbutton%)
	IF MouseReady% = FALSE THEN ERROR 68
	M0% = 6
	M1% = button%
	MouseDriver M0%, M1%, M2%, M3%
	lbutton% = (M0% AND 1) = 1
	rbutton% = (M0% AND 2) = 2
	button% = M1%
	col% = M2%
	row% = M3%
END SUB

'MouseShow SUB PROGRAM
'
'      (Quick Library) MOUSE.QLB
'      (INCLUDE FILE)  QB.BI, MOUSE.BI
'
SUB MouseShow
	IF MouseReady% = FALSE THEN ERROR 68
	IF NOT MouseFlags.Cursor THEN
		MouseDriver 1, NoArg, NoArg, NoArg
		MouseFlags.Cursor = NOT FALSE
	END IF
END SUB