home *** CD-ROM | disk | FTP | other *** search
/ Softdisk G-S 97 / SGDS 97.2mg / SDGS.97 / SDC97 / C / MACRO.EDITOR (.txt) < prev    next >
Encoding:
Applesoft BASIC Source Code  |  1989-09-20  |  4.2 KB  |  211 lines  |  [FC] Applesoft BASIC Program (0x0801)

  1. 10 :
  2. 20  REM =======================
  3. 30  REM      MACRO.EDITOR
  4. 40  REM      BY BILL TUDOR
  5. 50  REM    BI.MACROS  EDITOR
  6. 60  REM   V1.5      05-SEP-88
  7. 70  REM =======================
  8. 80 :
  9. 90  IF  PEEK(104) = 64  AND  PEEK(103) = 1  THEN 110
  10. 100  POKE 104,64: POKE 103,1: POKE 16384,0: PRINT  CHR$(4);"RUN MACRO.EDITOR"
  11. 110  DIM M%(30),MA(30),DA%(30,36),T%(40)
  12. 120 A1 = 2109:A2 = 2049:A3 = 2140
  13. 130 :
  14. 140  REM ==================
  15. 150  REM  DISPLAY SCREEN:
  16. 160  REM ==================
  17. 170 :
  18. 180  PRINT  CHR$(21): HOME 
  19. 190  PRINT "   ---------------------------------"
  20. 200  PRINT "        MACRO.EDITOR     V1.5"
  21. 210  PRINT "            BY BILL TUDOR"
  22. 220  PRINT "   ---------------------------------": PRINT 
  23. 230 :
  24. 240  REM ==================
  25. 250  REM  GET MACRO FILE:
  26. 260  REM ==================
  27. 270 :
  28. 280  PRINT "LOADING CURRENT MACROS..";
  29. 290 PF$ = "": ONERR  GOTO 5000
  30. 300  PRINT  CHR$(4);"BLOAD";PF$;"MACRO.MAGIC,A$0800,B$18D,L$494"
  31. 305  IF  PEEK(A2 -1) < >15  THEN  PRINT : PRINT  CHR$(7);"WRONG VERSION OF <MACRO.MAGIC>!": GET Q$: GOTO 1060
  32. 310 :
  33. 320  REM ==================
  34. 330  REM  PROCESS FILE:
  35. 340  REM ==================
  36. 350 :
  37. 360 M%(0) =  PEEK(A1): REM -NUMBER OF MACROS
  38. 370  FOR I = 1 TO M%(0)
  39. 380 M%(I) =  PEEK(A1 +I): REM -MACRO KEYS
  40. 390  NEXT 
  41. 400  FOR I = 0 TO 29
  42. 410 MA(I +1) = A3 +I *36: REM -MACRO ADDRESS
  43. 420  NEXT 
  44. 430  FOR I = 1 TO M%(0)
  45. 440 DA%(I,0) =  PEEK(MA(I)): REM -DATA LENGTHS
  46. 450  FOR J = 1 TO DA%(I,0)
  47. 460 DA%(I,J) =  PEEK(MA(I) +J)
  48. 470  NEXT J
  49. 480  NEXT I
  50. 490 :
  51. 500  REM ==================
  52. 510  REM   MAIN MENU:
  53. 520  REM ==================
  54. 530 :
  55. 540  VTAB 4: PRINT : CALL  -958
  56. 550  PRINT "           A(DD) A MACRO"
  57. 560  PRINT "           D(ELETE) A MACRO"
  58. 570  PRINT "           Q(UIT) MACRO EDITOR"
  59. 580  PRINT 
  60. 590  PRINT "            OPTION:< >"
  61. 600  PRINT "   ---------------------------------"
  62. 610  PRINT "         CURRENT MACRO KEYS:": PRINT 
  63. 620  FOR I = 1 TO M%(0)
  64. 630  IF M%(I) <160  THEN  PRINT  SPC( 4);: INVERSE : PRINT  CHR$(M%(I) +64);: NORMAL : PRINT  SPC( 5);: GOTO 650
  65. 640  PRINT  SPC( 4); CHR$(M%(I)); SPC( 5);
  66. 650  NEXT 
  67. 660  PRINT : PRINT "   ---------------------------------"
  68. 670  VTAB 9: HTAB 21: GET K$
  69. 680  IF K$ =  CHR$(27)  THEN K$ = "Q"
  70. 690  IF K$ = "A"  OR K$ = "a"  THEN 1080
  71. 700  IF K$ = "D"  OR K$ = "d"  THEN 1670
  72. 710  IF K$ < >"Q"  AND K$ < >"q"  THEN  PRINT  CHR$(7);: GOTO 670
  73. 720 :
  74. 730  REM ==================
  75. 740  REM   QUIT:
  76. 750  REM ==================
  77. 760 :
  78. 770  PRINT K$;: VTAB 23: PRINT 
  79. 780  PRINT "SAVE CURRENT MACROS(Y/N)?";
  80. 790  GET K$
  81. 800  IF K$ = "N"  OR K$ = "n"  THEN 1060
  82. 810  IF K$ =  CHR$(27)  THEN 540
  83. 820  IF K$ < >"Y"  AND K$ < >"y"  THEN  PRINT  CHR$(7);: GOTO 790
  84. 830 :
  85. 840  REM ==================
  86. 850  REM  SAVE CURRENT MACRO SET:
  87. 860  REM ==================
  88. 870 :
  89. 880  VTAB 4: PRINT : CALL  -958: PRINT : PRINT "SAVING CURRENT MACROS.."
  90. 890  POKE A1,M%(0): REM -NUMBER OF MACROS
  91. 900  FOR I = 1 TO M%(0)
  92. 910  POKE A1 +I,M%(I): REM -MACRO KEYS
  93. 920  NEXT 
  94. 930  FOR I = 1 TO M%(0)
  95. 940  POKE MA(I),DA%(I,0): REM -DATA LENGTHS
  96. 950  FOR J = 1 TO DA%(I,0)
  97. 960  POKE MA(I) +J,DA%(I,J)
  98. 970  NEXT J
  99. 980  NEXT I
  100. 990 :
  101. 1000  REM ==================
  102. 1010  REM  SAVE NEW FILE:
  103. 1020  REM ==================
  104. 1030 :
  105. 1040  PRINT  CHR$(4);"UNLOCK";PF$;"MACRO.MAGIC"
  106. 1050  PRINT  CHR$(4);"BSAVE";PF$;"MACRO.MAGIC,A$0800,B$18D,L$494"
  107. 1060  HOME 
  108. 1070  PRINT  CHR$(4);"BYE"
  109. 1080 :
  110. 1090  REM ==================
  111. 1100  REM  ADD A MACRO:
  112. 1110  REM ==================
  113. 1120 :
  114. 1130  IF M%(0) = 30  THEN  PRINT  CHR$(7);: GOTO 540
  115. 1140  PRINT K$;: VTAB 22: PRINT 
  116. 1150  PRINT "SELECT MACRO KEY:";
  117. 1160  GET K$: IF K$ = ""  THEN K$ =  CHR$(0)
  118. 1161 K =  ASC(K$)
  119. 1170  IF K = 27  THEN 540
  120. 1180 X = 0:K = K +128
  121. 1190  IF K >224  AND K <251  THEN K = K -32
  122. 1200  FOR I = 1 TO M%(0)
  123. 1210  IF M%(I) = K  THEN X = I
  124. 1220  NEXT 
  125. 1230  IF X = 0  THEN 1300
  126. 1240  IF  ASC(K$) <32  THEN  INVERSE : PRINT  CHR$( ASC(K$) +64): NORMAL : GOTO 1260
  127. 1250  PRINT K$
  128. 1260  PRINT "REPLACE OLD MACRO(Y/N)?";
  129. 1270  GET Q$: IF Q$ =  CHR$(27)  THEN Q$ = "N"
  130. 1280  IF Q$ = "N"  OR Q$ = "n"  THEN 540
  131. 1290  IF Q$ < >"Y"  AND Q$ < >"y"  THEN  PRINT  CHR$(7);: GOTO 1270
  132. 1300  VTAB 22: HTAB 1: CALL  -958
  133. 1310  PRINT "ADDING MACRO:";
  134. 1320  IF  ASC(K$) <32  THEN  INVERSE : PRINT  CHR$( ASC(K$) +64): NORMAL : GOTO 1340
  135. 1330  PRINT K$
  136. 1340  PRINT "USE <CNTRL-@> TO END/ESC TO ABORT."
  137. 1350  IF  ASC(K$) <32  THEN  INVERSE : PRINT  CHR$( ASC(K$) +64);: NORMAL : GOTO 1370
  138. 1360  PRINT K$;
  139. 1370  PRINT ":<"; SPC( 35);">";
  140. 1380 :
  141. 1390  REM ==================
  142. 1400  REM  GET NEW MACRO:
  143. 1410  REM ==================
  144. 1420 :
  145. 1430 L = 0
  146. 1440  VTAB 24: HTAB 4 +L: GET Q$
  147. 1450  IF Q$ =  CHR$(27)  THEN 540
  148. 1460  IF Q$ = ""  THEN 1520
  149. 1470 L = L +1:T%(L) =  ASC(Q$) +128
  150. 1480  IF L = 35  THEN 1520
  151. 1490  IF Q$ > = " "  THEN  PRINT Q$;: GOTO 1440
  152. 1500  INVERSE : PRINT  CHR$( ASC(Q$) +64);: NORMAL 
  153. 1510  GOTO 1440
  154. 1520  HTAB 1: CALL  -958: IF L = 0  THEN 540
  155. 1530  PRINT "ADDING MACRO..";
  156. 1540 T%(0) = L
  157. 1550  IF X = 0  THEN 1610
  158. 1560 M%(X) = K
  159. 1570  FOR I = 0 TO L
  160. 1580 DA%(X,I) = T%(I)
  161. 1590  NEXT 
  162. 1600  GOTO 540
  163. 1610 M%(0) = M%(0) +1
  164. 1620 M%(M%(0)) = K
  165. 1630  FOR I = 0 TO L
  166. 1640 DA%(M%(0),I) = T%(I)
  167. 1650  NEXT 
  168. 1660  GOTO 540
  169. 1670 :
  170. 1680  REM ==================
  171. 1690  REM  DELETE A MACRO:
  172. 1700  REM ==================
  173. 1710 :
  174. 1720  IF M%(0) = 1  THEN  PRINT  CHR$(7);: GOTO 540
  175. 1730  PRINT K$;: VTAB 22: PRINT 
  176. 1740  PRINT "SELECT MACRO KEY:";
  177. 1750  GET K$
  178. 1760 K =  ASC(K$)
  179. 1770  IF K = 27  THEN 540
  180. 1780 X = 0:K = K +128
  181. 1790  IF K >224  AND K <251  THEN K = K -32
  182. 1800  FOR I = 1 TO M%(0)
  183. 1810  IF M%(I) = K  THEN X = I
  184. 1820  NEXT 
  185. 1830  IF X = 0  THEN  PRINT  CHR$(7);: GOTO 1750
  186. 1840  IF  ASC(K$) <32  THEN  INVERSE : PRINT  CHR$( ASC(K$) +64): NORMAL : GOTO 1860
  187. 1850  PRINT K$
  188. 1860  PRINT "DELETING MACRO..";
  189. 1870 M%(0) = M%(0) -1
  190. 1880  IF X >M%(0)  THEN 540
  191. 1890  FOR I = X TO M%(0)
  192. 1900 M%(I) = M%(I +1)
  193. 1910  NEXT 
  194. 1920  FOR I = X TO M%(0)
  195. 1930  FOR J = 0 TO 35
  196. 1940 DA%(I,J) = DA%(I +1,J)
  197. 1950  NEXT J
  198. 1960  NEXT I
  199. 1970  GOTO 540
  200. 5000 :
  201. 5010  REM ==================
  202. 5020  REM  ERROR HANDLER:
  203. 5030  REM ==================
  204. 5040 :
  205. 5050 EC =  PEEK(222): IF EC < >6  THEN  POKE 216,0: RESUME 
  206. 5060  VTAB 20: PRINT 
  207. 5070  PRINT "CANNOT FIND <MACRO.CMD> FILE."; CHR$(7)
  208. 5080  INPUT "ENTER PREFIX:";PF$
  209. 5090  IF  RIGHT$(PF$,1) < >"/"  THEN PF$ = PF$ +"/"
  210. 5100  VTAB 20: CALL  -958
  211. 5110  RESUME