Есть модуль для работы с мышкой с ассемблерными вставками. В 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.