[Back to JOYSTICK SWAG index] [Back to Main SWAG index] [Original]
{
> Can anybody give me any info on how to read signals from pins on say
> COM2: or from LPT1: or even from The joystick port? I think it has
> been done with the PORT command or something, but what are the values
> to use to read them with?
As mentioned in the Neural_Net Echo:
}
UNIT joys;
{Joystick interface for Turbo Pascal.}
{Copyright 1993 by Wesley R. Elsberry. Released for noncommercial use.}
{NO WARRANTY.}
INTERFACE
VAR
xcor, ycor,
fire1, fire2 : WORD;
PROCEDURE joy; { basic info for first joystick }
PROCEDURE testjoy; { minimal test routine }
IMPLEMENTATION
{ Significant aid was had from the example given in:
programm to read joystick : turbo c 2.0 - Jean-Yves Vinet }
CONST
JOYPORT = $201;
STROUT = $FF;
STRCMP = $FFFF;
VAR
inread,
temp : BYTE;
PROCEDURE joy;
VAR
done : BOOLEAN;
BEGIN
done := FALSE;
xcor := 0;
ycor := 0;
port[JOYPORT] := STROUT;
while (NOT done) DO
BEGIN
if ((port[JOYPORT] AND 1) = 0) then
done := TRUE;
INC(xcor);
if (xcor = STRCMP) then
done := true;
END;
while ((port[JOYPORT] AND 2) <> 0) DO ;
done := FALSE;
port[JOYPORT] := STROUT;
while (NOT done) DO
BEGIN
if ((port[JOYPORT] AND 2) = 0) then
done := TRUE;
INC(ycor);
if (ycor = STRCMP) then
done := TRUE;
END;
inread := port[JOYPORT];
{ Button A at $10, B at $20, C at $40, D at $80. }
if ((inread AND $10) <> $10) then
fire1 := 1;
if ((inread AND $20) <> $20) then
fire2 := 1;
END;
{If you want to grab the second joystick values, the X coordinate
should be gotten from comparing port[JOYPORT] to 4, the Y coordinate
from comparing port[JOYPORT] to 8.}
PROCEDURE testjoy;
BEGIN
while TRUE do
BEGIN
joy;
WRITELN(xcor : 5, ' ', ycor, ' ', fire1, ' ', fire2);
xcor := 0;
ycor := 0;
fire1 := 0;
fire2 := 0;
END;
END;
BEGIN
{No initialization required.}
END.
{
The above was a pretty quick and dirty approach to grabbing values
off the game card. I'm sure that there are better means of doing it,
but I haven't put in the time to find them. Interestingly enough,
the Turbo C version mentioned in the comments of the unit above does
not give as large a value for the maximum displacement of a joystick,
which is an indicator that the Turbo Pascal code is faster than its
equivalent Turbo C counterpart.
}
[Back to JOYSTICK SWAG index] [Back to Main SWAG index] [Original]