1 REM _ mc 1.0 15mar92 _ 2 DATA "+++","AT","E0V1Q0X4","S0=0S2=43S3=13S7=255S9=6","","","H1","H0","DT","DP","H0","","A","O","Z","M0","M1","M2","M3","" 3 DATA 0,2,"No","Yes": DATA 1,17,"Default",50,75,110,135,150,300,600,1200,1800,2400,3600,4800,7200,9600,19200,38400: DATA 2,6,"N/A","None","XON/XOFF","RTS/CTS","RTS","CTS": DATA -1 4 DATA 3,0,2,"--- Communication Settings ---",,: DATA 2,20,4,"Variable Speed:",1,0: DATA 2,20,5,"High Speed:",2,1: DATA 2,20,6,"Flow Control:",3,2: DATA 2,20,7,"Has Carrier Detect:",4,0: DATA 2,20,8,"Error Correction:",5,0: DATA 2,20,9,"ATA Answers:",6,0 5 DATA 2,20,10,"Use DTR to Hangup:",7,0: DATA 3,0,12,"--- Timing (in 1/60 seconds) ---",,: DATA 1,20,14,"Hangup Duration:",10,: DATA 1,20,15,"Result Code Delay:",12,: DATA 1,20,16,"+++ Gaurd Time:",14,: DATA 1,20,17,"Attention Delay:",16,: DATA 6,0,18,"_",80,: DATA 4,5,20,"Quit",1, 6 DATA 4,25,20,"New",2,: DATA 4,45,20,"Save",3,: DATA 4,65,20,"More",4,: DATA -1 7 DATA 3,0,2,"--- Modem Command Strings ---",,: DATA 5,20,4,"Escape:",1,3: DATA 5,20,5,"Attention:",2,10: DATA 5,20,7,"Main Init:",3,50: DATA 5,20,8,"Aux Init:",4,50: DATA 5,20,9,"Exit Init:",15,50: DATA 5,20,11,"MNP On:",5,20: DATA 5,55,11,"MNP Off:",6,20: DATA 5,20,12,"Make Busy:",7,20 8 DATA 5,55,12,"Not Busy:",8,20: DATA 5,20,13,"Dial Tone:",9,20: DATA 5,55,13,"Dial Pulse:",10,20: DATA 5,20,14,"Hangup:",11,20: DATA 5,55,14,"Post Hangup:",12,20: DATA 5,20,15,"Answer:",13,20: DATA 5,55,15,"Originate:",14,20: DATA 5,20,17,"Speaker Off:",16,20 9 DATA 5,55,17,"Spkr On Until DCD:",17,20: DATA 5,20,18,"Speaker On:",18,20: DATA 5,55,18,"On In Answer Only:",19,20: DATA 6,0,19,"_",80,: DATA 4,5,21,"Quit",1,: DATA 4,25,21,"New",2,: DATA 4,45,21,"Save",3,: DATA 4,65,21,"More",4,: DATA -1: GOSUB 99: & < A$,B$: & < B$,B$ 10 DIM A%(50),B%(50),C%(50),C$(50),A(50),B(50),D$(20):E$ = "qnsm":F$ = "__13":G$ = " 52":C(1) = - 1:C(2) = 1:C(3) = - 1:C(4) = 1: GOSUB 95:D = 1: IF E > 1 THEN H$ = I$(1): GOSUB 31: GOTO 12 11 GOSUB 34: GOSUB 78 12 GOSUB 49:F = G: IF F = 4 THEN D = NOT D: GOSUB 78: GOTO 15 13 IF F = 3 THEN GOSUB 35: GOTO 15 14 IF F = 2 THEN GOSUB 30 15 IF NOT (F = 1) THEN 12 16 GOSUB 40: & IOCTL(1,0,21): & IOCTL(3): PRINT : GOTO 108 17 PRINT "_BLOAD"H$",A"768",T0":H = 768 + 22:I = 1:J = 0 18 ON NOT (I < 20) GOTO 21:D$(I) = "" 19 IF PEEK (H) THEN D$(I) = D$(I) + CHR$ ( PEEK (H)):H = H + 1: GOTO 19 20 J = J + LEN (D$(I)) + 1:H = H + 1:I = I + 1: GOTO 18 21 RETURN 22 H = 768 + 22:K = 0: FOR I = 1 TO 20:K = LEN (D$(I)) + 1: IF K > 1 THEN FOR L = 1 TO K - 1: POKE H, ASC ( MID$ (D$(I),L)):H = H + 1: NEXT 23 POKE H,0:H = H + 1: NEXT : POKE 768 + 21,K: PRINT "_BSAVE"H$",A"768",T0,L"H - 768: RETURN 24 GOSUB 25:J$ = H$: & READ ( - 64,J$),"Modemcap file name: ",H$ 25 & IOCTL(1,0,22): & IOCTL(4): RETURN 26 ON NOT (H$ > "") GOTO 28: & POS (H$,"/"),M: IF NOT M THEN H$ = B$ + "/Modemcaps/" + H$ 27 & / H$,J$: GOTO 29 28 J$ = "" 29 RETURN 30 GOSUB 40: GOSUB 24 31 N = 1: GOSUB 26: IF J$ > "" THEN GOSUB 17: GOTO 33 32 K$ = "New file.": GOSUB 34 33 GOTO 78 34 & RESTORE GOTO 2: FOR L = 1 TO 20: READ D$(L): NEXT : & POKE 768,1,1,8,1,255,0,255,255,0,0,90,0,60,0,90,0,30,0,0,0,0,0:N = 1: RETURN 35 L$ = H$: GOSUB 24: GOSUB 26: IF H$ = "" THEN H$ = L$:K$ = "Cancelled.": GOTO 39 36 IF L$ < > H$ THEN GOSUB 84 37 IF J$ = "" THEN PRINT "_CREATE"H$",T0" 38 GOSUB 22:N = 1:K$ = "Saved." 39 RETURN 40 ON NOT ( NOT N) GOTO 43: GOSUB 25:J$ = "y": & READ ( - 2,J$),"Save changes? (y/n) ",M$: & LCASE(M$): IF M$ = "y" THEN GOSUB 35: GOTO 42 41 K$ = "Cancelled." 42 & IOCTL(13) 43 RETURN 44 IF A%(O) = 3 OR A%(O) = 6 THEN GOSUB 46: GOTO 44 45 RETURN 46 O = O + C(M): IF O < 1 THEN O = Q 47 IF O > Q THEN O = 1 48 RETURN 49 IF K$ > "" THEN GOSUB 25: PRINT K$; 50 M = 2:G = 0 51 GOSUB 44: & IOCTL(1,B%(O) - 1,C%(O)): PRINT ">_";: GET M$: PRINT " _";: IF K$ > "" THEN GOSUB 25:K$ = "": & IOCTL(1,B%(O) - 1,C%(O)) 52 & LCASE(M$): & POS (G$,M$),M: IF M THEN GOSUB 46 53 IF NOT ( NOT M) THEN 51 54 GOSUB 56: IF NOT (G) THEN 51 55 RETURN 56 R = A%(O): ON NOT (M$ = " ") GOTO 60: IF R = 5 THEN GOSUB 77: GOTO 59 57 IF R = 4 THEN G = A(O): GOTO 59 58 IF R = 1 THEN GOSUB 72 59 GOTO 65 60 IF M$ = " " THEN G = 4: GOTO 65 61 & POS (F$,M$),M: ON NOT (M) GOTO 64: IF R = 2 THEN GOSUB 66: GOTO 63 62 IF R = 1 THEN GOSUB 73 63 GOTO 65 64 & POS (E$,M$),M: IF M THEN G = M 65 RETURN 66 H = PEEK (768 + A(O)): IF B(O) = 0 THEN H = H > 0:I = NOT H:K = I * 255: GOTO 70 67 I = H + C(M): IF I < 0 THEN I = S(B(O)) - 1 68 IF I = S(B(O)) THEN I = 0 69 K = I 70 POKE 768 + A(O),K:M$ = N$(B(O),I):K = LEN (N$(B(O),H)): IF LEN (M$) < K THEN & LEFT$ (M$,K),M$ 71 PRINT " "M$;:N = 0: RETURN 72 H = ( PEEK (768 + A(O)) + PEEK (768 + A(O) + 1) * 256):M$ = STR$ (H): & READ ( - 5,M$)," ",J$:I = VAL (J$): POKE 768 + A(O),I - INT (I / 256) * 256: POKE 768 + A(O) + 1, INT (I / 256):N = 0: RETURN 73 H = ( PEEK (768 + A(O)) + PEEK (768 + A(O) + 1) * 256):I = H + C(M): IF I < 0 THEN I = 65535 74 IF I > 65535 THEN I = 0 75 POKE 768 + A(O),I - INT (I / 256) * 256: POKE 768 + A(O) + 1, INT (I / 256):M$ = STR$ (I):K = LEN ( STR$ (H)): IF LEN (M$) < K THEN & LEFT$ (M$,K),M$ 76 PRINT " "M$;:N = 0: RETURN 77 M$ = D$(A(O)): & READ ( - B(O),M$)," ",J$: & SPC( J$),J$:D$(A(O)) = J$:N = 0: RETURN 78 IF D THEN & RESTORE GOTO 4: GOTO 80 79 & RESTORE GOTO 7 80 & IOCTL(2):L = 0 81 READ R: IF R > - 1 THEN L = L + 1:A%(L) = R: READ B%(L),C%(L),C$(L),A(L),B(L): GOSUB 86 82 IF NOT (R = - 1) THEN 81 83 Q = L:O = 1 84 IF H$ > "" THEN & POS RIGHT$ (H$,"/"),T:M$ = MID$ (H$,T + 1): & IOCTL(1,0,23): & IOCTL(12): & IOCTL(4): & IOCTL(1,38 - LEN (M$) / 2,23): PRINT M$;: & IOCTL(13) 85 RETURN 86 & IOCTL(1,B%(L),C%(L)): ON A%(L) GOTO 87,88,93,90,91,94 87 PRINT ( PEEK (768 + A(L)) + PEEK (768 + A(L) + 1) * 256);: GOTO 92 88 I = PEEK (768 + A(L)): IF B(L) = 0 THEN I = I > 0 89 PRINT N$(B(L),I);: GOTO 92 90 PRINT "[ "C$(L)" ]";: RETURN 91 PRINT D$(A(L)); 92 & IOCTL(1,B%(L) - LEN (C$(L)) - 1,C%(L)) 93 PRINT C$(L);: RETURN 94 & HLIN A(L), ASC (C$(L)): RETURN 95 DIM N$(3,17),S(3): & RESTORE GOTO 3 96 READ U: IF U > - 1 THEN V(U) = 0: READ S(U): FOR L = 0 TO S(U) - 1: READ N$(U,L): NEXT 97 IF NOT (U = - 1) THEN 96 98 RETURN 99 ONERR GOTO 105 100 A$ = "": FOR L = 641 TO 640 + PEEK (640):A$ = A$ + CHR$ ( PEEK (L)): NEXT : IF ASC (A$) < > 47 THEN PRINT "_PREFIX": & GET M$:A$ = M$ + A$ 101 & LCASE(A$): POKE 512,0: ONERR GOTO 103 102 & LOAD PEEK 1,30561,J$: IF J$ > "" THEN 104 103 PRINT "OMM/AmperWorks/ModemWorks not available.": END 104 & ON HANGUP GOTO 106: & ON INT GOTO 106: DIM P$(10),O$(7): & < A$,M$:I$(0) = MID$ (A$, LEN (M$) + 2):E = 1:D% = 0: RETURN 105 & ONERR Z,AA: & PRINT I$(0)": error "Z" at "AA: GOTO 107 106 & PRINT 107 D% = - 1 108 ONERR GOTO 110 109 PRINT "_CLOSE": END 110 & ONERR Z,AA: & SCRN( 0): & PRINT I$(0)": FATAL #"Z"@"AA: & HANGUP: & TRACE 0: END