[Back to JOYSTICK SWAG index] [Back to Main SWAG index] [Original]
UNIT JoyStick;
(* Public Domain. Written by Ian Hinson November 1993 *)
INTERFACE
PROCEDURE ReadPosns;
{ Updates values of JoyA_X, JoyA_Y, JoyB_X, and JoyB_Y }
PROCEDURE ReadButtons;
{ Updates the state of all buttons }
{ Call the function for whichever button(s) you want to test
after updating all their states with a call to ReadButtons. }
FUNCTION JoyA_Button1: BOOLEAN;
FUNCTION JoyA_Button2: BOOLEAN;
FUNCTION JoyB_Button1: BOOLEAN;
FUNCTION JoyB_Button2: BOOLEAN;
FUNCTION AnyButton: BOOLEAN;
VAR
{ These variables provide the X&Y positions after
they have been updated by a call to ReadPositions }
JoyA_X, JoyA_Y, JoyB_X, JoyB_Y: WORD;
IMPLEMENTATION
VAR
buttons: SET OF (JoyA_1, JoyA_2, JoyB_1, JoyB_2);
PROCEDURE ReadPosns; ASSEMBLER;
ASM
mov ah,$84
mov dx,1
int $15
mov JoyA_X,ax
mov JoyA_Y,bx
mov JoyB_X,cx
mov JoyB_Y,dx
END;
PROCEDURE ReadButtons; ASSEMBLER;
ASM
mov ah,$84
mov dx,0
int $15
shr al,4
xor al,$0F
mov buttons,al
END;
FUNCTION JoyA_Button1: BOOLEAN;
BEGIN
JoyA_Button1 := JoyA_1 IN buttons;
END;
FUNCTION JoyA_Button2: BOOLEAN;
BEGIN
JoyA_Button2 := JoyA_2 IN buttons;
END;
FUNCTION JoyB_Button1: BOOLEAN;
BEGIN
JoyB_Button1 := JoyB_1 IN buttons;
END;
FUNCTION JoyB_Button2: BOOLEAN;
BEGIN
JoyB_Button2 := JoyB_2 IN buttons;
END;
FUNCTION AnyButton: BOOLEAN;
BEGIN
AnyButton := buttons <> [];
END;
END.
[Back to JOYSTICK SWAG index] [Back to Main SWAG index] [Original]