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

    {
    > I'd like to use a joystick in a program but I'm not familiar
    > with any algorithm to do that, suggestions?

    Here's one I found lying around (public domain...<G>) on a local BBS... I
    changed it around a little so it would fit in one message...  It compiled into
    a .TPU okay, so it *probably* works.  Let me know if it doesn't... :)

    --Ricky Godbee, Jr.
    }

    unit Joystick;
    interface
    uses Dos, Crt;
    procedure JPos(Joystick_Number: byte; var Joystick_X, Joystick_Y: word);
    procedure JBut(Joystick_Number: byte; var Button_1, Button_2: boolean);
    implementation
    var Register: Registers;
    procedure InitRegisters;
    begin
     FillChar(Register, Sizeof(Register), 0);
    end;
    procedure JPos(Joystick_Number: byte; var Joystick_X, Joystick_Y: word);
    begin
     InitRegisters;
     Register.AH := $84;
     Register.DX := $01;
     Intr($15, Register);
     if Joystick_Number = 1 then
      begin
       Joystick_X := Register.AX;
       Joystick_Y := Register.BX;
      end
     else if Joystick_Number = 2 then
      begin
       Joystick_X := Register.CX;
       Joystick_Y := Register.DX;
      end;
    end;
    procedure JBut(Joystick_Number: byte; var Button_1, Button_2: boolean);
    begin
     InitRegisters;
     Register.AH := $84;
     Register.DX := $00;
     Intr($15, Register);
     case Joystick_Number of
      1: begin
          Button_1 := (Register.AL and $20) <> $20;
          Button_2 := (Register.AL and $10) <> $10;
         end;
      2: begin
          Button_1 := (Register.AL and $40) <> $40;
          Button_2 := (Register.AL and $80) <> $80;
         end;
     end;
    end;
    end.

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