home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib24a.dsk / JUNE.1985 / MOUSE.SKETCH.bas < prev    next >
BASIC Source File  |  2023-02-26  |  4KB  |  75 lines

  1. 1  REM  **********************
  2. 2  REM  *    MOUSE.SKETCH    *
  3. 3  REM  * BY SANDY MOSSBERG  *
  4. 4  REM  * COPYRIGHT (C) 1985 *
  5. 5  REM  * BY MICROSPARC, INC *
  6. 6  REM  * CONCORD, MA  01742 *
  7. 7  REM  **********************
  8. 100  REM  *********************************
  9. 110  REM  *  VARIABLE USAGE:              *
  10. 120  REM  *    X = HORIZONTAL COORDINATE  *
  11. 130  REM  *    Y = VERTICAL COORDINATE    *
  12. 140  REM  *   OX = PRIOR X VALUE          *
  13. 150  REM  *   OY = PRIOR Y VALUE          *
  14. 160  REM  *    C = COLOR AT X,Y           *
  15. 170  REM  *    S = STATUS OF MOUSE BUTTON *
  16. 180  REM  *    N = SLOT OF MOUSE FIRMWARE *
  17. 190  REM  *********************************
  18. 200 :
  19. 210  GOSUB 710: REM  TEST FOR MOUSE FIRMWARE
  20. 220  GOSUB 620: REM  INITIALIZE
  21. 230  PRINT D$"IN#"N: REM  GET INPUT FROM MOUSE
  22. 240  REM  ====================
  23. 250  REM  TRACK PATH OF MOUSE:
  24. 260  REM  ====================
  25. 270  GOSUB 390: REM  GET MOUSE POSITION DATA
  26. 280  IF  PEEK(49249) > = 128  OR  PEEK(49250) > = 128  THEN  IF S <3  THEN C = 0: COLOR= 0: GOTO 330: REM  IF MOUSE BUTTON DOWN AND OPEN/CLOSED APPLE PRESSED, CLEAR POINT ON SCREEN (SET COLOR TO BLACK)
  27. 290  IF OX < >X  OR OY < >Y  THEN  IF S > = 2  THEN  COLOR= C: PLOT OX,OY:C =  SCRN( X,Y): REM  IF MOUSE POSITION HAS CHANGED, CLEAR PRIOR CURSOR AND READ NEW SCREEN COORDINATE
  28. 300  IF S <0  THEN 460: REM  PROCESS KEYPRESS
  29. 310  IF S < = 2  THEN  COLOR= 15:C = 15: GOTO 330: REM  IF MOUSE BUTTON DOWN, SET COLOR TO WHITE
  30. 320  COLOR= 1: REM  CURSOR COLOR IS MAGENTA (HATCHED BOX)
  31. 330  PLOT X,Y: REM  PUT COLOR ON SCREEN
  32. 340 OX = X:OY = Y: REM  CURRENT COORDINATES NOW OLD HAT
  33. 350  GOTO 270: REM  LOOP BACK FOR MORE INPUT
  34. 360  REM  ===================
  35. 370  REM  OBTAIN MOUSE INPUT:
  36. 380  REM  ===================
  37. 390  INPUT "";X,Y,S: REM  READ MOUSE DATA
  38. 400 X =  INT(X/25.575): REM  CONVERT MOUSE POSITION HORIZONTAL COORDINATES (0-1023) TO LORES COORDINATES (0-40)
  39. 410 Y =  INT(Y/25.575): REM  SAME FOR VERTICAL COORDINATES
  40. 420  RETURN 
  41. 430  REM  =====================
  42. 440  REM  CHECK KEYBOARD INPUT:
  43. 450  REM  =====================
  44. 460  POKE  -16368,0: REM  CLEAR KEYBOARD STROBE
  45. 470  PRINT D$"IN#0": REM  ACCEPT INPUT FROM KEYBOARD
  46. 480  VTAB 22: PRINT "PRESS RETURN TO CONTINUE, ESC TO QUIT OR CTL-C TO CLEAR SCREEN ";: GET A$: REM  PROMPT TO CONTINUE, QUIT OR CLEAR SCREEN
  47. 490  PRINT : IF A$ =  CHR$(3)  THEN 220: REM  CLEAR SCREEN IF CTL-C PRESSED
  48. 500  IF A$ =  CHR$(13)  THEN  HOME : PRINT D$"IN#"N: GOTO 270: REM  CONTINUE IF RETURN PRESSED
  49. 510  IF A$ < > CHR$(27)  THEN  PRINT  CHR$(7): GOTO 480: REM  TRAP ERRONEOUS KEYPRESS
  50. 520  REM  =====
  51. 530  REM  QUIT:
  52. 540  REM  =====
  53. 550  TEXT : HOME 
  54. 560  PRINT D$"PR#"N: PRINT  CHR$(0): REM  DEACTIVATE MOUSE
  55. 570  PRINT D$"PR#0": REM  SEND OUTPUT TO SCREEN
  56. 580  PRINT "THE MOUSE IS SLEEPING...": END 
  57. 590  REM  ============================
  58. 600  REM  INITIALIZE SCREEN AND MOUSE:
  59. 610  REM  ============================
  60. 620  HOME : GR : REM  CLEAR SCREEN AND SET LORES
  61. 630 D$ =  CHR$(4): REM  DEFINE DOS STRING. FOR DOS 3.3 USE D$=CHR$(13)+CHR$(4)
  62. 640 C = 0: REM  STARTING POINT BLANK
  63. 650  PRINT D$"PR#"N: PRINT  CHR$(1): REM  ACTIVATE MOUSE
  64. 660  PRINT D$"PR#0": REM  SEND OUTPUT TO SCREEN
  65. 670  RETURN 
  66. 680  REM  ==========================
  67. 690  REM  SEARCH FOR MOUSE FIRMWARE:
  68. 700  REM  ==========================
  69. 710 L1 = 49420:L2 = 49659: REM  START WITH SLOT 1 MOUSE FIRMWARE ID BYTES (L1=$C10C, L2=$C1FB)
  70. 720  FOR I = 1 TO 7: REM  TEST SLOTS 1-7
  71. 730  IF  PEEK(L1) = 32  AND  PEEK(L2) = 214  THEN N = I:I = 9: REM  IF MOUSE FIRMWARE LOCATED, N=SLOT # AND I > 8 FLAGS THE MATCH
  72. 740 L1 = L1 +256:L2 = L2 +256: REM  SET FOR NEXT HIGHER SLOT
  73. 750  NEXT I
  74. 760  IF I >8  THEN  RETURN : REM  MOUSE FIRMWARE FOUND
  75. 770  POP : PRINT  CHR$(7);: PRINT "MOUSE FIRMWARE NOT FOUND...": REM  MOUSE FIRMWARE NOT LOCATED