PDA

View Full Version : ترسیم رد ماوس بر روی صفحه مانیتور



Developer Programmer
شنبه 29 آذر 1382, 22:23 عصر
این پروژه رو یکی از اساتید گفته بود

ماوس رو روی صفحه مانیتور حرکت بدیم و تمام پیکسلهای زیرین ماوس روشن بشند
اینطوری اگر ماوس مثلا حرکت L شکل داشته باشه باید حرف L روی مانیتور ظاهر شده باشه

Best Programmer
یک شنبه 07 دی 1382, 01:29 صبح
دوست عزیز آیا تحت ویندوز یا داس؟ اگر ویندوز میخوای برات مشکله ولی داس خیلی راحته!ثحت داس.....:
ax=1
int 33
ماوس میاد .
ax=3
int33
مکان فعلی ماوس را میدهد
برگشتی ها : درست یادم نیست ولی اگر اشتباه نکنم تو

bx =x
cx=y
al=click

Developer Programmer
یک شنبه 07 دی 1382, 11:42 صبح
البته که تحت سیستم عامل داس خواسته بود ...
در اسمبلی گفتن اینکه یک وقفه چی کار می کنه راحته ولی وقتی برنامه رو می نویسی سخت می شه مخصوصا که سیستم هنگ کنه

Best Programmer
یک شنبه 07 دی 1382, 12:26 عصر
ذوست عزیز int 33hساده ترین interrupt هسث و اصلا هنگ نداره.

B-Vedadian
دوشنبه 08 دی 1382, 09:23 صبح
با سلام،

نکته این که اگه تحت Dos خالص! کار می کنید حتما قبلا باید درایور موشواره را نصب کرده باشید. این درایور یک مقیم حافظه است و برنامه ای بجای وقفه 33 هگزا قرار می دهد.

برای اطمینان بیشتر باید قبل از مریی کردن نشانه موشواره تابع خاصی از وقفه 33 هگزا را فراخوانی کنید. مرجع کامل این وقفه در کتاب PC Intern وجود دارد.

Developer Programmer
دوشنبه 08 دی 1382, 10:10 صبح
پیکسل زیر ماوس رو چطوری روشن میکنین؟

B-Vedadian
شنبه 13 دی 1382, 10:27 صبح
با سلام،

برای روشن کردن پیکسل زیر موشواره حتما باید تو مود گرافیکی کار کنید بعدش دیگه کار زیادی نداره. کافیه با وقفه 10 سرویس 12 نقطه رو به رنگی غیر از پس زمینه تغییر بدین.


_AX=0x0C07;
_DX=Y;
_CX=X;
geninterrupt(0x10);

Developer Programmer
سه شنبه 16 دی 1382, 19:29 عصر
شرمنده فکر کنم این دستورات NASM است مگه نه ؟

Best Programmer
چهارشنبه 17 دی 1382, 05:20 صبح
یرای آوردن:


ASSUME CS:Programm

Programm SEGMENT PUBLIC
mov ax,1
int 33h
mov ah,4Ch
int 21h
Programm ENDS
END

برای از بین بردن:


ASSUME CS:Programm


Programm SEGMENT PUBLIC
mov ax,2
int 33h
mov ah,4Ch
int 21h
Programm ENDS
END

Best Programmer
چهارشنبه 17 دی 1382, 05:25 صبح
int 10h.
ah=0ch
al= رنگ مورد نظر.
bh=شماره صفحه
cx= ستون pixel
dx= سطر pixel

Best Programmer
چهارشنبه 17 دی 1382, 05:31 صبح
شرمنده فکر کنم این دستورات NASM است مگه نه ؟
نه فکر میکنم hla باشه

maryam206
چهارشنبه 17 دی 1382, 18:08 عصر
این دقیقا یکی از پروژه هایی هستش که ما باید روز امتحان به استادمون تحویل بدیم.سوال من اینه که چه طوری اون علامت فلش موس را در محیط اجرایی ظاهر کنیم؟
اگه کسی sourceکاملشو داره میشه لطف کنه و آن را در اینجا بیاره تا کاره ما آسان تر شود :oops:

Developer Programmer
چهارشنبه 17 دی 1382, 18:49 عصر
مریم جون حال کردی ؟ دیدی چی پرسیدم ؟

کدوم دانشگاهی؟ کدوم استاد ؟

Best Programmer
پنج شنبه 18 دی 1382, 13:53 عصر
بابا شماها دیگه چه نوابغی هستید بالاش که گفتم برای آوردی ماوس روی صفحه چی باید بکنید.

Best Programmer
جمعه 19 دی 1382, 11:22 صبح
اوه راستی شما میخواستید در مود گرافیکی کار کنید.
بد نیست کتاب :
کتاب مرجع برنامه نویسان سیستمهای PC
انتشارات ناقوس
Peter Norton , Peter Aitken , Wilton Richard
را بگیرید من این مطالب را از این کتاب اوردم.
البته کتاب بسیار عالی
Advanced Assembly
Peter Norton
را هم بگیرید .

B-Vedadian
یک شنبه 21 دی 1382, 10:41 صبح
با سلام،

اولا کد نوشته شده بخشی از زبان C بود! (<span dir=ltr>Geninterrupt(#) </span>و ... )

برای اسمبلی هم دستورات انتساب به ثبات ها و فراخوانی وقفه وجود دارد:


mov ax,0C07h
mov cx,25;25 is the column of pixel
mov dx,20;20 is the row
int 10h

سرویس 0C هگزای وقفه 10 هگزا در مدهای VESA با رزولوشن بزرگتر از 640X480 هم کار می کند.

دوماْ برای هرکاری که تحت DOS و بدون نوشتن درایور توسط خودتان بخواهید انجام دهید با وقفه 33 هگزا میتوانید کار کنید. مثلا سرویس شماره 0 این وقفه تست و ریست است که با این وسیله می توانید بفهمید آیا در حال حاضر موشواره به دستگاه متصل است یا خیر و سرویس 1 همین روشن کردن نشانگر موشواره و ... :



Quick Reference Guide to Interrupt 33h
--------------------------------------

FUNCTION&#58; AX = 0h
Description&#58; Determines whether a mouse is available and if it is
initializes the mouse driver.
Returns &#58; AX = Non-Zero &#40;If Mouse is installed, 0 if not&#41;
BX = Number of Mouse Buttons
FUNCTION&#58; AX = 1h
Description&#58; Increments the mouse cursor display counter.
Returns &#58; Nothing

FUNCTION&#58; AX = 2h
Description&#58; Decrements the mouse cursor display counter.
Returns &#58; Nothing

FUNCTION&#58; AX = 3h
Description&#58; Returns the current mouse position and button status.
Returns &#58; BX = Buttons status&#58;
Bit 0&#58; Left Button
Bit 1&#58; Right Button
Bit 2&#58; Center Button
CX = Horizontal Coordinate
DX = Vertical Coordinate

FUNCTION&#58; AX = 4h
Description&#58; Moves the mouse cursor to a certain position on the screen.
Call With &#58; CX = Horizontal Coordinate
DX = Vertical Coordinate
Returns &#58; Nothing

FUNCTION&#58; AX = 5h
Description&#58; Reports on the status and numbers of presses for a
button.
Call with &#58; BX = Button to Check
0 = Left Button
1 = Right Button
2 = Center Button
Returns &#58; AX = Button Status
Bit 0 = Left Button
Bit 1 = Right Button
Bit 2 = Center Button
BX = Button Press Counter
CX = Horizontal Coordinate of Last Button Press
DX = Vertical Coordinate of Last Button Press

FUNCTION&#58; AX = 6h
Description&#58; Gets the button release information.
Call With &#58; BX = Button to Query
0 = Left Button
1 = Right Button
2 = Center Button
Returns &#58; AX = Button Status&#40;1 if pressed&#41;
Bit 0 = Left Button
Bit 1 = Right Button
Bit 2 = Center Button
BX = Button Release counter
CX = Horizontal Coordinate of last button release
DX = Vertical Coordinate of last button release

FUNCTION&#58; AX = 7h
Description&#58; Sets the horizontal limits for the mouse cursor.
Calls With &#58; CX = Minimum horizontal mouse coordinate.
DX = Maximum horizontal mouse coordinate.

FUNCTION&#58; AX = 8h
Description&#58; Sets the vertical limits for the mouse cursor.
Call With &#58; CX = Minimum vertical mouse coordinate.
DX = Maximum vertical mouse coordinate.
Returns &#58; Nothing

FUNCTION&#58; AX = 9h
Description&#58; Defines the shape of the graphics mode cursor.
Call With &#58; BX = Hoorizontal hot spot offset
CX = Vertical hot spot offset
ES = Segment of buffer containing cursor mask
DX = Offset of buffer containing cusror mask

Returns &#58; Nothing

FUNCTION&#58; AX = 0Ah
Description&#58; Definesthe shape of the text mode cursor
Call With &#58; BX = Cursor Type
0 = Software Cursor
1 = Hardware cursor
if BX = 0 then
CX = Screen Mask value
DX = Cursor Mask Value
else
CX = Starting Scan Line For Cursor
DX = Ending Scan Line For Cursor

FUNCTION&#58; AX = 0Bh
Description&#58; Returns the net mouse movement since the last call
to this function&#40;or since the mouse was initialized&#41;.
Returns &#58; CX = Horizontal mouse movement&#40;in Mickeys&#41;
DX = Vertical mouse movement&#40;in Mickeys&#41;

FUNCTION&#58; AX = 0Ch
Description&#58; Sets the user defined mouse handler.
Call With &#58; CX = Event Mask

Bit If set
0 Mouse Cursor Movement
1 Left Button Pressed
2 Left Button Released
3 Right Button Pressed
4 Right Button Released
5 Center Button Pressed
6 Center Button Released

ES = Segment of your mouse handler code
DX = Offset of your mouse handler code
Returns &#58; AX = Event Mask
BX = Button Status&#40;1 if pressed&#41;
Bit 0 = Left Button
Bit 1 = Right Button
Bit 2 = Center Button
CX = Horizontal Coordinate
DX = Vertical Coordinate

FUNCTION&#58; AX = 2Ah
Description&#58; Returns display counter state, and current hot spot
Returns &#58; BX = Horizontal offset of hot spot
CX = Vertical offset of hot spot

نقل از صفحه وب آقای W.Disney به آدرس <span dir=ltr>http://www.geocities.com/SiliconValley/2151/mouse.html</span>

در ضمن این آدرس شامل اطلاعات برای کسانی که بخواهند خودشان برای موشواره درایور بنویسند نیز هست. اگه علاقه دارید حتما سر بزنید.

Best Programmer
یک شنبه 21 دی 1382, 16:19 عصر
با تشکر از دوستان چون دیدم که علاقه مندید این را اضافه کردم.
البته معمولا من در C از دستور ASM استفاده میکردم . تشکر که چیز جدیدی به من اضافه شد.


INT 33 - MS MOUSE - RESET DRIVER AND READ STATUS
AX = 0000h
Return&#58; AX = status
0000h hardware/driver not installed
FFFFh hardware/driver installed
BX = number of buttons
0000h other than two
0002h two buttons &#40;many drivers&#41;
0003h Mouse Systems/Logitech three-button mouse
FFFFh two buttons
Notes&#58; to use mouse on a Hercules-compatible monographics card in graphics
mode, you must first set 0040h&#58;0049h to 6 for page 0 or 5 for page 1,
and then call this function. Logitech drivers v5.01 and v6.00
reportedly do not correctly use Hercules graphics in dual-monitor
systems, while version 4.10 does.
the Logitech mouse driver contains the signature string "LOGITECH"
three bytes past the interrupt handler; many of the Logitech mouse
utilities check for this signature.
Logitech MouseWare v6.30 reportedly does not support CGA video modes
if no CGA is present when it is started and the video board is
later switched into CGA emulation
SeeAlso&#58; AX=0011h,AX=0021h,AX=002Fh,INT 62/AX=007Ah,INT 74
--------M-330001-----------------------------
INT 33 - MS MOUSE v1.0+ - SHOW MOUSE CURSOR
AX = 0001h
SeeAlso&#58; AX=0002h,INT 16/AX=FFFEh,INT 62/AX=007Bh,INT 6F/AH=06h"F_TRACK_ON"
--------M-330002-----------------------------
INT 33 - MS MOUSE v1.0+ - HIDE MOUSE CURSOR
AX = 0002h
Note&#58; multiple calls to hide the cursor will require multiple calls to
function 01h to unhide it.
SeeAlso&#58; AX=0001h,AX=0010h,INT 16/AX=FFFFh,INT 62/AX=007Bh
SeeAlso&#58; INT 6F/AH=08h"F_TRACK_OFF"
--------M-330003-----------------------------
INT 33 - MS MOUSE v1.0+ - RETURN POSITION AND BUTTON STATUS
AX = 0003h
Return&#58; BX = button status &#40;see #2358&#41;
CX = column
DX = row
Note&#58; in text modes, all coordinates are specified as multiples of the cell
size, typically 8x8 pixels
SeeAlso&#58; AX=0004h,AX=000Bh,INT 2F/AX=D000h"ZWmous"

Bitfields for mouse button status&#58;
Bit&#40;s&#41; Description &#40;Table 2358&#41;
0 left button pressed if 1
1 right button pressed if 1
2 middle button pressed if 1 &#40;Mouse Systems/Logitech/Genius&#41;
--------M-330004-----------------------------
INT 33 - MS MOUSE v1.0+ - POSITION MOUSE CURSOR
AX = 0004h
CX = column
DX = row
Note&#58; the row and column are truncated to the next lower multiple of the cell
size &#40;typically 8x8 in text modes&#41;; however, some versions of the
Microsoft documentation incorrectly state that the coordinates are
rounded
SeeAlso&#58; AX=0003h,INT 62/AX=0081h,INT 6F/AH=10h"F_PUT_SPRITE"
--------M-330005-----------------------------
INT 33 - MS MOUSE v1.0+ - RETURN BUTTON PRESS DATA
AX = 0005h
BX = button number &#40;see #2359&#41;
Return&#58; AX = button states &#40;see #2358&#41;
BX = number of times specified button has been pressed since last call
CX = column at time specified button was last pressed
DX = row at time specified button was last pressed
Note&#58; at least for the Genius mouse driver, the number of button presses
returned is limited to 7FFFh
SeeAlso&#58; AX=0006h,INT 62/AX=007Ch

&#40;Table 2359&#41;
Values for mouse button number&#58;
0000h left
0001h right
0002h middle &#40;Mouse Systems/Logitech/Genius mouse&#41;
--------M-330006-----------------------------
INT 33 - MS MOUSE v1.0+ - RETURN BUTTON RELEASE DATA
AX = 0006h
BX = button number &#40;see #2359&#41;
Return&#58; AX = button states &#40;see #2358&#41;
BX = number of times specified button has been released since last call
CX = column at time specified button was last released
DX = row at time specified button was last released
Note&#58; at least for the Genius mouse driver, the number of button releases
returned is limited to 7FFFh
SeeAlso&#58; AX=0005h,INT 62/AX=007Ch
--------M-330007-----------------------------
INT 33 - MS MOUSE v1.0+ - DEFINE HORIZONTAL CURSOR RANGE
AX = 0007h
CX = minimum column
DX = maximum column
Note&#58; in text modes, the minimum and maximum columns are truncated to the
next lower multiple of the cell size, typically 8x8 pixels
SeeAlso&#58; AX=0008h,AX=0010h,AX=0031h,INT 62/AX=0080h
SeeAlso&#58; INT 6F/AH=0Ch"F_SET_LIMITS_X"
--------M-330008-----------------------------
INT 33 - MS MOUSE v1.0+ - DEFINE VERTICAL CURSOR RANGE
AX = 0008h
CX = minimum row
DX = maximum row
Note&#58; in text modes, the minimum and maximum rows are truncated to the
next lower multiple of the cell size, typically 8x8 pixels
SeeAlso&#58; AX=0007h,AX=0010h,AX=0031h,INT 62/AX=0080h
SeeAlso&#58; INT 6F/AH=0Eh"F_SET_LIMITS_Y"
--------M-330009-----------------------------
INT 33 - MS MOUSE v3.0+ - DEFINE GRAPHICS CURSOR
AX = 0009h
BX = column of cursor hot spot in bitmap &#40;-16 to 16&#41;
CX = row of cursor hot spot &#40;-16 to 16&#41;
ES&#58;DX -> mask bitmap &#40;see #2360&#41;
Notes&#58; in graphics modes, the screen contents around the current mouse cursor
position are ANDed with the screen mask and then XORed with the
cursor mask
the Microsoft mouse driver v7.04 and v8.20 uses only BL and CL, so the
hot spot row/column should be limited to -128..127
Microsoft KnowledgeBase article Q19850 states that the high bit is
right-most, but that statement is contradicted by all other available
documentation
SeeAlso&#58; AX=000Ah,AX=0012h,AX=002Ah,INT 62/AX=007Fh,INT 6F/AH=0Ah"F_DEF_MASKS"

Format of mouse mask bitmap&#58;
Offset Size Description &#40;Table 2360&#41;
00h 16 WORDs screen mask
10h 16 WORDs cursor mask
Note&#58; each word defines the sixteen pixels of a row, low bit rightmost
--------M-33000A-----------------------------
INT 33 - MS MOUSE v3.0+ - DEFINE TEXT CURSOR
AX = 000Ah
BX = hardware/software text cursor
0000h software
CX = screen mask
DX = cursor mask
0001h hardware
CX = start scan line
DX = end scan line
Note&#58; when the software cursor is selected, the character/attribute data at
the current screen position is ANDed with the screen mask and then
XORed with the cursor mask
SeeAlso&#58; AX=0009h,INT 62/AX=007Eh
--------M-33000B-----------------------------
INT 33 - MS MOUSE v1.0+ - READ MOTION COUNTERS
AX = 000Bh
Return&#58; CX = number of mickeys mouse moved horizontally since last call
DX = number of mickeys mouse moved vertically
Notes&#58; a mickey is the smallest increment the mouse can sense
positive values indicate down/right
SeeAlso&#58; AX=0003h,AX=001Bh,AX=0027h
--------M-33000C-----------------------------
INT 33 - MS MOUSE v1.0+ - DEFINE INTERRUPT SUBROUTINE PARAMETERS
AX = 000Ch
CX = call mask &#40;see #2361&#41;
ES&#58;DX -> FAR routine &#40;see #2362&#41;
SeeAlso&#58; AX=0018h

Bitfields for mouse call mask&#58;
Bit&#40;s&#41; Description &#40;Table 2361&#41;
0 call if mouse moves
1 call if left button pressed
2 call if left button released
3 call if right button pressed
4 call if right button released
5 call if middle button pressed &#40;Mouse Systems/Logitech/Genius mouse&#41;
6 call if middle button released &#40;Mouse Systems/Logitech/Genius mouse&#41;
7-15 unused
Note&#58; some versions of the Microsoft documentation incorrectly state that CX
bit 0 means call if mouse cursor moves

&#40;Table 2362&#41;
Values interrupt routine is called with&#58;
AX = condition mask &#40;same bit assignments as call mask&#41;
BX = button state
CX = cursor column
DX = cursor row
SI = horizontal mickey count
DI = vertical mickey count
Notes&#58; some versions of the Microsoft documentation erroneously swap the
meanings of SI and DI
in text modes, the row and column will be reported as a multiple of
the character cell size, typically 8x8 pixels
--------M-33000D-----------------------------
INT 33 - MS MOUSE v1.0+ - LIGHT PEN EMULATION ON
AX = 000Dh
SeeAlso&#58; AX=000Eh,INT 10/AH=04h
--------M-33000E-----------------------------
INT 33 - MS MOUSE v1.0+ - LIGHT PEN EMULATION OFF
AX = 000Eh
SeeAlso&#58; AX=000Dh
--------M-33000F-----------------------------
INT 33 - MS MOUSE v1.0+ - DEFINE MICKEY/PIXEL RATIO
AX = 000Fh
CX = number of mickeys per 8 pixels horizontally &#40;default 8&#41;
DX = number of mickeys per 8 pixels vertically &#40;default 16&#41;
SeeAlso&#58; AX=0013h,AX=001Ah,INT 62/AX=0082h
--------M-330010-----------------------------
INT 33 - MS MOUSE v1.0+ - DEFINE SCREEN REGION FOR UPDATING
AX = 0010h
CX,DX = X,Y coordinates of upper left corner
SI,DI = X,Y coordinates of lower right corner
Note&#58; mouse cursor is hidden in the specified region, and needs to be
explicitly turned on again
SeeAlso&#58; AX=0001h,AX=0002h,AX=0007h,AX=0010h"Genius MOUSE",AX=0031h
--------M-330010-----------------------------
INT 33 - Genius MOUSE - DEFINE SCREEN REGION FOR UPDATING
AX = 0010h
ES&#58;DX -> update region list &#40;see #2363&#41;
Notes&#58; mouse cursor is hidden in the specified region, and needs to be
explicitly turned on again
this version of the call is described in an August 1988 version of the
Genius Mouse programmer's reference; it has been changed to conform
to the Microsoft version shown above by version 9.06 &#40;and possibly
earlier versions&#41;
SeeAlso&#58; AX=0001h,AX=0002h,AX=0007h,AX=0010h"MS MOUSE"

Format of Genius Mouse update region list&#58;
Offset Size Description &#40;Table 2363&#41;
00h WORD left-most column
02h WORD top-most row
04h WORD right-most column
06h WORD bottom-most row
--------M-330011-----------------------------
INT 33 - Genius Mouse 9.06 - GET NUMBER OF BUTTONS
AX = 0011h
Return&#58; AX = FFFFh
BX = number of buttons
SeeAlso&#58; AX=0000h
--------M-330012-----------------------------
INT 33 - MS MOUSE - SET LARGE GRAPHICS CURSOR BLOCK
AX = 0012h
BH = cursor width in words
CH = rows in cursor
BL = horizontal hot spot &#40;-16 to 16&#41;
CL = vertical hot spot &#40;-16 to 16&#41;
ES&#58;DX -> bit map of screen and cursor maps
Return&#58; AX = FFFFh if successful
SeeAlso&#58; AX=0009h,AX=002Ah,AX=0035h
--------M-330013-----------------------------
INT 33 - MS MOUSE v5.0+ - DEFINE DOUBLE-SPEED THRESHOLD
AX = 0013h
DX = threshold speed in mickeys/second, 0000h = default of 64/second
Note&#58; if speed exceeds threshold, the cursor's on-screen motion is doubled
SeeAlso&#58; AX=000Fh,AX=001Bh,AX=002Ch
--------M-330014-----------------------------
INT 33 - MS MOUSE v3.0+ - EXCHANGE INTERRUPT SUBROUTINES
AX = 0014h
CX = call mask &#40;see #2361&#41;
ES&#58;DX -> FAR routine
Return&#58; CX = call mask of previous interrupt routine
ES&#58;DX = FAR address of previous interrupt routine
SeeAlso&#58; AX=000Ch,AX=0018h
--------M-330015-----------------------------
INT 33 - MS MOUSE v6.0+ - RETURN DRIVER STORAGE REQUIREMENTS
AX = 0015h
Return&#58; BX = size of buffer needed to store driver state
SeeAlso&#58; AX=0016h,AX=0017h,AX=0042h
--------M-330016-----------------------------
INT 33 - MS MOUSE v6.0+ - SAVE DRIVER STATE
AX = 0016h
BX = size of buffer &#40;see AX=0015h&#41;
ES&#58;DX -> buffer for driver state
Note&#58; although not documented &#40;since the Microsoft driver does not use it&#41;,
many drivers appear to require BX on input
SeeAlso&#58; AX=0015h,AX=0017h
--------M-330017-----------------------------
INT 33 - MS MOUSE v6.0+ - RESTORE DRIVER STATE
AX = 0017h
BX = size of buffer &#40;see AX=0015h&#41;
ES&#58;DX -> buffer containing saved state
Notes&#58; although not documented &#40;since the Microsoft driver does not use it&#41;,
many drivers appear to require BX on input
some mouse drivers range-check the values in the saved state based on
the current video mode; thus, the video mode should be restored
before the mouse driver's state is restored
SeeAlso&#58; AX=0015h,AX=0016h
--------M-330018-----------------------------
INT 33 - MS MOUSE v6.0+ - SET ALTERNATE MOUSE USER HANDLER
AX = 0018h
CX = call mask &#40;see #2364&#41;
ES&#58;DX -> FAR routine to be invoked on mouse events &#40;see #2365&#41;
Return&#58; AX = status
0018h if successful
FFFFh on error
Notes&#58; up to three handlers can be defined by separate calls to this function,
each with a different combination of shift states in the call mask;
calling this function again with a call mask of 0000h undefines the
specified handler &#40;official documentation&#41;; specifying the same
call mask and an address of 0000h&#58;0000h undefines the handler &#40;real
life&#41;
some versions of the documentation erroneously reverse the order of
the bits in the call mask
SeeAlso&#58; AX=000Ch,AX=0014h,AX=0019h

Bitfields for mouse call mask&#58;
Bit&#40;s&#41; Description &#40;Table 2364&#41;
0 call if mouse moves
1 call if left button pressed
2 call if left button released
3 call if right button pressed
4 call if right button released
5 call if shift button pressed during event
6 call if ctrl key pressed during event
7 call if alt key pressed during event
Note&#58; at least one of 5-7 must be set

&#40;Table 2365&#41;
Values user handler is called with&#58;
AX = condition mask &#40;same bit assignments as call mask&#41;
BX = button state
CX = cursor column
DX = cursor row
SI = horizontal mickey count
DI = vertical mickey count
Return&#58; registers preserved
Note&#58; in text modes, the row and column will be reported as a multiple of
the cell size, typically 8x8 pixels
--------M-330019-----------------------------
INT 33 - MS MOUSE v6.0+ - RETURN USER ALTERNATE INTERRUPT VECTOR
AX = 0019h
CX = call mask &#40;see #2364&#41;
Return&#58; BX&#58;DX = user interrupt vector
CX = call mask &#40;0000h if not found&#41;
Note&#58; attempts to find a user event handler &#40;defined by function 18h&#41;
whose call mask matches CX
SeeAlso&#58; AX=0018h
--------M-33001A-----------------------------
INT 33 - MS MOUSE v6.0+ - SET MOUSE SENSITIVITY
AX = 001Ah
BX = horizontal speed \
CX = vertical speed / &#40;see AX=000Fh&#41;
DX = double speed threshold &#40;see AX=0013h&#41;
SeeAlso&#58; AX=0013h,AX=001Bh,INT 62/AX=0082h
--------M-33001B-----------------------------
INT 33 - MS MOUSE v6.0+ - RETURN MOUSE SENSITIVITY
AX = 001Bh
Return&#58; BX = horizontal speed
CX = vertical speed
DX = double speed threshold
SeeAlso&#58; AX=000Bh,AX=001Ah
--------M-33001C-----------------------------
INT 33 - MS MOUSE v6.0+ - SET INTERRUPT RATE
AX = 001Ch
BX = rate &#40;see #2366&#41;
Notes&#58; only available on InPort mouse
values greater than 4 may cause unpredictable driver behavior

&#40;Table 2366&#41;
Values for mouse interrupt rate&#58;
00h no interrupts allowed
01h 30 per second
02h 50 per second
03h 100 per second
04h 200 per second
--------M-33001D-----------------------------
INT 33 - MS MOUSE v6.0+ - DEFINE DISPLAY PAGE NUMBER
AX = 001Dh
BX = display page number
Note&#58; the cursor will be displayed on the specified page
SeeAlso&#58; AX=001Eh
--------M-33001E-----------------------------
INT 33 - MS MOUSE v6.0+ - RETURN DISPLAY PAGE NUMBER
AX = 001Eh
Return&#58; BX = display page number
SeeAlso&#58; AX=001Dh
--------M-33001F-----------------------------
INT 33 - MS MOUSE v6.0+ - DISABLE MOUSE DRIVER
AX = 001Fh
Return&#58; AX = status
001Fh successful
ES&#58;BX = INT 33 vector before mouse driver was first installed
FFFFh unsuccessful
Notes&#58; restores vectors for INT 10 and INT 71 &#40;8086&#41; or INT 74 &#40;286/386&#41;
if you restore INT 33 to ES&#58;BX, driver will be completely disabled
many drivers return AX=001Fh even though the driver has been disabled
SeeAlso&#58; AX=0020h
--------M-330020-----------------------------
INT 33 - MS MOUSE v6.0+ - ENABLE MOUSE DRIVER
AX = 0020h
Return&#58; AX = status
0020h successful
FFFFh unsuccessful
Notes&#58; restores vectors for INT 10h and INT 71h &#40;8086&#41; or INT 74h &#40;286/386&#41;
which were removed by function 1Fh
Microsoft's documentation states that no value is returned
SeeAlso&#58; AX=001Fh
--------M-330021-----------------------------
INT 33 - MS MOUSE v6.0+ - SOFTWARE RESET
AX = 0021h
Return&#58; AX = status
FFFFh if mouse driver installed
BX = number of buttons &#40;FFFFh = two buttons&#41;
0021h if mouse driver not installed
Note&#58; this call is identical to funtion 00h, but does not reset the mouse
SeeAlso&#58; AX=0000h
--------M-330022-----------------------------
INT 33 - MS MOUSE v6.0+ - SET LANGUAGE FOR MESSAGES
AX = 0022h
BX = language &#40;see #2367&#41;
Note&#58; only available on international versions of the driver; US versions
ignore this call
SeeAlso&#58; AX=0023h

&#40;Table 2367&#41;
Values for mouse driver language&#58;
00h English
01h French
02h Dutch
03h German
04h Swedish
05h Finnish
06h Spanish
07h Portugese
08h Italian
--------M-330023-----------------------------
INT 33 - MS MOUSE v6.0+ - GET LANGUAGE FOR MESSAGES
AX = 0023h
Return&#58; BX = language &#40;see #2367&#41;
Note&#58; the US version of the driver always returns zero
SeeAlso&#58; AX=0022h
--------M-330024-----------------------------
INT 33 - MS MOUSE v6.26+ - GET SOFTWARE VERSION, MOUSE TYPE, AND IRQ NUMBER
AX = 0024h
Return&#58; AX = FFFFh on error
otherwise,
BH = major version
BL = minor version
CH = type &#40;1=bus, 2=serial, 3=InPort, 4=PS/2, 5=HP&#41;
CL = interrupt &#40;0=PS/2, 2=IRQ2, 3=IRQ3,...,7=IRQ7&#41;
SeeAlso&#58; AX=004Dh,AX=006Dh
--------M-330025-----------------------------
INT 33 - MS MOUSE v6.26+ - GET GENERAL DRIVER INFORMATION
AX = 0025h
Return&#58; AX = general information &#40;see #2368&#41;
BX = cursor lock flag for OS/2 to prevent reentrancy problems
CX = mouse code active flag &#40;for OS/2&#41;
DX = mouse driver busy flag &#40;for OS/2&#41;

Bitfields for general mouse driver information&#58;
Bit&#40;s&#41; Description &#40;Table 2368&#41;
15 driver loaded as device driver rather than TSR
14 driver is newer integrated type
13,12 current cursor type
00 software text cursor
01 hardware text cursor &#40;CRT Controller's cursor&#41;
1X graphics cursor
11-8 interrupt rate &#40;see #2366&#41;
7-0 count of currently-active Mouse Display Drivers &#40;MDD&#41;, the newer
integrated driver type
--------M-330026-----------------------------
INT 33 - MS MOUSE v6.26+ - GET MAXIMUM VIRTUAL COORDINATES
AX = 0026h
Return&#58; BX = mouse-disabled flag &#40;0000h mouse enabled, nonzero disabled&#41;
CX = maximum virtual X &#40;for current video mode&#41;
DX = maximum virtual Y
Note&#58; for driver versions before 7.05, this call returns the currently-set
maximum coordinates; v7.05+ returns the absolute maximum coordinates
SeeAlso&#58; AX=0031h
--------M-330026-----------------------------
INT 33 - Genius Mouse 9.06 - ???
AX = 0026h
Return&#58; CX = 0204h if CX was 0105h on entry, else unchanged
--------M-330027-----------------------------
INT 33 - MS MOUSE v7.01+ - GET SCREEN/CURSOR MASKS AND MICKEY COUNTS
AX = 0027h
Return&#58; AX = screen-mask value &#40;or hardware cursor scan-line start for v7.02+&#41;
BX = cursor-mask value &#40;or hardware cursor scan-line stop for v7.02+&#41;
CX = horizontal mickeys moved since last call
DX = vertical mickeys moved since last call
SeeAlso&#58; AX=000Bh
--------M-330028-----------------------------
INT 33 - MS MOUSE v7.0+ - SET VIDEO MODE
AX = 0028h
CX = new video mode &#40;call is NOP if 0000h&#41;
DH = Y font size &#40;00h = default&#41;
DL = X font size &#40;00h = default&#41;
Return&#58; CL = status &#40;00h = successful&#41;
Notes&#58; DX is ignored unless the selected video mode supports font size control
when CX=0000h, an internal flag that had been set by a previous call
is cleared; this is required before a mouse reset
SeeAlso&#58; AX=0029h,INT 10/AH=00h
--------M-330029-----------------------------
INT 33 - MS MOUSE v7.0+ - ENUMERATE VIDEO MODES
AX = 0029h
CX = previous video mode
0000h get first supported video mode
other get next supported mode after mode CX
Return&#58; CX = first/next video mode &#40;0000h = no more video modes&#41;
DS&#58;DX -> description of video mode or 0000h&#58;0000h if none
Notes&#58; the enumerated video modes may be in any order and may repeat
the description string &#40;if available&#41; is terminated by '$' followed by
a NUL byte
SeeAlso&#58; AX=0028h
--------M-33002A-----------------------------
INT 33 - MS MOUSE v7.02+ - GET CURSOR HOT SPOT
AX = 002Ah
Return&#58; AX = internal counter controlling cursor visibility
BX = cursor hot spot column
CX = cursor hot spot row
DX = mouse type &#40;see #2369&#41;
Note&#58; the hot spot location is relative to the upper left corner of the
cursor block and may range from -128 to +127 both horizontally and
vertically
SeeAlso&#58; AX=0009h,AX=0012h,AX=0035h

&#40;Table 2369&#41;
Values for mouse type&#58;
00h none
01h bus
02h serial
03h InPort
04h IBM
05h Hewlett-Packard
--------M-33002B-----------------------------
INT 33 - MS MOUSE v7.0+ - LOAD ACCELERATION PROFILES
AX = 002Bh
BX = active acceleration profile
0001h-0004h or FFFFh to restore default curves
ES&#58;SI -> buffer containing acceleration profile data &#40;see #2370&#41;
Return&#58; AX = success flag
SeeAlso&#58; AX=002Ch,AX=002Dh,AX=0033h

Format of acceleration profile data&#58;
Offset Size Description &#40;Table 2370&#41;
00h BYTE length of acceleration profile 1
01h BYTE length of acceleration profile 2
02h BYTE length of acceleration profile 3
03h BYTE length of acceleration profile 4
04h 32 BYTEs threshold speeds for acceleration profile 1
24h 32 BYTEs threshold speeds for acceleration profile 2
44h 32 BYTEs threshold speeds for acceleration profile 3
64h 32 BYTEs threshold speeds for acceleration profile 4
84h 32 BYTEs speedup factor for acceleration profile 1
&#40;10h = 1.0, 14h = 1.25, 20h = 2.0, etc&#41;
A4h 32 BYTEs speedup factor for acceleration profile 2
&#40;10h = 1.0, 14h = 1.25, 20h = 2.0, etc&#41;
C4h 32 BYTEs speedup factor for acceleration profile 3
&#40;10h = 1.0, 14h = 1.25, 20h = 2.0, etc&#41;
E4h 32 BYTEs speedup factor for acceleration profile 4
&#40;10h = 1.0, 14h = 1.25, 20h = 2.0, etc&#41;
104h 16 BYTEs name of acceleration profile 1 &#40;blank-padded&#41;
114h 16 BYTEs name of acceleration profile 2 &#40;blank-padded&#41;
124h 16 BYTEs name of acceleration profile 3 &#40;blank-padded&#41;
134h 16 BYTEs name of acceleration profile 4 &#40;blank-padded&#41;
Note&#58; unused bytes in the threshold speed fields are filled with 7Fh and
unused bytes in the speedup factor fields are filled with 10h
--------M-33002C-----------------------------
INT 33 - MS MOUSE v7.0+ - GET ACCELERATION PROFILES
AX = 002Ch
Return&#58; AX = status &#40;0000h success&#41;
BX = currently-active acceleration profile
ES&#58;SI -> acceleration profile data &#40;see #2370&#41;
SeeAlso&#58; AX=002Bh,AX=002Dh,AX=0033h
--------M-33002D-----------------------------
INT 33 - MS MOUSE v7.0+ - SELECT ACCELERATION PROFILE
AX = 002Dh
BX = acceleration level
0001h-0004h to set profile, or FFFFh to get current profile
Return&#58; AX = status
0000h successful
ES&#58;SI -> 16-byte blank-padded name of acceleration profile
FFFEh invalid acceleration curve number
ES&#58;SI destroyed
BX = active acceleration curve number
SeeAlso&#58; AX=0013h,AX=002Bh,AX=002Ch,AX=002Eh
--------M-33002E-----------------------------
INT 33 - MS MOUSE v8.10+ - SET ACCELERATION PROFILE NAMES
AX = 002Eh
BL = flag &#40;if nonzero, fill ES&#58;SI buffer with default names on return&#41;
ES&#58;SI -> 64-byte buffer containing profile names &#40;16 bytes per name&#41;
Return&#58; AX = status &#40;0000h success&#41;
FFFEh error for ATI Mouse driver
ES&#58;SI buffer filled with default names if BL nonzero on entry
Notes&#58; not supported by Logitech driver v6.10
supported by ATI Mouse driver v7.04
SeeAlso&#58; AX=002Ch,AX=002Dh,AX=012Eh,AX=022Eh
--------M-33002F-----------------------------
INT 33 - MS MOUSE v7.02+ - MOUSE HARDWARE RESET
AX = 002Fh
Return&#58; AX = status
Note&#58; invoked by mouse driver v8.20 on being called with INT 2F/AX=530Bh
SeeAlso&#58; INT 2F/AH=53h
--------M-330030-----------------------------
INT 33 - MS MOUSE v7.04+ - GET/SET BallPoint INFORMATION
AX = 0030h
CX = command
0000h get status of BallPoint device
other set rotation angle and masks
BX = rotation angle &#40;-32768 to 32767 degrees&#41;
CH = primary button mask
CL = secondary button mask
Return&#58; AX = button status &#40;FFFFh if no BallPoint&#41; &#40;see #2371&#41;
BX = rotation angle &#40;0-360 degrees&#41;
CH = primary button mask
CL = secondary button mask
Note&#58; not supported by the ATI Mouse driver which calls itself v7.04

Bitfields for BallPoint mouse button status&#58;
Bit&#40;s&#41; Description &#40;Table 2371&#41;
5 button 1
4 button 2
3 button 3
2 button 4
other zero
--------M-330031-----------------------------
INT 33 - MS MOUSE v7.05+ - GET CURRENT MINIMUM/MAXIMUM VIRTUAL COORDINATES
AX = 0031h
Return&#58; AX = virtual X minimum
BX = virtual Y minimum
CX = virtual X maximum
DX = virtual Y maximum
Note&#58; the minimum and maximum values are those set by AX=0007h and AX=0008h;
the default is minimum = 0 and maximum = absolute maximum
&#40;see AX=0026h&#41;
SeeAlso&#58; AX=0007h,AX=0008h,AX=0010h,AX=0026h
--------M-330032-----------------------------
INT 33 - MS MOUSE v7.05+ - GET ACTIVE ADVANCED FUNCTIONS
AX = 0032h
Return&#58; AX = active function flags &#40;FFFFh for v8.10&#41;
bit 15&#58; function 0025h supported
bit 14&#58; function 0026h supported
...
bit 0&#58; function 0034h supported
BX = ??? &#40;0000h&#41; officially unused
CX = ??? &#40;E000h&#41; officially unused
DX = ??? &#40;0000h&#41; officially unused
Note&#58; the Italian version of MS MOUSE v8.20 reportedly indicates that
functions 0033h and 0034h are not supported even though they are
--------M-330033-----------------------------
INT 33 - MS MOUSE v7.05+ - GET SWITCH SETTINGS AND ACCELERATION PROFILE DATA
AX = 0033h
CX = size of buffer
0000h get required buffer size
Return&#58; AX = 0000h
CX = required size &#40;0154h for Logitech v6.10, 0159h
for MS v8.10-8.20&#41;
other
ES&#58;DX -> buffer of CX bytes for mouse settings
Return&#58; AX = 0000h
CX = number of bytes returned
ES&#58;DX buffer filled &#40;see #2372&#41;
SeeAlso&#58; AX=002Bh

Format of mouse settings data buffer&#58;
Offset Size Description &#40;Table 2372&#41;
00h BYTE mouse type
01h BYTE current language
02h BYTE horizontal sensitivity &#40;00h-64h&#41;
03h BYTE vertical sensitivity &#40;00h-64h&#41;
04h BYTE double-speed threshold &#40;00h-64h&#41;
05h BYTE ballistic curve &#40;01h-04h&#41;
06h BYTE interrupt rate &#40;01h-04h&#41;
07h BYTE cursor override mask
08h BYTE laptop adjustment
09h BYTE memory type &#40;00h-02h&#41;
0Ah BYTE SuperVGA support &#40;00h,01h&#41;
0Bh BYTE rotation angle
0Ch BYTE ???
0Dh BYTE primary button &#40;01h-04h&#41;
0Eh BYTE secondary button &#40;01h-04h&#41;
0Fh BYTE click lock enabled &#40;00h,01h&#41;
10h 324 BYTEs acceleration profile data &#40;see #2370&#41;
154h 5 BYTEs ??? &#40;Microsoft driver, but not Logitech&#41;
--------M-330034-----------------------------
INT 33 - MS MOUSE v8.0+ - GET INITIALIZATION FILE
AX = 0034h
Return&#58; AX = status &#40;0000h successful&#41;
ES&#58;DX -> ASCIZ initialization &#40;.INI&#41; file name
--------M-330035-----------------------------
INT 33 - MS MOUSE v8.10+ - LCD SCREEN LARGE POINTER SUPPORT
AX = 0035h
BX = function
FFFFh get current settings
Return&#58; AX = 0000h
BH = style &#40;see #2373&#41;
BL = size &#40;see below&#41;
CH = threshold
CL = active flag &#40;00h disabled, 01h enabled&#41;
DX = delay
other
BH = pointer style &#40;see #2373&#41;
BL = size &#40;00h small "1", 01h medium "1.5", 02h large "2"&#41;
CH = threshold &#40;00h-64h&#41;
CL = active flag &#40;00h disable size change, 01h enable&#41;
DX = delay &#40;0000h-0064h&#41;
Return&#58; AX = 0000h
Note&#58; not supported by Logitech driver v6.10
SeeAlso&#58; AX=0012h,AX=002Ah

&#40;Table 2373&#41;
Values for pointer style&#58;
00h normal
01h reverse
02h transparent
--------M-330042-----------------------------
INT 33 - PCMOUSE - GET MSMOUSE STORAGE REQUIREMENTS
AX = 0042h
Return&#58; AX = status
0000h MSMOUSE not installed
0042h functions 42h, 50h, and 52h not supported
FFFFh successful
BX = buffer size in bytes for functions 50h and 52h
Note&#58; this function is also supported by the Genius Mouse 9.06 driver
SeeAlso&#58; AX=0015h,AX=0050h,AX=0052h
--------M-330043-----------------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - CONFIGURE MOUSE???
AX = 0043h
CX&#58;BX -> configuration buffer &#40;see #2374&#41;
DL = ???
Return&#58; ???
Notes&#58; also calls routines for INT 33/AX=0053h and INT 33/AX=004Fh
this function is also supported by the Genius Mouse 9.06 driver

Format of Mouse Systems configuration buffer&#58;
Offset Size Description &#40;Table 2374&#41;
00h WORD I/O port address
02h BYTE ???
03h BYTE interrupt number
04h BYTE interrupt mask for interrupt controller
05h 5 BYTEs ???
--------M-330044CXCDEF-----------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - TOGGLE IGNORE ACCELERATION CMDS
AX = 0044h
CX = CDEFh
Return&#58; AX = new state of "Ignore Application Acceleration Commands" flag
Note&#58; this function is also supported by the Genius Mouse 9.06 driver
SeeAlso&#58; AX=0045h
--------M-330045CXCDEF-----------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - TOGGLE RESOLUTION DOUBLING
AX = 0045h
CX = CDEFh
Return&#58; AX = new state of resolution doubling flag
Note&#58; this function is also supported by the Genius Mouse 9.06 driver
SeeAlso&#58; AX=0044h
--------M-330047-----------------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SET BUTTON ASSIGNMENTS
AX = 0047h
ES&#58;BX -> button assignments &#40;3 bytes, combinations of "L", "M", "R"&#41;
Return&#58; ???
Note&#58; also supported by Genius Mouse 9.06 driver
SeeAlso&#58; AX=0067h
--------M-330048BXCDEF-----------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - GET ???
AX = 0048h
BX = CDEFh
Return&#58; CX = ???
BH = ???
BL = ??? &#40;if 50h, driver is using PS/2 pointing device BIOS interface&#41;
Note&#58; also supported by Genius Mouse 9.06 driver
--------M-33004B-----------------------------
INT 33 - LCS/Telegraphics MOUSE DRIVERS - INSTALLATION CHECK / GET VERSION
AX = 004Bh
Return&#58; ES&#58;DI -> ASCIZ signature/description string if installed &#40;see #2375&#41;

&#40;Table 2375&#41;
Values for LCS/Telegraphics mouse driver OEM signature/description string&#58;
"Primax Generic;Universal Mouse Driver;IMOUSE;v8.20i"
"Synaptics;TouchPad Driver;SYNTOUCH;v2.26"
"Z-NIX;BUS,AUX,Serial 3-byte and 5-byte Mouse Driver;ZMOUSE;v7.04d"
Note&#58; the string consists of OEM, driver description, driver name, and
version number
--------M-33004CBXCDEF-----------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SET ??? FLAG
AX = 004Ch
BX = CDEFh
Note&#58; also supported by Genius Mouse 9.06
SeeAlso&#58; AX=006Ch
--------M-33004D-----------------------------
INT 33 - MS MOUSE - RETURN POINTER TO COPYRIGHT STRING
AX = 004Dh
Return&#58; ES&#58;DI -> copyright message "*** This is Copyright 1983 Microsoft" or
"Copyright 19XX...."
Notes&#58; also supported by Logitech, Kraft, Genius Mouse, and Mouse Systems
mouse drivers
in the Genius Mouse 9.06 driver, the ASCIZ signature "KYE" immediately
follows the above copyright message &#40;KYE Corp. manufactures the
driver&#41;
SeeAlso&#58; AX=0024h,AX=006Dh,AX=0666h
--------M-33004F-----------------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ENABLE MOUSE
AX = 004Fh
Return&#58; nothing
Note&#58; also supported by Genius Mouse 9.06
SeeAlso&#58; AX=0043h,AX=0053h
--------M-330050-----------------------------
INT 33 - PCMOUSE - SAVE MSMOUSE STATE
AX = 0050h
BX = buffer size &#40;ignored by some driver versions&#41;
ES&#58;DX -> buffer
Return&#58; AX = FFFFh if successful
Notes&#58; the buffer must be large enough to hold the entire state, or following
data will be overwritten by state data in versions which ignore BX;
use INT 33/AX=0042h to get the required size
this function is also supported by the Genius Mouse 9.06 driver
SeeAlso&#58; AX=0042h,AX=0052h
--------M-330052-----------------------------
INT 33 - PCMOUSE - RESTORE MSMOUSE STATE
AX = 0052h
BX = buffer size &#40;ignored by some driver versions&#41;
ES&#58;DX -> buffer
Return&#58; AX = FFFFh if successful
Note&#58; also supported by Genius Mouse 9.06 driver
SeeAlso&#58; AX=0050h
--------M-330053-----------------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - DISABLE MOUSE
AX = 0053h
Return&#58; nothing
Note&#58; also supported by Genius Mouse 9.06
SeeAlso&#58; AX=0043h,AX=004Fh
--------M-330054CXCDEF-----------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SELECT ULTRARES ACCELERATION LEVEL
AX = 0054h
CX = CDEFh
BX = new acceleration level &#40;0-9&#41;
Return&#58; ???
Note&#58; this function is also supported by the Genius Mouse 9.06 driver
SeeAlso&#58; AX=005Ah
--------M-330055-----------------------------
INT 33 - Kraft Mouse - GET ???
AX = 0055h
Return&#58; CX = ???
DX = ???
ES = ???
--------M-330058-----------------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ???
AX = 0058h
Return&#58; AX = CS of driver
CX&#58;BX = original INT 33 vector
DX = ???
Note&#58; this function is also supported by the Genius Mouse 9.06 driver
--------M-33005A-----------------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SET ULTRARES ACCELERATIONS
AX = 005Ah
CX = number of WORDs to copy &#40;max 0014h, but not range-checked&#41;
DX&#58;SI -> buffer containing thresholds??? &#40;CX words&#41;
DX&#58;BX -> buffer containing acceleration values???
&#40;9*14h words, only first CX of each 14h used&#41;
???
Return&#58; CF clear
???
Note&#58; this function is also supported by Genius Mouse 9.06
SeeAlso&#58; AX=0054h
--------M-330061BXCDEF-----------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ???
AX = 0061h
BX = CDEFh
Return&#58; CX = ???
Note&#58; also supported by Genius Mouse 9.06
--------M-330067-----------------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - GET MOUSE BUTTONS???
AX = 0067h
Return&#58; BL = number of buttons???
Note&#58; also supported by Genius Mouse 9.06
SeeAlso&#58; AX=0047h
--------M-33006A-----------------------------
INT 33 U - ATI Mouse - INSTALLATION CHECK
AX = 006Ah
Return&#58; AL = AAh
AH = ???
BH = ???
BL = ???
CL = ???
CH = ???
Program&#58; ATI's MOUSE.COM and MOUSE.SYS are drivers for the mouse port found on
some of ATI's video adapters
SeeAlso&#58; AX=006Dh
--------M-33006C-----------------------------
INT 33 U - TRUEDOX Mouse driver v4.01 - GET/SET HARDWARE PARAMETERS
AX = 006Ch
BX = new IRQ &#40;0003h or 0004h&#41;, or 0000h to get current values only
CL = new IRQmask &#40;sent to 8259&#41;
DX = new base I/O port
Return&#58; BX = current IRQ
DX = light pen state???
Note&#58; this is the mouse driver for the Dell Dimension series of computers, by
TRUEDOX Technology Corporation
SeeAlso&#58; AX=00A1h,AX=0666h
--------M-33006CBXCDEF-----------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - CLEAR ??? FLAG
AX = 006Ch
BX = CDEFh
Note&#58; also supported by Genius Mouse 9.06
SeeAlso&#58; AX=004Ch
--------M-33006D-----------------------------
INT 33 - MS MOUSE - GET VERSION STRING
AX = 006Dh
Return&#58; ES&#58;DI -> Microsoft version number of resident driver &#40;see #2376&#41;
Notes&#58; also supported by Logitech, Mouse Systems, Kraft, and Genius mouse
drivers
the Mouse Systems 7.01 and Genius Mouse 9.06 drivers report their
Microsoft version as 7.00 even though they do not support any of the
functions from 0025h through 002Dh supported by the MS 7.00 driver
&#40;the Genius Mouse driver supports function 0026h, but it differs
from the Microsoft function&#41;
the TRUEDOX 4.01 driver reports its version as 6.26 through this call,
but as 6.24 through AX=0024h
SeeAlso&#58; AX=0024h,AX=004Dh,AX=006Ah,AX=266Ch

Format of Microsoft version number&#58;
Offset Size Description &#40;Table 2376&#41;
00h BYTE major version
01h BYTE minor version &#40;BCD&#41;
--------M-330070BXABCD-----------------------
INT 33 - Mouse Systems MOUSE DRIVER - POPUP.COM - INSTALLATION CHECK
AX = 0070h
BX = ABCDh
Return&#58; AX = ABCDh if installed
BX&#58;CX -> data structure &#40;see #2377&#41;
Notes&#58; this function is also supported by the Genius Mouse 9.06 driver
the v7.01 POPUP.COM and menu drivers also check for the signature
CDh ABh BAh DCh at offset -2Ch from the interrupt handler
if POPUP is not loaded, the returned data structure contains the proper
signature at offset 00h, but not at offset 08h

Format of Mouse Systems POPUP.COM data structure&#58;
Offset Size Description &#40;Table 2377&#41;
00h WORD signature ABCDh
02h DWORD pointer to info structure??? &#40;see #2378&#41;
06h 2 BYTEs ???
08h WORD signature ABCDh

Format of Mouse Systems POPUP.COM info structure&#58;
Offset Size Description &#40;Table 2378&#41;
00h WORD driver version
02h 8 BYTEs ???
0Ah WORD segment of ???
???
--------M-330072BXABCD-----------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ???
AX = 0072h
BX = ABCDh
Return&#58; ???
Note&#58; this function is also supported by the Genius Mouse 9.06 driver
--------M-330073BXCDEF-----------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - GET BUTTON ASSIGNMENTS
AX = 0073h
BX = CDEFh
ES&#58;DX -> 3-byte buffer for button assignments
Return&#58; CX = number of buttons???
ES&#58;DX buffer filled &#40;default is "LMR"&#41;
Note&#58; also supported by Genius Mouse 9.06
SeeAlso&#58; AX=0067h
--------M-3300A0-----------------------------
INT 33 U - TRUEDOX Mouse driver - SET HARDWARE PC MODE &#40;3 button&#41;
AX = 00A0h
Return&#58; nothing
Note&#58; this function is only available if the mouse mode is switchable
through the power pins
SeeAlso&#58; AX=006Ch"TRUEDOX",AX=00A1h"TRUEDOX"
--------M-3300A1-----------------------------
INT 33 U - TRUEDOX Mouse driver - SET HARDWARE MS MODE &#40;2 button&#41;
AX = 00A1h
Return&#58; nothing
Notes&#58; this function is only available if the mouse mode is switchable
through the power pins
this is the mouse driver for the Dell Dimension series of computers, by
TRUEDOX Technology Corporation
SeeAlso&#58; AX=006Ch"TRUEDOX",AX=00A0h"TRUEDOX",AX=00A6h,AX=0666h
--------M-3300A6-----------------------------
INT 33 U - TRUEDOX Mouse driver - SET RESOLUTION
AX = 00A6h
BX = new software resolution
0001h 50-200 dpi
0002h 200-400 dpi
0003h 400-800 dpi
Note&#58; this is the mouse driver for the Dell Dimension series of computers, by
TRUEDOX Technology Corporation
SeeAlso&#58; AX=00A0h,AX=00A1h,AX=0666h
--------M-3300B0-----------------------------
INT 33 U - LCS/Telegraphics MOUSE DRIVERS - ???
AX = 00B0h
???
Return&#58; ???
--------M-3300F0-----------------------------
INT 33 U - LCS/Telegraphics MOUSE DRIVERS - ???
AX = 00F0h
???
Return&#58; ???
--------M-3300F1-----------------------------
INT 33 U - LCS/Telegraphics MOUSE DRIVERS - ???
AX = 00F1h
???
Return&#58; ???
--------M-3300F2-----------------------------
INT 33 U - LCS/Telegraphics MOUSE DRIVERS - ???
AX = 00F2h
???
Return&#58; ???
--------M-3300F3-----------------------------
INT 33 U - LCS/Telegraphics MOUSE DRIVERS - ???
AX = 00F3h
???
Return&#58; ???
--------M-330100CX4752-----------------------
INT 33 - GRTMOUSE v1.00+ - INSTALLATION CHECK
AX = 0100h
CX = 4752h &#40;'GR'&#41;
DX = 544Dh &#40;'TM'&#41;
Return&#58; AX = 474Dh &#40;'GM'&#41; if installed
CX = version number &#40;CH = major, CL = minor&#41;
Program&#58; GRTMOUSE is a graphical-cursor driver for textmode by Tommer Leyvand
SeeAlso&#58; AX=0101h,AX=0102h,AX=0103h,AX=0104h
--------M-330101-----------------------------
INT 33 - GRTMOUSE v1.00+ - SET MOUSE CURSOR SHAPE
AX = 0101h
DS&#58;SI -> 16-byte cursor pattern
Return&#58; CF clear if successful
SeeAlso&#58; AX=0100h,AX=0102h
--------M-330102-----------------------------
INT 33 - GRTMOUSE v1.00+ - GET MOUSE CURSOR SHAPE
AX = 0102h
ES&#58;DI -> 16-byte buffer for cursor pattern
SeeAlso&#58; AX=0100h,AX=0101h
--------M-330103-----------------------------
INT 33 - GRTMOUSE v1.00+ - SET ACTIVE CHARACTERS
AX = 0103h
CH,CL,DH,DL = ASCII codes to be remapped to display mouse pointer
Note&#58; the default active characters are D0h,D1h,D6h,D8h; the active
characters should be in the range C0h to DFh
SeeAlso&#58; AX=0100h,AX=0104h
--------M-330104-----------------------------
INT 33 - GRTMOUSE v1.00+ - GET ACTIVE CHARACTERS
AX = 0104h
Return&#58; CH,CL,DH,DL = ASCII codes for the active characters
SeeAlso&#58; AX=0100h,AX=0103h
--------M-33012E-----------------------------
INT 33 - MS MOUSE v8.10+ - ???
AX = 012Eh
BL = ???
Return&#58; AX = 0000h &#40;MS&#41;
AX = FFFFh &#40;ATI Mouse v7.04&#41;
Note&#58; not supported by Logitech driver v6.10
SeeAlso&#58; AX=002Eh,AX=022Eh
--------M-33022E-----------------------------
INT 33 - MS MOUSE v8.10+ - ???
AX = 022Eh
BL = ???
Return&#58; AX = 0000h &#40;MS&#41;
AX = FFFFh &#40;ATI Mouse v7.04&#41;
Note&#58; not supported by Logitech driver v6.10
SeeAlso&#58; AX=002Eh,AX=012Eh
--------M-330666-----------------------------
INT 33 U - TRUEDOX Mouse driver v4.01 - GET COPYRIGHT STRING
AX = 0666h
Return&#58; DX&#58;AX -> ASCII "Copyright 1987-1992 TRUEDOX Technology Corporation"
Note&#58; this is the mouse driver for the Dell Dimension series of computers,
by TRUEDOX Technology Corporation
SeeAlso&#58; AX=004Dh,AX=00A6h,AX=0666h
--------M-33136C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - ???
AX = 136Ch
BX = ???
Return&#58; AX = ???
BX = ???
--------M-33146C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - GET/SET ???
AX = 146Ch
BL = function
00h set ???
BH = new value &#40;zero/nonzero to clear/set&#41;
else get ???
Return&#58; ???
--------M-33156C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - GET SIGNATURE AND VERSION STRINGS
AX = 156Ch
Return&#58; ES&#58;DI -> signature "LOGITECH MOUSE DRIVER"
ES&#58;SI -> version string, terminated with CRLF
--------M-33166C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - ???
AX = 166Ch
BL = ???
00h ???
01h ???
other ???
BH = new value of ???
Return&#58; AX = FFFFh
--------M-33176C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - ???
AX = 176Ch
???
Return&#58; ???
--------M-33186C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - ???
AX = 186Ch
???
Return&#58; ???
--------M-33196C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - ???
AX = 196Ch
???
Return&#58; ???
--------M-331A6C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - GET ???
AX = 1A6Ch
Return&#58; AX = FFFFh
BX = ???
CX = ???
SeeAlso&#58; AX=1B6Ch
--------M-331B6C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - SET ???
AX = 1B6Ch
BX = new value for ??? &#40;0000h-0003h&#41;
Return&#58; AX = FFFFh
SeeAlso&#58; AX=1A6Ch
--------M-331C6C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - ???
AX = 1C6Ch
BX = ???
&lt;42h ???
=42h ???
>42h ???
ES&#58;DI -> ???
Return&#58; AX = ???
--------M-331D6C-----------------------------
INT 33 - LOGITECH MOUSE - GET COMPASS PARAMETER
AX = 1D6Ch
Return&#58; BX = direction &#40;0=north, 1=south, 2=east, 3=west&#41;
SeeAlso&#58; AX=1E6Ch
--------M-331E6C-----------------------------
INT 33 - LOGITECH MOUSE - SET COMPASS PARAMETER
AX = 1E6Ch
BX = direction &#40;0=north, 1=south, 2=east, 3=west&#41;
SeeAlso&#58; AX=1D6Ch
--------M-331F6C-----------------------------
INT 33 - LOGITECH MOUSE - GET BALLISTICS INFORMATION
AX = 1F6Ch
Return&#58; BX = 0=off, 1=on
CX = 1=low, 2=high
SeeAlso&#58; AX=002Ch,AX=236Ch
--------M-33206C-----------------------------
INT 33 - LOGITECH MOUSE - SET LEFT OR RIGHT PARAMETER
AX = 206Ch
BX = parameter &#40;00h = right, FFh = left&#41;
SeeAlso&#58; AX=216Ch
--------M-33216C-----------------------------
INT 33 - LOGITECH MOUSE - GET LEFT OR RIGHT PARAMETER
AX = 216Ch
Return&#58; BX = parameter &#40;00h = right, FFh = left&#41;
SeeAlso&#58; AX=206Ch
--------M-33226C-----------------------------
INT 33 - LOGITECH MOUSE - REMOVE DRIVER FROM MEMORY
AX = 226Ch
Note&#58; this only frees memory; does not restore hooked interrupts
--------M-33236C-----------------------------
INT 33 - LOGITECH MOUSE - SET BALLISTICS INFORMATION
AX = 236Ch
BX = 0=off, 1=on
CX = 1=low, 2=high
SeeAlso&#58; AX=002Ch,AX=1F6Ch
--------M-33246C-----------------------------
INT 33 - LOGITECH MOUSE - GET PARAMETERS AND RESET SERIAL MOUSE
AX = 246Ch
ES&#58;DX -> parameter table buffer &#40;see #2379&#41;
Return&#58; AX = FFFFh if driver installed for serial mouse
SeeAlso&#58; AX=0000h,AX=256Ch/BX=0000h,AX=256Ch/BX=0001h,AX=256Ch/BX=0003h

Format of Logitech Mouse parameter table&#58;
Offset Size Description &#40;Table 2379&#41;
00h WORD baud rate divided by 100 &#40;serial mouse only&#41;
02h WORD emulation &#40;serial mouse only&#41;
04h WORD report rate &#40;serial mouse only&#41;
06h WORD firmware revision &#40;serial mouse only&#41;
08h WORD 00h &#40;serial mouse only&#41;
0Ah WORD port &#40;serial mouse only&#41;
0Ch WORD physical buttons
0Eh WORD logical buttons
--------M-33256CBX0000-----------------------
INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET BAUD RATE &#40;SERIAL MOUSE ONLY&#41;
AX = 256Ch
BX = 0000h
CX = rate &#40;0=1200, 1=2400, 2=4800, 3=9600&#41;
Return&#58; AX = FFFFh if driver installed for serial mouse
SeeAlso&#58; AX=246Ch,AX=256Ch/BX=0001h,AX=256Ch/BX=0002h,AX=276Ch
--------M-33256CBX0001-----------------------
INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET EMULATION &#40;SERIAL MOUSE ONLY&#41;
AX = 256Ch
BX = 0001h
CX = emulation type &#40;see #2380&#41;
Return&#58; AX = FFFFh if driver installed for serial mouse
SeeAlso&#58; AX=246Ch,AX=256Ch/BX=0000h,AX=256Ch/BX=0003h,AX=276Ch

&#40;Table 2380&#41;
Values for Logitech mouse emulation type&#58;
00h 5 byte packed binary
01h 3 byte packed binary
02h hexadecimal
03h relative bit pad
04h not supported
05h MM Series
06h not supported
07h Microsoft
--------M-33256CBX0002-----------------------
INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET REPORT RATE &#40;SERIAL MOUSE ONLY&#41;
AX = 256Ch
BX = 0002h
CX = rate &#40;0=10, 1=20, 2=35, 3=50, 4=70, 5=100, 6=150&#41;
Return&#58; AX = FFFFh if driver installed for serial mouse
SeeAlso&#58; AX=246Ch,AX=256Ch/BX=0001h,AX=256Ch/BX=0003h,AX=276Ch
--------M-33256CBX0003-----------------------
INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET MOUSE PORT &#40;SERIAL MOUSE ONLY&#41;
AX = 256Ch
BX = 0003h
CX = port &#40;1, 2&#41;
Return&#58; AX = FFFFh if driver installed for serial mouse
SeeAlso&#58; AX=246Ch,AX=256Ch/BX=0000h,AX=256Ch/BX=0004h,AX=276Ch
--------M-33256CBX0004-----------------------
INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET MOUSE LOGICAL BUTTONS
AX = 256Ch
BX = 0004h
CX = buttons &#40;2, 3&#41;
Return&#58; AX = FFFFh if driver installed for serial mouse
SeeAlso&#58; AX=246Ch,AX=276Ch
--------M-33266C-----------------------------
INT 33 - LOGITECH MOUSE - GET VERSION???
AX = 266Ch
Return&#58; BX = 'SS'
CH = '4' major version number
CL = '1' minor version number
SeeAlso&#58; AX=006Dh
--------M-33276C-----------------------------
INT 33 - LOGITECH MOUSE - ??? Tries MMSeries, Baud 2400
AX = 276Ch
SeeAlso&#58; AX=256Ch
--------M-333000-----------------------------
INT 33 - Smooth Mouse Driver, PrecisePoint - INSTALLATION CHECK
AX = 3000h
Return&#58; AX = FFFFh if installed
BX = version number &#40;BH = major, BL = minor&#41;
Program&#58; SMD is a programmer's library by Andy Hakim which provides a
graphics-style mouse cursor in text mode. PrecisePoint is an
SMD-based TSR which replaces the block mouse cursor in text
applications.
SeeAlso&#58; AX=0000h,AX=3001h,AX=3003h
--------M-333001-----------------------------
INT 33 - Smooth Mouse Driver, PrecisePoint - ENABLE SMOOTH MOUSE
AX = 3001h
Return&#58; AX = status &#40;0000h = disabled, 0001h = enabled&#41;
Note&#58; SMD remains disabled if running under Desqview or in graphics mode
SeeAlso&#58; AX=0001h,AX=0002h,AX=3002h
--------M-333002-----------------------------
INT 33 - Smooth Mouse Driver, PrecisePoint - DISABLE SMOOTH MOUSE
AX = 3002h
Return&#58; AX = status &#40;0000h = disabled, 0001h = enabled&#41;
SeeAlso&#58; AX=0001h,AX=0002h,AX=3000h,AX=3001h
--------M-333003-----------------------------
INT 33 - Smooth Mouse Driver, PrecisePoint - GET INFORMATION
AX = 3003h
BL = data structure selector
00h Primary Bitmap &#40;used for 25 line mode&#41; &#40;see #2381&#41;
01h Secondary Bitmap &#40;used for 43/50 line modes&#41; &#40;see #2381&#41;
02h Sacrifice Character Map &#40;see #2382&#41;
03h Program Information &#40;see #2383&#41;
Return&#58; ES&#58;DX -> selected data structure
SeeAlso&#58; AX=3000h

Format of Primary/Secondary Bitmap &#91;SMD_BITMAP_STRUCT&#93;&#58;
Offset Size Description &#40;Table 2381&#41;
00h BYTE vertical size of bitmap &#40;00h - 10h&#41;
01h BYTE horizontal size of bitmap &#40;00h - 10h&#41;
02h BYTE vertical hotspot position &#40;00h - 10h&#41;
03h BYTE horizontal hotspot position &#40;00h - 10h&#41;
04h 16 WORDs cursor bitmap data
14h 16 WORDs screen bitmap data

Format of Sacrifice Character Map &#91;SMD_SMAP_STRUCT&#93;&#58;
Offset Size Description &#40;Table 2382&#41;
00h BYTE bytes are character values &#40;00h-FFh&#41; used in place of the
01h BYTE actual character for the corresponding position on the screen
02h BYTE +--------------+ occupied by part or all of the mouse
03h BYTE | 0h | 1h | 2h | cursor
04h BYTE |----+----+----|
05h BYTE | 3h | 4h | 5h |
06h BYTE |----+----+----|
07h BYTE | 6h | 7h | 8h |
08h BYTE +--------------+

Format of Program Information &#91;SMD_INFO_STRUCT&#93;&#58;
Offset Size Description &#40;Table 2383&#41;
00h WORD segment of old interrupt 33h handler
02h WORD offset of old interrupt 33h handler
04h WORD PSP of SMD
06h BYTE ENABLE/DISABLE manual setting status
07h BYTE ENABLE/DISABLE internal usage status
--------M-333004-----------------------------
INT 33 - Smooth Mouse Driver, PrecisePoint - RESERVED FUTURE EXPANSION
AX = 3004h
SeeAlso&#58; AX=3000h
--------M-333005-----------------------------
INT 33 - Smooth Mouse Driver, PrecisePoint - RESERVED FUTURE EXPANSION
AX = 3005h
SeeAlso&#58; AX=3000h
--------M-334F00-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - GET ???
AX = 4F00h
Return&#58; AX = 004Fh if supported
BX = ???
ES&#58;DI -> ???
SeeAlso&#58; AX=4F01h
--------M-334F01-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - ???
AX = 4F01h
ES = ???
Return&#58; AX = 004Fh if supported
ES&#58;DI -> ???
SeeAlso&#58; AX=4F00h
--------M-336F00-----------------------------
INT 33 - Hewlett Packard - HP MOUSE DRIVER INSTALLATION CHECK
AX = 6F00h
BX &lt;> 4850h
Return&#58; BX = 4850h &#40;'HP'&#41; if mouse driver written by Hewlett Packard
SeeAlso&#58; INT 10/AX=6F00h,INT 14/AX=6F00h,INT 16/AX=6F00h,INT 17/AX=6F00h

arshia_
شنبه 09 خرداد 1383, 07:59 صبح
از بحث اصلی خارج شدید ؟

Best Programmer
سه شنبه 12 خرداد 1383, 13:23 عصر
نه عزیز. باهمون ax=3 و int 33 مقادیر x. y بدست میاد ولی من و دوست عزیزم خواستیم مرجعی در این باب در سایت قرار دادهباشیم که به دیگران کمکی کرده باشیم.