;旼컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� ;� 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 ;