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

{
Here is a little something that I made up.. It kinda works w/ a Gravis GamePad
(w/ 4 buttons)..
}
{Joystick Test - by Christopher J. Chandra - Freeware}

uses dos,crt;
var x,y,lx,ly,u,r,b,l:byte;
    z1,z2,z3,z4:byte;          {the buttons}

procedure joy_read(var x1,y1,b1,b2,b3,b4:byte);
var result:byte;
    r:registers;
begin
asm
 mov ax,$8400
 xor dx,dx
 int 15h                       {get the buttons}
 mov result,al
end;
 if result and 16 = 16 then b1:=0 else b1:=1;
 if result and 32 = 32 then b2:=0 else b2:=1;
 if result and 64 = 64 then b3:=0 else b3:=1;
 if result and 128=128 then b4:=0 else b4:=1;
 with r do
 begin
  ax:=$8400;
  dx:=$0001;                    {get the coordinate}
 end;
 intr($15,r);
 with r do
 begin
  x1:=ax;
  y1:=bx
 end
end;
 
procedure calibrate(var upp,lef,bot,rig:byte);
var m,m1:string;
begin
 m:='Center your Joystick';m1:='and press a button';
 gotoxy(40-length(m) div 2,12);write(m);
 gotoxy(40-length(m1) div 2,13);write(m1);
 repeat
  joy_read(x,y,z1,z2,z3,z4)
 until (z1<>0) or (z2<>0) or (z3<>0) or (z4<>0);
 lx:=x;ly:=y;
 clrscr;
 z1:=0;z2:=0;z3:=0;z4:=0;delay(500);
 m:='Move your Joystick to the Upper Left corner';
 gotoxy(40-length(m) div 2,12);write(m);
 gotoxy(40-length(m1) div 2,13);write(m1);
 repeat
  joy_read(x,y,z1,z2,z3,z4)
 until (z1<>0) or (z2<>0) or (z3<>0) or (z4<>0);
 lef:=x;upp:=y;
 clrscr;
 z1:=0;z2:=0;z3:=0;z4:=0;delay(500);
 m:='Move your Joystick to the Bottom Right corner';
 gotoxy(40-length(m) div 2,12);write(m);
 gotoxy(40-length(m1) div 2,13);write(m1); {<-waste of time, eh?}
 repeat
  joy_read(x,y,z1,z2,z3,z4)
 until (z1<>0) or (z2<>0) or (z3<>0) or (z4<>0);
 rig:=x;bot:=y;
 clrscr;
 z1:=0;z2:=0;z3:=0;z4:=0;delay(500)
end;
 
var xx,yy,a:byte;
 
begin
 textcolor(7);textbackground(0);clrscr;
 {turn the cursor off if you want over here..}
 xx:=40;yy:=12;
 calibrate(u,l,b,r);
 a:=178;                  {just a cursor character}
 repeat
  gotoxy(xx,yy);write(chr(a));
  joy_read(x,y,z1,z2,z3,z4);
  if z1=1 then begin textcolor(7);textbackground(1) end else
  if z2=1 then begin textcolor(7);textbackground(4) end else
  begin textcolor(7);textbackground(0) end;
 if (z1>0) and (z3>0) then begin textcolor(7);textbackground(0);clrscr end else
 if (z3>0) and (a>33) then dec(a);
 if (z4>0) and (a<254) then inc(a);
 gotoxy(xx,yy);write(' ');
 if x<(l+5) then dec(xx,1) else  {check joystick's x against l+5}
 if x>(r-5) then inc(xx,1);      {check joystick's x against r-5}
 if y<(u+5) then dec(yy,1) else  {and check the y too}
 if y>(b-5) then inc(yy,1);
 gotoxy(1,23);write(z1:3);
 gotoxy(5,23);write(z2:3);
 gotoxy(9,23);write(z3:3);
 gotoxy(13,23);write(z4:3);
 gotoxy(1,24);write(x:3);
 gotoxy(5,24);write(y:3);
 gotoxy(9,24);write(lx:3);
 gotoxy(13,24);write(ly:3);
 if xx<1 then xx:=1 else if xx>80 then xx:=80;
 if yy<1 then yy:=1 else if yy<23 then yy:=23
until keypressed
end.

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