home *** CD-ROM | disk | FTP | other *** search
/ Set of Apple II Hard Drive Images / hard.hdv / HARD / DATATERM / MACRO.MAKER (.txt) < prev    next >
Encoding:
Applesoft BASIC Source Code  |  1989-03-30  |  5.2 KB  |  170 lines  |  [FC] Applesoft BASIC Program (0x0801)

  1. 0  REM DataLink Macro Maker
  2. 1  REM Copyright (C) 1987, 1988 by Applied Engineering
  3. 2  REM Written by John Hoskins
  4. 3  REM June 28, 1988
  5. 4  REM Version 1.2
  6. 10  PRINT  CHR$(21): TEXT : HOME :IN$ = "":D$ =  CHR$(4):M$ = "DL.MACROS": DIM MC$(26),MN$(26):UL$ = "____________________________________":QT$ =  CHR$(34)
  7. 20  PRINT D$"BLOAD ERR.PR":IN = 847:ER = 897:SP$ = "                                    "
  8. 30  PRINT "DataLink Macro Maker           ver 1.2": PRINT "(C) 1987, 1988 by Applied Engineering"
  9. 40  GOSUB 2200: VTAB 6: PRINT "Make Macro a Closed Apple Key? ";: GET CA$: PRINT CA$: GOSUB 2300: IF CA$ =  CHR$(27)  THEN 1500
  10. 50  IF CA$ = "N"  OR CA$ = "n"  THEN Q = 0: GOTO 200
  11. 60  IF CA$ < >"Y"  AND CA$ < >"y"  THEN  PRINT  CHR$(7): GOTO 40
  12. 70  ONERR  GOTO 90
  13. 80  PRINT D$"OPEN"M$: PRINT D$"READ"M$: FOR I = 1 TO 26: INPUT MN$(I): NEXT : PRINT D$"CLOSE":NI = 26: GOTO 100
  14. 90  CALL ER: POKE 216,0: PRINT D$"CLOSE":NI = I -1: IF NI <1  THEN 103
  15. 95  GOTO 100
  16. 100  FOR I = 1 TO NI:II =  ASC( LEFT$(MN$(I),1)) -96: IF II <1  THEN II = II +32
  17. 102 MC$(II) = MN$(I): NEXT 
  18. 103  FOR I = 1 TO 26: IF MC$(I) = ""  THEN MC$(I) =  CHR$(96 +I) +"unused"
  19. 104  NEXT : HOME 
  20. 105  FOR I = 1 TO 13: PRINT  LEFT$(MC$(I),1)":" MID$ (MC$(I),2);: HTAB 20: PRINT  LEFT$(MC$(I +13),1)":" MID$ (MC$(I +13),2): NEXT 
  21. 110  GOSUB 2200: VTAB 20: POKE 49168,0: PRINT "Which Macro to Change? (a-z):";
  22. 120  GET Q$: PRINT Q$: GOSUB 2300: IF Q$ > = "a"  AND Q$ < = "z"  THEN Q$ =  CHR$( ASC(Q$) -32)
  23. 130 Q =  ASC(Q$) -64: IF Q <1  OR Q >26  THEN 1500
  24. 140  PRINT "This is now " MID$ (MC$(Q),2)
  25. 150  PRINT "Change This one?";: GET A$: PRINT A$
  26. 160  IF A$ < >"Y"  AND A$ < >"y"  THEN  HOME : GOTO 30
  27. 200  HOME 
  28. 210  VTAB 1: PRINT "What is the Macro name?" LEFT$(UL$,15);SP$: VTAB 1: HTAB 24: CALL IN:MN$ = IN$ +""
  29. 220  IF  LEN(MN$) >15  THEN  PRINT  CHR$(7)"Name too Long. Limited to 15 characters": GOTO 210
  30. 230  VTAB 3: PRINT SP$"    ":MC$(Q) =  CHR$(96 +Q) +MN$
  31. 235  GOSUB 2400: IF UN = 6  THEN 300
  32. 240 F$ = "DL.KEY." + CHR$(64 +Q): IF Q = 0  THEN  GOSUB 2000:F$ = MN$
  33. 250  ONERR  GOTO 265
  34. 260  PRINT D$"verify"F$: POKE 216,0: GOTO 280
  35. 265  CALL ER
  36. 270  POKE 216,0: IF Q = 0  THEN 400
  37. 275  GOTO 300
  38. 280  VTAB 20: PRINT "Macro "MN$" exists as "F$: PRINT "Replace "F$"? (Y/N) ";: GET Q$: PRINT Q$
  39. 283  IF Q$ = "Y"  OR Q$ = "y"  THEN  VTAB 20: PRINT SP$SP$SP$: GOTO 270
  40. 285  IF Q$ = "N"  OR Q$ = "n"  THEN  HOME : GOTO 30
  41. 287  PRINT  CHR$(7): GOTO 280
  42. 300  ONERR  GOTO 390
  43. 310  PRINT D$"UNLOCK"M$: PRINT D$"DELETE"M$
  44. 320  PRINT D$"OPEN"M$: PRINT D$"WRITE"M$
  45. 330  FOR I = 1 TO 26: PRINT MC$(I): NEXT 
  46. 340  PRINT D$"CLOSE"
  47. 350  PRINT D$"LOCK"M$
  48. 360  POKE 216,0
  49. 370  IF UN = 6  THEN 1500
  50. 380  GOTO 400
  51. 390  CALL ER: POKE 216,0: VTAB 20: PRINT "Cannot Write File:"M$: GOTO 1500
  52. 400  VTAB 2: PRINT "What bps rate (300/1200/2400)? ";: GET BR$
  53. 410  IF BR$ = "1"  THEN BR$ = "1200": GOTO 440
  54. 420  IF BR$ = "3"  THEN BR$ = "300": GOTO 440
  55. 425  IF BR$ = "2"  THEN BR$ = "2400": GOTO 440
  56. 430  PRINT  CHR$(7): GOTO 400
  57. 440  PRINT BR$
  58. 450  VTAB 3: PRINT "Full or Half Duplex (F/H)? ";: GET DX$
  59. 460  IF DX$ = "F"  OR DX$ = "f"  THEN DX$ = "Full": GOTO 490
  60. 470  IF DX$ = "H"  OR DX$ = "h"  THEN DX$ = "Half": GOTO 490
  61. 480  PRINT  CHR$(7): GOTO 450
  62. 490  PRINT DX$
  63. 500  VTAB 4: PRINT "Dial with Tone or Pulse (T/P)? ";: GET TP$
  64. 510  IF TP$ = "T"  OR TP$ = "t"  THEN TP$ = "ATDT":T$ = "Tone": GOTO 540
  65. 520  IF TP$ = "P"  OR TP$ = "p"  THEN TP$ = "ATDP":T$ = "Pulse": GOTO 540
  66. 530  PRINT  CHR$(7): GOTO 500
  67. 540  PRINT T$
  68. 550  VTAB 5: PRINT "What is the Phone Number? ": PRINT  LEFT$(UL$,28);SP$: VTAB 6: CALL IN:PN$ = IN$ +""
  69. 560  IF  LEN(PN$) >28  THEN  PRINT : PRINT  CHR$(7)"Number too Long. Limited to 28 numbers": GOTO 550
  70. 570  VTAB 7: PRINT SP$SP$"      "
  71. 600  VTAB 7: PRINT "Turn on Recording Buffer? (Y/N) ";: GET RB$
  72. 610  IF RB$ = "Y"  OR RB$ = "y"  THEN RB$ = "On": GOTO 640
  73. 620  IF RB$ = "N"  OR RB$ = "n"  THEN RB$ = "Off": GOTO 640
  74. 630  PRINT  CHR$(7): GOTO 600
  75. 640  PRINT RB$
  76. 700  VTAB 20: PRINT "Logon sequence must be known by you!!": VTAB 8: PRINT "Include a logon sequence? (Y/N) ";
  77. 710  GET LO$: IF LO$ = "Y"  OR LO$ = "y"  THEN LO$ = "Yes": GOTO 740
  78. 720  IF LO$ = "N"  OR LO$ = "n"  THEN LO$ = "No": GOTO 740
  79. 730  PRINT  CHR$(7): GOTO 700
  80. 740  PRINT LO$: VTAB 20: PRINT SP$;SP$: IF LO$ = "No"  THEN 950
  81. 750  VTAB 9: PRINT "After CONNECT, who sends first?": PRINT "(Me/Host) ";: GET FI$
  82. 760  IF FI$ = "M"  OR FI$ = "m"  THEN FI$ = "Me": GOTO 790
  83. 770  IF FI$ = "H"  OR FI$ = "h"  THEN FI$ = "Host": GOTO 790
  84. 780  PRINT  CHR$(7): GOTO 750
  85. 790  PRINT FI$: IF FI$ = "Host"  THEN 810
  86. 800  VTAB 11: PRINT "I send:";: CALL IN:IM$ = IN$ +"^M"
  87. 810  PRINT "I wait for:";: CALL IN:W1$ = IN$ +""
  88. 820  PRINT "Then I send:";: CALL IN:M1$ = IN$ +"^M"
  89. 850  VTAB 14: PRINT "Need a Password? (Y/N) ";: GET PW$
  90. 860  IF PW$ = "Y"  OR PW$ = "y"  THEN PW$ = "Yes": GOTO 890
  91. 870  IF PW$ = "N"  OR PW$ = "n"  THEN PW$ = "No": GOTO 890
  92. 880  PRINT  CHR$(7): GOTO 850
  93. 890  PRINT PW$: IF PW$ = "No"  THEN 950
  94. 900  VTAB 15: PRINT "I wait for:";: CALL IN:W2$ = IN$ +""
  95. 910  PRINT "The password is:";: CALL IN:M2$ = IN$ +"^M"
  96. 950  GOSUB 2200: VTAB 20: PRINT "Is data all correct? (Y/N) ";: GET OK$: PRINT OK$: GOSUB 2300
  97. 960  IF OK$ = "Y"  OR OK$ = "y"  THEN 1000
  98. 970  IF OK$ = "N"  OR OK$ = "n"  THEN 200
  99. 980  IF OK$ =  CHR$(27)  THEN  PRINT : VTAB 20: PRINT SP$: GOTO 1500
  100. 990  PRINT  CHR$(7): GOTO 950
  101. 1000  VTAB 20: PRINT "Macro saved as:"F$SP$: ONERR  GOTO 1015
  102. 1010  PRINT D$"UNLOCK"F$: PRINT D$"DELETE"F$: GOTO 1018
  103. 1015  CALL ER
  104. 1018  ONERR  GOTO 1450
  105. 1020  PRINT D$"OPEN"F$: PRINT D$"WRITE"F$
  106. 1030  PRINT "display "QT$"^L"QT$:
  107. 1040  PRINT "set timer 2"
  108. 1050  PRINT "set baud " +BR$
  109. 1060  PRINT "# ready"
  110. 1070  PRINT "xmit "QT$"ATS0=0S7=75^M"QT$
  111. 1080  PRINT "waitfor string "QT$"OK"QT$
  112. 1090  PRINT "if failed goto ready"
  113. 1100  PRINT "set duplex full"
  114. 1110  PRINT "set timer ";30 + INT(1.5 * LEN(PN$) *(T$ = "Pulse"))
  115. 1120  PRINT "# dial"
  116. 1130  PRINT "xmit " +QT$ +TP$ +PN$ +"^M" +QT$
  117. 1150  PRINT "waitfor string "QT$"connect"QT$
  118. 1160  PRINT "if failed goto redial"
  119. 1170  PRINT "set duplex "DX$
  120. 1180  PRINT "buffer "RB$
  121. 1190  GOSUB 1600
  122. 1200  PRINT "# redial"
  123. 1210  PRINT "xmit "QT$"ATH^M"QT$
  124. 1215  PRINT "waitfor string "QT$"NO CARRIER"QT$
  125. 1220  PRINT "display "QT$"^M^JPush D to Dial "MN$" again; anything else to stop."QT$
  126. 1230  PRINT "waitfor keyboard": PRINT "display "QT$"^J^M"QT$
  127. 1240  PRINT "if keyboard "QT$"^["QT$" goto exit"
  128. 1250  PRINT "if keyboard "QT$"D"QT$" goto dial"
  129. 1260  PRINT "goto exit"
  130. 1300  PRINT "# exit"
  131. 1310  PRINT "hangup"
  132. 1320  PRINT "display "QT$"^L"QT$
  133. 1330  PRINT "stop"
  134. 1400  PRINT D$"CLOSE": PRINT D$"LOCK"F$: POKE 216,0: GOTO 1500
  135. 1450  CALL ER: POKE 216,0: VTAB 20: PRINT "Cannot properly write file:"F$: GOTO 1500
  136. 1500  VTAB 22: PRINT "Push Space for DataLink Menu";: GET Q$: PRINT 
  137. 1510  PRINT D$"-STARTUP": END 
  138. 1600  IF LO$ = "No"  THEN  PRINT "stop": RETURN 
  139. 1610  PRINT "# logon"
  140. 1620  IF FI$ = "Me"  THEN  PRINT "pause 4": PRINT "xmit "QT$;IM$;QT$
  141. 1625  PRINT "set timer 5"
  142. 1630  PRINT "waitfor string "QT$;W1$;QT$
  143. 1640  PRINT "if failed goto failed"
  144. 1650  PRINT "xmit "QT$;M1$;QT$
  145. 1660  IF PW$ = "No"  THEN 1700
  146. 1670  PRINT "waitfor string "QT$;W2$;QT$
  147. 1680  PRINT "if failed goto failed"
  148. 1690  PRINT "xmit "QT$;M2$;QT$
  149. 1700  PRINT "# manual"
  150. 1710  PRINT "stop"
  151. 1720  PRINT "# failed"
  152. 1730  PRINT "display "QT$"^M^JLogon Sequence Failed. Must try Manual Logon.^M^J^J"QT$
  153. 1740  PRINT "stop"
  154. 1750  RETURN 
  155. 2000 FF$ = ""
  156. 2010  FOR I = 1 TO  LEN(MN$)
  157. 2020 CH$ =  MID$ (MN$,I,1)
  158. 2030  IF CH$ > = "a"  AND CH$ < = "z"  THEN 2100
  159. 2040  IF CH$ > = "A"  AND CH$ < = "Z"  THEN 2100
  160. 2050  IF CH$ > = "0"  AND CH$ < = "9"  THEN 2100
  161. 2060 CH$ = "."
  162. 2100 FF$ = FF$ +CH$
  163. 2110  NEXT 
  164. 2120 MN$ = FF$
  165. 2130  RETURN 
  166. 2200  VTAB 24: PRINT "Push Esc to exit Macro Maker";: VTAB 20: PRINT : RETURN 
  167. 2300  VTAB 24: PRINT SP$;: VTAB 20: PRINT : RETURN 
  168. 2400 UN = 0: FOR C = 1 TO 6: IF  MID$ (MN$,C,1) =  MID$ ("unused",C,1)  OR  MID$ (MN$,C,1) =  MID$ ("UNUSED",C,1)  THEN UN = UN +1
  169. 2410  NEXT C: IF UN = 6  THEN MC$(Q) =  CHR$(96 +Q) +"unused"
  170. 2420  RETURN