Atari/HDISK/BASIC/KEYCODES.BAS

49 lines
1.8 KiB
QBasic

5 DIM IC(255),AC(255):SC=PEEK(88)+256*PEEK(89):SHIFT=64:VERS=0
10 GOSUB 500:REM THIS WILL CREATE ARRAYS FROM DATA STATEMENTS
15 GOSUB 600:REM USE THIS TO CREATE "D:KEYCODE.DAT"
20 GOSUB 700:REM USE THIS TO CREATE ARRAYS FROM DISKFILE "D:KEYCODE.DAT"
100 POKE 694,0:ON PEEK(753)<>3 GOTO 100:K=PEEK(764)
105 N=K:IF N>63 THEN N=N-64:IF N>63 THEN N=N-64:IF N>63 THEN N=N-64
110 IF N=60 THEN SHIFT=4+K-64
115 IF N=39 THEN VERS=128*(VERS<>128)
200 PRINT N,CHR$(AC(N+SHIFT)+VERS)
205 POKE SC+959,IC(N+SHIFT)+VERS
210 GOTO 100
500 RESTORE 1000
501 REM ------------------
502 FOR I=0 TO 191
503 READ N:IC(I)=N: REM *** THIS IS WHERE IT BREAKS ***
504 NEXT I
505 REM ------------------
506 FOR I=192 TO 255
507 IC(I)=0
508 NEXT I
509 REM ------------------
510 FOR I=0 TO 255:N=IC(I)
520 IF N<64 THEN AC(I)=N+32
530 IF N>63 AND N<96 THEN AC(I)=N-64
540 IF N>95 THEN AC(I)=N
550 NEXT I
560 RETURN
600 OPEN #4,8,0,"H6:BASIC:KEYCODES.DAT"
605 RESTORE 1000:FOR I=0 TO 191:READ N:PUT #4,N:NEXT I
610 FOR I=192 TO 255:PUT #4,0:NEXT I
615 CLOSE #4:RETURN
700 OPEN #4,4,0,"H6:BASIC:KEYCODES.DAT"
705 FOR I=0 TO 255:GET #4,N:IC(I)=N
710 IF N<64 THEN AC(I)=N+32
715 IF N>63 AND N<96 THEN AC(I)=N-64
720 IF N>95 THEN AC(I)=N
725 NEXT I:RETURN
1000 DATA 108,106,27,0,0,107,11,10,111,0,112,117,0,105,13,29
1016 DATA 118,0,99,0,0,98,120,122,20,0,19,22,91,21,18,17
1032 DATA 12,0,14,110,0,109,15,0,114,0,101,121,127,116,119,113
1048 DATA 25,0,16,23,126,24,28,30,102,104,100,0,0,103,115,97
1064 DATA 44,42,26,0,0,43,60,62,47,0,48,53,0,41,63,124
1080 DATA 54,0,35,0,0,34,56,58,4,0,3,6,0,5,2,1
1096 DATA 59,0,61,46,0,45,31,0,50,0,37,57,0,52,55,49
1112 DATA 8,0,9,7,0,32,125,0,38,40,36,0,0,39,51,33
1128 DATA 76,74,123,0,0,75,94,95,79,0,80,85,0,73,92,93
1144 DATA 86,0,67,0,0,66,88,90,0,0,0,0,0,0,0,0
1160 DATA 64,0,96,78,0,77,0,0,82,0,69,89,0,84,87,81
1176 DATA 0,0,0,0,0,0,0,0,70,72,68,0,0,71,83,65