Listing of file='KEYMOD.BAS;07' on disk='vmedia/interface_software-sector.ccvf'
100 REM KEYBOARD BY CAP 200 REM SET UP SOUND PROGRAM 203 POKE 32940,255:POKE 32941,159:CLEAR 50 205 LOAD "NEWML5.DAT;1" 210 PLOT 6,4,12,15,27,11 220 TM= PEEK (32940)+ 256* PEEK (32941)+ 1 230 X= INT ((TM+ 7)/ 256):Y= TM- 256* X+ 7 240 POKE 33283,Y:POKE 33284,X 245 DU= 15:SR= 176:SD= 177:AM= 15 250 OUT SR,7:OUT SD,62 255 OUT SR,8:OUT SD,0 256 REM 257 REM FOR "TREMOLO" USE THE FOLLOWING STATEMENTS AND ALSO 258 REM CHANGE AM TO 16 ABOVE (NOT 15) AND DU TO 50 (NOT 15) 259 REM 260 REM :OUT SR,11:OUT SD,100:OUT SR,12:OUT SD,1 265 REM :OUT SR,13:OUT SD,10 300 REM SET UP ARRAYS 305 OUT 8,247 310 DIM KE(26),NT(47),KB(47) 315 RESTORE 325 320 FOR N= 1TO 26:READ KE(N):NEXT 325 DATA 1,0,0,5,4,7,9,11,0,13,15,0,0,0,0,0,0,0,3,8,12,0,2,0,10,0 330 FOR N= 0TO 47:READ NT(N):NEXT 335 DATA 0,154,146,138,130,122,0,115,109,103,97,91,86,81,0,77 340 DATA 0,77,72,68,64,60,0,57,54,51,48,45,42,39,0,37 345 DATA 0,37,35,33,31,29,0,27,25,24,22,21,20,18,0,17 350 FOR N= 0TO 47 355 IF NAND 1THEN KB(N)= 31487+ N* 3:GOTO 365 360 KB(N)= 30974+ N* 3 365 IF N> 15THEN KB(N)= KB(N)- 6 366 IF N> 31THEN KB(N)= KB(N)- 6 375 NEXT 400 GOSUB 1000 500 REM KEYBOARD WATCHER AND NOTE PLAYER 504 X= 0:PLOT 6,0 505 TP= 20* (X+ 3) 510 PRINT " KEYBOARD IS READY" 515 PLOT 6,0 520 OUT 8,255:X= CALL (2):OUT 8,247:X= X- 64 521 PLOT 8 525 IF X< 0OR X> 27THEN 585 530 IF KE(X)= 0THEN 520 532 SA= KE(X)+ OC 535 NT= NT(SA):DU= INT (TP) 560 IF SAAND 1THEN POKE KB(SA),240:GOTO 570 565 POKE KB(SA),15 570 GOSUB 5000 575 POKE KB(SA),255 580 GOTO 520 585 X= X+ 16 590 IF X< 1OR X> 9THEN X= X+ 48:GOTO 605 595 TP= 20* (X+ 3) 600 GOTO 520 605 IF X= 28THEN OC= OC+ 16:IF OC> 32THEN OC= 32 610 IF X= 10THEN OC= OC- 16:IF OC< 0THEN OC= 0 615 IF X= 26THEN OUT 8,255:PLOT 6,6:END 620 GOTO 520 1000 REM SET UP GRAPHICS 1200 PLOT 12,6,7 1210 FOR X= 0TO 125STEP 6 1211 SA= X/ 3+ 1:IF SA> 15THEN SA= SA+ 2:IF SA> 31THEN SA= SA+ 2 1212 NT = NT(SA):GOSUB 5000 1220 PLOT 2,246,23,X,79,243,8,136,8,255 1230 NEXT 1240 PLOT 6,56 1250 FOR X= 0TO 120STEP 6 1260 IF X= 12OR X= 36THEN NEXT 1270 IF X= 54OR X= 78THEN NEXT 1280 IF X= 96OR X= 120THEN 1300 1281 SA= X/ 3+ 2:IF SA> 15THEN SA= SA+ 2:IF SA> 31THEN SA= SA+ 2 1282 NT = NT(SA):GOSUB 5000 1290 PLOT 2,246,48,X+ 3,79,243,8,136,8,255 1300 NEXT 1310 PLOT 6,6 1320 PLOT 6,1,3,0,27 1330 PRINT " C D E F G A B C D E F G A B C D E F G A B " 1340 PLOT 8 1370 PLOT 6,6 1380 FOR X= 4TO 116STEP 4 1390 PLOT 2,246,87,X,119,243,136,255 1400 NEXT 1410 PLOT 6,48 1420 FOR X= 4TO 108STEP 4 1430 IF X= 12OR X= 28THEN 1480 1440 IF X= 40OR X= 56THEN 1480 1450 IF X= 68OR X= 84THEN 1480 1460 IF X= 96OR X= 84THEN 1480 1470 PLOT 2,246,104,X+ 3,119,243,8,255 1480 NEXT 1490 PLOT 6,6 1500 PLOT 6,1,3,0,10 1510 PRINT " C D E F G A B C D E F G A B C D E F G A B C D E F G A B C " 1520 PLOT 8 1530 RETURN 5000 REM SOUNDMAKER 5010 N1= NT* 2.75:N2= INT (N1/ 256):N1= N1- N2* 256 5020 OUT SR,0:OUT SD,N1:OUT SR,1:OUT SD,N2 5030 OUT SR,8:OUT SD,AM 5040 FOR IJ= 1 TO DU:NEXT IJ 5050 OUT SD,0 5060 RETURN