home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib24b.dsk / DISK.VOLUME.bas < prev    next >
BASIC Source File  |  2023-02-26  |  5KB  |  121 lines

  1. 10  REM  **********************
  2. 20  REM  *     DISK.VOLUME    *
  3. 30  REM  * BY JAMES PATRIDGE  *
  4. 40  REM  * COPYRIGHT (C) 1985 *
  5. 50  REM  * BY MICROSPARC, INC *
  6. 60  REM  * CONCORD, MA  01742 *
  7. 70  REM  **********************
  8. 80  CLEAR : RESTORE : TEXT : HOME 
  9. 90 TB = 12:D$ =  CHR$(4)
  10. 100 N1$ = "000000000111":N2$ = "123456789012"
  11. 110 D1$ = "<< CATALOG DISK VOLUME PATCHER >>"
  12. 120  PRINT  TAB( 20 -( LEN(D1$)/2))D1$:D1$ = ""
  13. 130  PRINT 
  14. 140  FOR I = 0 TO 39: PRINT "%";: NEXT I
  15. 150  POKE 34,3: PRINT 
  16. 160  REM  :
  17. 170  REM  : PRINT INSTRUCTIONS
  18. 180  REM  :
  19. 190  PRINT "THIS PROGRAM WILL CUSTOMIZE THE DISK": PRINT "VOLUME MESSAGE USED BY THE CATALOG": PRINT "COMMAND.": PRINT 
  20. 200  PRINT "YOU CAN EASILY CHANGE THE 'DISK VOLUME'": PRINT "TEXT TO ANY MESSAGE 12 CHARACTERS OR": PRINT "LESS IN LENGTH.": PRINT 
  21. 210  PRINT "MESSAGES CAN BE MADE TO BE MULTI-LINED": PRINT "BY INSERTING A < CRTL-J > CHARACTER": PRINT "INTO THE MESSAGE STRING.": PRINT 
  22. 220  VTAB 19: FOR I = 0 TO 39: PRINT "%";: NEXT I: VTAB 22
  23. 230  HTAB 5: PRINT "PRESS ANY KEY TO CONTINUE => ";: GET A$
  24. 240  HOME : POKE 34,0
  25. 250  VTAB 6: CALL  -958
  26. 260 D1$ = "ENTER MESSAGE"
  27. 270  HTAB 13: VTAB 6: PRINT D1$: VTAB 20: FOR J = 0 TO 39: PRINT "%";: NEXT J: VTAB 22: PRINT "FREE BYTES = "TB
  28. 280  VTAB 8: INVERSE : HTAB 13: PRINT N1$: VTAB 9: HTAB 13: PRINT N2$: NORMAL 
  29. 290  VTAB 10: CALL  -868: HTAB 1
  30. 300  PRINT "        ==>";: INPUT " ";CS$
  31. 310  IF CS$ = ""  THEN CS$ = "DISK VOLUME "
  32. 320 TB = TB - LEN(CS$)
  33. 330  IF  LEN(CS$) >12  THEN  PRINT : PRINT "MAXIMUM MESSAGE LENGTH 12 CHARACTERS ": CALL  -1052: FOR J = 1 TO 2000: NEXT J:CS$ = "":TB = 12: GOTO 250
  34. 340  VTAB 6: CALL  -958: PRINT "YOUR NEW MESSAGE : "
  35. 350  VTAB 10: PRINT CS$
  36. 360  PRINT : PRINT "TOTAL BYTES USED => "12 -TB
  37. 370  VTAB 20: FOR I = 0 TO 39: PRINT "%";: NEXT I
  38. 380  PRINT : INPUT "MESSAGE IS CORRECT (YES/NO) => ";AN$
  39. 390  IF  LEFT$(AN$,1) < >"Y"  THEN TB = 12: GOTO 250
  40. 400  REM  :
  41. 410  REM  : SET OFFSET VALUES FOR
  42. 420  REM  : VARIOUS DISPLAY MODES
  43. 430  REM  :
  44. 440  VTAB 22: CALL  -958: PRINT "MESSAGE DISPLAYED :": INPUT "<N> NORMAL  <F> FLASH  <I>INVERSE =>";N$
  45. 450  IF N$ = "N"  THEN X = 128: GOTO 490
  46. 460  IF N$ = "F"  THEN X = 0: GOTO 490
  47. 470  IF N$ = "I"  THEN X =  -64: GOTO 490
  48. 480  GOTO 440
  49. 490  VTAB 22: CALL  -958: FLASH : PRINT "REPLACING": NORMAL 
  50. 500  REM  :
  51. 510  REM  : POKE MESSAGE LENGTH
  52. 520  REM  :
  53. 530  POKE 44463, LEN(CS$) -1
  54. 540  REM  :
  55. 550  REM  : SKIP VOLUME NUMBER
  56. 560  REM  :
  57. 570  REM  :
  58. 580  POKE 44481,47: POKE 44482,174
  59. 590  REM  :
  60. 600  REM  : ARRANGE MESSAGE IN
  61. 610  REM  : REVERSE ORDER.
  62. 620  REM  :
  63. 630  FOR I =  LEN(CS$) TO 1  STEP  -1
  64. 640 M$ = M$ +( MID$ (CS$,I,1))
  65. 650  NEXT I
  66. 660  REM  :
  67. 670  REM  : POKE NEW TABLE INTO
  68. 680  REM  : MEMORY AND
  69. 690  REM  : ADJUST ASCII VALUES
  70. 700  REM  : FOR DISPLAY MODE
  71. 710  REM  : SELECTED.
  72. 720  REM  :
  73. 730  REM  : SEE APPLE REFERENCE
  74. 740  REM  : MANUAL (P.14-15)
  75. 750  REM  :
  76. 760  FOR I = 1 TO  LEN(M$)
  77. 770 BV =  ASC( MID$ (M$,I,1))
  78. 780  IF BV <27  AND X = 128  THEN  GOTO 820
  79. 790  IF BV <27  AND X = 0  THEN BV = BV +128
  80. 800  IF BV <27  AND X =  -64  THEN BV = BV +192
  81. 810  IF BV <64  THEN BV = BV +64
  82. 820  POKE 45998 +I,BV +X
  83. 830  NEXT I
  84. 840  VTAB 22: CALL  -868: PRINT : INPUT "SAVE CHANGES AS A TEXT FILE (Y/N) =>";AN$
  85. 850  IF  LEFT$(AN$,1) = "Y"  THEN  GOSUB 890
  86. 860  VTAB 22: CALL  -958: PRINT "THE DEED IS DONE !"
  87. 870  ONERR  GOTO 1200
  88. 880  PRINT D$;"RUN DOS.DESIGNER"
  89. 890  HOME : VTAB 3: PRINT "<< CREATE A COMMAND CHANGE TEXT FILE >>"
  90. 900  PRINT : FOR I = 0 TO 39: PRINT "%";: NEXT I
  91. 910  VTAB 10: INPUT "ENTER FILE NAME => ";NA$: CALL  -958
  92. 920  IF NA$ = ""  THEN  CALL  -1052: PRINT "ILLEGAL FILE NAME !": GOTO 910
  93. 930  IF  LEN(NA$) >30  OR  ASC( LEFT$(NA$,1)) <65  OR  ASC( LEFT$(NA$,1)) >90  THEN  CALL  -1052: PRINT "ILLEGAL FILE NAME !": GOTO 910
  94. 940  VTAB 12: INPUT "ENTER STARTING LINE # => ";SL$: CALL  -958
  95. 950 SL =  VAL(SL$)
  96. 960  IF SL <1  OR SL >63999  THEN  CALL  -1052: PRINT "ILLEGAL LINE NUMBER !": GOTO 940
  97. 970  VTAB 10: CALL  -958: INVERSE : PRINT "CURRENT PARAMETERS : ": NORMAL 
  98. 980  PRINT : PRINT "TEXT FILE NAME => ";NA$: PRINT : PRINT "STARTING LINE NUMBER => ";SL
  99. 990  PRINT : INPUT "VERIFY PARAMETERS (Y/N) => ";A$
  100. 1000  IF  LEFT$(A$,1) < >"Y"  THEN  GOTO 890
  101. 1010  PRINT D$;"MON C,I,O"
  102. 1020  PRINT D$;"OPEN"NA$
  103. 1030  PRINT D$;"DELETE"NA$
  104. 1040  PRINT D$;"OPEN"NA$
  105. 1050  PRINT D$;"WRITE"NA$
  106. 1060  FOR SA = 45998 TO 45998 + LEN(M$)
  107. 1070 C = C +1
  108. 1080  IF C = 10  THEN C = 1
  109. 1090  IF C < >1  THEN 1130
  110. 1100  PRINT 
  111. 1110  PRINT SL;
  112. 1120 SL = SL +1
  113. 1130  PRINT " POKE ";SA;", "; PEEK(SA);" :";
  114. 1140  NEXT SA
  115. 1150  PRINT "POKE 44463,"; PEEK(44463);":";"POKE 44481,"; PEEK(44481);":";"POKE 44482,"; PEEK(44482)
  116. 1160  PRINT 
  117. 1170  PRINT D$;"CLOSE"NA$
  118. 1180  PRINT D$;"NOMONC,I,O": VTAB  PEEK(37): CALL  -868
  119. 1190  RETURN 
  120. 1200  IF  PEEK(222) = 6  THEN  HOME : VTAB 12: PRINT "INSERT DOS.DESIGNER DISK AND PRESS A KEY":WAIK -16384,128: POKE  -16368,0: GOTO 880
  121. 1210  HOME : VTAB 12: PRINT "ERROR #"; PEEK(222);" IN LINE "; PEEK(218) + PEEK(219) *256