;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ;³ NICE & FAST MOUSE for mode 12h (640 x 480 in 16 colours) ³± ;³ routines in Turbo Assembler for a real mode ³± ;³ by Holy Drake / The Guardians ³± ;³ version 1.01 ³± ;³ original idea of setting a new mouse handler is taken from XLIB.MOUSE ³± ;³ Turbo Pascal unit by Themie Gouthas & Christian Harms ³± ;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ± ; ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± .286 .Model Tiny DOSSEG .Stack 500h Mouse12H_Code SEGMENT ASSUME CS:Mouse12H_Code,DS:Mouse12H_Code,ES:Mouse12H_Code True = 255 ;Define nice constants False = 0 ScreenSizeX EQU 640 ScreenSizeY EQU 480 ScreenWidthInBytes EQU 80 BackGroundTempOffset EQU 65535-2000 ;Address in a graphic memory of a buffer ;for the background behind the cursor ; Variables VisAddr DW 0 ; <- offset of the upper-left corner MouseInstalled DB False ; <- TRUE if mouse handler installed ; (procedure MyMouseInit) MouseHidden DB True ; <- TRUE if mouse handler installed ; but mouse cursor is hidden (HideMouse) MHidden DB False ; <- TRUE if mouse hidden by procedure ; called HideUntilMoved ButtonStatus DW 0 ; <- actual status of all mouse buttons ; &01-LeftButton,&02-RightButton,&04-Middle MouseX DW 1 ; <- coordinates of the mouse cursor MouseY DW 0 ; <- (when cursor is hidden also) InHandler DB False ; <- TRUE if handler procedure execute OldX DW 0 ; <- last coordinates OldY DW 0 ; 0FFh or 255 in a cursor shape table means a colour of background ; (made of glass) CursorShape DD ? ; <- pointer to the cursor shape table PointX DW 0 ; <- tells where the middle of the cursor is PointY DW 0 ;