'>>> Page 6 of CODE0398.FAQ begins here.
DATA 6C,08,8B,44,0E,25,D5,0F,50,8B
DATA 04,8B,5C,02,8B,4C,04,8B,54,06
DATA 8B,7C,0C,FF,74,0A,81,7C,12,FF
DATA FF,74,03,8E,44,12,81,7C,10,FF
DATA FF,74,03,8E,5C,10,5E,9D,CD,00
DATA 55,8B,EC,9C,83,C5,0E,F6,46,FE
DATA 02,74,02,45,45,1E,56,8E,5E,FC
DATA 8B,76,08,89,04,89,5C,02,89,4C
DATA 04,89,54,06,8F,44,0A,89,7C,0C
DATA 8F,44,10,8C,44,12,8F,44,0E,8F
DATA 44,08,F6,46,FE,02,74,02,44,44
DATA 9D,5F,5E,07,1F,58,5D,CA,08,00
'---------------------------------------------------------------
' Example: get current video mode
'---------------------------------------------------------------
DIM r AS RegTypeX
r.ax = &HF00
InterruptX &H10, r, r
VideoMode = (r.ax AND &HFF)
PRINT "Video mode is "; VideoMode
END
SUB InterruptX (IntNo AS INTEGER, Inreg AS RegTypeX, OutReg AS_
RegTypeX) STATIC
'---------------------------------------------------------------
' Interrupt procedure. Works in the same way as its QB 4.5
' counterpart.
'---------------------------------------------------------------
IF NOT MachineCode% THEN
' First time dimension string array to hold machine code
RESTORE InterruptXASM
READ nASMBYTES%
REDIM ASMBuffer(0 TO nASMBYTES% - 1) AS STRING * 1
END IF
' Get address of machine code
DEF SEG = VARSEG(ASMBuffer(0))
Offset% = VARPTR(ASMBuffer(0))
IF NOT MachineCode% THEN
' First time load string array with machine code
FOR i% = 0 TO nASMBYTES% - 1
READ Code$
POKE Offset% + i%, VAL("&H" + Code$)
NEXT i%
' Indicate availability of machine code
MachineCode% = TRUE
END IF
' Call interrupt.
' The first Offset% parameter is used by the machine code
' modifying it self, so don't leave it out.
CALL ABSOLUTE(IntNo%, Inreg, OutReg, Offset%, Offset%)
DEF SEG
END SUB
[end]
6) HOW DO I USE THE MOUSE IN QB?
The most common (and most universal) approach is through
INTERRUPTs. Using INTERRUPT 33h, the following code will allow
you to use a mouse in your programs. Code by David Aukerman
with the idea for limited mouse movement by Dave Shea. Public
domain; use at your own risk!
[begin]
'$INCLUDE: 'qb.bi' 'these three lines go at the
DEFINT A-Z 'beginning of your program..
DIM SHARED HMin, HMax, VMin, VMax 'horiz. and vert. limits
SUB Mouse (cx, dx, bx)
DIM reg AS RegType
reg.ax = 3 'get coordinates
INTERRUPT &H33, reg, reg
bx = reg.bx '1=left button; 2=right; 3=both
'(on a two button mouse)
cx = reg.dx 'horizontal coordinate in *pixels*
dx = reg.cx 'vertical coordinate in *pixels*
END SUB
'>>> Page 6 of CODE0398.FAQ ends here. Continued on next page.
___
* SLMR 2.0 * I typed "FORMAT COM1" and killed a telephone operator!
--- Maximus/2 3.01
---------------
* Origin: The I.O. Board - 4GB -XX- V34+ (1:2255/10)
|