home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib32b.dsk
/
GS.MODIFIERS.bas
< prev
next >
Wrap
BASIC Source File
|
2023-02-26
|
3KB
|
62 lines
10 REM **********************
20 REM * GS.MODIFIERS *
30 REM * BY JON C. THOMASON *
40 REM * COPYRIGHT (C) 1987 *
50 REM * BY MICROSPARC, INC *
60 REM * CONCORD, MA 01742 *
70 REM **********************
80 HOME : PRINT "Press any key combination:"
90 GET KEY$:MOD = PEEK(49189)
100 GOSUB 360: REM Break into bits
110 IF BIT(7) THEN PRINT "Open Apple-";
120 IF BIT(6) THEN PRINT "Option-";
130 IF BIT(2) THEN PRINT "Caps Lock-";
140 IF BIT(0) THEN PRINT "Shift-";
150 IF BIT(1) THEN PRINT "Control-";
160 IF KEY$ = "" THEN KEY = 0: GOTO 180
170 KEY = ASC(KEY$)
180 IF KEY <33 THEN GOSUB 450: ON FF GOTO 320: GOTO 310
190 IF BIT(4) GOTO 310
200 IF KEY <44 THEN SEARCH$ = "!#$%^&*()+" + CHR$(34):TARGT$ = "134567890='": GOSUB 580: IF FF THEN 320
210 IF KEY <58 OR KEY = 96 OR (KEY >64 AND KEY <94) GOTO 310
220 IF KEY = 58 THEN KEY = 59: GOTO 310
230 IF KEY = 59 OR KEY = 61 GOTO 310
240 IF KEY <64 THEN KEY = KEY -16: GOTO 310
250 IF KEY = 64 THEN KEY = 50: GOTO 310
255 IF KEY = 94 THEN KEY = 54: GOTO 310
260 IF KEY = 95 THEN KEY = 45: GOTO 310
270 IF KEY = 126 THEN KEY = 96: GOTO 310
290 IF KEY = 127 THEN KEY$ = "Delete": GOTO 320
300 KEY = KEY -32
310 KEY$ = CHR$(KEY)
320 PRINT KEY$;" ";
330 IF BIT(4) THEN PRINT "(Keypad) ";
340 IF BIT(3) THEN PRINT "REPEAT...";
350 PRINT : GOTO 90
360 FOR X = 0 TO 7:BIT(X) = 0: NEXT
370 IF MOD >127 THEN BIT(7) = 1:MOD = MOD -128
380 IF MOD >63 THEN BIT(6) = 1:MOD = MOD -64
390 IF MOD >31 THEN BIT(5) = 1:MOD = MOD -32
400 IF MOD >15 THEN BIT(4) = 1:MOD = MOD -16
410 IF MOD >7 THEN BIT(3) = 1:MOD = MOD -8
420 IF MOD >3 THEN BIT(2) = 1:MOD = MOD -4
430 IF MOD >1 THEN BIT(1) = 1:MOD = MOD -2
440 BIT(0) = MOD: RETURN
450 FF = 0: IF BIT(1) THEN 550
460 IF KEY = 8 THEN KEY$ = "Left Arrow": GOTO 560
470 IF KEY = 9 THEN KEY$ = "Tab": GOTO 560
480 IF KEY = 10 THEN KEY$ = "Down Arrow": GOTO 560
490 IF KEY = 11 THEN KEY$ = "Up Arrow": GOTO 560
500 IF KEY = 13 THEN KEY$ = MID$ ("Return Enter ",BIT(4) *7 +1,7): GOTO 560
510 IF KEY = 21 THEN KEY$ = "Right Arrow": GOTO 560
520 IF KEY = 24 THEN IF BIT(4) THEN KEY$ = "Clear": GOTO 560
530 IF KEY = 27 THEN KEY$ = "Escape": GOTO 560
540 IF KEY = 32 THEN KEY$ = "Space ": GOTO 560
550 KEY = KEY +64: GOTO 570
560 FF = 1
570 RETURN
580 FF = 0: FOR I = 1 TO LEN(SEARCH$)
590 A$ = MID$ (SEARCH$,I,1)
600 IF KEY$ = A$ THEN KEY$ = MID$ (TARGT$,I,1):I = LEN(SEARCH$):FF = 1
610 NEXT I
620 RETURN