17 #include <reactos/buildno.h> 18 #include <reactos/version.h> 29 #include "../console/video.h" 43 "ReactOS PS/2 16/32-bit Mouse Driver Compatible MS-MOUSE 6.26\r\n" 44 "Version "KERNEL_VERSION_STR
" (Build "KERNEL_VERSION_BUILD_STR
")\r\n" 45 "Copyright (C) ReactOS Team 1996-"COPYRIGHT_YEAR
"\0";
65 #define MICKEYS_PER_CELL_HORIZ 8 66 #define MICKEYS_PER_CELL_VERT 16 186 for (
i = 0;
i < 16;
i++)
192 for (
j = 0;
j < 4;
j++)
203 for (
j = 0;
j < 16;
j++)
213 for (
j = 0;
j < 4;
j++)
244 for (
i = 0;
i < 16;
i++)
256 for (
j = 0;
j < 16;
j++)
267 CursorLine[
j] ^= 0x0F;
305 for (
i = 0;
i < 16;
i++)
307 WORD CursorLine[4] = {0};
312 for (
j = 0;
j < 16;
j++)
320 for (
j = 0;
j < 4;
j++)
339 for (
i = 0;
i < 16;
i++)
425 DPRINT(
"Calling Handler0 %04X:%04X with CallMask 0x%04X\n",
473 DPRINT1(
"Calling Handler[%d] %04X:%04X with CallMask 0x%04X\n",
524 if (NewState > OldState)
530 CallMask |= (1 << (2 *
i + 1));
532 else if (NewState < OldState)
538 CallMask |= (1 << (2 *
i + 2));
551 SHORT DeltaX, DeltaY;
723 DPRINT(
"Setting mouse horizontal range: %u - %u\n",
Min,
Max);
742 DPRINT(
"Setting mouse vertical range: %u - %u\n",
Min,
Max);
778 else if (BX == 0x0001)
781 DPRINT1(
"Defining hardware cursor is unimplemented\n");
788 DPRINT1(
"Invalid BX value 0x%04X\n", BX);
811 DPRINT1(
"Define callback 0x%04X, %04X:%04X\n",
835 DPRINT1(
"INT 33h, AH=13h: Mouse double-speed threshold is UNSUPPORTED\n");
847 DPRINT1(
"Exchange old callback 0x%04X, %04X:%04X with new callback 0x%04X, %04X:%04X\n",
908 DPRINT1(
"Define v6.0+ callback 0x%04X, %04X:%04X\n",
911 if (CallMask == 0x0000)
955 USHORT EmptyHandler = 0xFFFF;
960 if (EmptyHandler == 0xFFFF &&
981 if (!
Success && EmptyHandler != 0xFFFF
1036 DPRINT1(
"INT 33h, AH=1Ah: Mouse sensitivity is UNSUPPORTED\n");
1052 DPRINT1(
"INT 33h, AH=1Bh: Mouse sensitivity is UNSUPPORTED\n");
1227 DPRINT1(
"BIOS Function INT 33h, AX = 0x%04X NOT IMPLEMENTED\n",
getAX());
struct _MOUSE_DRIVER_STATE MOUSE_DRIVER_STATE
COORD VgaGetDisplayResolution(VOID)
USHORT WINAPI getBX(VOID)
COORD LastPress[NUM_MOUSE_BUTTONS]
_In_ CDROM_SCAN_FOR_SPECIAL_INFO _In_ PCDROM_SCAN_FOR_SPECIAL_HANDLER Function
USHORT WINAPI getSI(VOID)
USHORT WINAPI getCX(VOID)
#define DOS_MOUSE_INTERRUPT
VOID WINAPI setAX(USHORT)
VOID InitializeContext(IN PCALLBACK16 Context, IN USHORT Segment, IN USHORT Offset)
static VOID DosMouseDisable(VOID)
VOID DosMouseCleanup(VOID)
VOID WINAPI setDS(USHORT)
BOOLEAN DosFreeMemory(WORD BlockData)
struct _MOUSE_DRIVER_STATE::@4862 GraphicsCursor
VOID Int32Call(IN PCALLBACK16 Context, IN BYTE IntNumber)
static WORD MouseDataSegment
VOID FASTCALL EmulatorWriteMemory(PFAST486_STATE State, ULONG Address, PVOID Buffer, ULONG Size)
static VOID DosMouseEnable(VOID)
#define MICKEYS_PER_CELL_VERT
static VOID DosUpdateButtons(BYTE ButtonState)
#define MICKEYS_PER_CELL_HORIZ
#define SEG_OFF_TO_PTR(seg, off)
struct _MOUSE_DRIVER * PMOUSE_DRIVER
static PMOUSE_DRIVER MouseData
_In_ WDFREQUEST _In_ PIO_STACK_LOCATION Stack
VOID WINAPI setES(USHORT)
static WORD DefaultGfxCursorMask[16]
BYTE MouseDosInt16Stub[Int16To32StubSize]
static WORD DefaultGfxScreenMask[16]
COORD LastRelease[NUM_MOUSE_BUTTONS]
struct _MOUSE_DRIVER MOUSE_DRIVER
VOID WINAPI setSI(USHORT)
UCHAR IOReadB(USHORT Port)
ULONG RegisterInt32(IN ULONG FarPtr, IN BYTE IntNumber, IN EMULATOR_INT32_PROC IntHandler, OUT PSIZE_T CodeSize OPTIONAL)
#define BIOS_MISC_INTERRUPT
WORD DosAllocateMemory(WORD Size, WORD *MaxAvailable)
static VOID EraseMouseCursor(VOID)
#define Int16To32StubSize
static VOID WINAPI DosMouseService(LPWORD Stack)
static DWORD OldIrqHandler
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
VOID IOWriteB(USHORT Port, UCHAR Buffer)
CHAR Copyright[sizeof(MouseCopyright)]
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID * BaseAddress
BOOLEAN PS2PortQueueRead(BYTE PS2Port)
_Must_inspect_result_ _In_ ULONG Flags
BOOLEAN VgaGetDoubleVisionState(PBOOLEAN Horizontal, PBOOLEAN Vertical)
USHORT WINAPI getES(VOID)
static VOID FromMouseCoordinates(PCOORD Position)
VOID PicIRQComplete(BYTE IntNum)
IN PVOID IN PVOID IN USHORT Version
static VOID WINAPI DosMouseIrq(LPWORD Stack)
struct _MOUSE_DRIVER_STATE::@4861 TextCursor
VOID WINAPI setBP(USHORT)
MOUSE_USER_HANDLER Handlers[3]
VOID WINAPI setDX(USHORT)
static MOUSE_DRIVER_STATE DriverState
#define TO_LINEAR(seg, off)
BYTE MouseContextScratch[TRAMPOLINE_SIZE]
USHORT WINAPI getDX(VOID)
static const CHAR MouseCopyright[]
#define GRAPHICS_VIDEO_SEG
static VOID PaintMouseCursor(VOID)
USHORT WINAPI getAX(VOID)
BOOLEAN DosMouseInitialize(VOID)
BYTE MouseIrqInt16Stub[Int16To32StubSize]
static DWORD OldIntHandler
VOID WINAPI setBX(USHORT)
WORD PressCount[NUM_MOUSE_BUTTONS]
_In_ WDFINTERRUPT _In_ PFN_WDF_INTERRUPT_SYNCHRONIZE Callback
VOID WINAPI setDI(USHORT)
static BOOLEAN DriverEnabled
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
USHORT WINAPI getDI(VOID)
#define FIELD_OFFSET(t, f)
VOID MouseGetDataFast(PCOORD CurrentPosition, PBYTE CurrentButtonState)
struct _MOUSE_DRIVER_STATE * PMOUSE_DRIVER_STATE
VOID WINAPI setCX(USHORT)
VOID BiosPs2Service(UCHAR Function)
FAST486_STATE EmulatorContext
VOID RunCallback16(IN PCALLBACK16 Context, IN ULONG FarPtr)
USHORT WINAPI getDS(VOID)
MOUSE_USER_HANDLER Handler0
static VOID ToMouseCoordinates(PCOORD Position)
#define RtlZeroMemory(Destination, Length)
#define RtlCopyMemory(Destination, Source, Length)
USHORT WINAPI getBP(VOID)
static CALLBACK16 MouseContext
static VOID DosUpdatePosition(PCOORD NewPosition)
VOID FASTCALL EmulatorReadMemory(PFAST486_STATE State, ULONG Address, PVOID Buffer, ULONG Size)
static VOID CallMouseUserHandlers(USHORT CallMask)
WORD ReleaseCount[NUM_MOUSE_BUTTONS]