home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Columbia Kermit
/
kermit.zip
/
archives
/
tandy100.zip
/
ta100.bas
next >
Wrap
BASIC Source File
|
1990-10-07
|
9KB
|
216 lines
1 GOTO202:' Kermit Protocol Program 27-NOV-84
2 COMSTOP:MDMSTOP:RETURN
3 B%=0:CLOSE3:PRINTK$+" break"
4 COMON:MDMON:RETURN
5 MDMOFF:COMOFF:RETURN
6 ONCOMGOSUB110
7 ONMDMGOSUB110
8 RETURN
9 W$="67I1E":K$="kermit":T%=0:S%=0:E%=0:W%=0:A$="^S":G$=CHR$(13):U$=CHR$(34):M%=CINT(192):N%=CINT(64):O%=CINT(63):ONERRORGOTO11
10 GOTO79
11 E%=-1:IFERR=52ORERR=55ORERR=53THENRESUMENEXT
12 PRINT"Error #:";ERR;" in line:";ERL
13 LINEINPUT"Resume? (Y/N): ";C$
14 IFC$="Y"ORC$="y"THENRESUMEELSEGOSUB156:STOP
15 GOSUB2:PRINT:LINEINPUT"Download to: ";Z$:IFASC(Z$)=3THEN4
17 OPENZ$FOROUTPUTAS3:IFE%THENE%=0:CLOSE3:RETURN
18 PRINT"Download Kermit(K) or Simple(S): ";:T$="":INPUT T$:CALLP,0,VARPTR(T$):IFT$="K"GOTO21ELSEIFT$<>"S"GOTO18
19 KEY1,CHR$(153)+CHR$(153)+CHR$(153):KEY2,"INTO":KEY3,"FILE":KEY4,": ":KEY5,LEFT$(Z$,5):KEY6,MID$(Z$,5,4):KEY7,"":KEY8,"STOP":ONKEYGOSUB,,,,,,,20:W%=-1:GOTO4
20 CLOSE3:W%=0:GOSUB94:RETURN
21 PRINT"Trigger for host Kermit":PRINT"(or null for "+I$+"): ";:LINEINPUTT$:IFT$=""THENT$=h2$+".do"
23 IFB%GOTO3
24 Z%=1:P9=0:J$=T$+G$:Y0=30:GOTO35
25 GOSUB2:PRINT:LINEINPUT"Upload file: ";Z$
26 IFASC(Z$)=3THEN GOTO4ELSEOPENZ$FORINPUTAS3:IFE%THENE%=0:PRINT"Can't open.":GOTO4
27 GOSUB28:GOTO29
28 PRINT"Width for wordbreak":PRINT"or null for unbroken lines";:L%=0:INPUTL%:RETURN
29 PRINT"Upload Simple(S) or Kermit(K): ";:T$="":INPUTT$:CALLP,0,VARPTR(T$):IFT$="K"GOTO31ELSEIFASC(T$)=3THEN4ELSEIFT$<>"S"GOTO29
30 KEY1,CHR$(152)+CHR$(152)+CHR$(152):KEY2,"FROM":KEY3,"FILE":KEY4," :":KEY5,LEFT$(Z$,4):KEY6,MID$(Z$,5):KEY7,"":KEY8,"STOP":ONKEYGOSUB,,,,,,,109:U%=3:V%=2:GOSUB4:E1$=G$:GOSUB69:CLOSE3:GOSUB94:RETURN
31 PRINT"Host Kermit trigger":Print"(or null if "+I$+"): ";:LINEINPUTH$:IFH$=""THENH$=H1$
33 IFB%GOTO3
34 PRINT#2,H$+G$;:GOTO135
35 IFB%GOTO3
36 IFZ%=6THEN:PRINT#2,J$:CLOSE3:GOTO155
37 GOSUB120:IFB%GOTO3
38 IFY%THENPRINT"<time>";:GOTO36
39 IFP8<>P9THENPRINT"<seq>";:GOTO36
40 T$=LEFT$(L$,L):GOSUB45:IFC$=RIGHT$(L$,1)THENR$="Y"ELSER$="N":E$="":GOTO46
41 Z%=INSTR("SFDZB",MID$(L$,3,1))+1
42 E$="":ONZ%GOSUB44,48,50,51,57,44
43 GOTO46
44 RETURN
45 C9=0:FORI=1TOLEN(T$):C9=C9+ASC(MID$(T$,I,1)):NEXTI:C8=CINT(C9+((CINT(C9)ANDM%)\N%))ANDO%:C$=CHR$(C8+32):RETURN
46 T$=CHR$(35+LEN(E$))+CHR$(32+P8)+R$+E$:GOSUB45:J$=CHR$(1)+T$+C$+G$:PRINTR$;:IFR$="Y"THENP9=(P9+1)MOD64
47 GOTO35
48 E$=MID$("~~~~~~Xh\RA",INSTR("mM123456789",LEFT$(W$,1)),1)
49 Y0=ASC(MID$(L$,5,1))-32:Q$=MID$(L$,9,1):E$=E$+"% @-#":RETURN
50 RETURN
51 I=3
52 I=I+1
53 IFI>LTHENRETURN
54 C$=MID$(L$,I,1):IFC$<>Q$GOTO56
55 I=I+1:C$=MID$(L$,I,1):IFC$<>Q$THENC$=CHR$(ASC(C$)-64)
56 PRINT#3,C$;:GOTO52
57 CLOSE3:RETURN
58 ONMDMGOSUB62
59 ONCOMGOSUB62
60 GOSUB4:FORJ3=1TO20:NEXTJ3
61 GOSUB5:GOSUB6:RETURN
62 GOSUB2:E$=INPUT$(1,1):GOTO4
63 GOSUB2:PRINT:PRINT"Memory: ";FRE(0):FILES:GOTO4
64 GOSUB2:LINEINPUT"copy from: ";M$:IFM$=""GOTO4
65 OPENM$FORINPUTAS4:IFE%THENE%=0:PRINT"Cannot open file.":GOTO64
66 GOSUB28:LINEINPUT"Copy to (LCD:): ";N$:IFN$=""THENN$="LCD:"
67 OPENN$FOROUTPUTAS5:IFE%THENE%=0:PRINT"Cannot open file.":GOTO66
68 U%=4:V%=5:E1$=G$+CHR$(10):GOSUB69:CLOSEU%:CLOSEV%:PRINT:PRINT"Copy Over":B%=0:GOTO4
69 IFL%<>0THENGOSUB207:GOTO71
70 IFEOF(U%)ORB%THENRETURNELSEC$=INPUT$(1,U%):PRINT#V%,C$;:GOTO70
71 IFF%=1ORB%THENRETURNELSEGOSUB210:PRINT#V%,O$+E1$;:GOTO71
72 GOSUB2:LINEINPUT"Kill:";M$:IFM$=""GOTO4
73 IFINSTR(M$,".")=0THENM$=M$+".DO"ELSEGOSUB156
74 KILLM$
75 IFE%THENE%=0:PRINT"Can't kill:";M$
76 GOSUB99:GOTO63
77 GOSUB2:D8=-1:GOTO4
78 KEY6,"DEL"+G$:D$=CHR$(127):RETURN
79 KEY5,"Unix"+G$:GOSUB78:KEY7,"Dial"+G$:KEY4,"Term"+G$:KEY8,"Menu"+G$:KEY3,"Stat ":KEY1,"Run"+G$:KEY2,"Basic"+G$
80 CLS:PRINT"Stat: ",W$:SCREEN0,1
81 LINEINPUT"Press Function Key: ";C$:IFC$=""GOTO81
82 CALL P,0,VARPTR(C$)
83 IFC$="TERM"THENI$="TOPS-20":H2$=K$+" send ":H2$=K$+" receive ":GOTO95
84 IFC$="UNIX"THENI$="UNIX":H2$=K$+" s ":H1$=K$+" r ":GOTO95
85 IFC$="MENU"THENGOSUB156:DATE$=LEFT$(DATE$,6)+"84":MENU
86 IFC$="BS"THENGOSUB78:GOTO80
87 IFC$="DEL"THENKEY6,"BS"+G$:D$=CHR$(8):GOTO80
88 IFC$="DIAL"THENGOSUB158:GOTO79
89 IFLEFT$(C$,4)<>"STAT"GOTO92
90 IFLEN(C$)>5ANDLEN(C$)<11THENMID$(W$,1,LEN(C$)-5)=MID$(C$,6)
91 GOTO80
92 IFLEFT$(C$,5)="BASIC"THENGOSUB156:U$=CHR$(34):KEY6,"CSAVE "+U$+K$+U$+G$:KEY7,"SAVE"+U$+K$+".DO"+G$:STOP
93 GOTO81
94 KEY1,"Files":KEY2,"K."+CHR$(153):KEY3,"K."+CHR$(152):KEY4,"Kill":KEY5,"Copy":KEY6,A$:KEY7,"":KEY8,"Brk":ONKEYGOSUB63,15,25,72,64,115,,109:RETURN
95 GOSUB94
96 IFT%ANDNOTS%GOTO101
97 IFT%ANDS%THENCLOSE1:CLOSE2
98 GOSUB99:GOTO101
99 IFLEFT$(W$,1)="M"THENY$="MDM:"+RIGHT$(W$,4):ELSEY$="COM:"+W$
100 OPENY$FORINPUTAS1:OPENY$FOROUTPUTAS2:T%=1:S%=0:RETURN
101 REM
102 GOSUB6
103 GOSUB4:KEYON
104 B%=0:CALL16969,0,0
105 IFB%THEN114ELSEC$=INKEY$:IFC$=""GOTO105
107 IFASC(C$)=8THENC$=D$
108 PRINT#2,C$;:GOTO105
109 B%=-1:RETURN
110 GOSUB2:B$=INPUT$(1,1):B4=ASC(B$)
111 IFW%<>0THENPRINT#3,B$;
112 IFB4=8THENPRINTB$;" ";
113 PRINTB$;:GOTO4
114 GOSUB5:KEYOFF:GOSUB156:GOTO79
115 GOSUB2:IFA$="^Q"GOTO117
116 GOSUB5:PRINT#2,CHR$(19);:A$="^Q":GOTO118
117 PRINT#2,CHR$(17);:A$="^S"
118 KEY6,A$:GOTO4
120 ONMDMGOSUB129
121 ONCOMGOSUB129
122 GOSUB4
123 GOSUB157:Y4=Y3+Y0
124 C%=1:L$=""
125 PRINT#2,J$;
126 GOSUB157:Y%=Y3>Y4:IFY%=0ANDC%<4ANDB%=0GOTO126
127 IFC%=4THENGOSUB58:P8=ASC(MID$(L$,2,1))-32
128 RETURN
129 C$=INPUT$(1,1):ONC%GOTO130,132,133
130 IFASC(C$)=1THENC%=2
131 RETURN
132 L=ASC(C$)-32:C%=3:L$=C$:RETURN
133 L$=L$+C$:IFLEN(L$)=L+1THENC%=4
134 RETURN
135 Y0=30:S9=0:Q8=0:M9=70:Q$="#":T$="p( @-#":V$="S":GOSUB147:T$=Z$+".do":V$="F":GOSUB147:U%=3:GOSUB207
136 T$=""
137 IFLEN(T$)>M9GOTO144
138 IFL%=0GOTO140ELSEIFF%>1THENQ8=1:GOTO144
139 GOSUB208:GOTO141
140 IFEOF(3)THENQ8=1:GOTO144ELSEC$=INPUT$(1,3)
141 IFASC(C$)<32THENC$=Q$+CHR$(ASC(C$)+64)
142 IFC$=Q$THENC$=Q$+C$
143 T$=T$+C$:GOTO137
144 V$="D":GOSUB147
145 IFQ8=0GOTO136
146 V$="Z":T$="":GOSUB147:V$="B":T$="":GOSUB147:CLOSE3:GOTO155
147 T$=CHR$(LEN(T$)+35)+CHR$(S9+32)+V$+T$:GOSUB45:J$=CHR$(1)+T$+C$+G$
148 IFV$="B"THENPRINT#2,J$;:RETURN
149 GOSUB120:IFY%THENPRINT"<time>";:GOTO148
150 IFB%GOTO3
151 T$=LEFT$(L$,L):GOSUB45:IFRIGHT$(L$,1)<>C$THENPRINT"<cksum>";:GOTO148
152 S8=ASC(MID$(L$,2,1))-32:IFS8=(S9+1)MOD64THEN:PRINT"Y";:GOTO154ELSEIFS8<>S9THENPRINT"<seq>";:GOTO148
153 PRINTMID$(L$,3,1);:IFMID$(L$,3,1)<>"Y"GOTO148
154 S6=0:S9=(S9+1)MOD64:RETURN
155 SOUND512,40:PRINT:PRINTK$+" Transmission completed.":SOUND1024,40:GOSUB58:B$="":C$="":GOTO4
156 CALL23164,0,23366:CALL27795:RETURN
157 X$=TIME$:Y3=VAL(LEFT$(X$,2))*3600+VAL(MID$(X$,4,2))*60+VAL(RIGHT$(X$,2)):RETURN
158 DA$="503":OPEN"ADRS.DO" FORINPUTAS3:IFEOF(3)GOTO164
159 LINEINPUT#3,X$:I%=INSTR(1,X$,"="):IFI%=0GOTO159
160 Y$=LEFT$(X$,2)
161 IFY$="DA"THENDA$=RIGHT$(X$,LEN(X$)-3):GOTO159
162 IFY$="PR"THENP$=RIGHT$(X$,LEN(X$)-3)
163 AC$=DA$:CLOSE3
164 GOSUB201
165 KEY1,"Find ":KEY2,"Call ":KEY3,"Pref ":KEY4,"Area ":KEY5,"Busy"+CHR$(13):KEY6,"":KEY7,"Exit"+CHR$(13):KEY8,"Menu"+CHR$(13):SCREEN0,1:LINEINPUT"Dial:";X$:IFX$=""GOTO165
166 GOSUB200:PH$="":IFLEN(X$)<6GOTO168
167 PH$=RIGHT$(X$,LEN(X$)-5)
168 X$=LEFT$(X$,4):IFX$="CALL"THENAA$=AC$:GOTO186
169 IFX$<>"BUSY"GOTO172
170 IFPH$=""THENRP%=1000ELSERP%=VAL(PH$)*180
171 GOTO164
172 IFX$="PREF"THENP$=PH$:GOTO164
173 IFX$="AREA"THENAC$=PH$:GOTO164
174 IFX$="MENU"THENMENU
175 IFX$="EXIT"THENCLOSE3:RETURN
176 IFX$<>"FIND"THENPRINT"?":GOTO164
177 CLOSE3:AA$=DA$
178 OPEN"adrs.do"FORINPUTAS3
179 IFEOF(3)GOTO164
180 LINEINPUT#3,X$:Y$=X$:CALLP,O,VARPTR(X$):I%=INSTR(X$,PH$):IFI%=0GOTO179
181 PRINTY$:KEY2,"Call"+CHR$(13):KEY3,"More"+CHR$(13):KEY4,"Quit"+CHR$(13):KEY1,"":KEY5,"":KEY7,"":KEY8,"":SCREEN0,1:A$=X$:LINE INPUT X$:A3=(CSRLIN-1)*40:PRINT@A3,SPACE$(39);:PRINT@A3,;:CALL P,0,VARPTR(X$):Y$=A$:A$=X$:X$=Y$:IFA$="CALL"GOTO184
182 IFA$="QUIT"GOTO165
183 IFA$="MORE"GOTO179ELSE181
184 I%=INSTR(1,X$,":"):IFI%=0GOTO164
185 PH$=RIGHT$(X$,LEN(X$)-I%)
186 IFPH$=""THENPH$=LN$:GOTO194
187 I%=INSTR(1,PH$,":"):IFI%=0THENPH$=PH$+":":GOTO189
188 PH$=LEFT$(PH$,I%)
189 IFMID$(PH$,2,1)="0"ORMID$(PH$,2,1)="1"GOTO192
190 IFAC$=AA$GOTO193
191 PH$=AA$+PH$:GOTO193
192 IFLEFT$(PH$,3)=AC$THENPH$=RIGHT$(PH$,LEN(PH$)-3)
193 PH$=P$+PH$:LN$=PH$
194 M=VARPTR(PH$)
195 AD=PEEK(M+1)+PEEK(M+2)*256:PRINT"Calling... ";
196 CALL 21293,0,AD:IF RP%=0GOTO199
197 FORI%=1TORP%:IFINKEY$=" "GOTO199
198 NEXTI%:GOTO196
199 PRINT"":RP%=0:GOTO165
200 CALLP,0,VARPTR(X$):RETURN
201 SCREEN0,0:CLS:PRINT "Home AC:";DA$;" AC in:";AC$;" Prefix:";P$:RETURN
202 DATA78,35,126,35,102,111,126,254,97,218,-20,0,254,123,210,-20,0,214,32,119,35,13,200,195,-6,0
203 C%=26:P=MAXRAM-C%:CLEAR1000,P-1:MAXFILES=5:C%=26:P=MAXRAM-C%:Q=P:FORI%=1TOC%:READX%:IFX%>=0THENPOKEQ,X%:Q=Q+1:GOTO205
204 R=P-X%:POKEQ,(R/256-INT(R/256))*256:POKEQ+1,INT(R/256):Q=Q+2:READX%:I%=I%+1
205 NEXTI%:GOTO9
206 GOTO9
207 S$="":O$="":F%=0:RETURN
208 IFLEN(O$)=0THENIFF%>1THENC$="":RETURNELSEGOSUB210:O$=O$+G$+CHR$(10)
209 C$=LEFT$(O$,1):O$=MID$(O$,2):RETURN
210 IFF%>0THENF%=2:RETURNELSEO$=S$
211 IFLEN(O$)>L%GOTO214
212 GOSUB218:IFQ%THENS$="":RETURN
213 O$=O$+C$:GOTO211
214 FORI=L%TO1STEP-1:IFMID$(O$,I,1)=" "THENJ=I-1:GOTO215ELSENEXTI:I=L%:J=I
215 S$=MID$(O$,I+1):O$=LEFT$(O$,J)
216 IFLEN(O$)>0THENIFLEFT$(O$,1)=" "THENO$=MID$(O$,2):GOTO216
217 RETURN
218 IFEOF(U%)THENF%=1:Q%=-1ELSEC$=INPUT$(1,U%)
219 C1%=ASC(C$):IFF%<1AND(((C1%<32)AND(C1%<>13))OR(C1%>126))GOTO218
220 Q%=C1%=13ORF%>0:RETURN