home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / archives / tandy100.zip / ta100.bas next >
BASIC Source File  |  1990-10-07  |  9KB  |  216 lines

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