home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / ENTERPRS / CPM / UTILS / A / 128CPM80.BAS < prev    next >
BASIC Source File  |  2000-06-30  |  16KB  |  376 lines

  1. 0 goto14
  2. 1 print"         ";:geta$:ifa$<>""then7
  3. 2 get#5,a$:ifa$=""then1
  4. 3 a1=asc(a$+chr$(0))
  5. 4 print chr$(f%(a1));
  6. 5 if a$=chr$(34) then poke 244,0
  7. 6 a$="":goto1
  8. 7 ifa$=""then:scnclr 5:goto1
  9. 8 if a$="(" then 251
  10. 9 if a$="'" then 329
  11. 10 if a$=chr$(34) then poke 244,0
  12. 11 a1=asc(a$+chr$(0))
  13. 12 ifa1<>0thenprint#5,chr$(t%(a1));
  14. 13 a$="":goto2
  15. 14 fast:gosub 366
  16. 15 poke808,100:poke5125,0
  17. 16 bank15:poke58,192:clr:restore:print"  One Moment please...."
  18. 17 trap244
  19. 18 dimu%(64),n$(64),t$(64),vt$(50),a%(255),c%(255):printchr$(14);
  20. 19 dimr1%(20),r2%(18),r3%(17),r4%(16)
  21. 20 d1=12*4096:rem address of cp/m directory info bank 1
  22. 21 d2=d1+2048:rem address of cp/m disk record map
  23. 22 d3=d2+4080:rem address of cp/m disk block alloc map
  24. 23 fori=0to12:a%(0)=0:nexti:a%(13)=13:fori=14to31:a%(i)=0:nexti
  25. 24 fori=32to64:a%(i)=i:nexti:fori=65to90:a%(i)=i+128:nexti
  26. 25 fori=91to95:a%(i)=i:nexti:a%(96)=44:fori=97to122:a%(i)=i-32:nexti
  27. 26 a%(123)=179:a%(124)=125:a%(125)=171:a%(126)=96:a%(127)=0
  28. 27 fori=128to255:a%(i)=a%(i-128):nexti
  29. 28 fori=0to64:c%(i)=i:nexti:fori=65to90:c%(i)=i+32:nexti
  30. 29 fori=91to127:c%(i)=i:nexti:fori=128to255:c%(i)=i-128:nexti
  31. 30 fori=0to50:readvt$(i):ifvt$(i)="***"theni=50
  32. 31 nexti
  33. 32 fori=0to20:readr1%(i):nexti:fori=0to18:readr2%(i):nexti
  34. 33 fori=0to17:readr3%(i):nexti:fori=0to16:readr4%(i):nexti
  35. 34 print"Insert CP/M Disk in Drive 8"
  36. 35 print"Press any key to continue when disk is ready"
  37. 36 getkeya$
  38. 37 open14,8,15:print#14,"i0":close14
  39. 38 print"Reading CP/M Directory":print
  40. 39 open1,8,2,"#":open15,8,15
  41. 40 d=d1:fors=2to9:print#15,"b-p";2;0
  42. 41 ss=r1%(s):print#15,"u1";2;0;1;ss
  43. 42 fori=1to8:print".";
  44. 43 forj=1to32:get#1,x$:ifx$=""thenx$=chr$(0)
  45. 44 bank1:poked,asc(x$):d=d+1
  46. 45 nextj,i,s:close1:close15
  47. 46 d=d2:rem build record map
  48. 47 t=1:fors=2to20:ss=r1%(s)
  49. 48 bank1:poked,t:poked+1,ss:poked+2,0:poked+3,t:poked+4,ss:poked+5,128
  50. 49 d=d+6:nexts
  51. 50 fort=2to17:fors=0to20:ss=r1%(s)
  52. 51 bank1:poked,t:poked+1,ss:poked+2,0:poked+3,t:poked+4,ss:poked+5,128
  53. 52 d=d+6:nexts,t
  54. 53 t=18:fors=1to18:ss=r2%(s)
  55. 54 bank1:poked,t:poked+1,ss:poked+2,0:poked+3,t:poked+4,ss:poked+5,128
  56. 55 d=d+6:nexts
  57. 56 fort=19to24:fors=0to18:ss=r2%(s)
  58. 57 bank1:poked,t:poked+1,ss:poked+2,0:poked+3,t:poked+4,ss:poked+5,128
  59. 58 d=d+6:nexts,t
  60. 59 fort=25to30:fors=0to17:ss=r3%(s)
  61. 60 bank1:poked,t:poked+1,ss:poked+2,0:poked+3,t:poked+4,ss:poked+5,128
  62. 61 d=d+6:nexts,t
  63. 62 fort=31to35:fors=0to16:ss=r4%(s)
  64. 63 bank1:poked,t:poked+1,ss:poked+2,0:poked+3,t:poked+4,ss:poked+5,128
  65. 64 d=d+6:nexts,t
  66. 65 fori=d3+2tod3+169:bank1:pokei,0:nexti
  67. 66 bank1:poked3,255:poked3+1,255:rem directory blocks
  68. 67 d=d1:fori=1to64:bank1:u%(i)=peek(d):ifu%(i)=229then73
  69. 68 n$(i)="":forj=1to8:bank1:n$(i)=n$(i)+chr$(peek(d+j)):nextj
  70. 69 t$(i)="":forj=9to11:bank1:t$(i)=t$(i)+chr$(peek(d+j)):nextj
  71. 70 forj=16to31:bank1:ifpeek(d+j)=0then72
  72. 71 bank1:x=peek(d+j):poked3+x,i
  73. 72 nextj
  74. 73 d=d+32:nexti
  75. 74 print:print"Finished! DO NOT remove disk from drive"
  76. 75 print:print"unless logging a new one into the system."
  77. 76 print:print"press any key for menu":getkeya$:goto227
  78. 77 print"Smallterm -- CP/M Utility"
  79. 78 print"Functions are:"
  80. 79 print" 1 - List CP/M Directory"
  81. 80 print" 2 - List CP/M File"
  82. 81 print" 3 - Initialize for another CP/M Disk"
  83. 82 print" 4 - Return to MAIN menu"
  84. 83 print"Press key for desired function"
  85. 84 geta$:ifa$=""then84
  86. 85 ifval(a$)=4thenpoke5125,0
  87. 86 ifval(a$)=3thenpoke5125,1
  88. 87 onval(a$)goto89,107,16,251
  89. 88 goto77
  90. 89 print"USR  NAME       TYP   EXT   RECS   SIZE"
  91. 90 print"---  --------   ---   ---   ----   ----"
  92. 91 b=2:d=d1:fori=1to64
  93. 92 bank1:ifpeek(d)<>0then102
  94. 93 u$=right$("  "+str$(u%(i)),2)
  95. 94 n$=n$(i)
  96. 95 t$=t$(i)
  97. 96 bank1:e=peek(d+12)+1:e$=right$("   "+str$(e),2)
  98. 97 bank1:s=peek(d+15):s$=right$("   "+str$(s),3)
  99. 98 k=0:forj=16to31:bank1:ifpeek(d+j)<>0thenk=k+1
  100. 99 k$=right$("   "+str$(k),3)
  101. 100 nextj:b=b+k
  102. 101 print u$;"   ";n$;"   ";t$;"   ";e$;"    ";s$;"    ";k$;"k"
  103. 102 d=d+32:next i
  104. 103 print"---------------------------------------"
  105. 104 print"";str$(170-b);" 1K Blocks Available "
  106. 105 print"Press any key for menu"
  107. 106 getkeya$:goto77
  108. 107 open4,3:rem default to screen
  109. 108 print"CP/M File Print":print"User, File Name, TYP"
  110. 109 input u$,a$,b$
  111. 110 u%=val(u$):ifu%<0oru>15thenprint"User # INVALID":goto150
  112. 111 x=51:fori=0to50:ifb$=vt$(i)thenx=i:i=50:goto113
  113. 112 ifvt$(i)="***"theni=50
  114. 113 nexti:ifx=51thenprint"File TYPE INVALID":goto150
  115. 114 a$=left$(a$+"        ",8)
  116. 115 f=0:e=0:fori=1to64:ifu%(i)=229then117
  117. 116 ifu%=u%(i)anda$=n$(i)andb$=t$(i)thenf=i:i=64
  118. 117 nexti
  119. 118 iff=0thenprint"File NOT FOUND":goto150
  120. 119 pr=0:input"Screen (s) or Printer (p)  s";a$
  121. 120 ifa$="p"thenclose4:open4,4,7:pr=1:goto123
  122. 121 ifa$="s"then123
  123. 122 goto119
  124. 123 print#4,"";:bc=0
  125. 124 print"Press No Scroll key to Pause and Restart"
  126. 125 print"Press \ key to stop":print
  127. 126 open1,8,2,"#":open15,8,15
  128. 127 d=d1+(f-1)*32
  129. 128 ef=0:fork=d+16tod+31:bank1:b=peek(k):ifb=0thenk=d+31:goto145
  130. 129 b=d2+(b)*24
  131. 130 fori=btob+18step6:bank1:t=peek(i):s=peek(i+1):p=peek(i+2)
  132. 131 print#15,"b-p";2;0
  133. 132 print#15,"u1";2;0;t;s
  134. 133 forj=1to256
  135. 134 geta$:ifa$="\"thenk=d+31:i=b+18:j=256:ef=1:goto143
  136. 135 get#1,x$:ifx$=""thenx$=chr$(0)
  137. 136 ifasc(x$)=26thenj=256:i=b+18:k=d+31:goto143
  138. 137 ifasc(x$)<>9then140
  139. 138 x=int(bc/8)*8:x=bc-x:x=8-x:forxx=1tox:print#4," ";:nextxx
  140. 139 bc=bc+x:goto143
  141. 140 ifasc(x$)=12thenprint#4,"";:goto143
  142. 141 print#4,chr$(a%(asc(x$)));:ifa%(asc(x$))<>0thenbc=bc+1
  143. 142 ifasc(x$)=13thenbc=0
  144. 143 nextj
  145. 144 nexti
  146. 145 nextk
  147. 146 close1:close15:ifefthen150
  148. 147 ff=f:e=e+1:fori=fto64:ifu%(i)=229then149
  149. 148 bank1:ifu%=u%(i)anda$=n$(i)andb$=t$(i)andpeek(d1+((i-1)*32)+12)=ethenf=i:i=64
  150. 149 nexti:iff>ffthen126
  151. 150 print#4:close4
  152. 151 print:print"Press any key for menu"
  153. 152 getkeya$:goto77
  154. 153 print"Input file name and file type. File name should be no more than 8     characters. Then enter the type of file ie. com, lbr, asm, txt, doc  etc. etc."
  155. 154 u$="0":e=0:print:input"CP/M  file name, type -=> ";cp$,ty$
  156. 155 nr=1:pf=0:lf=0:ifcp$=""thenprint#5,"":goto325
  157. 156 if len(cp$)>8thenprint"file name to long. 8 characters max.":goto154
  158. 157 x=51:fori=0to50:if ty$=vt$(i)thenx=i:i=50:goto159
  159. 158 ifvt$(i)="***"theni=50
  160. 159 next i:ifx=51thenprint"File Type Invalid":goto154
  161. 160 n=0:fori=1to64:ifu%(i)=229thenn=i:i=64
  162. 161 nexti:ifn=0thenprint"ABORTING: CP/M Directory Full":sleep5:e2=1:return
  163. 162 return
  164. 163 open1,8,2,"#":open14,8,15
  165. 164 bank1:d=d1+(n-1)*32:poked,val(u$):fori=d+1tod+8:pokei,32:nexti
  166. 165 fori=1tolen(cp$):bank1:poked+i,asc(mid$(cp$,i,1)):nexti
  167. 166 fori=9to11:bank1:poked+i,asc(mid$(ty$,i-8,1)):nexti:poked+12,e
  168. 167 bank1:poked+13,0:poked+14,0
  169. 168 u%(n)=val(u$):n$(n)=left$(cp$+"        ",8):t$(n)=ty$
  170. 169 bank1:nr=d+15:ba=d+16:pokenr,0
  171. 170 fori=batoba+15:bank1:pokei,0:nexti
  172. 171 nb=170:fori=0to169:bank1:ifpeek(d3+i)=0thennb=i:i=169
  173. 172 nexti:bank1:ifnb=170thenpoked,229:print"ABORTING: CP/M Disk Full":gosub360:goto207
  174. 173 bank1:poked3+nb,n:pokeba,nb:goto211
  175. 174 forr=1to8
  176. 175 y$=""
  177. 176 ifx=1theny$=y$+chr$(10):x=0:goto181
  178. 177 get#3,x$:ifx$=""thenx$=chr$(0)
  179. 178 a=asc(x$):y$=y$+chr$(c%(a))
  180. 179 cs=st
  181. 180 ifx$=chr$(13)thenx=1
  182. 181 y=len(y$):ify=128then185
  183. 182 ifcs=64andx=0then184
  184. 183 goto176
  185. 184 fori=y+1to128:y$=y$+chr$(26):nexti
  186. 185 ra=d2+((nb)*24)+((r-1)*3):bank1:t=peek(ra):s=peek(ra+1):p=peek(ra+2)
  187. 186 print#14,"u1";2;0;t;s:print#14,"b-p";2;p
  188. 187 print#1,y$;:ifcs=64thenprint#14,"u2";2;0;t;s:print#14,"b-p";2;0
  189. 188 print#14,"u2";2;0;t;s:bank1:pokenr,(peek(nr)+1)
  190. 189 ifcs=64thenr=8
  191. 190 nextr:ifcs=64then196
  192. 191 ba=ba+1
  193. 192 bank1:ifpeek(nr)<128then171
  194. 193 n=0:fori=1to64:ifu%(i)=229thenn=i:i=64
  195. 194 nexti:ifn=0thenprint"ABORTING: CP/M Directory Full":gosub360:cs=1:sleep6:goto207
  196. 195 e=e+1:goto164
  197. 196 close3:close1:close14
  198. 197 cs=1:print:print"Writing CP/M Directory":print
  199. 198 open14,8,15:print#14,"i0":open 1,8,2,"#"
  200. 199 d=d1:fors=2to9:print#14,"b-p";2;0:ss=r1%(s)
  201. 200 fori=1to8:print".";
  202. 201 x$="":forj=1to32:bank1:x=peek(d):x$=x$+chr$(x):d=d+1:nextj
  203. 202 print#1,x$;:ifs=7andi=8andj=32thenprint#14,"u2";2;0;1;ss:print#14,"b-p";2,0
  204. 203 nexti
  205. 204 print#14,"u2";2;0;1;ss
  206. 205 nexts
  207. 206 close14:close1:print#5,chr$(17);:cs=1:goto325
  208. 207 close3:close1:close14:print#5,"";
  209. 208 print:print"Press any key for Terminal mode."
  210. 209 getkeya$
  211. 210 goto325
  212. 211 forr=1to8
  213. 212 e1=.:gosub336:ife1=1thenprint#5,"":gosub360:r=8:nextr:cs=1:goto325
  214. 213 ifcs<>64then215
  215. 214 fori=ct+1to128:bf$=bf$+chr$(26):next i
  216. 215 ra=d2+((nb)*24)+((r-1)*3):bank1:t=peek(ra):s=peek(ra+1):p=peek(ra+2)
  217. 216 print#14,"u1";2;0;t;s:print#14,"b-p";2;p
  218. 217 print#1,bf$;:ifcs=64thenprint#14,"u2";2;0;t;s:print#14,"b-p";2;0
  219. 218 print#14,"u2";2;0;t;s:bank1:pokenr,(peek(nr)+1)
  220. 219 ifcs=64thenr=8
  221. 220 nextr:ifcs=64then358:else191
  222. 221 data 2zb,asm,bak,bas,bin,c,com,cqm,dat,doc,dqc,hex,hlp,i80,lbr,lqr
  223. 222 data lib,lst,mac,pas,prn,prt,src,sub,sym,sys,tex,txt,***
  224. 223 data 0,5,10,15,20,4,9,14,19,3,8,13,18,2,7,12,17,1,6,11,16
  225. 224 data 0,5,10,15,1,6,11,16,2,7,12,17,3,8,13,18,4,9,14
  226. 225 data 0,5,10,15,2,7,12,17,4,9,14,1,6,11,16,3,8,13
  227. 226 data 0,5,10,15,3,8,13,1,6,11,16,4,9,14,2,7,12
  228. 227 dclear:printchr$(14):ifre=1then230
  229. 228 open5,2,3,chr$(6)+chr$(0)
  230. 229 poke 56579,38:poke56577,peek(56577)and32
  231. 230 rs=1:mh=2:bu=0:lm=64000:bb=44000:bp=bb
  232. 231 for ke=1 to 8:key ke,"":next
  233. 232 key1,"(":key3,"'"::key7,""+chr$(13):key5,""+chr$(13)
  234. 233 dimf%(255),t%(255):forj=32to64:t%(j)=j:next
  235. 234 t%(13)=13:t%(20)=8:t%(160)=32:t%(15)=15:t%(26)=26:t%(3)=3:t%(16)=16:t%(19=t)=19:t%(17)=17:xc=1
  236. 235 t%(21)=21:t%(22)=22:t%(26)=26:t%(24)=24
  237. 236 forj=65to90:t%(j)=j+32:next
  238. 237 forj=91to95:t%(j)=j:next
  239. 238 forj=193to218:t%(j)=j-128:next
  240. 239 t%(134)=19:t%(135)=17:t%(136)=27
  241. 240 forj=0to255:hk=t%(j)
  242. 241 ifhk<>0thenf%(hk)=j:f%(hk+128)=j
  243. 242 next
  244. 243 goto 251
  245. 244 scnclr 5:print:print:print"    Something's wrong!!!!    "
  246. 245 dclose:printchr$(143):printds$
  247. 246 print:print"             Error in line number  ";:printel:sleep 3
  248. 247 resume 251
  249. 248 scnclr:char,10,10,"    Please confirm exit command  -=>   (E) ",1
  250. 249 getkey ex$:if ex$="e" then print"":else 251
  251. 250 dclose:sleep3:print"":poke808,110:end
  252. 251 ifpeek(5125)=1then77
  253. 252 dclose:a$=""
  254. 253 print"":scnclr 5
  255. 254 print"             Smallterm CP/M Menu  "
  256. 255 print" =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-="
  257. 256 print
  258. 257 print"99999999999999999999999999999999999999999999999"
  259. 258 print"4     $$$$$                                   6"
  260. 259 print"4      <E>          Exit this program         6"
  261. 260 print"4     $$$$$                                   6"
  262. 261 print"4      <S>          Screen reverse toggle     6"
  263. 262 print"4     $$$$$                                   6"
  264. 263 print"4      <D>          Disk directory (8)        6"
  265. 264 print"4     $$$$$                                   6"
  266. 265 print"4      <R>          Read seq file from disk   6"
  267. 266 print"4     $$$$$                                   6"
  268. 267 print"4      <T>          Terminal mode             6"
  269. 268 print"4     $$$$$                                   6"
  270. 269 print"4      <C>          CP/M Utilities            6"
  271. 270 print"4     $$$$$                                   6"
  272. 271 print"4                                             6"
  273. 272 print"88888888888888888888888888888888888888888888888"
  274. 273 print:print"        ^ "chr$(143)"         Please choose one!   "
  275. 274 poke 208,0
  276. 275 getkey ch$
  277. 276 print"                                                                     "
  278. 277 if ch$="c" then77
  279. 278 if ch$="e" then goto248
  280. 279 if ch$="s" then rs=rs+1:else 284
  281. 280 :          if rs>2 then rs=1
  282. 281 :          if rs=1 then printchr$(27)"n"
  283. 282 :          if rs=2 then printchr$(27)"r"
  284. 283 goto 253
  285. 284 if ch$="d" then goto 289:else 285
  286. 285 if ch$="r" then goto 297:else 286
  287. 286 rem ...
  288. 287 if ch$="t" then poke 56577,(peek(56577)or32):goto 324:else 251
  289. 288 goto251
  290. 289 printchr$(7)
  291. 290 dclear:window47,2,79,23,1
  292. 291 print"                                 "
  293. 292 for c7=1 to 19:print"                                 ":next c7
  294. 293 print"                                 "
  295. 294 window50,4,77,21,1
  296. 295 catalog
  297. 296 sleep1:print"":goto 273
  298. 297 dclear
  299. 298 print""
  300. 299 input"What is the name of the file  -=>      ";f$
  301. 300 if f$="" then 251
  302. 301 print"What type of file is that?";:print"    <P>rogram <U>ser or <S>eq"
  303. 302 getkey o$
  304. 303 if o$="" then 251
  305. 304 t$=left$(o$,1)
  306. 305 if o$<>"s"then ifo$<>"p" then ifo$<>"u"then301
  307. 306 print"Use the 'no scroll' key to pause --- Any other will stop."
  308. 307 print"---------------------------------------------------------"
  309. 308 window 0,3,79,24
  310. 309 open 15,8,15
  311. 310 open 6,8,5,"0:"+f$+","+o$+",r"
  312. 311 gosub321
  313. 312 get#6,a$
  314. 313 if st=0 then 317
  315. 314 if st=64 then print"-=*=- End of file -=*=-"
  316. 315 dclose:sleep1:print:print:print:print"                  Hit any key to continue "
  317. 316 getkey y$:goto 251
  318. 317 if a$=chr$(34)then:a$=chr$(39)
  319. 318 print(a$+chr$(0));
  320. 319 get q$:if q$="" then 312:else print"Stopped":goto315
  321. 320 goto 312
  322. 321 input#15,a$,b$,c$,d$
  323. 322 if val(a$)>0 then:print"":printa$,b$,c$,d$
  324. 323 return
  325. 324 printchr$(7)
  326. 325 print"";
  327. 326 print"    F1=Options menu  F3=D/L CP/M File(s)  F5=^0+return  F7=^P+return"
  328. 327 print" #############################################################################"
  329. 328 window 0,2,79,24,1:print:goto 1
  330. 329 print"":cp$="":ty$="":dclear
  331. 330 print"      Recieve xmodem file.        Hit  'A'  during transfer to abort!"
  332. 331 print"888888888888888888888888888888888888888888888888888888888888888888888888888":print:print
  333. 332 gosub153:ife2then325
  334. 333 print:print"Starting disk status is -=> ";ds$:sleep5:print:print
  335. 334 bk=1:xx=1
  336. 335 tr=0:as=0:scnclr5:gosub363:print#5,chr$(21);:goto163
  337. 336 tt=0:ifas=1thenprint#5,chr$(6);
  338. 337 get#5,a$:ifa$=chr$(4)thenifbk>1thenprint#5,chr$(6);:print"* Download completed *":printchr$(7):cs=64:return
  339. 338 ifa$=chr$(1)thengosub363:goto342
  340. 339 tt=tt+1:iftt<400then337:print"++ timeout error++                    "
  341. 340 tr=tr+1:iftr<10thenprint#5,chr$(21);:goto336
  342. 341 print"++ Transfer aborted--too many errors          ":printchr$(7) :goto357
  343. 342 get ab$:if ab$="a" then 357
  344. 343 ck=0:bf$=""
  345. 344 get#5,w$:ifw$=""thenw$=chr$(0)
  346. 345 get#5,c$:ifc$=""thenc$=chr$(0)
  347. 346 ifasc(w$)<>(255-asc(c$))thenprint"++ invalid block header ++":forj=1to400:get#5,a$:nextj:goto340
  348. 347 if asc(w$)<>bk then print "++ block sync lost, aborting transfer":print#5,"";:goto357
  349. 348 ct=0
  350. 349 get#5,a$:ifa$=""thena$=chr$(0)
  351. 350 ck=ck+asc(a$)
  352. 351 bf$=bf$+a$:ct=ct+1:ifct<128then349
  353. 352 get#5,a$:ifa$=""thena$=chr$(0)
  354. 353 if(ck and 255)=asc(a$) then bk=bk+1:xx=xx+1:as=1:else 356
  355. 354 ifbk>255thenbk=0:tr=0:return
  356. 355 tr=0:return
  357. 356 print"++ checksum error ++":goto340
  358. 357 dclose:print#5,chr$(6);:a$="":e1=1:return
  359. 358 dclose:a$="":gosub361:print"Total CP/M space used = ";int(xx)"K":sleep5
  360. 359 goto196
  361. 360 bank1:d=d1+(n-1)*32:poked,229:bank15:return
  362. 361 xx=xx*128/1024:ifxx>int(xx)thenxx=xx+1:return
  363. 362 return
  364. 363 print"XModem Download in progress"
  365. 364 print"Downloading -=> ";cp$+"."+ty$
  366. 365 print"Receiving block number -=>";xx:return
  367. 366 print"                         Welcome to Smallterm CP/M"
  368. 367 print"     With this terminal program you can DOWNLOAD directly to your C128"
  369. 368 print"       cp/m disks provided they are 168k disks and NOT double sided."
  370. 369 print"          NOTE: C64 cp/m disks CANNOT be used with this program."
  371. 370 print"           This program uses XMODEM protocol for ALL downloads."
  372. 371 print"                 Terminal portions by Bombs Away Software."
  373. 372 print"               Transfer cp/m related portions by Mike McLawhorn."
  374. 373 print"           Hacked together for all cp/m 128 owners by Jim Broughton."
  375. 374 print"                          press any key to continue":getkeya$:return
  376.