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 / CPM / MEX / MEXREAD.ART < prev    next >
Text File  |  2000-06-30  |  14KB  |  317 lines

  1. [ KAY*FOG RBBS | MEXREAD.ART | published 06/16/85 ]
  2.  
  3. MEX READ: AUTOMATED TRANSFER OF FILES WITH MEX: THE "READ" COMMAND
  4.           by Rick Charnes
  5.  
  6. MEX is the most exciting public domain modem program available
  7. for CP/M computers.  What follows is a fairly detailed discussion
  8. of a use of MEX's most unique and dynamic capability, its READ
  9. command.  Beginners might find it difficult to follow.  It
  10. assumes a prior working knowledge of MEX, and some familiarity
  11. with its very long documentation.  Novices might want to read my
  12. introductory article to MEX, also available with the A) command
  13. here on KAY*FOG.
  14.  
  15. Here are the files that I've developed in order to automate the
  16. transfer of files with MEX.  I want to emphasize that this is not
  17. true "batch" transfer; it has nothing in common with the
  18.  
  19. Christensen "B" (batch) command as it does not have wildcard "*"
  20. capability.  You can not get it, for instance, to send all files
  21. with the extension ".LBR" with a "*.LBR" command.  Each file must
  22. be listed by name.  I prefer calling it "automated" transfer
  23. rather than "batch," though it is batch in the sense that it can
  24. send or receive a group of files with a single command.  The
  25. difference is that these files must all be named individually.
  26.  
  27. The advantage of this way of file transfer is speed and accuracy.
  28. No longer do you have to make sure you spell the name of the file
  29. correctly TWICE - once while invoking the RCP/M's XMODEM function
  30. and then again when receiving with your own "R" command.  And you
  31. are spared many extra keystrokes and time.  And of course,
  32. there's the most important aspect: it's FUN!  There's nothing
  33. like the thrill of watching the computer do what you've
  34. programmed it do.  As Irv Block says, "All of this unattended,
  35. while you file your nails or go for coffee."  Ah, the true
  36. purpose of computers is revealed...
  37.  
  38. The way that this is done is through one of MEX's most
  39. fascinating and exciting capabilities, its READ command. One
  40. prepares a file beforehand, using a text editor or wordprocessor,
  41.  
  42. a file which MEX will "read" when online.  It is very similar to
  43. CP/M's SUBMIT utility.  Simply be sure to name the file with the
  44. extension ".MEX".
  45.  
  46. I have named the following file "TAKEMANY.MEX", though you can
  47. call it anything.  (In the voluminous MEX literature, similar
  48. files are often called "GET.MEX").  Then when you are online and
  49. ready to down- or up-load, you simply type "READ TAKEMANY" (or
  50. "SENDMANY") on MEX's command line.
  51.  
  52. Or, even better, turn on MEX's "read command extender" by typing
  53. STAT EXTEND ON.  With EXTEND on, MEX interprets any command
  54. entered on its command line differently from how it normally
  55. does.  It first searches to see if it is a normal command from
  56. its command "table. " If not, it "passes it on" to READ and
  57. assumes it's a READ command.  This way, you don't have to type
  58. the word "READ" since it is assumed.  In other words, if you type
  59. simply "TAKEMANY" after the MEX prompt, it will automatically
  60. search for the file "TAKEMANY.MEX" on disk and "submit" the
  61. commands from it.
  62.  
  63. Here's the file:
  64.  
  65.  
  66. STAT TRIGGER ">"
  67. PREFIX "XMODEM S "
  68. SENDOUT "{1}"
  69. R {1}
  70. SENDOUT "{2}"
  71. R {2}
  72. SENDOUT "{3}"
  73. R {3}
  74. SENDOUT "{4}"
  75. R {4}
  76. SENDOUT "{5}"
  77. R {5}
  78.  
  79. The numbers within the brackets are considered parameters, and I
  80. suggest you read the printed doc file for the explanation of
  81. these little guys, though it's similar, again, to SUBMIT's
  82. parameters.
  83.  
  84. This is to receive several files in an automated sequence from an
  85. RCP/M.  Then when you've logged onto a network ("BBS") and you're
  86. in the RCP/M, simply type:
  87.  
  88.  
  89. TAKEMANY FN1.FT FN2.FT FN3.FT FN4.FT
  90.  
  91. etc., where FN1.FT, FN2.FT, etc. are the names of the files you
  92. want.  If you have fewer than 5, that's OK.  MEX will just give
  93. you an error message: "parameter error: line #n" and the read
  94. command will simply halt.
  95.  
  96. What this file does is first it sets the PREFIX of any SENDOUT
  97. string you're going to send as 'XMODEM S '.  It'll also wait
  98. until it sees a ">" from the RCP/M before sending its string.
  99. Of course ">" is the CP/M prompt you will get from the RCP/M.
  100. This TRIGGER command is excellent and very important for file
  101. transfer.  Nothing will be SENTOUT until MEX sees this all-
  102. important ">".  When it does, BAM!!  There she goes.  Then - if
  103. transmission is incorrect, and if WTECHO is on (it should be!) it
  104. waits till it sees another ">" then sends it out again until it's
  105. received correctly!  Watching this process on your screen,
  106. especially when it sends a "cancel" character if the transmission
  107. is incorrect and it needs to be sent again, is quite beautiful to
  108. behold!
  109.  
  110.  
  111. So with the prefix set, it then sendsout the string that you
  112. enter on its command line, which in this case is the filename.
  113. It then enters this string into the parameters {1}, {2}, etc. in
  114. the READ file.
  115.  
  116. In other words, you're sending out to the RCP/M the prefix
  117. "XMODEM S " and then the name of the file you want, so altogether
  118. you're sending out "XMODEM S FILENAME.TYPE".  Whatever you've
  119. type on the command line after the word 'TAKEMANY' become the
  120. parameters that it inserts into the READ file to be sent out as
  121. SENDOUT.  Be sure to read the explanation of this in Ron Fowler's
  122. long .DOC file.  Again, it's very similar to the SUBMIT command
  123. with its parameters.
  124.  
  125. Then after MEX has inserted the parameters that you've typed on
  126. its command line into the SENDOUT string, then it ALSO inserts
  127. them into the line in the READ file where it says "R {1}" or "R
  128. {2}", etc.  So after MEX has invoked the RCP/M's XMODEM capacity
  129. and gotten it ready to send, it then dutifully goes back into
  130. your computer and does the "R" command to receive.  And of course
  131. again it sees those brackets, knows it's a parameter, and again
  132. uses the parameter that you've entered on the read command line.
  133.  
  134. You're sending and receiving the same filename.
  135.  
  136. So what you're doing is having MEX tell the RCP/M to send what
  137. you've entered into parameter 1, then it tells your computer to
  138. receive what you've entered in parameter 1, and it continues on
  139. its merry way until its exhausted all the parameters or until
  140. number 5.
  141.  
  142. This concept of parameters can be very complicated.  It takes
  143. some concentration at first, but it eventually all clicks
  144. together quite nicely.
  145.  
  146. Remember that a READ command can operate on two levels: it can
  147. SENDOUT strings to the BBS _and_ it can give commands internally
  148. to MEX.  When it's SENDING OUT the string within the quotes is
  149. sent to the remote, but other commands, such as the "R {1}" or a
  150. STAT command or "PREFIX" in the above file (there are of course
  151. many others!), are sent internally to your computer to set the
  152. values of MEX.  It's important to get this sense of switching
  153. back and forth between modes.  Anything that should be sent out
  154. to the BBS should be sent as a SENDOUT string; anything you want
  155. to tell MEX itself, internally, gets entered directly.
  156.  
  157.  
  158. A slightly different way to write this file would be without the
  159. use of the PREFIX command.  It would then appear as:
  160.  
  161. STAT TRIGGER ">"          <--- this is sent internally (to MEX)
  162. SENDOUT "XMODEM S {1}"    <--- this string is sent to the BBS
  163. R {1}                     <--- sent internally
  164. SENDOUT "XMODEM S {2}"    <--- to the BBS
  165. R {2}                     <--- (etc.)
  166. SENDOUT "XMODEM S {3}"
  167. R {3}
  168. SENDOUT "XMODEM S {4}"
  169. R {4}
  170. SENDOUT "XMODEM S {5}"
  171. R {5}
  172.  
  173. I just prefer to use the PREFIX command as it saves typing and
  174. again -- it's more fun.
  175.  
  176.  
  177. Now a word about WTECHO.   Be sure to turn STAT WTECHO ON.  THIS
  178. IS VERY IMPORTANT for error detection feedback.  This turns
  179. SODELAY off, which is not as good for our purposes.  What WTECHO
  180. does is to verify (something like CRC checking, I guess!) that
  181. the transmission of the SENDOUT and keystring characters are sent
  182. properly.  You'll notice a real delay in the SENDOUT command and
  183. your keystrings when you have WTECHO ON rather than OFF.  I like
  184. it much better.  Only thing is, its efficiency is greatly
  185. diminished when you're not in an RCP/M, such as sending logon
  186. strings, as it generally looks for that TRIGGER character as a
  187. cue to send out its string.  For this purpose, its use is greatly
  188. problematic, as it's very difficult to find a single trigger
  189.  
  190. character (or one at all, for that matter!) for a complete logon
  191. string.  I have found SODELAY, which is dependent on the WCHAR
  192. and WLINE settings (normally used for time delays when sending a
  193. file in terminal-mode) to be much better for sending out logon
  194. strings.  Any feedback on this, though, would be appreciated.
  195.  
  196. But for file transfer with an RCP/M be sure to turn the trigger
  197. character to ">" with STAT TRIGGER ">" so it knows what to look
  198. for to SENDOUT and also for WTECHO to retry.  Since when sending
  199. logon strings and also for Smartmodem commands (such as to turn
  200. the modem speaker off and on, which can be done through a READ
  201. file) there will be no trigger character to look for, I recommend
  202. that the STAT TRIGGER ">" command be incorporated into READ files
  203. for file transfers rather than CLONEd directly into MEX.
  204.  
  205. An alternate way to set up READ files is if you know the names of
  206. the files you want before you log on.  In this case, what you do
  207. is to have the READ file that you prepare off-line include the
  208. names of the files.  This way, you save time and possible
  209. mistakes typing them in on MEX's command line when you're on-
  210. line, since you're not using parameters.
  211.  
  212.  
  213. For instance, suppose you want to download the four files named
  214. THIS.FIL, THAT.FIL, THIS.DOC, and THAT.DOC.  Your file should
  215. look like:
  216.  
  217. STAT TRIGGER ">"
  218. PREFIX "XMODEM S "
  219. SENDOUT "THIS.FIL"
  220. R THIS.FILE
  221. SENDOUT "THAT.FIL"
  222. R THAT.FILE
  223. SENDOUT "THIS.DOC"
  224. R THIS.DOC
  225. SENDOUT "THAT.DOC"
  226. R THAT.DOC
  227.  
  228. So you'll end up, assuming the prefix of "XMODEM S ", sending out
  229. "XMODEM S THIS.FILE" which will invoke the RCP/M to send, and
  230. then return to your computer and receive THIS.FIL, etc.
  231.  
  232. Just understand that when READ is reading the lines with SENDOUT
  233. commands, it's sending them to the RCP/M, and when it's in the
  234. lines with the "R" or "STAT" or "PREFIX" commands, it's talking
  235.  
  236. to your computer, that is, to MEX.
  237.  
  238. And of course both these files can be made to _upload_ files to
  239. an RCP/M by simply making the PREFIX to be XMODEM R and the "R"
  240. in the next line an "S".
  241.  
  242. Or this idea can be used to upload or download single files.  To
  243. download a single file, make a READ file (always with the
  244. extension of .MEX, remember), that looks like:
  245.  
  246. STAT TRIGGER ">"
  247. SENDOUT "XMODEM S {1}"
  248. R {1}
  249.  
  250. And to upload a single file, again, reverse the "R" and "S".
  251. That's all.
  252.  
  253. An interesting idea I owe to one of the other articles I read is
  254. using MEX's READ command to download a file but change its name
  255. before it's placed on your computer's disk.  This would be
  256. convenient for downloading files with the extension ".OBJ" which
  257. you would want to change to ".COM."  You don't have to wait till
  258.  
  259. you're back in CP/M; you can have MEX do it for you.  Say you've
  260. got a file called "TAKEC.MEX" (the C means "change" the name):
  261.  
  262. STAT TRIGGER ">"
  263. SENDOUT "XMODEM S {1} {2}"
  264. R {2} {1}
  265.  
  266. Then when you're in the RCP/M, you see a file you want, called
  267. NSWP205.OBJ.  On MEX's command line, type:
  268.  
  269.           TAKEC NSWP205.OBJ NSWP205.COM
  270.  
  271. This reversal of parameters on the last line is what does it.
  272. It will send out that full string, with both names.  But
  273. apparently when XMODEM sees two strings, separated by a space, it
  274. simply ignores the second and assumes it's dealing only with the
  275. first.  So it does transmit NSWP205.OBJ.  But MEX "remembers" the
  276. filename you've typed in for the second parameter.  Then, when
  277. READ comes to the last line, this time it is READ that simply
  278. ignores what is second on its line, here parameter number 1
  279. (NSWP205.OBJ), and therefore receives only what comes first on
  280. its line, parameter number 2, NSWP205.COM.  You can check on your
  281.  
  282. disk to make sure.  Neat, huh?
  283.  
  284. One caveat about READ files in general.  It's hard to understand,
  285. but all the while MEX is reading a READ file, it is NOT in
  286. terminal mode.  It _looks_ like it's in terminal mode; the
  287. SENDOUT strings are sent directly to the computer network in what
  288. looks like terminal mode, but you're NOT in terminal mode.  The
  289. reason I emphasize this is that if you ever have a "T" (for
  290. Terminal) command within a read file EXCEPT AS THE VERY LAST
  291. COMMAND the READ file will simply stop.  So if you've set "T" as
  292. your GLOBAL command, you must turn it off with the command
  293. "GLOBAL".  (The word "GLOBAL" by it
  294. put a "T" command in the middle of a file, simply escape manually
  295. back to MEX's command mode and the READ file will continue.  "T"
  296. can very properly be put as the _last_ command in a read file; it
  297. will, in this case, put you successfully into terminal mode since
  298. there are no more commands after it.  This is actually a good
  299. idea since you will have to return to terminal mode manually if
  300. you have more business on the RCP/M.
  301.  
  302. I hope I've explained A LITTLE about MEX's wonderful READ command
  303. and some of the things it can do.  Experiment yourself - I'm sure
  304. there are a lot more undiscovered roads to travel with this
  305. incredible modem program.  As one of its many aficionadoes, Irv
  306. Block, comments, "there may be as many different ways of
  307. programming it as there are users." Let me know what experiences
  308. you have.
  309.  
  310. Have FUN! - that's what MEX is all about!  Any questions - send
  311. 'em to me on the MEX CONFERENCE!
  312.  
  313.                                         Rick Charnes
  314.  
  315. -------------------------  End of MEXREAD.ART Text  -------------------------
  316.  
  317. P