home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib32b.dsk / GS.MODIFIERS.bas < prev    next >
BASIC Source File  |  2023-02-26  |  3KB  |  62 lines

  1. 10  REM  **********************
  2. 20  REM  *    GS.MODIFIERS    *
  3. 30  REM  * BY JON C. THOMASON *
  4. 40  REM  * COPYRIGHT (C) 1987 *
  5. 50  REM  * BY MICROSPARC, INC *
  6. 60  REM  * CONCORD, MA  01742 *
  7. 70  REM  **********************
  8. 80  HOME : PRINT "Press any key combination:"
  9. 90  GET KEY$:MOD =  PEEK(49189)
  10. 100  GOSUB 360: REM  Break into bits
  11. 110  IF BIT(7)  THEN  PRINT "Open Apple-";
  12. 120  IF BIT(6)  THEN  PRINT "Option-";
  13. 130  IF BIT(2)  THEN  PRINT "Caps Lock-";
  14. 140  IF BIT(0)  THEN  PRINT "Shift-";
  15. 150  IF BIT(1)  THEN  PRINT "Control-";
  16. 160  IF KEY$ = ""  THEN KEY = 0: GOTO 180
  17. 170 KEY =  ASC(KEY$)
  18. 180  IF KEY <33  THEN  GOSUB 450: ON FF GOTO 320: GOTO 310
  19. 190  IF BIT(4) GOTO 310
  20. 200  IF KEY <44  THEN SEARCH$ = "!#$%^&*()+" + CHR$(34):TARGT$ = "134567890='": GOSUB 580: IF FF  THEN 320
  21. 210  IF KEY <58  OR KEY = 96  OR (KEY >64  AND KEY <94) GOTO 310
  22. 220  IF KEY = 58  THEN KEY = 59: GOTO 310
  23. 230  IF KEY = 59  OR KEY = 61 GOTO 310
  24. 240  IF KEY <64  THEN KEY = KEY -16: GOTO 310
  25. 250  IF KEY = 64  THEN KEY = 50: GOTO 310
  26. 255  IF KEY = 94  THEN KEY = 54: GOTO 310
  27. 260  IF KEY = 95  THEN KEY = 45: GOTO 310
  28. 270  IF KEY = 126  THEN KEY = 96: GOTO 310
  29. 290  IF KEY = 127  THEN KEY$ = "Delete": GOTO 320
  30. 300 KEY = KEY -32
  31. 310 KEY$ =  CHR$(KEY)
  32. 320  PRINT KEY$;"  ";
  33. 330  IF BIT(4)  THEN  PRINT "(Keypad)  ";
  34. 340  IF BIT(3)  THEN  PRINT "REPEAT...";
  35. 350  PRINT : GOTO 90
  36. 360  FOR X = 0 TO 7:BIT(X) = 0: NEXT 
  37. 370  IF MOD >127  THEN BIT(7) = 1:MOD = MOD -128
  38. 380  IF MOD >63  THEN BIT(6) = 1:MOD = MOD -64
  39. 390  IF MOD >31  THEN BIT(5) = 1:MOD = MOD -32
  40. 400  IF MOD >15  THEN BIT(4) = 1:MOD = MOD -16
  41. 410  IF MOD >7  THEN BIT(3) = 1:MOD = MOD -8
  42. 420  IF MOD >3  THEN BIT(2) = 1:MOD = MOD -4
  43. 430  IF MOD >1  THEN BIT(1) = 1:MOD = MOD -2
  44. 440 BIT(0) = MOD: RETURN 
  45. 450 FF = 0: IF BIT(1)  THEN 550
  46. 460  IF KEY = 8  THEN KEY$ = "Left Arrow": GOTO 560
  47. 470  IF KEY = 9  THEN KEY$ = "Tab": GOTO 560
  48. 480  IF KEY = 10  THEN KEY$ = "Down Arrow": GOTO 560
  49. 490  IF KEY = 11  THEN KEY$ = "Up Arrow": GOTO 560
  50. 500  IF KEY = 13  THEN KEY$ =  MID$ ("Return Enter  ",BIT(4) *7 +1,7): GOTO 560
  51. 510  IF KEY = 21  THEN KEY$ = "Right Arrow": GOTO 560
  52. 520  IF KEY = 24  THEN  IF BIT(4)  THEN KEY$ = "Clear": GOTO 560
  53. 530  IF KEY = 27  THEN KEY$ = "Escape": GOTO 560
  54. 540  IF KEY = 32  THEN KEY$ = "Space ": GOTO 560
  55. 550 KEY = KEY +64: GOTO 570
  56. 560 FF = 1
  57. 570  RETURN 
  58. 580 FF = 0: FOR I = 1 TO  LEN(SEARCH$)
  59. 590 A$ =  MID$ (SEARCH$,I,1)
  60. 600  IF KEY$ = A$  THEN KEY$ =  MID$ (TARGT$,I,1):I =  LEN(SEARCH$):FF = 1
  61. 610  NEXT I
  62. 620  RETURN