home *** CD-ROM | disk | FTP | other *** search
/ GEMini Atari / GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso / files / telecomm / unitmacs / unimac.txt < prev   
Text File  |  1990-02-18  |  17KB  |  339 lines

  1. In addition to the sample macros you will find in recent Uniterm 
  2. documents in versions (2.0d and later), I have included here 
  3. three macros I have used for a long time to do auto-dialing on 
  4. BBS's.  Before I removed phone numbers, system prompts and 
  5. responses, and login names and passwords, these macros and all 
  6. their features were known to work well and perform all the 
  7. claimed functions.  Unfortunately, when this information is 
  8. removed, the macros will no longer work.  Also, by their nature 
  9. each person's system, modem, desired features, etc. will be 
  10. different.  Within the constraints of the maximum 4k file size of 
  11. these macros for Uniterm 2.0d and later, I have included all the 
  12. comments I could to explain what I was doing.  I'm sorry if some 
  13. of these comments appear quite cryptic.
  14.  
  15. To use these macros, you must put them in a word processor that 
  16. will write them to an ASCII file with no control codes.  Make 
  17. sure you name the files the same names you intend to use in the 
  18. Auto-dialer, Function Keys, or other macro you call them from.
  19. When you see "loadsetup" near the beginning of each file, you are 
  20. to enter in the blank space following the name of the setup file 
  21. you want to use when this BBS is called.  Inspect closely the 
  22. codes sent to the modem to control its features.  Although my 
  23. modem is an Atari Hayes compatible, these will most likely have 
  24. to be changed or removed for your equipment and are included as 
  25. examples.  When these macros are called, they must be in the 
  26. default directory that Uniterm is run from.  You can use the 
  27. command: path('C:')  in the auto-load macro or:
  28. %path('C:') on a function key to change the default directory to 
  29. a "C" ramdisk (as I do) for example.  If you do this, make sure 
  30. all other files such as setup files are there also or you will 
  31. have to switch directories back and forth at the proper times.
  32.  
  33. I will also apologize here for the convoluted code.  I'm not a 
  34. programer although I enjoyed mastering this editor without much 
  35. help from the documentation and poor examples (parts of which 
  36. don't appear to work).  You will see some labels out of order
  37. and probable to expert eyes, some wasted code.  I have added 
  38. features to these macros as they grew on me but didn't always 
  39. renumber lines.  If nothing else, these should get you further 
  40. down the learning curve than the original documentation got me.
  41. I played with these for 2 years before I got Uniterm's editor to 
  42. work properly for me.
  43.  
  44. The three files here:
  45.  
  46. BBSDIAL.MAC
  47. This is a generic auto-login with re-dial that is prompted for 
  48. the user to enter the number of times re-dials will be attempted 
  49. after the first dial fails.  This is the simplest of the three 
  50. files.
  51.  
  52. Listed here is a copy of the file as reference.  I may include 
  53. additional comments in brackets "[ ]" here that are not permitted 
  54. in the macros that you can run.  I have also filled some of the 
  55. blank entry lines with X's or examples that will not work if you 
  56. try to run the macros by removing them from this file.
  57. >>>>>>>>>>>>>>>>>>>>>>>START EXAMPLE ONE>>>>>>>>>>>>>>>>>>>>>>>
  58. # This is a general purpose BBS auto-dial.  Edit modem codes, login, and setup
  59. # files for your purposes.  Remember...macro must not exceed 4k, speed of code
  60. # transmission is determined by transfer rate in ASCII transfer menu.
  61. # Control-C can abort between commands.
  62. me('Loading Uniterm set up File') w(10) 
  63. loadsetup('uniterm.set') w(10) [THIS IS THE DEFAULT SETUP]
  64. # Following are modem codes:
  65. se('atz\r\n') w(10) se('ats7=17\r\n') w(10) se('atx4\r\n') 
  66. # This macro will redial w/prompt for retry number. 
  67. me('Dialing MY FAVORITE BBS.  Will re-dial w/prompt for retries') w(10) 
  68. se('atdt9990000\r\n') w(05) set(1,1) set(2,0) 
  69. # Following is looking for first message from online to respond to. 
  70. if(!get('CONNECT',21)) ju(1) [IF YOUR MODEM DISPLAYS THIS 
  71. MESSAGE UPON CONFIRMING CONNECTION. IF NOT, YOU MAY WANT TO USE 
  72. THE FIRST SYSTEM PROMPT YOU GET]
  73. :7 
  74. # Put log-on codes here. Put prompt text in "get", response in "send".
  75.   ge('HIT RETURN',10) w(05) se('\R\N') 
  76.   ge('YOUR NAME',10) me('YOU MIGHT HAVE TO WAIT HERE') w(05) 
  77. se('MARY OR TOM') ge('Enter ID Number',15) w(20) se('9999999\r\n') 
  78.   ge('Enter Your Password:',15) w(05) se('ZXZXZ\r\n') 
  79. #Start history and exit. [WHEN THE LAST LOGIN PROMPT IS 
  80. SATISFIED, THE SCREEN HISTORY IS TURNED ON AND THE MACRO ENDS
  81. YOU CAN CONTINUE AT THIS POINT WITH YOU FIRST MENU SELECTIONS AND 
  82. AUTO DOWNLOADS OR MESSAGE BASE SCANS HERE.  I ALWAYS DO THIS 
  83. MANUALLY BECAUSE I NEVER DO IT THE SAME]
  84.   history(1) me('History recording is ON') w(20) exit(0) 
  85. :1 
  86. # 1st fail and re-dial message. [THIS IN INVOKED WHEN "CONNECT" 
  87. FAILS]
  88.   ec('\r\n') ec('Failed!\r\n') w(05)
  89.   if(!input('Retries?  Enter #1-?+Ret. or Cancel')) ec('Quit!\n') exit(0) 
  90. # Check to see if $T is "0". Yes=quit, No=go on. 
  91.   if(com($T,'0')) ec('Quit.  FINISHED!\r\n') exit(0) 
  92. # Use # in $T to set re-try counter. 
  93.   set(1,.$T) 
  94. # place number in "Wait" command 3 seconds less than re-dial timeout. 
  95.   me('Re-dial in 30 seconds.') w(270) [I DO THIS BECAUSE OF MY 3 
  96. SECOND ALT-C ABORT MESSAGE] (*)
  97. :2 
  98. # Re-dial count, display, and check follows: @1= retry countdown @2=retry# 
  99. # "$T"=current retry display count. 
  100. # Display total remaining user re-tries on next line: 
  101.   ec("@1) ec(' re-dial remains:\r\n') w(05) 
  102.   set(1,add(@1,-1)) set(2,add(@2,1)) con('RETRY# ',"@2') ec($T) ec('\r\n') 
  103.   me('Re-dialing MY FAVORITE BBS. Cntrl-C aborts. NOW!') w(30) (*)
  104.   me('Dialing...') send('atdt       \r\n') [PUT THE SAME NUMBER 
  105. HERE AS ABOVE]
  106. # Timeout for re-dial and success/fail.  "ju(4)"=fail 
  107.   if(!ge('CONNECT',21)) ec('\r\n') ju(4) 
  108. # If success, will return to log-in code near beginning. 
  109.   ju(7) 
  110. :4 
  111. # Look for count in @1 for "0". If not, re-dial. 
  112. # If so, prompt for more retries. 
  113.   if(com("@1','0')) ca(5) 
  114. # Failed and redial message for all until last prompt. 
  115.   ec('Failed!\r\n') w(10) se('\n') me('Re-dial in 30 sec.') w(270) ju(2) 
  116. :5 
  117. # Prompt to try again or stop and end macro. 
  118.   ec('Failed!  More retries?\r\n') w(05) se('\n') 
  119. # User clicks "OK" will loop re-dial routine. 
  120. # Prompt for re-try #. "set" for variable int. @1 to # entered by user. 
  121. # If "cancel is clicked, message, and end. 
  122.   if(input('Retries failed. Try again? Enter #-
  123. RET.')) ju(6) [THIS IS WERE THE USE GETS TO TELL THE MACRO HOW 
  124. MANY TIMES TO RE-DIAL THE BBS OR CANCEL AND END THE MACRO]
  125.   ec('ALL RETRIES FAILED! FINISHED.\r\n') w(10) exit(0) 
  126. :6 
  127. # Check to see if $T is "0". Yes=quit, No=go on. 
  128.   if(com($T,'0')) ec('Quit.  FINISHED!\r\n') exit(0) 
  129. # Make "set" for variable "@1" user number. 
  130.   w(05) set(1,.$T) ju(2)
  131. [REMEMBER THIS MACRO WILL NOT RUN AS IS]
  132. >>>>>>>>>>>>>>>>>>>>>>>END EXAMPLE ONE<<<<<<<<<<<<<<<<<<<<<<<<<
  133.  
  134. GENIEX.MAC
  135.  
  136. This is the macro I use to dial and log on to GEnie with Uniterm.
  137. Less editing will be needed here as my prompts will be similar to 
  138. yours.  Remember you can use function keys to call macros to do 
  139. the complicated message, file, and mail tasks on GEnie.  I most 
  140. often use the function keys to send the one letter or word 
  141. commands I use most often.  I have one function key that calls a 
  142. macro that displays a section of character faces for me to select 
  143. from to send at frivolous moments.
  144. >>>>>>>>>>>>>>>>>>>>>>START EXAMPLE TWO<<<<<<<<<<<<<<<<<<<<<<<<<< 
  145.  
  146. #This macro will load a customized GEnie set-up file and dial w/login.
  147. #Be sure control codes sent to modem are correct for your equipment.
  148.  
  149. me('Setting modem echo to OFF,timeout to 17 sec.') w(20) 
  150. se('atz\r\n') w(10) se('ate0\r\n') w(10) se('ats7=17\r\n') w(10) 
  151. me('Loading GEnie set-up file') w(05) Loadsetup('genie.set') 
  152. #This macro will redial w/prompt for retry number. 
  153. me('Dialing GEnie BBS.  Will re-dial w/prompt for retries') w(20) 
  154. #The following code contains the phone number and sets re-dial countdown:
  155. se('atdt       \r\n') w(05) set(1,1) set(2,0) 
  156. #Following looking for first message from online to respond to: 
  157. if(!get('CONNECT',20)) ca(1) 
  158. #Put log-on codes here. 
  159. W(10) se('h') w(05) se('h') w(05) sΣ('h\n') 
  160. get('U#=',10) w(10) 
  161. send('        ,        \r\n') w(10) 
  162. #Start history and end macro.
  163. history(1) me('History recording is on') w(20) exit(0) 
  164. :1 
  165. #1st fail and re-dial message. 
  166.   ec('Failed!\r\n') w(05) se('\n') 
  167. #If # and OK, go on (User enters num. of times to re-dial). If Cancel, exit. 
  168.   if(!input('Retries?  Enter #1-?+Ret. or Cancel')) ec('Quit!\n') exit(0) 
  169. #Check to see if $T is "0". Yes=quit, No=go on. 
  170.   if(com($T,'0')) ec('Quit.  FINISHED!\r\n') exit(0) 
  171. #Use # in $T to set re-try counter. 
  172.   set(1,.$T) 
  173. #Place number in "Wait" command 3 seconds less than re-dial timeout. 
  174.   me('Re-dial in 30 seconds.') w(270) 
  175. :2 
  176. #Re-dial count, display, and check follows: @1= retry countdown @2=retry#,
  177. #"$T"=current re-try display count. 
  178. #Display total remaining user re-tries on next line: 
  179.   ec("@1) ec(' re-dial remains:\n') w(05) 
  180.   set(1,add(@1,-1)) set(2,add(@2,1)) con('RETRY# ',"@2') ec($T) ec('\r\n') 
  181.   mess('Re-dialing GEnie BBS.   Cntrl-C aborts. NOW!') w(30) 
  182.   me('Dialing...') send('atdt       \r\n') 
  183. #Timeout for re-dial and success/fail.  "ju(4)"=fail 
  184.   if(!ge('CONNECT',35)) ju(4) 
  185. #If success, will return to log-in code near beginning. 
  186.   return( ) 
  187. :4 
  188. #Look for count in @1 for "0". If not, re-dial. 
  189. #If so, prompt for more retries. 
  190.   if(com("@1','0')) ju(5) 
  191. #Failed and redial message for all until last prompt. 
  192.   ec('Failed!\r\n') w(10) se('\n') me('Re-dial in 30 sec.') w(270) ju(2) 
  193. :5 
  194. #Prompt to try again or stop and end macro. 
  195.   ec('Failed!  More retries?\r\n') w(05) se('\n') 
  196. #User clicks "OK", will loop re-dial routine. 
  197. #Prompt for re-try #. "set" for variable int. @1 to # entered by user. 
  198. #If "Cancel" is clicked, message, and end. 
  199.   if(input('Retries failed. Try again? Enter#1-?')) ju(6) 
  200.   ec('ALL RETRIES FAILED! FINISHED.\r\n') w(10) exit(0) 
  201. :6 
  202. #Check to see if $T is "0". Yes=quit, No=go on. 
  203.   if(com($T,'0')) ec('Quit.  FINISHED!\n') exit(0) 
  204. #Make "set" for variable "@1" user number. 
  205.   w(05) set(1,.$T) ju(2)
  206. [REMEMBER THIS MACRO WILL NOT RUN AS IS]
  207. >>>>>>>>>>>>>>>>>>>>>>>>>END EXAMPLE TWO<<<<<<<<<<<<<<<<<<<<<<<<<
  208.  
  209. MLTIDIAL.MAC
  210.  
  211. This is the most complicated of the three because I use it to 
  212. dial through each number of a multi-line BBS to direct access 
  213. those lines.  The board that I call with this particular macro 
  214. also happens to have the nasty attribute of being a Unix based 
  215. system that cannot get the baud rate from the modem report, but 
  216. must "learn" it from sampling a series of carriage returns.  Also 
  217. Unix doesn't like line feeds.  If these features help you with 
  218. problems similar the the ones I've had with these boards, it's 
  219. good that I left them in here.  If not, all the associated code 
  220. will have to be removed and replaced with the logon sequence that 
  221. is appropriate for your needs.  When I use this with Unix I also 
  222. make sure carriage returns do not include line feeds in the 
  223. "Terminal 1" perameter menu of the setup file that is loaded in. 
  224.  
  225. If you use this to access multi-line systems and don't need to 
  226. call as many lines, delete the "Dialing Port X" lines from the 
  227. bottom up until you have the total number of lines you want to 
  228. access.  You will also have to edit the "set" number in the 
  229. fourth line of label #5 to one number greater than the total 
  230. number of different phone numbers.  Also "set" in line seven near 
  231. the beginning of the file to the same number of different 
  232. numbers.  The number in the "ATDT" command in line seven must be 
  233. the same as the first line of the multiple number list.  I know 
  234. you expert programmers will cringe as all this but I've made my 
  235. excuses.  This could save the average person hours of 
  236. experimenting as I have.
  237.  
  238. Note:  You may have noticed in most of these commands that I've 
  239. abbreviated the commands to only a couple of letters to save file 
  240. space.  This may be confusing to those who are not familiar with 
  241. the words these letters represent.  I suggest you have a print 
  242. out of the Uniterm macro editor file in the Uniterm documentation 
  243. to refer to while de-ciphering these files.
  244.  
  245. <<<<<<<<<<<<<<<<<<<<<<START EXAMPLE THREE>>>>>>>>>>>>>>>>>>>>>
  246.  
  247. # This macro will dial multiple numbers for multi-line BBS's and
  248. # prompt for re-tries.  Edit modem codes, login, and setup file names.
  249. me('Loading          BBS set-up file') w(05) loadsetup('      .set') w(05) 
  250. se('atz\r\n') w(10) se('ats7=17\r\n') w(10) se('atx4\r\n') w(10) 
  251. me('Dialing           BBS. Will re-dial w/# cycle') 
  252. # Set 1 must be equal to entries in redial list. Dial and login follows:
  253. se('atdt       \r\n') w(05) set(1,8) set(2,0) set(3,0) 
  254. # If "CONNECT", 3 Crs and log in.  If not, "FAILED!" + re-dial. 
  255. if(!get('CONNECT',20)) ju(1) 
  256. :7 
  257. # Put login code here.  Carriage returns, no line feeds fo≥ Unix.
  258. # Edit codes for your purposes. 
  259. # Send up to 8 Cr's, hangup, try next #.  If ok, login. 
  260.   ec('\r\nSending carriage returns...\r\n') w(50) 
  261.   ec('1\r\n') se('\r') (40) ec('2\r\n') se('\r') 
  262.   ec('Should get system message here.  If not, more Cr`s\r\n') 
  263.   if(!ge('login:',04)) ec('3\r\n')'3\r\n')'3\r\n')'3\r\n')'3\r\n')S BECAUSE OF MY 3 
  264. SECOND ALT-C ABORT MESSAGE] (*)
  265. :2 
  266. # Re-dial count, display, and check follows: @1= retry countdown @2=retry# 
  267. # "$T"=current retry display count. 
  268. # Display total remaining user re-tries on next line: 
  269.   ec("@1) ec(' re-dial remains:\r\n') w(05) 
  270.   set(1,add(@1,-1)) set(2,add(@2,1)) con('RETRY# ',"@2') ec($T) ec('\r\n') 
  271.   me('Re-dialing MY FAVORITE BBS. Cntrl-C aborts. NOW!') w(30) (*)
  272.   me('Dialing...') send('atdt       \r\n') [PUT THE SAME NUMBER 
  273. HERE AS ABOVE]
  274. # Timeout for re-dial and success/fail.  "ju(4)"=fail 
  275.   if(!ge('CONNECT',21)) ec('\r\n') ju(4) 
  276. # If success, will return to log-in code near beginning. 
  277.   ju(7) 
  278. :4 
  279. # Look for count in @1 for "0". If not, re-dial. 
  280. # If so, prompt for more retries. 
  281.   if(com("@1','0')) ca(5) 
  282. # Failed and redial message for all until last prompt. 
  283.   ec('Failed!\r\n') w(10) se('\n') me('Re-dial in 30 sec.') w(270) ju(2) 
  284. :5 
  285. # Prompt to try again or stop and end macro. 
  286.   ec('Failed!  More retries?\r\n') w(05) se('\n') 
  287. # User clicks "OK" will loop re-dial routine. 
  288. # Prompt for re-try #. "set" for variable int. @1 to # entered by user. 
  289. # If "cancel is clicked, message, and end. 
  290.   if(input('Retries failed. Try again? Enter #-
  291. RET.')) ju(6) [THIS IS WERE THE USE GETS TO TELL THE MACRO HOW 
  292. MANY TIMES TO RE-DIAL THE BBS OR CANCEL AND END THE MACRO]
  293.   ec('ALL RETRIES FAILED! FINISHED.\r\n') w(10) exit(0) 
  294. :6 
  295. # Check to see if $T is "0". Yes=quit, No=go on. 
  296.   if(com($T,'0')) ec('Quit.  FINISHED!\r\n') exit(0) 
  297. # Make "set" for variable "@1" user number. 
  298.   w(05) set(1,.$T) ju(2)
  299. [REMEMBER THIS MACRO WILL NOT RUN AS IS]
  300. >>>>>>>>>>>>>>>>>>>>>>>END EXAMPLE ONE<<<<<<<<<<<<<<<<<<<<<<<<<
  301.  
  302. GENIEX.MAC
  303.  
  304. This is the macro I use to dial and log on to GEnie with Uniterm.
  305. Less editing will be needed here as my prompts will be similar to 
  306. yours.  Remember you can use function keys to call macros to do 
  307. the complicated message, file, and mail tasks on GEnie.  I most 
  308. often use the function keys to send the one letter or word 
  309. commands I use most often.  I have one function key that calls a 
  310. macro that displays a section of character faces for me to select 
  311. from to send at frivolous moments.
  312. >>>>>>>>>>>>>>>>>>>>>>START EXAMPLE TWO<<<<<<<<<<<<<<<<<<<<<<<<<< 
  313.  
  314. #This macro will load a customized GEnie set-up file and dial w/login.
  315. #Be sure control codes sent to modem are correct for your equipment.
  316.  
  317. me('Setting modem echo to OFF,timeout to 17 sec.') w(20) 
  318. se('atz\r\n') w(10) se('ase('\r') 
  319.   if(!ge('login:',04)) ec('7\r\n') se('\r') if(!ge('login:',04)) ju(11) 
  320.   ju(8) 
  321. :11 
  322.   se('\r') ec('Sent 8th Carriage Return.  Hangup if no go.\r\n') 
  323. # Set #3 changes 20 sec. timeout to 30. Ju(6)=hang+dial next. (8)=login 
  324.   if(!ge('login:',04)) set(3,1) ju(6) 
  325.   ju(8)
  326. [REMEMBER THIS MACRO WILL NOT RUN AS IS]
  327. >>>>>>>>>>>>>>>>>>>>>>>>>>>END EXAMPLE THREE<<<<<<<<<<<<<<<<<<<<<<
  328.  
  329. I will be happy to answer any questions you have concerning these 
  330. examples of anything else I've learned about Uniterm.  I think 
  331. it's the best PD terminal emulator for the ST and beats most made 
  332. for any other computer.
  333.  
  334. Paul Varn
  335. GEnie: pvarn
  336. 2/18/90
  337. ---------------------------- END FILE ----------------------------
  338.  
  339.