home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib42a.dsk / MAY.1992 / MAPPER.bas < prev   
BASIC Source File  |  2023-02-26  |  4KB  |  131 lines

  1. 10  REM  *************************
  2. 20  REM  *  PRODOS DISK MAPPER   *
  3. 30  REM  *  by Ernie Alexander   *
  4. 40  REM  *  Copyright (C) 1992   *
  5. 50  REM  * MindCraft Publ. Corp. *
  6. 60  REM  *  Lincoln, MA  01773   *
  7. 70  REM  *************************
  8. 80  DIM M(101,50),N$(101),N(101)
  9. 90 D = 1:P = 1:F = 0
  10. 100  PRINT  CHR$(4)"PREFIX"
  11. 110  INPUT X$:N$(D) = X$:D = D +1
  12. 120  IF D = 2  THEN N$(1) =  LEFT$(X$, LEN(X$) -1)
  13. 130  HOME : PRINT "ProDOS MAPPER by Ernie Alexander": PRINT "Copyright (C) 1992, Mindcraft Publishing"
  14. 140  VTAB 5: PRINT "Current Prefix: ";X$
  15. 150  VTAB 6: PRINT : PRINT "Send map to printer? (Y/N): ";: GET S$
  16. 160  IF S$ < >"Y"  AND S$ < >"y"  AND S$ < >"N"  AND S$ < >"n"  THEN 150
  17. 165  PRINT S$
  18. 170  VTAB 7: PRINT : PRINT "Include filenames? (Y/N): ";: GET Y$
  19. 180  IF Y$ < >"Y"  AND Y$ < >"y"  AND Y$ < >"N"  AND Y$ < >"n"  THEN 170
  20. 185  PRINT Y$
  21. 190  VTAB 11: PRINT : PRINT "[Reading Directories - Please Wait]"
  22. 200  REM 
  23. 210  REM  *** GET NEW PREFIX ***
  24. 220  REM 
  25. 230 X = P:P$ = ""
  26. 240 P$ = N$(X) +"/" +P$
  27. 250  IF X >1  THEN X = N(X): GOTO 240
  28. 260  REM 
  29. 270  REM  *** READ NEW DIRECTORY ***
  30. 280  REM 
  31. 290  PRINT  CHR$(4)"OPEN "P$",TDIR"
  32. 300  PRINT  CHR$(4)"READ "P$
  33. 310  INPUT X$,X$,X$
  34. 320  INPUT X$: IF X$ = ""  THEN 320
  35. 330  IF  MID$ (X$,1,6) = "BLOCKS"  THEN 490
  36. 340  IF  MID$ (X$,18,1) < >" "  THEN F = F +1
  37. 350  IF  MID$ (X$,18,3) < >"DIR"  THEN 320
  38. 360  FOR X = 15 TO 1  STEP  -1
  39. 370  IF  MID$ (X$,X +1,1) < >" "  THEN 390
  40. 380  NEXT X
  41. 390 N$(D) =  MID$ (X$,2,X):N(D) = P:D = D +1
  42. 400  IF D < = 100  THEN 320
  43. 410  PRINT  CHR$(4)"CLOSE"
  44. 420  VTAB 11: PRINT : PRINT "There are more than 100 subdirectories.": PRINT "This map will be incomplete."
  45. 430  VTAB 13: PRINT : PRINT "Do you want to continue anyway? (Y/N): ";: GET A$
  46. 440  IF A$ < >"Y"  AND A$ < >"y"  AND A$ < >"N"  AND A$ < >"n"  THEN 430
  47. 450  IF A$ < >"Y"  AND A$ < >"y"  THEN  END 
  48. 460  VTAB 11: PRINT : FOR Z = 1 TO 3: PRINT "                                       ": NEXT : REM 39SPACES
  49. 470  GOTO 560
  50. 480  REM 
  51. 490  REM  *** NEXT DIRECTORY ***
  52. 500  REM 
  53. 510  PRINT  CHR$(4)"CLOSE"
  54. 520 P = P +1: IF P <D  THEN 230
  55. 530  REM 
  56. 540  REM  *** BUILD DIRECTORY MAP ***
  57. 550  REM 
  58. 560  VTAB 12: PRINT "[Creating Map - Please Wait]          ": REM  10 SPACES
  59. 570 R = 1:C = 1:M(R,C) = 1
  60. 580 P = M(R,C):R = R +1:C = C +1
  61. 590  IF R >V  THEN V = R
  62. 600  IF C >H  THEN H = C
  63. 610  FOR X = 2 TO D -1
  64. 620  IF N(X) < >P  THEN 640
  65. 630 M(R,C) = X:M(R,0) = C:N(X) = 0: GOTO 580
  66. 640  NEXT X
  67. 650 C = C -1: IF C = 1  THEN 720
  68. 660  FOR X = R TO 1  STEP  -1
  69. 670 P = M(X,C -1): IF P >0  THEN 610
  70. 680  NEXT X
  71. 690  REM 
  72. 700  REM  *** NOW FILL IN VERTICAL LINES ***
  73. 710  REM 
  74. 720 V = V -1:H = H -1
  75. 730  FOR R = 2 TO V
  76. 740  FOR C = 2 TO M(R,0)
  77. 750  IF M(R,C) = 0  THEN 800
  78. 760  FOR X = R TO 2  STEP  -1
  79. 770  IF M(X,C -1) < >0  THEN 800
  80. 780 M(X,C -1) =  -1
  81. 790  NEXT X
  82. 800  NEXT C,R
  83. 810  REM 
  84. 820  REM  *** PRINT MAP ***
  85. 830  REM 
  86. 840  HOME : IF S$ < >"Y"  AND S$ < >"y"  THEN 870
  87. 850  VTAB 12: PRINT "[Printing Map - Please Wait]          ": REM  10 SPACES
  88. 860  PRINT  CHR$(4)"PR#1": REM  PRINTER SLOT
  89. 870  FOR R = 1 TO V
  90. 880  FOR C = 1 TO M(R,0)
  91. 890 X = M(R,C)
  92. 900  IF X <0  AND M(R,C +1) <1  THEN  PRINT "   |   ";: GOTO 1240: REM  3 & 3 SPACES
  93. 910  IF X <0  THEN  PRINT "   |-->";: GOTO 1240
  94. 920  IF X = 0  THEN  PRINT  SPC( 7);: GOTO 1240
  95. 930  PRINT N$(X)
  96. 940  IF Y$ < >"Y"  AND Y$ < >"y"  THEN 1180
  97. 950  REM 
  98. 960  REM  *** PRINT ALL FILENAMES ***
  99. 970  REM 
  100. 980 Y = R:Z = C:P$ = ""
  101. 990 P$ = N$(M(Y,Z)) +"/" +P$
  102. 1000  IF Y = 1  THEN 1040
  103. 1010 Z = Z -1
  104. 1020 Y = Y -1: IF M(Y,Z) <1  THEN 1020
  105. 1030  GOTO 990
  106. 1040  PRINT  CHR$(4)"PREFIX "P$
  107. 1050  PRINT  CHR$(4)"OPEN "P$",TDIR"
  108. 1060  PRINT  CHR$(4)"READ "P$
  109. 1070  INPUT X$,X$,X$
  110. 1080  INPUT X$: IF X$ = ""  AND M(R +1,C) <0  THEN 1080
  111. 1090  IF  MID$ (X$,1,6) = "BLOCKS"  THEN 1170
  112. 1100  IF  MID$ (X$,18,3) = "DIR"  THEN 1080
  113. 1110  IF C <2  THEN 1160
  114. 1120  FOR Y = 1 TO C -1
  115. 1130  IF Y = C -1  AND M(R +1,C) = 0  THEN  PRINT  SPC( 7);: GOTO 1150
  116. 1140  PRINT "   |   ";
  117. 1150  NEXT Y
  118. 1160  PRINT  MID$ (X$,2,19): GOTO 1080
  119. 1170  PRINT  CHR$(4)"CLOSE"
  120. 1180  IF M(R +1,C) < >0  THEN 1240
  121. 1190  IF R = V  THEN 1240
  122. 1200  FOR X = 1 TO C -2
  123. 1210  IF M(R,X) <0  THEN  PRINT "   |   ";
  124. 1220  IF M(R,X) = 0  THEN  PRINT  SPC( 7);
  125. 1230  NEXT X: PRINT 
  126. 1240  NEXT C,R
  127. 1250  PRINT : PRINT 
  128. 1260  PRINT F -D +2;" FILES IN ";D -1;" DIRECTORIES"
  129. 1270  PRINT  CHR$(4)"PREFIX "N$(1)
  130. 1280  PRINT  CHR$(4)"PR#0"
  131. 1290  END