home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib36a.dsk / APRIL.1989 / WHEREIS.bas < prev   
BASIC Source File  |  2023-02-26  |  6KB  |  118 lines

  1. 10  REM  ***********************
  2. 20  REM  *       WHEREIS       *
  3. 30  REM  *  BY VINCE O'CONNOR  *
  4. 40  REM  * COPYRIGHT (C) 1989  *
  5. 50  REM  * BY MICROSPARC, INC  *
  6. 60  REM  * CONCORD, MA  01742  *
  7. 70  REM  ***********************
  8. 80  TEXT : NORMAL : HOME : SPEED= 255:TG = 0: PRINT  CHR$(21)
  9. 90 D$ =  CHR$(4): DIM SD$(7):FL = 0:F = 0:EX = 0: PRINT : HOME 
  10. 100 DS =  PEEK(48700):DD =  PEEK(48701)
  11. 110  GOSUB 850
  12. 120  IF N = 1  THEN 960
  13. 130  IF N = 2  THEN 150
  14. 140  IF N = 3  THEN 270
  15. 150  GOSUB 220
  16. 160  GOSUB 350
  17. 170  PRINT D$"CLOSE"
  18. 180  IF F = 0  THEN  PRINT : PRINT "File not found"
  19. 190  IF LV <0  THEN  PRINT : GOSUB 1150: HOME : GOTO 110
  20. 200  GOSUB 1140: HOME : GOTO 110
  21. 210  PRINT D$"PREFIX /": POKE 48700,DS: POKE 48701,DD: PRINT : PRINT D$"CLOSE": HOME : END 
  22. 220  ONERR  GOTO 760
  23. 230 FL = 0: VTAB 13: HTAB 1: PRINT "Volume To Search: /";: PRINT PA$: HTAB 20: VTAB 13
  24. 240  IF PA$ = ""  THEN H = 20:V = 13: GOSUB 600:PA$ = X$
  25. 250  IF FL < >1  THEN  PRINT D$"VERIFY /";PA$: GOTO 320
  26. 260  HTAB 1: VTAB 13: PRINT "                                 ": GOTO 110: REM  33 " "'S
  27. 270  VTAB 23: HTAB 1: PRINT "Do you really want to quit (Y/N)?" CHR$(7);: POKE  -16368,0
  28. 280  WAIT  -16384,128:CH =  PEEK( -16384) -128: POKE  -16368,0
  29. 290  IF CH = 89  OR CH = 121  THEN 210
  30. 300  IF CH = 78  OR CH = 110  THEN  HOME : GOTO 110
  31. 310  GOTO 280
  32. 320  HTAB 1: VTAB 14: PRINT "File to find: ";:H = 15:V = 14: GOSUB 600:TF$ = X$: IF FL = 1  THEN FL = 0: VTAB 14: HTAB 1: CALL  -868:PA$ = "": GOTO 220
  33. 330 PA$ = "/" +PA$
  34. 340 SD$(0) = PA$:TL =  LEN(TF$): RETURN 
  35. 350  PRINT D$"PREFIX /": PRINT D$"OPEN"PA$",TDIR": PRINT D$"READ"PA$
  36. 360  INPUT A$: INPUT A$: INPUT A$: GOSUB 370: RETURN 
  37. 370  IF TG = 1  THEN  HOME : GOTO 110
  38. 380  INPUT IB$: IF IB$ = ""  THEN  GOSUB 520
  39. 390  IF LV <0  THEN  RETURN 
  40. 400 NA$ =  MID$ (IB$,2,15)
  41. 410 TS$ =  MID$ (IB$,18,3)
  42. 420  IF TF$ =  LEFT$(NA$,TL)  THEN  GOSUB 720
  43. 430  IF TS$ = "DIR"  THEN  GOSUB 450
  44. 440  GOTO 370
  45. 450 LV = LV +1:SB$ = "": IF LV >7  THEN LV = LV -1: RETURN 
  46. 460  FOR I = 1 TO 15:A$ =  MID$ (NA$,I,1)
  47. 470  IF A$ < >" "  THEN SB$ = SB$ +A$
  48. 480  NEXT 
  49. 490  IF  LEN(SD$(LV -1) +SB$) >64  THEN  PRINT D$"CLOSE": VTAB 22: HTAB 1: PRINT "PATHNAME TOO LONG ERROR": GOSUB 1140:TG = 1: RETURN 
  50. 500 SD$(LV) = SD$(LV -1) +"/" +SB$: PRINT D$"OPEN"SD$(LV)",TDIR": PRINT D$"READ"SD$(LV)
  51. 510  INPUT A$: INPUT A$: INPUT A$: RETURN 
  52. 520  PRINT D$"CLOSE"SD$(LV)
  53. 530 SD$(LV) = ""
  54. 540 LV = LV -1
  55. 550  IF LV <0  THEN  RETURN 
  56. 560  IF TG = 1  THEN  RETURN 
  57. 570  PRINT D$"READ"SD$(LV)
  58. 580  INPUT IB$
  59. 590  RETURN 
  60. 600 I = 1:X$ = "": HTAB H: VTAB V: PRINT "              ": HTAB H: VTAB V: POKE  -16368,0: REM  14 " "'S
  61. 610  GET A$: IF A$ =  CHR$(27)  AND I = 1  THEN FL = 1: PRINT : RETURN 
  62. 620  IF I = 1  AND (A$ < CHR$(65))  THEN 600
  63. 630  IF I = 1  AND (A$ > CHR$(90)  AND A$ < CHR$(97))  THEN 600
  64. 640  IF I = 1  AND (A$ > CHR$(122))  THEN 600
  65. 650  IF (A$ =  CHR$(8)  OR A$ =  CHR$(127))  AND I = 2  THEN I = 1:X$ = "": PRINT  CHR$(8)" " CHR$(8);: GOTO 610
  66. 660  IF (A$ =  CHR$(8)  OR A$ =  CHR$(127))  AND I >2  THEN I = I -1:X$ =  LEFT$(X$, LEN(X$) -1): PRINT  CHR$(8)" " CHR$(8);: GOTO 610
  67. 670  IF A$ =  CHR$(27)  THEN  VTAB V: HTAB H: CALL  -868: VTAB V: HTAB H: GOTO 600
  68. 680  IF A$ =  CHR$(13)  AND I >1  THEN  PRINT "               ": RETURN : REM  15 " "'s
  69. 690  IF A$ > CHR$(96)  AND A$ < CHR$(123)  THEN A$ =  CHR$( ASC(A$) -32)
  70. 700  IF I <16  AND (A$ = "."  OR (A$ > CHR$(47)  AND A$ < CHR$(58))  OR (A$ > CHR$(64)  AND A$ < CHR$(91)))  THEN X$ = X$ +A$:I = I +1: PRINT A$;: GOTO 610
  71. 710  GOTO 610
  72. 720  IF F = 0  THEN  PRINT :F = 1
  73. 730  IF LV >0  THEN  PRINT "Found "SD$(LV)"/"NA$
  74. 740  IF LV = 0  THEN  PRINT "Found "PA$"/"NA$
  75. 750  RETURN 
  76. 760  IF  PEEK(222) = 255  THEN  RESUME 
  77. 770 EN =  PEEK(222):EL =  PEEK(218) +256 * PEEK(219):CV =  PEEK(37):CH =  PEEK(36): CALL  -3288
  78. 780  IF (EN = 6  OR EN = 7)  THEN MG$ = "Disk Volume is not in any drive": GOTO 820
  79. 790  IF EN = 8  THEN MG$ = "I/O Error --- Check Disk Drive Door": GOTO 820
  80. 800  IF EN = 16  THEN MG$ = "BAD FILENAME ERROR": GOTO 820
  81. 810  IF EL < >200  THEN MG$ = "Error " + STR$(EN) +" at line " + STR$(EL) +" - Program halted.":EX = 1
  82. 820  VTAB 22: HTAB 1: PRINT MG$: IF EX = 1  THEN  PRINT D$"CLOSE": GOTO 210
  83. 830  GOSUB 1140
  84. 840  HOME : CALL 54915: GOTO 110
  85. 850  FOR T = 0 TO 7:SD$(T) = "": NEXT :TG = 0:LV = 0:F = 0:PA$ = ""
  86. 860  VTAB 1: HTAB 1: PRINT "WHEREIS": VTAB 2: HTAB 1: PRINT "DIRECTORY SEARCH UTILITY": VTAB 3: HTAB 1: PRINT "BY VINCE O'CONNOR": VTAB 4: HTAB 1: PRINT "(C) 1989 MICROSPARC, INC"
  87. 870 TG = 0
  88. 880  VTAB 6: PRINT "(1) FIND FILE BY SLOT AND DRIVE"
  89. 890  VTAB 7: PRINT "(2) FIND FILE BY VOLUME NAME"
  90. 900  VTAB 8: PRINT "(3) QUIT"
  91. 910  VTAB 11: PRINT "ENTER CHOICE #";: HTAB 15: VTAB 11: PRINT " ": HTAB 15: VTAB 11: POKE  -16368,0: GET CN$: PRINT CN$
  92. 920  IF CN$ = ""  THEN 910
  93. 930  IF ( ASC(CN$) <49  OR  ASC(CN$) >51)  THEN  VTAB 11: PRINT "                                 ": GOTO 910: REM  33 " "'s
  94. 940 N =  VAL(CN$)
  95. 950  RETURN 
  96. 960  ONERR  GOTO 1160
  97. 970  HTAB 1: VTAB 19: PRINT "ENTER SLOT #"
  98. 980  HTAB 1: VTAB 20: PRINT "ENTER DRIVE #"
  99. 990  HTAB 14: VTAB 20: PRINT " ": HTAB 13: VTAB 19: PRINT " ": HTAB 13: VTAB 19: POKE  -16368,0: GET QQ$
  100. 1000  IF  ASC(QQ$) = 51  THEN  HTAB 13: VTAB 19: PRINT " ": GOTO 990
  101. 1010  IF  ASC(QQ$) = 27  THEN 1170
  102. 1020  IF  ASC(QQ$) <49  OR  ASC(QQ$) >55  THEN  HTAB 13: VTAB 19: PRINT " ": GOTO 990
  103. 1030 DS =  VAL(QQ$): HTAB 13: VTAB 19: PRINT DS
  104. 1040  HTAB 14: VTAB 20: POKE  -16368,0: GET QQ$
  105. 1050  IF  ASC(QQ$) = 27  THEN 990
  106. 1060  IF ( ASC(QQ$) <49  OR  ASC(QQ$) >50)  THEN 1040
  107. 1070 DD =  VAL(QQ$): HTAB 14: VTAB 20: PRINT DD
  108. 1080  VTAB 12
  109. 1090  PRINT D$"PREFIX,S"DS",D"DD: PRINT D$"PREFIX"
  110. 1100  INPUT SD$(0)
  111. 1110 PA$ =  LEFT$(SD$(0), LEN(SD$(0)) -1):PA$ =  RIGHT$(PA$, LEN(PA$) -1)
  112. 1120  HTAB 1: VTAB 19: PRINT "              ": VTAB 20: HTAB 1: PRINT "              ": REM  14 " "'s in both prints
  113. 1130  GOTO 150
  114. 1140  HTAB 1: VTAB 23
  115. 1150  PRINT "PRESS RETURN TO CONTINUE": POKE  -16368,0: WAIT  -16384,128:CH =  PEEK( -16384): POKE  -16368,0: HTAB 1: VTAB 23: PRINT "                        ": RETURN : REM  24 " "'s
  116. 1160  HTAB 1: VTAB 22: PRINT "BAD SLOT OR DRIVE NUMBERS": GOSUB 1140: HTAB 1: VTAB 22: PRINT "                           ": GOTO 970: REM  27 " "'s
  117. 1170  HTAB 1: VTAB 19: PRINT "             ": VTAB 20: PRINT "              ": GOTO 110: REM  13 and 14 " "'s
  118. 1180  VTAB 21: CALL  -958: RETURN