home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 592a.lha / RexxModem / modemrestore.rexx < prev    next >
Encoding:
OS/2 REXX Batch file  |  1991-11-12  |  4.3 KB  |  220 lines

  1. /*    read data saved by modemsave and restore modem state.
  2.  
  3.     if there isn't a modem, or it isn't hayes compatable and if the
  4.     setup isn't normal (i.e. like mine :-), this script will hang.
  5. */
  6.  
  7. reg.0.type = 0
  8. reg.1.type = -1
  9. reg.2.type = 1
  10. reg.3.type = 1
  11. reg.4.type = 1
  12. reg.5.type = 1
  13. reg.6.type = 0
  14. reg.7.type = 0
  15. reg.8.type = 0
  16. reg.9.type = 0
  17. reg.10.type = 0
  18. reg.11.type = -1
  19. reg.12.type = 0
  20. reg.13.type = -1
  21. reg.14.type = 2
  22. reg.14.bits.n = 8
  23. reg.14.bits.0.n = 1
  24. reg.14.bits.0.0 = ''
  25. reg.14.bits.0.1 = ''
  26. reg.14.bits.1.n = 1
  27. reg.14.bits.1.0 = 'E0'
  28. reg.14.bits.1.1 = 'E1'
  29. reg.14.bits.2.n = 1
  30. reg.14.bits.2.0 = 'Q0'
  31. reg.14.bits.2.1 = 'Q1'
  32. reg.14.bits.3.n = 1
  33. reg.14.bits.3.0 = 'V0'
  34. reg.14.bits.3.1 = 'V1'
  35. reg.14.bits.4.n = 1
  36. reg.14.bits.4.0 = ''
  37. reg.14.bits.4.1 = ''
  38. reg.14.bits.5.n = 1
  39. reg.14.bits.5.0 = 'T'
  40. reg.14.bits.5.1 = 'P'
  41. reg.14.bits.6.n = 1
  42. reg.14.bits.6.0 = ''
  43. reg.14.bits.6.1 = ''
  44. reg.14.bits.7.n = 1
  45. reg.14.bits.7.0 = ''
  46. reg.14.bits.7.1 = ''
  47. reg.15.type = -1
  48. reg.16.type = -1
  49. reg.17.type = -1
  50. reg.18.type = -1
  51. reg.19.type = -1
  52. reg.20.type = -1
  53. reg.21.type = 2
  54. reg.21.bits.n = 7
  55. reg.21.bits.0.n = 1
  56. reg.21.bits.0.0 = '&J0'
  57. reg.21.bits.0.1 = ''
  58. reg.21.bits.1.n = 1
  59. reg.21.bits.1.0 = ''
  60. reg.21.bits.1.1 = ''
  61. reg.21.bits.2.n = 1
  62. reg.21.bits.2.0 = '&R0'
  63. reg.21.bits.2.1 = '&R1'
  64. reg.21.bits.3.n = 2
  65. reg.21.bits.3.0 = '&D0'
  66. reg.21.bits.3.1 = '&D1'
  67. reg.21.bits.3.2 = '&D2'
  68. reg.21.bits.3.3 = '&D3'
  69. reg.21.bits.4.n = 1
  70. reg.21.bits.4.0 = '&C0'
  71. reg.21.bits.4.1 = '&C1'
  72. reg.21.bits.5.n = 1
  73. reg.21.bits.5.0 = '&S0'
  74. reg.21.bits.5.1 = '&S1'
  75. reg.21.bits.6.n = 1
  76. reg.21.bits.6.0 = "Y0"
  77. reg.21.bits.6.1 = "Y1"
  78. reg.22.type = 2
  79. reg.22.bits.n = 4
  80. reg.22.bits.0.n = 2
  81. reg.22.bits.0.0 = ''
  82. reg.22.bits.0.1 = 'L1'
  83. reg.22.bits.0.2 = 'L2'
  84. reg.22.bits.0.3 = 'L3'
  85. reg.22.bits.1.n = 2
  86. reg.22.bits.1.0 = 'M0'
  87. reg.22.bits.1.1 = 'M1'
  88. reg.22.bits.1.2 = 'M2'
  89. reg.22.bits.1.3 = 'M3'
  90. reg.22.bits.2.n = 3
  91. reg.22.bits.2.0 = 'X0'
  92. reg.22.bits.2.1 = ''
  93. reg.22.bits.2.2 = ''
  94. reg.22.bits.2.3 = ''
  95. reg.22.bits.2.4 = 'X1'
  96. reg.22.bits.2.5 = 'X2'
  97. reg.22.bits.2.6 = 'X3'
  98. reg.22.bits.2.7 = 'X4'
  99. reg.22.bits.3.n = 1
  100. reg.22.bits.3.0 = '&P0'
  101. reg.22.bits.3.1 = '&P1'
  102. reg.23.type = 2
  103. reg.23.bits.n = 5
  104. reg.23.bits.0.n = 1
  105. reg.23.bits.0.0 = '&T5'
  106. reg.23.bits.0.1 = '&T4'
  107. reg.23.bits.1.n = 2
  108. reg.23.bits.1.0 = ''
  109. reg.23.bits.1.1 = ''
  110. reg.23.bits.1.2 = ''
  111. reg.23.bits.1.3 = ''
  112. reg.23.bits.2.n = 1
  113. reg.23.bits.2.0 = ''
  114. reg.23.bits.2.1 = ''
  115. reg.23.bits.3.n = 2
  116. reg.23.bits.3.0 = ''
  117. reg.23.bits.3.1 = ''
  118. reg.23.bits.3.2 = ''
  119. reg.23.bits.3.3 = ''
  120. reg.23.bits.4.n = 2
  121. reg.23.bits.4.0 = '&G0'
  122. reg.23.bits.4.1 = '&G1'
  123. reg.23.bits.4.2 = '&G2'
  124. reg.23.bits.4.3 = ''
  125. reg.24.type = -1
  126. reg.25.type = 1
  127. reg.26.type = 1
  128. reg.27.type = 2
  129. reg.27.bits.n = 6
  130. reg.27.bits.0.n = 2
  131. reg.27.bits.0.0 = '&M0'
  132. reg.27.bits.0.1 = '&M1'
  133. reg.27.bits.0.2 = '&M2'
  134. reg.27.bits.0.3 = '&M3'
  135. reg.27.bits.1.n = 1
  136. reg.27.bits.1.0 = '&L0'
  137. reg.27.bits.1.1 = '&L1'
  138. reg.27.bits.2.n = 1
  139. reg.27.bits.2.0 = ''
  140. reg.27.bits.2.1 = ''
  141. reg.27.bits.3.n = 2
  142. reg.27.bits.3.0 = '&X0'
  143. reg.27.bits.3.1 = '&X1'
  144. reg.27.bits.3.2 = '&X2'
  145. reg.27.bits.3.3 = ''
  146. reg.27.bits.4.n = 1
  147. reg.27.bits.4.0 = 'B0'
  148. reg.27.bits.4.1 = 'B1'
  149. reg.27.bits.5.n = 1
  150. reg.27.bits.5.0 = ''
  151. reg.27.bits.5.1 = ''
  152.  
  153.  
  154. if (~show('L','rexxsupport.library')) then do
  155.     call addlib('rexxsupport.library',0,-30,0)
  156. end
  157.  
  158. call open(serf,'SER:')
  159.  
  160. call waitforok
  161.  
  162. input = readch('STDIN',19)
  163.  
  164. if (length(input) ~= 19) then do
  165.     say "This isn't modemsave data!"
  166.     exit
  167. end
  168.  
  169. cnt = 0
  170. do regs=0 to 27
  171.     if reg.regs.type = -1 then iterate /* skip unused stuff */
  172.     cnt = cnt + 1
  173.     resp = c2d(substr(input,cnt,1))
  174.     select
  175.         when reg.regs.type < 2 then /* number */
  176.             call sendmodem('S' || regs || '=' || resp)
  177.         when reg.regs.type = 2 then do /* bits */
  178.             work = c2b(d2c(resp))
  179.                     size = reg.regs.bits.n /* get number of entries */
  180.             used = 0
  181.             do k=0 to size-1
  182.                 nbits = reg.regs.bits.k.n /* get number of bits */
  183.                 num = c2d(b2c(substr(work,9-(used+nbits),nbits)))
  184.                 used = used + nbits
  185.                 if (0 ~= length(reg.regs.bits.k.num)) then
  186.                     call sendmodem(reg.regs.bits.k.num)
  187.             end
  188.         end
  189.         otherwise
  190.     end
  191. end
  192.  
  193. exit
  194.  
  195.  
  196. readresp:
  197.  
  198. ach = ""
  199. do until (tchar = '0a'x)
  200.     tchar = readch(serf,1)
  201.     ach = ach || tchar
  202. end
  203. return
  204.  
  205.  
  206. waitforok:
  207.  
  208. call writech(serf,'AT' || '0d'x)
  209. call readresp
  210. call readresp
  211. return
  212.  
  213.  
  214. sendmodem:
  215.  
  216. call writech(serf,'AT' || arg(1) || '0d'x)
  217. call readresp
  218. call readresp
  219. return
  220.