从技术角度而言当然可以!一般需要内嵌汇编!
下面这段代码是一个最简单的手柄驱动,如果你看不懂,那就没办法了!
unit Joy;
Interface
const JoystickAButton1 = $10;
; ; ; JoystickAButton2 = $20;
; ; ; JoystickBButton1 = $40;
; ; ; JoystickBButton2 = $80;
; ; ; JoystickAAxisX ; = $01;
; ; ; JoystickAAxisY ; = $02;
; ; ; JoystickBAxisX ; = $04;
; ; ; JoystickBAxisY ; = $08;
function JoystickButton(buttonnum : byte) : boolean;
function JoystickPosition(axisnum : byte) : word;
Implementation
const JOYSTICKPORT = $201;
function JoystickButton(buttonnum : byte) : boolean;
begin
; JoystickButton := (Port[JOYSTICKPORT] and buttonnum) = 0;
end;
function JoystickPosition(axisnum : byte) : word;
var count : word;
begin
; asm
; ; mov word ptr count, 0
; ; cli ; ; ; ; ;
; ; mov dx, JOYSTICKPORT ;
; ; out dx, al
; ; @joystickloop:
; ; inc count ; ; ; ; ; ; ;
; ; cmp count, $FFFF ; ; ;
; ; je @done
; ; in al, dx ; ; ; ; ; ; ;
; ; and al, axisnum ; ; ; ;
; ; jne @joystickloop
; ; @done:
; ; sti ; ; ; ; ; ; ; ; ; ;
; end;
; JoystickPosition := count;
end;
end.