Compucolor.org – Virtual Media

Listing of file='JOYPLT.BAS;07' on disk='vmedia/joystick-sideB-sector.ccvf'

1 REM  ****************************************
2 REM      JOYSTICK PLOTTING TEST PROGRAM
3 REM  ****************************************
4 REM
5 REM  THE OUTPUT FROM ONE OF THE FOUR JOYSTICKS IS
6 REM  DISPLAYED ON THE SCREEN, WITH OR WITHOUT A
7 REM  TRAIL OF WHERE IT HAS BEEN. THE ONLY "MASSAGING"
8 REM  OF THE RAW INPUT IS TO DIVIDE BY 2. DEPENDING
9 REM  ON THE JOYSTICK POTS, OTHER FIXES MAY BE NEEDED.
10 PLOT  6,6,12,27,24:PRINT  "X-Y JOYSTICK TEST":PRINT
15 REM  PAGE MODE USED TO AVOID PROBLEM AT BOTTOM RIGHT OF SCREEN
20 PRINT  "HOLD DOWN THE PUSH-BUTTON TO LEAVE A TRAIL"
25 PRINT  "CHANGE COLOR USING THE COLOR KEYS"
30 INPUT  "SMALL OR LARGE DOT (S OR L) ";S$
40 INPUT  "JOYSTICK NUMBER (0-3): ";JN
45 PB =  8* 2^ JN:REM  MASK FOR PUSH-BUTTON
50 IF  JN <  0 OR  JN >  3 GOTO  40
55 REM  INITIALISE VALUES THEN ENTER INFINITE LOOP
60 JN =  32+ JN* 2
70 CC =  1
80 PLOT  12,29,17
90 LX =  0:LY =  0
100 REM  *** MAIN LOOP ***
105 REM  CHECK THE PUSH BUTTON
110 GOSUB  1000
115 REM  INITIATE A CONVERSION (ANY DATA WILL DO FOR OUTPUT)
120 OUT  JN,1
125 REM  READ THE X-COORD (ANY "CHANNEL" WILL DO)
130 X =  INP (JN)
135 REM  START ANOTHER CONVERSION ("CHANNEL" NO. IS IMPORTANT)
140 OUT  JN+ 1,1
145 REM  READ THE Y-COORD
150 Y =  INP (JN+ 1)
155 REM  "MASSAGE" THE INPUT DATA - DIVIDE BY 2
160 X =  INT (X/ 2):Y =  INT (Y/ 2)
165 REM  THESE CHECKS ARE UNNECESSARY, BUT SHOW HOW ITS DONE
170 IF  X <  0 THEN  X =  0
180 IF  X >  127 THEN  X =  127
190 IF  Y <  0 THEN  Y =  0
200 IF  Y >  127 THEN  Y =  127
210 IF  S$ =  "S" GOTO  300
215 REM  PLOT LARGE DOT (CONVERT TO CHARACTER COORDS FIRST)
220 X =  INT (X/ 2):Y =  31- INT (Y/ 4)
225 IF  T$ =  "Y" GOTO  240
230 PLOT  3,LX,LY,32
240 PLOT  3,X,Y,96
250 LX =  X:LY =  Y
260 GOTO  100
295 REM  PLOT SMALL DOT. RUB OUT OLD DOT IF NO TRAIL.
300 IF  T$ =  "Y" GOTO  310
305 PLOT  6,0,2,LX,LY,255
310 C =  PEEK (33278):IF  C> 16 AND  C< 24 THEN  CC= C
315 PLOT  6,CC,2,X,Y,255
320 LX =  X:LY =  Y
330 GOTO  100
1000 REM  *** CHECK FOR A PUSH-BUTTON ***
1010 REM
1020 OUT  48,14
1030 T =  INP (48)
1040 T$ =  "Y"
1050 IF  T AND  PB THEN  T$ =  "N"
1060 RETURN