home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib32b.dsk / ENTERSPEED.UTIL.bas < prev    next >
BASIC Source File  |  2023-02-26  |  12KB  |  246 lines

  1. 10  REM  **********************
  2. 20  REM  *  ENTERSPEED.UTIL   *
  3. 30  REM  * BY HAROLD BALABAN  *
  4. 40  REM  * COPYRIGHT (C) 1987 *
  5. 50  REM  * BY MICROSPARC, INC *
  6. 60  REM  * CONCORD, MA  01742 *
  7. 70  REM  **********************
  8. 80  PRINT  CHR$(17): POKE 33,40: TEXT :: HOME : VTAB 2
  9. 90  ONERR  GOTO 1620
  10. 100  VTAB 10: HTAB 12: PRINT "ENTERSPEED.UTIL": PRINT : HTAB 10: PRINT "BY HAROLD S. BALABAN": PRINT : PRINT " COPYRIGHT 1987 BY MICROSPARC, INC."
  11. 110 D$ =  CHR$(4):F$ = "": DIM C(30),D$(110),C$(30)
  12. 120 PK$ = "PRESS <RETURN> ": FOR I = 1 TO 107: READ D$(I): NEXT : PRINT : RESTORE : GOSUB 1600
  13. 130 :
  14. 140  REM  MAIN MENU
  15. 150 :
  16. 160  HOME : VTAB 2: PRINT " *** ENTERSPEED UTILITY MENU ***": PRINT LI$: PRINT 
  17. 170  PRINT "1 LOAD CODE FILE": PRINT "2 SAVE CODE FILE"
  18. 180  PRINT "3 ENTER NEW CODES": PRINT "4 EDIT/VIEW/PRINT CODE SET"
  19. 190  PRINT "5 GENERATE STANDARD CODE SET": PRINT "6 CREATE CUSTOMIZED ENTERSPEED"
  20. 200  PRINT "7 HELP": PRINT "8 QUIT"
  21. 210  PRINT LI$: PRINT : INPUT "WHICH? ";A$:S =  VAL(A$)
  22. 220  IF S <1  OR S >8  THEN  PRINT "OUT OF RANGE": GOSUB 1600: GOTO 160
  23. 230 :
  24. 240  REM  LOAD CODE FILE
  25. 250 :
  26. 260  ON S GOTO 270,960,730,440,1470,1150,2070,1960
  27. 270  HOME : PRINT "*** LOAD CODE FILE ***": PRINT 
  28. 280  PRINT "ENTER FILE NAME OF CODE SET (EXLUDING"
  29. 290  PRINT ".COD SUFFIX).": PRINT : PRINT "ENTER ? FOR CATALOG OR RETURN FOR MENU"
  30. 300  PRINT : INPUT ": ";F$: ON F$ = "" GOTO 160: GOSUB 1760
  31. 310  IF F$ = "?"  THEN  HOME : PRINT D$ LEFT$("CATALOG",7 -4 *( PEEK(48896) = 76)) +",D"DR: GOSUB 1600: GOTO 270
  32. 320 F$ = F$ +".COD":F1$ = F$
  33. 330  PRINT D$"VERIFY"F$",D"DR
  34. 340  PRINT D$"OPEN"F$
  35. 350  PRINT D$"READ"F$
  36. 360  FOR I = 1 TO 27: INPUT C(I): NEXT 
  37. 370  PRINT D$"CLOSE": PRINT D$
  38. 380  FOR I = 1 TO 27
  39. 390 C$(I) = D$(C(I) -127)
  40. 400  NEXT 
  41. 410 :
  42. 420  REM  VIEW/EDIT/PRINT CODE SET
  43. 430 :
  44. 440  GOSUB 1830: REM  CHECK IF VALID CODE SET IS IN MEMORY
  45. 450  HOME : VTAB 1:MD = 0: PRINT "CODE SET: ";F1$: PRINT 
  46. 460  PRINT "CODE COMMAND    CODE COMMAND": PRINT  LEFT$(LI$,30)
  47. 470  FOR I = 1 TO 14: HTAB 3: PRINT  CHR$(63 +I);"  ";C$(I): NEXT 
  48. 480  VTAB 6: FOR I = 15 TO 27: HTAB 19: PRINT  CHR$(63 +I);"  ";C$(I): NEXT 
  49. 490  PRINT : INPUT "ANY CHANGES (Y/N)? ";A$
  50. 500  GOSUB 1910: IF E = 1 GOTO 490
  51. 510  ON A$ = "N"  OR A$ =  CHR$(110) GOTO 640:MD = 1
  52. 520  INPUT "ENTER CODE LETTER (@,A-Z): ";L$
  53. 530  IF L$ = ""  OR  LEN(L$) >1  THEN  VTAB 21: CALL  -958: GOTO 520
  54. 540  IF  ASC(L$) <64  OR  ASC(L$) >90  THEN  PRINT "IMPROPER CODE. "PK$"& REENTER";: GET A$: PRINT A$: VTAB 21: CALL  -958: GOTO 520
  55. 550  INPUT "ENTER COMMAND (<CR> FOR MENU): ";C$
  56. 560  IF C$ = ""  THEN 160
  57. 570  GOSUB 1870
  58. 580  IF E = 0  THEN  PRINT "INVALID COMMAND. ";PK$;: GET A$: PRINT A$;: VTAB 22: HTAB 1: CALL  -958: GOTO 550
  59. 590 A =  ASC(L$) -63:C(A) = J:C$(A) = D$(J -127): GOTO 440
  60. 600  GOTO 160
  61. 610 :
  62. 620  REM  PRINT CODE SET
  63. 630 :
  64. 640  PRINT : PRINT "DO YOU WANT TO PRINT THE CODE SET"
  65. 650  INPUT "(Y/N)? ";A$: ON A$ < >"Y"  AND A$ < > CHR$(121) GOTO 160: PRINT "TURN PRINTER ON.": GOSUB 1600
  66. 660  PRINT D$"PR#1": PRINT "  CODE SET: "F$: PRINT : FOR I = 1 TO 13
  67. 670  PRINT  TAB( 3) CHR$(63 +I);"  "C$(I); TAB( 19); CHR$(77 +I);"  ";C$(14 +I): NEXT 
  68. 680  PRINT  TAB( 3) CHR$(77)"  "C$(14)
  69. 690  PRINT D$"PR#0": GOTO 160
  70. 700 :
  71. 710  REM  ENTER NEW CODES
  72. 720 :
  73. 740  HOME : PRINT "*** NEW CODE GENERATION ***": PRINT 
  74. 750  PRINT "FOR EACH CODE, ENTER THE DESIRED"
  75. 760  PRINT "APPLESOFT COMMAND OR KEYWORD.": PRINT "RETURN FOR MENU."
  76. 770  PRINT : PRINT "CODE COMMAND  CODE COMMAND"
  77. 780  FOR I = 1 TO 14: HTAB 3: PRINT  CHR$(63 +I);: INPUT "  ";C$
  78. 790  ON C$ < >" " GOTO 810: GOSUB 1790
  79. 800  VTAB 8 +I:I = I -1: GOTO 840
  80. 810  GOSUB 1870
  81. 820  IF E = 0  THEN  PRINT "INVALID COMMAND": FOR KK = 1 TO 550: NEXT :I = I -1: VTAB I +8: CALL  -958: GOTO 840
  82. 830 C(I) = J:C$(J) = D$(J -127)
  83. 840  NEXT 
  84. 850  VTAB 9: FOR I = 15 TO 27: HTAB 17: PRINT  CHR$(63 +I);" ";: INPUT " ";C$
  85. 860  ON C$ < >"" GOTO 880: GOSUB 1790
  86. 870  VTAB I -6: HTAB (17): CALL  -868:I = I -1: GOTO 910
  87. 880  GOSUB 1870
  88. 890  IF E = 0  THEN  HTAB 17: PRINT "INVALID COMMAND": FOR KK = 1 TO 550: NEXT : VTAB I -5: HTAB 17: CALL  -868:I = I -1: VTAB I -5: HTAB 15: CALL  -868: GOTO 910
  89. 900 C(I) = J:C$(I) = D$(J -127)
  90. 910  NEXT 
  91. 920  GOTO 160
  92. 930 :
  93. 940  REM  SAVE CODE SET TO FILE
  94. 950 :
  95. 960  GOSUB 1830
  96. 970  HOME : PRINT "***  SAVE CODE SET TO FILE ***
  97. 980  IF MD = 1  THEN  PRINT "DO YOU WANT MODIFIED CODES STORED IN ";F$;: INPUT "(Y/N)? ";A$: IF A$ = "Y"  OR A$ =  CHR$(121)  THEN 1080
  98. 990  PRINT D$"CLOSE": PRINT : PRINT "ENTER NAME OF FILE TO STORE CODES (.COD SUFFIX WILL AUTOMATICALLY BE ADDED)."
  99. 1000  PRINT : PRINT "RETURN FOR MENU"
  100. 1010  PRINT : INPUT ":";F$:F$ = F$ +".COD"
  101. 1020  IF  LEN(F$) >15  THEN  PRINT "NAME TOO LONG. DO NOT USE MORE THAN": PRINT "11 CHARACTERS. ": PRINT : GOTO 990
  102. 1030  IF F$ = ".COD"  THEN 160
  103. 1040  GOSUB 1760: PRINT : PRINT "CODE FILE WILL BE SAVED AS ": PRINT F$" ON DRIVE "DR
  104. 1050  PRINT : INPUT "IS THIS CORRECT (Y/N)? ";A$
  105. 1060  GOSUB 1910: IF E = 1 GOTO 1050
  106. 1070  IF A$ = "N"  OR A$ =  CHR$(110)  THEN 970
  107. 1080  PRINT D$"OPEN"F$",D"DR: PRINT D$"WRITE"F$
  108. 1090  FOR I = 1 TO 27: PRINT C(I): NEXT 
  109. 1100  PRINT D$"CLOSE":MD = 0
  110. 1110  GOTO 160
  111. 1120 :
  112. 1130  REM  CUSTOMIZE ENTERSPEED
  113. 1140 :
  114. 1150  HOME : PRINT "*** CREATE CUSTOMIZED ENTERSPEED ***
  115. 1160  PRINT : PRINT "DO YOU WANT THE CODE SET IN MEMORY TO"
  116. 1170  INPUT "BE INSERTED INTO THE ENTERSPEED PROGRAM (Y/N)? ";A$
  117. 1180  GOSUB 1910: IF E = 1  THEN 1160
  118. 1190  IF A$ = "N"  OR A$ =  CHR$(110)  THEN 160
  119. 1200  REM  GENERATE THE ENTERSPEEC EXEC FILE AND THEN EXEC IT
  120. 1210  GOSUB 1830: GOSUB 1760
  121. 1220  PRINT D$"VERIFY ENTERSPEED,D"DR
  122. 1230 A$ = ":QQ("
  123. 1240 L1$ = "0 DEF FN P(X) =  PEEK (X) + 256 * PEEK (X + 1): DIM QQ(27)"
  124. 1250  FOR I = 1 TO 10:L1$ = L1$ +A$ + STR$(I) +")=" + STR$(C(I)): NEXT 
  125. 1260 L2$ = "1 QQ(11)=" + STR$(C(11)): FOR I = 12 TO 19:L2$ = L2$ +A$ + STR$(I) +")=" + STR$(C(I)): NEXT 
  126. 1270 L3$ = "2 QQ(20)=" + STR$(C(20)): FOR I = 21 TO 27:L3$ = L3$ +A$ + STR$(I) +")=" + STR$(C(I)): NEXT 
  127. 1280 L3$ = L3$ +":A=FN P(103): EN=FN P(175)-2"
  128. 1290  PRINT : PRINT "SEVERAL " CHR$(93)"'S WILL APPEAR."
  129. 1300  PRINT "AFTER THE ENTERSPEED PROGRAM IS REVISED IT WILL BE LOADED INTO MEMORY."
  130. 1310  PRINT D$"OPEN ENTERSPEED.EXEC,D"DR:: PRINT D$"WRITE ENTERSPEED.EXEC"
  131. 1320  PRINT "LOAD ENTERSPEED": PRINT L1$: PRINT L2$: PRINT L3$: PRINT "SAVE ENTERSPEED"
  132. 1330  PRINT "Z$=" + CHR$(34) +"NEW CODE SET INSERTED INTO ENTERSPEED.  PROGRAM IS NOW LOADED IN MEMORY" + CHR$(34)
  133. 1340  PRINT "PRINT Z$": IF  PEEK(48896) < >76  THEN  PRINT "DELETE ENTERSPEED.EXEC"
  134. 1350  PRINT D$"CLOSE"
  135. 1360  PRINT D$"EXEC ENTERSPEED.EXEC"
  136. 1370  END 
  137. 1380  REM  APPLESOFT COMMANDS/KEYWORDS
  138. 1390  DATA  END,FOR,NEXT,DATA,INPUT,DEL,DIM,READ,GR,TEXT,PR#
  139. 1400  DATA  IN#,CALL,PLOT,HLIN,VLIN,HGR2,HGR,HCOLOR=,HPLOT,DRAW,XDRAW,HTAB,HOME
  140. 1410  DATA  ROT=,SCALE=,SHLOAD,TRACE,NOTRACE,NORMAL,INVERSE,FLASH,COLOR=,POP,VTAB
  141. 1420  DATA  "HIMEM:","LOMEM:"
  142. 1430  DATA  ONERR,RESUME,RECALL,STORE,SPEED=,LET,GOTO,RUN,IF,RESTORE,&,GOSUB,RETURN,REM,STOP,ON,WAIT
  143. 1440  DATA  LOAD,SAVE,DEF,POKE,PRINT,CONT,LIST,CLEAR,GET,NEW,TAB(,TO,FN,SPC(,THEN,AT,NOT,STEP
  144. 1450  DATA  +,-,*,/,^,AND,OR,>,=,<,SGN,INT,ABS,USR,FRE,SCRN(,PDL,POS,SQR
  145. 1460  DATA  RND,LOG,EXP,COS,SIN,TAN,ATN,PEEK,LEN,STR$,VAL,ASC,CHR$,LEFT$,RIGHT$,MID$
  146. 1470  HOME : REM  CODE CLEAR AND REPLACE WITH STANDARD CODE
  147. 1480 :
  148. 1490  REM  GENERATE STD. CODE SET
  149. 1500 :
  150. 1510  PRINT "THIS ROUTINE REPLACES EXISTING CODE SET IN MEMORY WITH THE STANDARD ENTERSPEED  CODE SET."
  151. 1520  PRINT : INPUT "CONTINUE (Y/N)? ";A$: IF A$ < >"Y"  AND A$ < > CHR$(121) GOTO 160
  152. 1530 F$ = "STD.COD":F1$ = F$
  153. 1540  FOR I = 1 TO 107: READ D$(I): NEXT 
  154. 1550  FOR I = 1 TO 27: READ C(I):C$(I) = D$(C(I) -127): NEXT : RESTORE 
  155. 1560  GOTO 160
  156. 1570  REM  TOKENS FOR STANDARD CODE SET
  157. 1580  DATA  151,205,176,231,131,135,129,171,150,132,157,158,232,234
  158. 1590  DATA  130,165,226,185,233,195,196,177,162,148,137,228,199
  159. 1600  VTAB 24: PRINT PK$;: GET A$: PRINT A$: RETURN : REM  PRESS RETURN
  160. 1610  REM  ERROR ROUTINE
  161. 1620  PRINT :E =  PEEK(222): PRINT "ERROR "E" ON LINE " PEEK(218) +256 * PEEK(219): PRINT 
  162. 1630  IF E = 8  THEN  PRINT "I/O ERROR. CHECK DRIVE DOOR AND DISK."
  163. 1640  IF E = 4  THEN  PRINT "DISK WRITE PROTECTED. REPLACE OR REMOVE WRITE PROTECT TAB."
  164. 1650  IF E = 6  THEN  PRINT "FILE NOT FOUND. CATALOG DISK."
  165. 1660  IF E = 9  THEN  PRINT "DISK FULL. REPLACE WITH AN INITIALIZED  DISK."
  166. 1670  IF E = 5  THEN  PRINT "FILE PROBLEM. END OF DATA."
  167. 1680  GOSUB 1600
  168. 1690  POKE 216,0: ONERR  GOTO 1620
  169. 1700  GOTO 160
  170. 1710  END 
  171. 1720 :
  172. 1730  REM  SUBROUTINES
  173. 1740 :
  174. 1750  REM  DISK DRIVE NO.
  175. 1760  PRINT : INPUT "ENTER DISK DRIVE NO.:";DD$:DR =  VAL(DD$)
  176. 1770  IF DR <1  OR DR >2  THEN  PRINT  CHR$(7);: CALL  -998: CALL  -998: GOTO 1760
  177. 1780  RETURN 
  178. 1790 P =  PEEK(37): VTAB 22: PRINT "CODES IN MEMORY WILL BE LOST. DO YOU"
  179. 1800  INPUT "STILL WANT TO RETURN TO MENU (Y/N)? ";A$: IF A$ = "Y"  OR A$ =  CHR$(121)  THEN  POP : GOTO 160
  180. 1810  VTAB 22: CALL  -958: RETURN 
  181. 1820  REM  CHECK FOR VALID CODE SET
  182. 1830 E = 0: FOR I = 1 TO 27: IF C(I) <128  OR C(I) >234  THEN E = 1:I = 27
  183. 1840  NEXT : IF E = 1  THEN  PRINT : PRINT "CODE SET IN MEMORY NOT VALID.": GOSUB 1600: POP : GOTO 160
  184. 1850  RETURN 
  185. 1860  REM  FIND TOKEN
  186. 1870 E = 0: FOR K = 1 TO 107:J = K: IF C$ = D$(K)  THEN E = 1:K = 107
  187. 1880  NEXT :J = J +127
  188. 1890  RETURN 
  189. 1900  REM  Y/N CHECK
  190. 1910 E = 0: IF A$ < >"N"  AND A$ < > CHR$(110)  AND A$ < >"Y"  AND A$ < > CHR$(121)  THEN  CALL  -998: CALL  -998:E = 1
  191. 1920  RETURN 
  192. 1930 :
  193. 1940  REM  QUIT
  194. 1950 :
  195. 1960 E = 0: FOR I = 1 TO 27: IF C(I) <128  OR C(I) >234  THEN E = 1:I = 27
  196. 1970  NEXT 
  197. 1980  HOME : IF F$ = ""  OR E = 1  THEN  END 
  198. 1990  PRINT "CODE SET "F$" IN MEMORY": PRINT "WILL BE LOST. DO YOU STILL WANT TO"
  199. 2000  INPUT "QUIT (Y/N)? ";A$
  200. 2010  GOSUB 1910: IF E = 1  THEN  HOME : GOTO 1900
  201. 2020  IF A$ = "N"  OR A$ =  CHR$(110)  THEN 160
  202. 2030  END 
  203. 2040 :
  204. 2050  REM  HELP MODULE
  205. 2060 :
  206. 2070  VTAB 15: HTAB 1: CALL  -958: POKE 34,14
  207. 2080  HOME : PRINT "*** MENU EXPLANATIONS ***": PRINT 
  208. 2090  INPUT "ENTER MENU OPTION NUMBER (0 TO END): ";A$:ME =  VAL(A$)
  209. 2100  IF ME < = 0  THEN  POKE 34,0: HOME : GOTO 160
  210. 2110  IF ME >8  THEN 2080
  211. 2120  PRINT : ON ME GOTO 2130,2190,2230,2280,2330,2370,2410,2440
  212. 2130  PRINT "LOAD CODE FILE: LOADS AN EXISTING CODE"
  213. 2140  PRINT "FILE FROM DESIGNATED DRIVE. PROVIDES"
  214. 2150  PRINT "A CATALOG OPTION. AFTER LOADING,"
  215. 2160  PRINT "TRANSFER IS AUTOMATICALLY MADE TO THE"
  216. 2170  PRINT "EDIT/VIEW/PRINT OPTION"
  217. 2180  GOSUB 1600: GOTO 2080
  218. 2190  PRINT "SAVE CODE FILE: SAVES THE CODE SET IN"
  219. 2200  PRINT "MEMORY TO DESIGNATED FILE IN DESIGNATED"
  220. 2210  PRINT "DRIVE. RETURNS TO THE MAIN MENU."
  221. 2220  GOSUB 1600: GOTO 2070
  222. 2230  PRINT "ENTER NEW CODES: USED TO GENERATE A NEW"
  223. 2240  PRINT "CODE SET TAILORED TO USER'S NEEDS."
  224. 2250  PRINT "RETURNS TO MENU AFTER ALL CODES ARE"
  225. 2260  PRINT "ENTERED."
  226. 2270  GOSUB 1600: GOTO 2070
  227. 2280  PRINT "EDIT/VIEW/PRINT: DISPLAYS CURRENT CODE"
  228. 2290  PRINT "SET IN MEMORY AND ALLOWS FOR CHANGING"
  229. 2300  PRINT "INDIVIDUAL CODES. OFFERS OPTION TO PRINT";
  230. 2310  PRINT "THE CODE SET. RETURNS TO MAIN MENU."
  231. 2320  GOSUB 1600: GOTO 2070
  232. 2330  PRINT "GENERATE STANDARD CODE SET: CLEARS"
  233. 2340  PRINT "MEMORY OF CURRENT CODE SET AND GENERATES";
  234. 2350  PRINT "THE STANDARD CODE SET. RETURNS TO MENU."
  235. 2360  GOSUB 1600: GOTO 2070
  236. 2370  PRINT "CREATE CUSTOMIZED ENTERSPEED: INSERTS"
  237. 2380  PRINT "CODE SET IN MEMORY INTO THE ENTERSPEED"
  238. 2390  PRINT "PROGRAM AND EXITS THIS UTILITY PROGRAM."
  239. 2400  GOSUB 1600: GOTO 2070
  240. 2410  PRINT "HELP: PROVIDES INFORMATION ON EACH MENU"
  241. 2420  PRINT "OPTION. RETURNS TO MENU."
  242. 2430  GOSUB 1600: GOTO 2070
  243. 2440  PRINT "QUIT: EXITS THIS UTILITY PROGRAM. IF"
  244. 2450  PRINT "CODE FILE EXISTS IN MEMORY, OFFERS"
  245. 2460  PRINT "OPTION OF RETURNING TO MENU."
  246. 2470  GOSUB 1600: GOTO 2070