home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib39b.dsk / MOUSE.CURSOR.bas < prev    next >
BASIC Source File  |  2023-02-26  |  6KB  |  100 lines

  1. 10  REM ************************
  2. 20  REM * MOUSE.CURSOR         *
  3. 30  REM * BY DARREN CONRAD     *
  4. 40  REM * COPYRIGHT(C) 1990    *
  5. 50  REM * MINDCRAFT PUBL. CORP.*
  6. 60  REM * CONCORD, MA 01742    *
  7. 70  REM ************************
  8. 80  PRINT  CHR$(21): IF  PEEK(104) < >64  THEN  POKE 103,1: POKE 104,64: POKE 16384,0: PRINT  CHR$(4);"RUN MOUSE.CURSOR"
  9. 90  REM * CHECK FOR MOUSE CURSOR
  10. 100  IF  PEEK(2048) = 32  AND  PEEK(2049) = 9  THEN 130
  11. 110  PRINT  CHR$(4);"BLOAD MOUSE.BIN,A$800"
  12. 120  REM * POKE SOUND ROUTINE
  13. 130  FOR X = 768 TO 781: READ A: POKE X,A: NEXT : DATA 162,12,141,48,192,169,4,32,168,252,202,208,245,96
  14. 140  REM * MSE CURSOR ATTRIBUTES
  15. 150 PROMPT$ = "+":MT = 0:RT = 3
  16. 160  REM * SETUP SCREEN BORDER
  17. 170  TEXT : HOME 
  18. 180  POKE 50,63: FOR V = 3 TO 23: VTAB V: HTAB 1: PRINT " ";: HTAB 40: PRINT " ";: NEXT V
  19. 190  VTAB 24: HTAB 1: PRINT  SPC( 39);: VTAB 2: HTAB 1: PRINT  SPC( 5);: HTAB 36: PRINT  SPC( 5): POKE 2039,32
  20. 200  FOR V = 1 TO 3: VTAB V: HTAB 7: PRINT  SPC( 28): NEXT : VTAB 2: HTAB 8: PRINT "MOUSE CURSOR DEMONSTRATION": POKE 50,255
  21. 210  POKE 32,1: POKE 33,38: POKE 34,3: POKE 35,23
  22. 220  REM * CREDITS SCREEN
  23. 230  VTAB 7: FOR X = 1 TO 2: PRINT : READ A$: GOSUB 870: NEXT 
  24. 240  READ A$: VTAB 16: GOSUB 870: READ A$: GOSUB 870
  25. 250 VT = 20:HT = 18:A$ = "O K": INVERSE : GOSUB 850: NORMAL 
  26. 260  REM * INIT MOUSE CURSOR
  27. 270  POKE 2454, ASC(PROMPT$): POKE 2455,MT: POKE 2456,RT: CALL 2048: GOSUB 780
  28. 280  IF C <128  AND B = 128  AND V >19  AND V <23  AND H >1  AND H <40  THEN 310
  29. 290  CALL 2180: GOSUB 780: GOTO 280
  30. 300  REM * VTAB/HTAB DEMO
  31. 310  HOME : READ A$: VTAB 5: GOSUB 870
  32. 320  VTAB 7: FOR X = 1 TO 4: PRINT : READ A$: GOSUB 870: NEXT 
  33. 330  PRINT : FOR X = 1 TO 2: PRINT : READ A$: GOSUB 870: NEXT 
  34. 340  GOSUB 800: CALL 2305: GOSUB 780
  35. 350  IF C >128  OR V < >22  OR H <2  OR H >39  OR B < >128  THEN  CALL 2180: GOSUB 780: GOTO 350
  36. 360  IF C <128  AND H <19  THEN 380
  37. 370  GOTO 940
  38. 380  HOME :OP = 0:SD = 0
  39. 390  VTAB 4: FOR X = 1 TO 3: PRINT : READ A$: GOSUB 870: NEXT 
  40. 400  VTAB 15: HTAB 6: PRINT "[ ] OPTION MENU    [ ] SOUND"
  41. 410  CALL 2305: GOSUB 780
  42. 420  IF V = 15  AND H = 8  AND C <128  AND B = 128  THEN  GOSUB 890: POKE 1839,160: VTAB 22: HTAB 1: CALL  -868: CALL 2305: GOSUB 780: GOTO 420
  43. 430  IF V = 15  AND H = 8  AND C >128  AND B = 128  THEN  GOSUB 890: POKE 1839,32: GOSUB 800: CALL 2305: GOSUB 780: GOTO 420
  44. 440  IF V = 15  AND H = 27  AND C <128  AND B = 128  THEN SD = 0: GOSUB 890: POKE 1858,160: CALL 2305: GOSUB 780: GOTO 420
  45. 450  IF V = 15  AND H = 27  AND C >128  AND B = 128  THEN SD = 1: GOSUB 890: POKE 1858,32: CALL 2305: GOSUB 780: GOTO 420
  46. 460  IF C >128  OR V <20  OR V >22  OR H <2  OR H >39  OR B < >128  THEN  GOSUB 890: CALL 2180: GOSUB 780: GOTO 420
  47. 470  GOSUB 890: IF H <18  THEN 500
  48. 480  GOTO 940
  49. 490  REM * BKGND CHAR DEMO
  50. 500  HOME : VTAB 4: FOR X = 1 TO 4: PRINT : READ A$: GOSUB 870: NEXT 
  51. 510 VT = 14:HT = 3:A$ = "NORMAL": GOSUB 850
  52. 520 VT = 14:HT = 15:A$ = "INVERSE": INVERSE : GOSUB 850
  53. 530 VT = 14:HT = 29:A$ = "FLASH": FLASH : GOSUB 850: NORMAL 
  54. 540  VTAB 18: HTAB 7: PRINT "SELECTED CHARACTER ->"
  55. 550  GOSUB 800: CALL 2305: GOSUB 780
  56. 560  IF C <128  AND V = 22  AND H >1  AND H <40  AND B = 128  THEN  GOSUB 890: GOTO 580
  57. 570  POKE 1261,C: CALL 2180: GOSUB 890: GOSUB 780: GOTO 560
  58. 580  IF H <19  THEN 610
  59. 590  GOTO 940
  60. 600  REM * DOUBLE-CLICK DEMO
  61. 610  HOME : VTAB 4: FOR X = 1 TO 3: PRINT : READ A$: GOSUB 870: NEXT 
  62. 620  GOSUB 800:VT = 14:HT = 16:A$ = "SIREN": GOSUB 850
  63. 630  CALL 2305: GOSUB 780
  64. 640  IF C <128  AND V = 22  AND H >1  AND H <40  AND B = 128  THEN  GOSUB 890: GOTO 680
  65. 650  IF V = 15  AND C >160  THEN  GOSUB 890: INVERSE :VT = 14: GOSUB 850: NORMAL : GOTO 630
  66. 660  IF V >13  AND V <17  AND H >1  AND H <40  AND C <128  AND B = 128  THEN  GOSUB 890: GOSUB 920:VT = 14: GOSUB 850: GOTO 630
  67. 670  GOSUB 890: CALL 2180: GOSUB 780: GOTO 640
  68. 680  IF H <19  THEN 710
  69. 690  GOTO 940
  70. 700  REM * FINAL SCREEN
  71. 710  HOME : VTAB 8: FOR X = 1 TO 4: PRINT : READ A$: GOSUB 870: NEXT 
  72. 720 VT = 20:HT = 16:A$ = "EXIT": INVERSE : GOSUB 850: NORMAL 
  73. 730  CALL 2305: GOSUB 780
  74. 740  IF V >19  AND V <23  AND C <128  AND H >1  AND H <40  AND B = 128  THEN  GOSUB 890: GOTO 940
  75. 750  GOSUB 890: CALL 2180: GOSUB 780: GOTO 740
  76. 760  END 
  77. 770  REM * GET MOUSE INFO
  78. 780 V =  PEEK(2457) +1:H =  PEEK(2458) +1:C =  PEEK(2459):B =  PEEK(2460): RETURN 
  79. 790  REM * DECISION BUTTONS
  80. 800 VT = 22:HT = 8:A$ = "CONTINUE": INVERSE : GOSUB 830
  81. 810 VT = 22:HT = 27:A$ = "EXIT": GOSUB 830: NORMAL : RETURN 
  82. 820  REM * BUTTON #1
  83. 830 P$ = " " +A$ +" ": VTAB VT: HTAB HT: PRINT P$;: RETURN 
  84. 840  REM * BUTTON #2
  85. 850 P$ = " " +A$ +" ": FOR X = 1 TO 3: VTAB VT: HTAB HT: PRINT  SPC(  LEN(P$)):VT = VT +1: NEXT : VTAB VT -2: HTAB HT: PRINT P$: RETURN 
  86. 860  REM * CENTER A STRING
  87. 870  HTAB (41 - LEN(A$))/2: PRINT A$: RETURN 
  88. 880  REM * SOUND
  89. 890  IF SD = 1  AND B = 128  THEN  CALL 768
  90. 900  RETURN 
  91. 910  REM * SIREN
  92. 920  FOR X = 1 TO 3: FOR Y = 1 TO 15: POKE 774,Y: CALL 768: NEXT : FOR Y = 15 TO 1  STEP  -1: POKE 774,Y: CALL 768: NEXT : NEXT : POKE 774,4: RETURN 
  93. 930  REM * EXIT
  94. 940  TEXT : HOME : END 
  95. 950  REM * DEMO SCRIPT
  96. 960  DATA "MOUSE CURSOR ROUTINE AND","DEMONSTRATION PROGRAM","WRITTEN BY DARREN CONRAD","(C) 1990 MINDCRAFT PUBL. CORP."
  97. 970  DATA  "WELCOME TO MOUSE CURSOR!","MOUSE CURSOR IS A FLEXIBLE MACHINE","LANGUAGE ROUTINE THAT ALLOWS YOU TO","IMPLEMENT MOUSE INTERFACING IN YOUR","BASIC PROGRAMS QUICKLY AND EASILY."
  98. 980  DATA   "THIS PROGRAM DEMONSTRATES JUST A FEW","OF THE USES FOR MOUSE CURSOR!","VTAB AND HTAB VALUES RETURNED FROM","MOUSE CURSOR ARE USEFUL FOR","DETECTING OPTION OR ITEM SELECTION."
  99. 990  DATA  "MOUSE SELECTION IS EASY WITH","MOUSE CURSOR.  YOU CAN TEST WHICH","CHARACTER OR TYPE OF CHARACTER","IS BEING CLICKED ON."
  100. 1000  DATA  "MOUSE CURSOR WILL ALSO REPORT THE","BUTTON STATUS.  THIS IS","USEFUL IN DETECTING A DOUBLE-CLICK.","USE YOUR IMAGINATION TO CREATE YOUR","OWN MOUSE-DRIVEN PROGRAMS.","THE POSSIBILITIES ARE","VIRTUALLY LIMITLESS!"