Есть модуль для работы с мышкой с ассемблерными вставками. В Borland Pascal 7.0 компилируется нормально, а в Free Pascal выдаёт ошибку "Error: Asm: [lds reg16,reg32] invalid combination of opcode" на некоторых строках.
- Код: Выделить всё
unit mouse;
interface
const LeftButton=1; RightButton=2; CenterButton=4;
function MouseSupportPresence: Boolean;
procedure ShowMousePointer;
procedure HideMousePointer;
function MouseButtonsStatus: Word;
procedure GetMousePointerPosition(var wX, wY: longint);
procedure SetMousePointerPosition(wX, wY: Word);
implementation
{$asmmode intel}
function MouseSupportPresence: Boolean; assembler;
asm
xor ax, ax
int 33h
cmp ax,0FFFFh
mov al,0
jne @1
inc ax
@1:
end;
procedure ShowMousePointer; assembler;
asm
mov ax,1
int 33h
end;
procedure HideMousePointer; assembler;
asm
mov ax,2
int 33h
end;
function MouseButtonsStatus: Word; assembler;
asm
mov ax,3
int 33h
mov ax,bx
end;
procedure GetMousePointerPosition(var wX, wY: Word); assembler;
asm
mov ax,3
int 33h
push ds
lds si,wX
mov [si],cx
lds si,wY
mov [si],dx
pop ds
end;
procedure SetMousePointerPosition(wX, wY: Word); assembler;
asm
mov ax,4
mov cx,wX
mov dx,wY
int 33h
end;
end.