[Back to JOYSTICK SWAG index] [Back to Main SWAG index] [Original]

    Program JoyTest;

    uses
       crt;

    var
       ch:char;
       x1,y1,x2,y2:word;

    Function JoyExist:boolean;
    var
       temp:byte;
    begin
       asm
          mov ah,84h
          mov dx,00h
          int 15h
          mov temp,al
       end;
       if temp=0 then JoyExist:=false
       else JoyExist:=true;
    end;

    Function JoyX:word;
    var
       temp:word;
    begin
       asm
          mov ah,84h
          mov dx,01h
          int 15h
          mov temp,ax
       end;
       JoyX:=temp;
    end;

    Function JoyY:word;
    var
       temp:word;
    begin
       asm
          mov ah,84h
          mov dx,01h
          int 15h
          mov temp,bx
       end;
       JoyY:=temp;
    end;

    Function JoyBtn1:boolean;
    var
       temp:byte;
    begin
       asm
          mov ah,84h
          mov dx,00h
          int 15h
          mov temp,al;
       end;
       if temp and 16 = 16 then JoyBtn1:=false
          else JoyBtn1:=true;
    end;

    Function JoyBtn2:boolean;
    var
       temp:byte;
    begin
       asm
          mov ah,84h
          mov dx,00h
          int 15h
          mov temp,al;
       end;
       if temp and 32 = 32 then JoyBtn2:=false
          else JoyBtn2:=true;
    end;

    Procedure JoyCalibrate;

    begin

       writeln('Move Joystick to upper-left, and press a button...');
       repeat
          x1:=JoyX;
          y1:=JoyY;
       until JoyBtn1 or JoyBtn2;
       repeat until not JoyBtn1 or JoyBtn2;
       writeln('Move Joystick to lower-right, and press a button...');
       repeat
          x2:=JoyX;
          y2:=JoyY;
       until JoyBtn1 or JoyBtn2;

    end;

    begin

       clrscr;
       if not joyexist then begin
          writeln('No joystick');
          halt;
       end;
       joycalibrate;
       write(#10#13,'Range is from (',x1,',',y1,') to (',x2,',',y2,')');
       ch:=readkey;
    end.

[Back to JOYSTICK SWAG index] [Back to Main SWAG index] [Original]