Category : BASIC Source Code
Archive   : JOYSTK.ZIP
Filename : JOYSTICK.BAS

 
Output of file : JOYSTICK.BAS contained in archive : JOYSTK.ZIP
BEGIN:
CLS
PRINT " +----------------------------------------------------------------------+"
PRINT " | JOYSTICK |"
PRINT " | Version 4.1 4/23/1988 Steven Rich |"
PRINT " | 24162 Gleneyrie |"
PRINT " | Southfield, Mi. 48034 |"
PRINT " | |"
PRINT " | Released to the Public Domain for Non-Profit, Non-Commercial |"
PRINT " | Use ONLY. |"
PRINT " +----------------------------------------------------------------------+"
PRINT
PRINT " WHICH JOYSTICK DO YOU WISH TO CHECK?"
PRINT " ENTER (1) or (2)"

CHOICE: REM Find Out Which Joystick to Test
WHILE IN$ <> "1" AND IN$ <> "2"
IN$ = INKEY$
IF IN$ <> "" THEN PRINT CHR$(7);
WEND

SETUP: REM Inital Value Setup
REM XPORT= X-coordinate value for STICK command
REM YPORT= Y=coordinate value for STICK command
REM BUTTONA= value for STRIG command for first joystick button
REM BUTTONB= value for STRIG command for second joystick button
REM
C9 = VAL(IN$)
IF C9 = 1 THEN
XPORT = 0: YPORT = 1: BUTTONA = 0: BUTTONB = 4
ELSEIF C9 = 2 THEN
XPORT = 2: YPORT = 3: BUTTONA = 2: BUTTONB = 6
END IF

BA = -1: BB = -1: REM Used to setup "Flip Flop" for Button Display
XMIN = 255: YMIN = 255: XMAX = 0: YMAX = 0: REM Setup Initial X & Y min. values

REM STRIG(BUTTONA) ON: STRIG(BUTTONB) ON
ON STRIG(BUTTONA) GOSUB BUTTON1
ON STRIG(BUTTONB) GOSUB BUTTON2
CLS
LOCATE 1, 1: PRINT " Joystick Test Program V 4.1 4/23/1987 S. Rich"
LOCATE 3, 1: PRINT " --- JOYSTICK "; IN$; " UNDER TEST ---"
LOCATE 5, 30: PRINT "JOYSTICK TREND"

REM Draw Box Around Trend
LOCATE 6, 30: PRINT CHR$(201); : FOR I = 1 TO 12: PRINT CHR$(205); : NEXT: PRINT CHR$(187);
LOCATE 14, 30: PRINT CHR$(200); : FOR I = 1 TO 12: PRINT CHR$(205); : NEXT: PRINT CHR$(188);
FOR I = 7 TO 13
LOCATE I, 30: PRINT CHR$(186); : LOCATE I, 43: PRINT CHR$(186);
NEXT

REM Draw Box Around Position
LOCATE 17, 25: PRINT CHR$(201); : FOR I = 1 TO 22: PRINT CHR$(205); : NEXT: PRINT CHR$(187);
LOCATE 19, 25: PRINT CHR$(200); : FOR I = 1 TO 22: PRINT CHR$(205); : NEXT: PRINT CHR$(188);
FOR I = 18 TO 18
LOCATE I, 25: PRINT CHR$(186); : LOCATE I, 48: PRINT CHR$(186);
NEXT
LOCATE 17, 37: PRINT CHR$(203); : LOCATE 19, 37: PRINT CHR$(202)

REM Draw Attention Arrows
LOCATE 19, 28: PRINT CHR$(203): LOCATE 20, 28: PRINT CHR$(186);
LOCATE 21, 25: PRINT CHR$(17); CHR$(205); CHR$(205); CHR$(188);
LOCATE 19, 44: PRINT CHR$(203): LOCATE 20, 44: PRINT CHR$(186);
LOCATE 21, 44: PRINT CHR$(200); CHR$(205); CHR$(205); CHR$(16);

LOCATE 10, 10: PRINT "BUTTON 1"
LOCATE 10, 60: PRINT "BUTTON 2"
LOCATE 18, 9: PRINT "X - AXIS": LOCATE 20, 4: PRINT "Min Max AVG"
LOCATE 18, 59: PRINT "Y - AXIS": LOCATE 20, 54: PRINT "AVG Min Max"

LOCATE 16, 30: PRINT "ABSOLUTE VALUE";
LOCATE 23, 1: PRINT "1) Move Joystick to MAX & MIN. 2) Adjust Pots. so that X&Y ABSOLUTE VALUE=AVG"

LOCATE 24, 1: PRINT " Press AND to quit";

START: REM MAIN PROGRAM LOOP

WHILE A = A

REM Stopping the button test avoids random screen printing
REM but "Traps" events for processing

STRIG(BUTTONA) STOP: STRIG(BUTTONB) STOP

DUMMY = STICK(0): ' MUST BE INCLUDED TO ACTIVATE STICK ROUTINES
X = STICK(XPORT)
Y = STICK(YPORT)
GOSUB CLDIS
GOSUB MAXMIN

XCHECK: 'CHECK X-COORDINATE OF JOYSTICK
IF X1 > X THEN
LOCATE 10, 32: PRINT CHR$(27);
ELSEIF X1 < X THEN
LOCATE 10, 42: PRINT CHR$(26);
END IF

YCHECK:
IF Y1 > Y THEN
LOCATE 7, 37: PRINT CHR$(24);
ELSEIF Y1 < Y THEN
LOCATE 13, 37: PRINT CHR$(25);
END IF

CENCHECK: 'CHECK Y-COORDINATE OF JOYSTICK
IF X = X1 AND Y = Y1 THEN LOCATE 10, 37: PRINT CHR$(233);

PRINTVAL: 'PRINT JOYSTICK VALUES
LOCATE 18, 27
PRINT X; " "; Y;
LOCATE 18, 37: PRINT CHR$(186);
X1 = X: Y1 = Y

REM Turn on Button Interrupt for processing

STRIG(BUTTONA) ON: STRIG(BUTTONB) ON

WEND: REM End of main program loop

CLDIS: REM Clear Trend Display
LOCATE 10, 32: PRINT " ": LOCATE 10, 42: PRINT " ": LOCATE 13, 37: PRINT " ":
LOCATE 10, 37: PRINT " ": LOCATE 7, 37: PRINT " ":
RETURN

BUTTON1: REM Button 1 Pressed Subroutine
STRIG(BUTTONB) STOP
BA = -BA: IF BA < 0 THEN C1 = 0: C2 = 7 ELSE C1 = 7: C2 = 0
LOCATE 10, 10: COLOR C1, C2: PRINT "BUTTON 1";
COLOR 7, 0
STRIG(BUTTONB) ON
RETURN

BUTTON2: REM Button 2 Pressed Subroutine
STRIG(BUTTONA) STOP
BB = -BB: IF BB < 0 THEN C1 = 0: C2 = 7 ELSE C1 = 7: C2 = 0
LOCATE 10, 60: COLOR C1, C2: PRINT "BUTTON 2";
COLOR 7, 0
STRIG(BUTTONA) ON
RETURN

MAXMIN: REM X & Y Axis Maximum & Minimum & Center Calcul.
IF X < XMIN THEN XMIN = X
IF Y < YMIN THEN YMIN = Y
IF X > XMAX THEN XMAX = X
IF Y > YMAX THEN YMAX = Y
XAVG = INT((XMIN + XMAX) / 2): YAVG = INT((YMIN + YMAX) / 2)
LOCATE 21, 3: PRINT XMIN; " "; XMAX; " "; XAVG
LOCATE 21, 53: PRINT YAVG; " "; YMIN; " "; YMAX; " "
RETURN




  3 Responses to “Category : BASIC Source Code
Archive   : JOYSTK.ZIP
Filename : JOYSTICK.BAS

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/