home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib35a.dsk / NOVEMBER.1988 / NAME.CHANGER.bas < prev    next >
BASIC Source File  |  2023-02-26  |  11KB  |  129 lines

  1. 10  REM   **********************
  2. 20  REM   *    NAME.CHANGER    *
  3. 30  REM   *  BY KENN SCRIBNER  *
  4. 40  REM   * COPYRIGHT (C) 1988 *
  5. 50  REM   * BY MICROSPARC, INC.*
  6. 60  REM   * CONCORD, MA 01742  *
  7. 70  REM   **********************
  8. 80  REM 
  9. 90  REM 
  10. 100  IF  PEEK(104) < >80  THEN  POKE 103,1: POKE 104,80: POKE 20480,0: PRINT  CHR$(4);"RUN NAME.CHANGER"
  11. 110  IF  PEEK(49149) = 0  THEN  HOME : PRINT  CHR$(7): PRINT "YOU MUST RUN THIS PROGRAM ": PRINT "USING BASIC.SYSTEM VERSION 1.1 ": PRINT "OR GREATER.": END 
  12. 120 DR$ = "1":DEVNUM =  PEEK(48944): IF DEVNUM >128  THEN DEVNUM = DEVNUM -128:DR$ = "2": REM  >>> DEVNUM, $BF30, IS SLOT/DRIVE OF LAST DISK ACCESS <<<
  13. 130 SL$ =  STR$( INT(DEVNUM/16)):D$ =  CHR$(4)
  14. 140  PRINT D$;"PREFIX": INPUT VN$
  15. 150  ONERR  GOTO 1180
  16. 160  PRINT D$;"PR#3"
  17. 170  HOME : PRINT  TAB( 17)"STARTUP NAME CHANGER  (C)1988 MICROSPARC, INC.": FOR I = 1 TO 80: PRINT "-";: NEXT I: POKE 34,2
  18. 180  HOME : PRINT : PRINT : PRINT  TAB( 5);"THIS PROGRAM ENABLES YOU TO MODIFY BASIC.SYSTEM TO AUTOMATICALLY RUN A"
  19. 190  PRINT : PRINT "GREETING PROGRAM NAMED OTHER THAN 'STARTUP'.  IT WILL WORK WITH A COPY OF": PRINT : PRINT "BASIC.SYSTEM USING EITHER THIS OR ANOTHER PREFIX.  THE CURRENT PREFIX IS:"
  20. 200  PRINT : PRINT VN$;" , FOUND ON THE DISK RESIDING IN SLOT ";SL$;", DRIVE ";DR$;"."
  21. 210  PRINT : PRINT  TAB( 5);"WOULD YOU LIKE TO MODIFY YOUR COPY OF BASIC.SYSTEM FROM:"
  22. 220  PRINT : PRINT  TAB( 25);"(T)HIS DISK AND PREFIX": PRINT : PRINT  TAB( 25);"(A)NOTHER DISK OR PREFIX": PRINT : PRINT  TAB( 25);"(Q)UIT PROGRAM"
  23. 230  PRINT : PRINT  TAB( 5);"YOUR CHOICE (T, A, OR Q)? ";
  24. 240  POKE  -16368,0: GET A$
  25. 250  IF A$ = "T"  OR A$ = "t"  THEN PN$ = "BASIC.SYSTEM": GOTO 610
  26. 260  IF A$ = "Q"  OR A$ = "q"  THEN  GOTO 990
  27. 270  IF A$ < >"A"  AND A$ < >"a"  THEN  GOTO 240
  28. 280  HOME : PRINT : PRINT : PRINT  TAB( 5)"YOU MAY SELECT THE LOCATION FROM WHERE BASIC.SYSTEM WILL BE LOADED"
  29. 290  PRINT : PRINT "AND MODIFIED BY PREFIX OR BY SLOT AND DRIVE..."
  30. 300  PRINT : PRINT  TAB( 25);"(N)EW PREFIX": PRINT : PRINT  TAB( 25);"(S)LOT AND DRIVE": PRINT : PRINT  TAB( 25);"(RETURN) ALONE TO EXIT TO PREVIOUS MENU"
  31. 310  PRINT : PRINT  TAB( 5);"YOUR CHOICE (N, S, OR RETURN)? ";
  32. 320  POKE  -16368,0: GET A$
  33. 330  IF A$ =  CHR$(13)  THEN  GOTO 180
  34. 340  IF A$ = "N"  OR A$ = "n"  THEN  GOTO 530
  35. 350  IF A$ < >"S"  AND A$ < >"s"  THEN  GOTO 320
  36. 360  HOME : PRINT : PRINT : PRINT  TAB( 5);"PLEASE SELECT THE PROPER SLOT AND DRIVE FOR THE DISK CONTAINING": PRINT : PRINT "BASIC.SYSTEM (RETURN ALONE WILL EXIT TO PREVIOUS MENU)..."
  37. 370  PRINT : PRINT  TAB( 25);"SLOT (1 - 7)?  ";
  38. 380  POKE  -16368,0: GET A$
  39. 390  IF A$ =  CHR$(13)  THEN  GOTO 280
  40. 400  IF A$ <"1"  OR A$ >"7"  THEN  HTAB (40): CALL  -958: GOTO 380
  41. 410  PRINT A$:SL$ = A$
  42. 420  PRINT : PRINT  TAB( 25);"DRIVE (1 OR 2)?  ";
  43. 430  POKE  -16368,0: GET A$
  44. 440  IF A$ =  CHR$(13)  THEN  GOTO 280
  45. 450  IF A$ < >"1"  AND A$ < >"2"  THEN  HTAB (42): CALL  -958: GOTO 430
  46. 460  PRINT A$:DR$ = A$
  47. 470 SD$ = ",S" +SL$ +",D" +DR$
  48. 480  ONERR  GOTO 1180
  49. 490  PRINT D$;"PREFIX";SD$
  50. 500  PRINT D$;"PREFIX"
  51. 510  INPUT VN$:PN$ = VN$ +"BASIC.SYSTEM"
  52. 520  GOTO 600
  53. 530  HOME : PRINT : PRINT : PRINT  TAB( 5);"PLEASE TYPE THE NEW, COMPLETE PREFIX WHERE THE COPY OF BASIC.SYSTEM CAN BE": PRINT : PRINT "FOUND.  THE OLD PREFIX HAS BEEN DISPLAYED FOR REFERENCE AND/OR MODIFICATION."
  54. 540  PRINT : PRINT "(RETURN ALONE EXITS TO PREVIOUS MENU)...": PRINT : PRINT " >";VN$;: HTAB (3): GOSUB 1000
  55. 550  IF TP$ = " "  THEN  GOTO 280
  56. 560  IF  LEFT$(TP$,1) < >"/"  THEN TP$ = "/" +TP$
  57. 570  IF  RIGHT$(TP$,1) < >"/"  THEN TP$ = TP$ +"/"
  58. 580 VN$ = TP$:PN$ = TP$ +"BASIC.SYSTEM"
  59. 590  ONERR  GOTO 1210
  60. 600  PRINT D$;"VERIFY ";PN$
  61. 610  HOME : VTAB (12): HTAB (24): PRINT "LOADING BASIC.SYSTEM INTO MEMORY"
  62. 620  PRINT D$;"BLOAD ";PN$;",A$2000,TSYS"
  63. 630  IF  PEEK(8192) = 76  AND  PEEK(8195) = 238  AND  PEEK(8196) = 238  THEN  GOTO 650
  64. 640  HOME : PRINT : PRINT : PRINT  TAB( 5);"THE VERSION OF BASIC.SYSTEM YOU'RE USING DOESN'T ADHERE TO THE 'AUTO RUN'": PRINT : PRINT "PROTOCOL THIS PROGRAM IS DESIGNED TO MODIFY. PRESS RETURN TO EXIT...";: POKE  -16368,0: GET A$: GOTO 990
  65. 650 N1$ = "":N2$ = "":TP$ = ""
  66. 660  HOME : PRINT : PRINT : PRINT "THE OLD GREETING PROGRAM NAME ("; PEEK(8198);" CHAR'S, FOUND IN PREFIX ";VN$;"):": FOR X = 8199 TO 8199 +( PEEK(8198) -1):N1$ = N1$ + CHR$( PEEK(X)): NEXT : PRINT : PRINT " >";N1$
  67. 670  PRINT : PRINT  TAB( 5);"THE NEW GREETING PROGRAM'S NAME MUST BE LESS THAN 64 CHARACTERS LONG AND": PRINT : PRINT "CONFORM TO PRODOS NAMING CONVENTIONS.  PLEASE TYPE IN THE NEW GREETING"
  68. 680  PRINT : PRINT "PROGRAM'S NAME (THE PREFIX SHOWN WILL BE APPENDED TO THE FILENAME FOR YOU,"
  69. 690  PRINT : PRINT "AND RETURN ALONE EXITS TO THE INITIAL PROGRAM MENU)..."
  70. 700  PRINT : PRINT : PRINT "THE NEW GREETING PROGRAM'S NAME?": PRINT : PRINT " >";VN$;: GOSUB 1000
  71. 710  IF TP$ = " "  THEN  GOTO 180
  72. 720  IF  RIGHT$(TP$,12) = "BASIC.SYSTEM"  THEN  GOTO 760
  73. 730  IF  RIGHT$(TP$,6) = "PRODOS"  THEN  GOTO 760
  74. 740  IF  RIGHT$(TP$,3) = "P16"  THEN  GOTO 760
  75. 750  IF  RIGHT$(TP$,2) < >"P8"  THEN  GOTO 780
  76. 760  PRINT  CHR$(7): PRINT : VTAB (21): HTAB (5): INVERSE : PRINT "***ERROR***";: NORMAL : PRINT "  YOU CAN'T NAME YOUR NEW GREETING PROGRAM ";TP$;"..."
  77. 770  PRINT : PRINT  TAB( 18);"PRESS RETURN TO RESUME PROGRAM OPERATION...";: POKE  -16368,0: GET A$: GOTO 650
  78. 780  ONERR  GOTO 1240
  79. 790  PRINT D$;"VERIFY ";N2$
  80. 800  IF  LEFT$(N2$,( LEN(VN$))) < >VN$  THEN N2$ = VN$ +N2$
  81. 810  HOME : PRINT : PRINT : PRINT "NEW GREETING PROGRAM NAME ("; LEN(N2$);" CHAR'S):": PRINT : PRINT " >";N2$
  82. 820  PRINT : PRINT : PRINT  TAB( 5)"THIS WILL BE THE NEW GREETING PROGRAM'S NAME.  IS THIS NAME CORRECT?"
  83. 830  PRINT : PRINT  TAB( 25);"(Y)ES, THE NAME IS CORRECT": PRINT : PRINT  TAB( 25);"(N)O, THE NAME IS NOT CORRECT": PRINT : PRINT  TAB( 25);"(RETURN) ALONE EXITS TO THE PREVIOUS MENU"
  84. 840  PRINT : PRINT  TAB( 5);"YOUR CHOICE  (Y, N, OR RETURN)?  ";
  85. 850  POKE  -16368,0: GET A$
  86. 860  IF A$ =  CHR$(13)  THEN  GOTO 650
  87. 870  IF A$ = "N"  OR A$ = "n"  THEN  GOTO 650
  88. 880  IF A$ < >"Y"  AND A$ < >"y"  THEN  GOTO 850
  89. 890 L =  LEN(N2$): FOR X = 1 TO L
  90. 900 A =  ASC( MID$ (N2$,X,1)): POKE 8198 +X,A: NEXT : POKE 8198,L
  91. 910  FOR X = 8199 +L TO 8262: POKE X,0: NEXT 
  92. 920  REM   >>> NOW SAVE MODIFIED BASIC.SYSTEM <<<
  93. 930  HOME : VTAB (12): HTAB (34): PRINT "NOW SAVING CHANGES..."
  94. 940  ONERR  GOTO 1250
  95. 950  PRINT  CHR$(4);"UNLOCK ";PN$
  96. 960  PRINT  CHR$(4);"BSAVE ";PN$;",A$2000,L$2800,TSYS"
  97. 970  PRINT  CHR$(4);"LOCK ";PN$
  98. 980  HOME : VTAB (12): HTAB (17): PRINT "CHANGES SAVED TO DISK, PRESS RETURN TO EXIT...";: POKE  -16368,0: GET A$
  99. 990  POKE 34,0: HOME : VTAB 23: END 
  100. 1000 CH = 3:CV =  PEEK(37): INPUT "";TP$
  101. 1010  IF  LEN(TP$) >64  THEN  GOTO 1120: REM  >>> TEST INPUT STRING FOR PRODOS NAMING CONVENTIONS <<<
  102. 1020 BL$ = "":N2$ = ""
  103. 1030  IF TP$ = ""  THEN TP$ = " ": PRINT : RETURN : REM  >>>SPACE INDICATES RETURN ONLY SELECTED <<<
  104. 1040  FOR X = 1 TO  LEN(TP$)
  105. 1050  IF  MID$ (TP$,X,1) = "/"  THEN BL$ = "/": GOTO 1150
  106. 1060  IF  MID$ (TP$,X,1) = "."  THEN BL$ = ".": GOTO 1150
  107. 1070  IF  ASC( MID$ (TP$,X,1)) > = 97  AND  ASC( MID$ (TP$,X,1)) < = 122  THEN BL$ =  CHR$( ASC( MID$ (TP$,X,1)) -32): GOTO 1150
  108. 1080  IF  ASC( MID$ (TP$,X,1)) > = 65  AND  ASC( MID$ (TP$,X,1)) < = 90  THEN BL$ =  MID$ (TP$,X,1): GOTO 1150
  109. 1090  IF  ASC( MID$ (TP$,X,1)) > = 48  AND  ASC( MID$ (TP$,X,1)) < = 57  THEN  GOTO 1140
  110. 1100  PRINT  CHR$(7): PRINT : VTAB (21): HTAB (8): INVERSE : PRINT "***ERROR***";: NORMAL : PRINT "  INVALID PRODOS CHARACTERS INPUT, PLEASE RE-ENTER...": GOTO 1130
  111. 1110  PRINT  CHR$(7): PRINT : VTAB (21): HTAB (3): INVERSE : PRINT "***ERROR***";: NORMAL : PRINT "  FIRST CHARACTER OF NAME CAN'T BE A NUMBER, PLEASE RE-ENTER...": GOTO 1130
  112. 1120  PRINT  CHR$(7): PRINT : VTAB (21): HTAB (13): INVERSE : PRINT "***ERROR***";: NORMAL : PRINT "  VOLUME NAME TOO LONG, PLEASE RE-ENTER..."
  113. 1130  PRINT : PRINT  TAB( 18);"PRESS RETURN TO RESUME PROGRAM OPERATION...";: POKE  -16368,0: GET A$: PRINT : VTAB 21: CALL  -958: VTAB (CV): PRINT : HTAB (CH): INPUT "";TP$: GOTO 1010
  114. 1140 BL$ =  MID$ (TP$,X,1)
  115. 1150 N2$ = N2$ +BL$: NEXT 
  116. 1160  IF  LEFT$(N2$,1) > = "0"  AND  LEFT$(N2$,1) < = "9"  THEN  GOTO 1110
  117. 1170  RETURN 
  118. 1180  IF  PEEK(222) = 3  THEN  PRINT  CHR$(7): VTAB (21): HTAB (1): INVERSE : PRINT "***ERROR***";: NORMAL : PRINT "  THERE'S NO DISK DRIVE CONNECTED TO THAT SLOT, PLEASE RE-ENTER...": GOSUB 1290: CALL  -3288: GOTO 360
  119. 1190  IF  PEEK(222) = 6  THEN  PRINT  CHR$(7): VTAB (21): HTAB (4): INVERSE : PRINT "***ERROR***";: NORMAL : PRINT "  BASIC.SYSTEM NOT FOUND WHERE SPECIFIED, PLEASE RE-ENTER...": GOSUB 1290: CALL  -3288: GOTO 180
  120. 1200  PRINT  CHR$(7): VTAB (21): INVERSE : PRINT "***ERROR***";: NORMAL : PRINT "  UNKNOWN PRODOS I/O ERROR, NUMBER "; STR$( PEEK(222));", PLEASE CORRECT AND RE-TRY...": GOSUB 1290: CALL  -3288: GOTO 360
  121. 1210  IF  PEEK(222) = 6  THEN  PRINT  CHR$(7): VTAB (21): HTAB (4): INVERSE : PRINT "***ERROR***";: NORMAL : PRINT "  BASIC.SYSTEM NOT FOUND WHERE SPECIFIED, PLEASE RE-ENTER...": GOSUB 1290: CALL  -3288: GOTO 180
  122. 1220  IF  PEEK(222) = 16  THEN  PRINT  CHR$(7): VTAB (21): HTAB (2): INVERSE : PRINT "***ERROR***";: NORMAL : PRINT "  FIRST CHARACTER AFTER '/' MUST BE A LETTER, PLEASE RE-ENTER...": CALL  -3288: GOSUB 1130: GOTO 550
  123. 1230  PRINT  CHR$(7): VTAB (21): INVERSE : PRINT "***ERROR***";: NORMAL : PRINT "  UNKNOWN PRODOS I/O ERROR, NUMBER "; STR$( PEEK(222));", PLEASE CORRECT AND RE-TRY...": GOSUB 1290: CALL  -3288: GOTO 530
  124. 1240  IF  PEEK(222) = 6  THEN  VTAB (21): HTAB (13): INVERSE : PRINT "***NOTE***";: NORMAL : PRINT "  THAT FILE DOES NOT YET EXIST ON THAT DISK...": GOSUB 1290: CALL  -3288: GOTO 800
  125. 1250  IF  PEEK(222) = 4  THEN  PRINT  CHR$(7): VTAB (21): HTAB (6): INVERSE : PRINT "***ERROR***";: NORMAL : PRINT " DISK IS WRITE PROTECTED, PLEASE DE-PROTECT AND RE-TRY...": GOSUB 1290: CALL  -3288: GOTO 930
  126. 1260  IF  PEEK(222) = 6  THEN  PRINT  CHR$(7): VTAB (21): HTAB (5): INVERSE : PRINT "***ERROR***";: NORMAL : PRINT "  PLEASE RE-INSERT ";VN$: GOSUB 1290: CALL  -3288: GOTO 930
  127. 1270  IF  PEEK(222) = 16  THEN  PRINT  CHR$(7): VTAB (21): HTAB (2): INVERSE : PRINT "***ERROR***";: NORMAL : PRINT "  FIRST CHARACTER AFTER '/' MUST BE A LETTER, PLEASE RE-ENTER...": CALL  -3288: GOSUB 1130: GOTO 710
  128. 1280  PRINT  CHR$(7): VTAB (21): INVERSE : PRINT "***ERROR***";: NORMAL : PRINT "  UNKNOWN PRODOS I/O ERROR, NUMBER "; STR$( PEEK(222));", PLEASE CORRECT AND RE-TRY...": GOSUB 1290: CALL  -3288: GOTO 930
  129. 1290  PRINT : PRINT  TAB( 18);"PRESS RETURN TO RESUME PROGRAM OPERATION...";: POKE  -16368,0: GET A$: PRINT : VTAB (21): CALL  -958: RETURN