Unit SMouse; {Simply Mouse Unit} Interface Uses Dos, Graph; Function MouseInit : Boolean; Procedure MouseShow; Procedure MouseHide; Function MouseGetPage : Word; Procedure MouseSetPage(Page : Word); Procedure MouseRange(X1, Y1, X2, Y2 : Word); Procedure MouseState(Var PosX, PosY); Procedure MousePressed(Var Button, X, Y); Procedure MouseGetMove(Var GetX, GetY); Procedure MouseGotoXY(X, Y : Word); Implementation {Инициализирует мышь, если невозможно, то возвращает False} Function MouseInit : Boolean; Var Vector : Pointer; Regs : Registers; Begin Regs.AX := 0; Regs.BX := 0; Intr($33, Regs); If Regs.AX = 0 Then MouseInit := False Else MouseInit := True; End; {Показывает (включает) указатель мыши} Procedure MouseShow; Assembler; Asm mov AX, 1 int 33h End; {Скрывает (выключает) указатель мыши} Procedure MouseHide; Assembler; Asm mov AX, 2 int 33h End; {Возвращает текущую страницу мыши} Function MouseGetPage : Word; Assembler; Asm mov AX, 1Eh int 33h mov AX, BX End; {Устанавливает текущую страницу мыши} Procedure MouseSetPage(Page : Word); Assembler; Asm mov AX, 1Dh mov BX, Page int 33h End; {Устанавливает границы окна, в котором} {может перемещаться мышь } Procedure MouseRange(X1, Y1, X2, Y2 : Word); Assembler; Asm mov AX, 7 mov CX, X1 mov DX, X2 int 33h mov AX, 8 mov CX, Y1 mov DX, Y2 int 33h End; {Записывает в переменные PosX и PosY текущие координаты мыши} Procedure MouseState(Var PosX, PosY); Assembler; Asm mov AX, 3 int 33h les DI, PosX mov WORD PTR ES:[DI], CX les DI, PosY mov WORD PTR ES:[DI], DX End; {Записывает в X и Y координаты последнего нажатия } {требуемой кнопки Button, а на выходе в Button } {записываеться состояние кнопок (по битам) } Procedure MousePressed(Var Button, X, Y); Assembler; Asm mov AX, 5 les DI, Button mov BX, WORD PTR ES:[DI] int 33h mov WORD PTR ES:[DI], AX les DI, X mov WORD PTR ES:[DI], CX les DI, Y mov WORD PTR ES:[DI], DX End; {Записываем в GetX и GetY последнее перемещение курсора мыши} Procedure MouseGetMove(Var GetX, GetY); Assembler; Asm mov AX, 0Bh int 33h les DI, GetX mov WORD PTR ES:[DI], CX les DI, GetY mov WORD PTR ES:[DI], DX End; {Перемещаем курсор мыши в необходимую позицию} Procedure MouseGotoXY(X, Y : Word); Assembler; Asm mov AX, 4 mov CX, X mov DX, Y int 33h End; End.