home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / ENTERPRS / CPM / UTILS / F / MOUSE.LBR / JOYDEMO.PAS < prev    next >
Pascal/Delphi Source File  |  2000-06-30  |  3KB  |  152 lines

  1. {
  2. Joy Stick Demo 1.1 11/22/92 (C) 1992 Steve Goldsmith
  3. SG Tools Pro (C) 1992 Steve Goldsmith
  4. SG Tools (C) 1992 Parsec, Inc.
  5.  
  6. This program requires SG Tools from Parsec, Inc. to compile.  SG Tools Pro
  7. is a set of professional add-ons for SG Tools and Turbo Pascal.  You are
  8. free to use the JOYSTICK.INC module in your own programs as you wish.  If
  9. you use any of my tools or programs a $5.00 payment is requested to:
  10.  
  11. Steve Goldsmith
  12. 2805 Jamaica Street
  13. Sarasota, FL 34231
  14.  
  15. Send any comments to GEnie mail S.GOLDSMITH2
  16.  
  17. JOYDEMO.PAS shows how easy it is to add joy stick input to your SG Tools
  18. applications.  The Run procedure polls the joystick and displays the
  19. direction(s) and fire button status until a key is pressed.  The ReadJoy2
  20. procedure is part of the JOYSTICK.INC module.  I used the ADM-31 screen
  21. codes for cursor plotting and colors.  This was the easiest way until
  22. Parsec releases the VDC Screen Manager for SG Tools.
  23. }
  24.  
  25. program JoyDemo;
  26.  
  27. {$B-,C-,R-,U-,V-}
  28.  
  29. {SG Tools module to read cia ports}
  30.  
  31. {$I PORT.INC}
  32.  
  33. {SG Tools Pro joystick module}
  34.  
  35. {$I JOYSTICK.INC}
  36.  
  37. {codes for adm-31/commodore protocol}
  38.  
  39. const
  40.  
  41.   appClrScr = #$1b#$3a;
  42.   appRvsOn = #$1b#$47#$34;
  43.   appRvsOff = #$1b#$47#$30;
  44.   appTitleColor = #$1b#$1b#$1b#$23;
  45.   appJoyColor = #$1b#$1b#$1b#$25;
  46.   appExitColor = #$1b#$1b#$1b#$21;
  47.  
  48. {text data}
  49.  
  50.   appTitle = 'C128 CP/M Joy Stick Demo 1.1 11/22/92 ';
  51.   appCopyright = '(C) 1992 Steve Goldsmith';
  52.   appInfo = 'Move the joy stick in port 2 around';
  53.   appExit = 'Press any key to exit';
  54.  
  55. {other app related stuff}
  56.  
  57.   appScrWidth = 80;
  58.   appScrHeight = 25;
  59.  
  60. type
  61.  
  62.   appDispStr = string[255];
  63.  
  64. procedure PlotCursor (X,Y : byte);
  65.  
  66. begin
  67.   Write (#$1b#$3d+Chr (Y+$20)+Chr (X+$20))
  68. end;
  69.  
  70. procedure CenterText (S : appDispStr; Y : byte);
  71.  
  72. begin
  73.   PlotCursor ((appScrWidth-Length (S)) div 2,Y);
  74.   Write (S)
  75. end;
  76.  
  77. procedure PlotStr (X,Y : byte; S : appDispStr);
  78.  
  79. begin
  80.   PlotCursor (X,Y);
  81.   Write (S)
  82. end;
  83.  
  84. procedure DispJoyInfo;
  85.  
  86. var
  87.  
  88.   JoyData : byte;
  89.  
  90. begin
  91.   JoyData := ReadJoy2;
  92.   if JoyData and joyUp = 0 then
  93.     PlotStr (38,10,'Up')
  94.   else
  95.     PlotStr (38,10,'  ');
  96.   if JoyData and joyDown = 0 then
  97.     PlotStr (37,14,'Down')
  98.   else
  99.     PlotStr (37,14,'    ');
  100.   if JoyData and joyLeft = 0 then
  101.     PlotStr (32,12,'Left')
  102.   else
  103.     PlotStr (32,12,'    ');
  104.   if JoyData and joyRight = 0 then
  105.     PlotStr (42,12,'Right')
  106.   else
  107.     PlotStr (42,12,'     ');
  108.   if JoyData and joyFire = 0 then
  109.     PlotStr (37,12,'Fire')
  110.   else
  111.     PlotStr (37,12,'    ')
  112. end;
  113.  
  114. procedure Run;
  115.  
  116. var
  117.  
  118.   K : char;
  119.  
  120. begin
  121.   Write (appJoyColor);
  122.   repeat
  123.     DispJoyInfo
  124.   until KeyPressed;
  125.   Read (Kbd,K)
  126. end;
  127.  
  128. procedure Init;
  129.  
  130. begin
  131.   Write (appClrScr);
  132.   Write (appTitleColor);
  133.   CenterText (appTitle,0);
  134.   CenterText (appCopyright,2);
  135.   CenterText (appInfo,4);
  136.   CenterText (appExit,6)
  137. end;
  138.  
  139. procedure Done;
  140.  
  141. begin
  142.   Write (appExitColor);
  143.   PlotCursor (0,appScrHeight-3)
  144. end;
  145.  
  146.  
  147. begin
  148.   Init;
  149.   Run;
  150.   Done
  151. end.
  152.