home *** CD-ROM | disk | FTP | other *** search
Applesoft BASIC Source Code | 1989-03-30 | 5.2 KB | 170 lines | [FC] Applesoft BASIC Program (0x0801) |
- 0 REM DataLink Macro Maker
- 1 REM Copyright (C) 1987, 1988 by Applied Engineering
- 2 REM Written by John Hoskins
- 3 REM June 28, 1988
- 4 REM Version 1.2
- 10 PRINT CHR$(21): TEXT : HOME :IN$ = "":D$ = CHR$(4):M$ = "DL.MACROS": DIM MC$(26),MN$(26):UL$ = "____________________________________":QT$ = CHR$(34)
- 20 PRINT D$"BLOAD ERR.PR":IN = 847:ER = 897:SP$ = " "
- 30 PRINT "DataLink Macro Maker ver 1.2": PRINT "(C) 1987, 1988 by Applied Engineering"
- 40 GOSUB 2200: VTAB 6: PRINT "Make Macro a Closed Apple Key? ";: GET CA$: PRINT CA$: GOSUB 2300: IF CA$ = CHR$(27) THEN 1500
- 50 IF CA$ = "N" OR CA$ = "n" THEN Q = 0: GOTO 200
- 60 IF CA$ < >"Y" AND CA$ < >"y" THEN PRINT CHR$(7): GOTO 40
- 70 ONERR GOTO 90
- 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
- 90 CALL ER: POKE 216,0: PRINT D$"CLOSE":NI = I -1: IF NI <1 THEN 103
- 95 GOTO 100
- 100 FOR I = 1 TO NI:II = ASC( LEFT$(MN$(I),1)) -96: IF II <1 THEN II = II +32
- 102 MC$(II) = MN$(I): NEXT
- 103 FOR I = 1 TO 26: IF MC$(I) = "" THEN MC$(I) = CHR$(96 +I) +"unused"
- 104 NEXT : HOME
- 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
- 110 GOSUB 2200: VTAB 20: POKE 49168,0: PRINT "Which Macro to Change? (a-z):";
- 120 GET Q$: PRINT Q$: GOSUB 2300: IF Q$ > = "a" AND Q$ < = "z" THEN Q$ = CHR$( ASC(Q$) -32)
- 130 Q = ASC(Q$) -64: IF Q <1 OR Q >26 THEN 1500
- 140 PRINT "This is now " MID$ (MC$(Q),2)
- 150 PRINT "Change This one?";: GET A$: PRINT A$
- 160 IF A$ < >"Y" AND A$ < >"y" THEN HOME : GOTO 30
- 200 HOME
- 210 VTAB 1: PRINT "What is the Macro name?" LEFT$(UL$,15);SP$: VTAB 1: HTAB 24: CALL IN:MN$ = IN$ +""
- 220 IF LEN(MN$) >15 THEN PRINT CHR$(7)"Name too Long. Limited to 15 characters": GOTO 210
- 230 VTAB 3: PRINT SP$" ":MC$(Q) = CHR$(96 +Q) +MN$
- 235 GOSUB 2400: IF UN = 6 THEN 300
- 240 F$ = "DL.KEY." + CHR$(64 +Q): IF Q = 0 THEN GOSUB 2000:F$ = MN$
- 250 ONERR GOTO 265
- 260 PRINT D$"verify"F$: POKE 216,0: GOTO 280
- 265 CALL ER
- 270 POKE 216,0: IF Q = 0 THEN 400
- 275 GOTO 300
- 280 VTAB 20: PRINT "Macro "MN$" exists as "F$: PRINT "Replace "F$"? (Y/N) ";: GET Q$: PRINT Q$
- 283 IF Q$ = "Y" OR Q$ = "y" THEN VTAB 20: PRINT SP$SP$SP$: GOTO 270
- 285 IF Q$ = "N" OR Q$ = "n" THEN HOME : GOTO 30
- 287 PRINT CHR$(7): GOTO 280
- 300 ONERR GOTO 390
- 310 PRINT D$"UNLOCK"M$: PRINT D$"DELETE"M$
- 320 PRINT D$"OPEN"M$: PRINT D$"WRITE"M$
- 330 FOR I = 1 TO 26: PRINT MC$(I): NEXT
- 340 PRINT D$"CLOSE"
- 350 PRINT D$"LOCK"M$
- 360 POKE 216,0
- 370 IF UN = 6 THEN 1500
- 380 GOTO 400
- 390 CALL ER: POKE 216,0: VTAB 20: PRINT "Cannot Write File:"M$: GOTO 1500
- 400 VTAB 2: PRINT "What bps rate (300/1200/2400)? ";: GET BR$
- 410 IF BR$ = "1" THEN BR$ = "1200": GOTO 440
- 420 IF BR$ = "3" THEN BR$ = "300": GOTO 440
- 425 IF BR$ = "2" THEN BR$ = "2400": GOTO 440
- 430 PRINT CHR$(7): GOTO 400
- 440 PRINT BR$
- 450 VTAB 3: PRINT "Full or Half Duplex (F/H)? ";: GET DX$
- 460 IF DX$ = "F" OR DX$ = "f" THEN DX$ = "Full": GOTO 490
- 470 IF DX$ = "H" OR DX$ = "h" THEN DX$ = "Half": GOTO 490
- 480 PRINT CHR$(7): GOTO 450
- 490 PRINT DX$
- 500 VTAB 4: PRINT "Dial with Tone or Pulse (T/P)? ";: GET TP$
- 510 IF TP$ = "T" OR TP$ = "t" THEN TP$ = "ATDT":T$ = "Tone": GOTO 540
- 520 IF TP$ = "P" OR TP$ = "p" THEN TP$ = "ATDP":T$ = "Pulse": GOTO 540
- 530 PRINT CHR$(7): GOTO 500
- 540 PRINT T$
- 550 VTAB 5: PRINT "What is the Phone Number? ": PRINT LEFT$(UL$,28);SP$: VTAB 6: CALL IN:PN$ = IN$ +""
- 560 IF LEN(PN$) >28 THEN PRINT : PRINT CHR$(7)"Number too Long. Limited to 28 numbers": GOTO 550
- 570 VTAB 7: PRINT SP$SP$" "
- 600 VTAB 7: PRINT "Turn on Recording Buffer? (Y/N) ";: GET RB$
- 610 IF RB$ = "Y" OR RB$ = "y" THEN RB$ = "On": GOTO 640
- 620 IF RB$ = "N" OR RB$ = "n" THEN RB$ = "Off": GOTO 640
- 630 PRINT CHR$(7): GOTO 600
- 640 PRINT RB$
- 700 VTAB 20: PRINT "Logon sequence must be known by you!!": VTAB 8: PRINT "Include a logon sequence? (Y/N) ";
- 710 GET LO$: IF LO$ = "Y" OR LO$ = "y" THEN LO$ = "Yes": GOTO 740
- 720 IF LO$ = "N" OR LO$ = "n" THEN LO$ = "No": GOTO 740
- 730 PRINT CHR$(7): GOTO 700
- 740 PRINT LO$: VTAB 20: PRINT SP$;SP$: IF LO$ = "No" THEN 950
- 750 VTAB 9: PRINT "After CONNECT, who sends first?": PRINT "(Me/Host) ";: GET FI$
- 760 IF FI$ = "M" OR FI$ = "m" THEN FI$ = "Me": GOTO 790
- 770 IF FI$ = "H" OR FI$ = "h" THEN FI$ = "Host": GOTO 790
- 780 PRINT CHR$(7): GOTO 750
- 790 PRINT FI$: IF FI$ = "Host" THEN 810
- 800 VTAB 11: PRINT "I send:";: CALL IN:IM$ = IN$ +"^M"
- 810 PRINT "I wait for:";: CALL IN:W1$ = IN$ +""
- 820 PRINT "Then I send:";: CALL IN:M1$ = IN$ +"^M"
- 850 VTAB 14: PRINT "Need a Password? (Y/N) ";: GET PW$
- 860 IF PW$ = "Y" OR PW$ = "y" THEN PW$ = "Yes": GOTO 890
- 870 IF PW$ = "N" OR PW$ = "n" THEN PW$ = "No": GOTO 890
- 880 PRINT CHR$(7): GOTO 850
- 890 PRINT PW$: IF PW$ = "No" THEN 950
- 900 VTAB 15: PRINT "I wait for:";: CALL IN:W2$ = IN$ +""
- 910 PRINT "The password is:";: CALL IN:M2$ = IN$ +"^M"
- 950 GOSUB 2200: VTAB 20: PRINT "Is data all correct? (Y/N) ";: GET OK$: PRINT OK$: GOSUB 2300
- 960 IF OK$ = "Y" OR OK$ = "y" THEN 1000
- 970 IF OK$ = "N" OR OK$ = "n" THEN 200
- 980 IF OK$ = CHR$(27) THEN PRINT : VTAB 20: PRINT SP$: GOTO 1500
- 990 PRINT CHR$(7): GOTO 950
- 1000 VTAB 20: PRINT "Macro saved as:"F$SP$: ONERR GOTO 1015
- 1010 PRINT D$"UNLOCK"F$: PRINT D$"DELETE"F$: GOTO 1018
- 1015 CALL ER
- 1018 ONERR GOTO 1450
- 1020 PRINT D$"OPEN"F$: PRINT D$"WRITE"F$
- 1030 PRINT "display "QT$"^L"QT$:
- 1040 PRINT "set timer 2"
- 1050 PRINT "set baud " +BR$
- 1060 PRINT "# ready"
- 1070 PRINT "xmit "QT$"ATS0=0S7=75^M"QT$
- 1080 PRINT "waitfor string "QT$"OK"QT$
- 1090 PRINT "if failed goto ready"
- 1100 PRINT "set duplex full"
- 1110 PRINT "set timer ";30 + INT(1.5 * LEN(PN$) *(T$ = "Pulse"))
- 1120 PRINT "# dial"
- 1130 PRINT "xmit " +QT$ +TP$ +PN$ +"^M" +QT$
- 1150 PRINT "waitfor string "QT$"connect"QT$
- 1160 PRINT "if failed goto redial"
- 1170 PRINT "set duplex "DX$
- 1180 PRINT "buffer "RB$
- 1190 GOSUB 1600
- 1200 PRINT "# redial"
- 1210 PRINT "xmit "QT$"ATH^M"QT$
- 1215 PRINT "waitfor string "QT$"NO CARRIER"QT$
- 1220 PRINT "display "QT$"^M^JPush D to Dial "MN$" again; anything else to stop."QT$
- 1230 PRINT "waitfor keyboard": PRINT "display "QT$"^J^M"QT$
- 1240 PRINT "if keyboard "QT$"^["QT$" goto exit"
- 1250 PRINT "if keyboard "QT$"D"QT$" goto dial"
- 1260 PRINT "goto exit"
- 1300 PRINT "# exit"
- 1310 PRINT "hangup"
- 1320 PRINT "display "QT$"^L"QT$
- 1330 PRINT "stop"
- 1400 PRINT D$"CLOSE": PRINT D$"LOCK"F$: POKE 216,0: GOTO 1500
- 1450 CALL ER: POKE 216,0: VTAB 20: PRINT "Cannot properly write file:"F$: GOTO 1500
- 1500 VTAB 22: PRINT "Push Space for DataLink Menu";: GET Q$: PRINT
- 1510 PRINT D$"-STARTUP": END
- 1600 IF LO$ = "No" THEN PRINT "stop": RETURN
- 1610 PRINT "# logon"
- 1620 IF FI$ = "Me" THEN PRINT "pause 4": PRINT "xmit "QT$;IM$;QT$
- 1625 PRINT "set timer 5"
- 1630 PRINT "waitfor string "QT$;W1$;QT$
- 1640 PRINT "if failed goto failed"
- 1650 PRINT "xmit "QT$;M1$;QT$
- 1660 IF PW$ = "No" THEN 1700
- 1670 PRINT "waitfor string "QT$;W2$;QT$
- 1680 PRINT "if failed goto failed"
- 1690 PRINT "xmit "QT$;M2$;QT$
- 1700 PRINT "# manual"
- 1710 PRINT "stop"
- 1720 PRINT "# failed"
- 1730 PRINT "display "QT$"^M^JLogon Sequence Failed. Must try Manual Logon.^M^J^J"QT$
- 1740 PRINT "stop"
- 1750 RETURN
- 2000 FF$ = ""
- 2010 FOR I = 1 TO LEN(MN$)
- 2020 CH$ = MID$ (MN$,I,1)
- 2030 IF CH$ > = "a" AND CH$ < = "z" THEN 2100
- 2040 IF CH$ > = "A" AND CH$ < = "Z" THEN 2100
- 2050 IF CH$ > = "0" AND CH$ < = "9" THEN 2100
- 2060 CH$ = "."
- 2100 FF$ = FF$ +CH$
- 2110 NEXT
- 2120 MN$ = FF$
- 2130 RETURN
- 2200 VTAB 24: PRINT "Push Esc to exit Macro Maker";: VTAB 20: PRINT : RETURN
- 2300 VTAB 24: PRINT SP$;: VTAB 20: PRINT : RETURN
- 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
- 2410 NEXT C: IF UN = 6 THEN MC$(Q) = CHR$(96 +Q) +"unused"
- 2420 RETURN