unit mouse; interface uses dos; function InitMouse : boolean; {инициализация мыши} function GetMouse(var MouseX,MouseY : word) : word; {запрос положения курсора и состояния клавиш мыши} procedure SetMouse(MouseX, MouseY: word); {установка положения курсора мыши} procedure SetMouseRange(X1,Y1,X2,Y2: word); {установка границ перемещения курсора мыши} implementation function InitMouse : boolean; {инициализация мыши} var CPU_Reg : registers; begin CPU_Reg.Ax := 0; Intr($33,CPU_Reg); InitMouse := CPU_Reg.Ax = $ffff; end; function GetMouse(var MouseX,MouseY : word) : word; {запрос положения курсора и состояния клавиш мыши} var CPU_Reg : registers; begin CPU_Reg.Ax := 3; Intr($33,CPU_Reg); with CPU_Reg do begin MouseX := Cx; MouseY := Dx; GetMouse := Bx; end; end; procedure SetMouse(MouseX, MouseY: word); {установка положения курсора мыши} var CPU_Reg : registers; begin with CPU_Reg do begin Ax := 4; Cx := MouseX; Dx := MouseY; end; intr($33,CPU_Reg); end; procedure SetMouseRange(x1,y1,x2,y2: word); {установка границ перемещения курсора мыши} var CPU_Reg : registers; begin with CPU_Reg do begin Ax := 7; Cx := x1; Dx := x2; end; intr($33,CPU_Reg); {функция 7 - установка горизонтальных границ} with CPU_Reg do begin Ax := 8; Cx := y1; Dx := y2; end; intr($33,CPU_Reg); {функция 8 - установка вертикальных границ} end; end.