home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS - Coast to Coast / simteldosarchivecoasttocoast2.iso / windows3 / pcucp15.zip / relnotes.doc < prev    next >
Text File  |  1994-01-30  |  20KB  |  429 lines

  1. Pcucp 1.10 Beta#15
  2. ----------------------------------------------------------------------
  3.  
  4. When realizing the modifications in Beta#14 I also managed to
  5. create a genuine bug which caused the connect time size setting
  6. not to work properly. This has now been corrected.
  7.  
  8. The unix-end has been slightly modified.
  9.  
  10.  
  11. Pcucp 1.10 Beta#14
  12. ----------------------------------------------------------------------
  13.  
  14. The procedure for setting up Terminal(0) at connection time has
  15. been slightly modified in order to reset the scroll limits of
  16. the terminal to its current size. This should remove the effect
  17. of the initial terminal always being apparently 80x24 after 
  18. connection on some systems which set the scroll margins for 
  19. the size 80x24 upon login.
  20.  
  21.  
  22. Pcucp 1.10 Beta#13
  23. ----------------------------------------------------------------------
  24.  
  25. A bug had found its way into the serial driver code I modified
  26. with Beta#12. This caused 9600 bps to be used instead of 19200
  27. bps. This has now been corrected.
  28.  
  29.  
  30. Pcucp 1.10 Beta#12
  31. ----------------------------------------------------------------------
  32.  
  33. To my surprise I found that support for speeds 38400 and 57600 bps
  34. exists in the standard Windows 3.1 com-driver. The syntax for the
  35. related system call to set to these speeds is a bit different from
  36. the usual, however, and so these speeds could not be used until now
  37. that the code has been modified to regocnize these as special cases.
  38. Pcucp now also recognizes speeds 115200, 128000 (115200 is in fact
  39. identical to 128000) and 256000, though the standard com-driver
  40. seems not to accept these. Although the speeds 128000 and 256000
  41. seem rather strange they are mentioned in the API 3.1 documentation.
  42.  
  43. There was a bug in the handling of the numeric keypad keys (with
  44. NUMLOCK on), this has now been corrected and so the numeric keypad
  45. should (again?) work as usual.
  46.  
  47.  
  48. Pcucp 1.10 Beta#11
  49. ----------------------------------------------------------------------
  50.  
  51. The terminal emulation has been modified. As a result, Pcucp
  52. should now work with programs like gopher and lynx, which
  53. seem to utilize some of the vt100-control codes in an unusual
  54. (but not neccessarily erratic) way. Also, multiple screen
  55. attribute combinations should work now.
  56.  
  57.  
  58. Pcucp 1.10 Beta#10
  59. ----------------------------------------------------------------------
  60.  
  61. Adding NUMLOCK as a shift-key for KEY was not a good idea after
  62. all : existing keyboard settings needed to be written both with
  63. and without NUMLOCK if they were to be emitted whether NUMLOCK is
  64. active or not. Hence NUMLOCK has been removed from the KEY
  65. arguments.
  66.  
  67. Configuration keywords have been added to enable specifying the
  68. colors in Pcucp windows. (See CONFIG.DOC for details.)
  69.  
  70.  
  71. Pcucp 1.10 Beta#09
  72. ----------------------------------------------------------------------
  73.  
  74. Some new keys have been defined for the KEY-keyword. It seems,
  75. however that Windows does not allow combining NumLock to other
  76. shift-keys.
  77.  
  78. A bug which prevented unix-hosts with long (>~25) names to
  79. establish connection has been corrected.
  80.  
  81.  
  82. Pcucp 1.10a Beta
  83. ----------------------------------------------------------------------
  84.  
  85. This is the first release of Pcucp 1.10 Beta for wider distribution.
  86. That is, this version may be made publicly available in ftp servers
  87. and the like without restrictions. This is even encouraged.
  88.  
  89. The former versions of Pcucp 1.10 beta, were accidentally marked
  90. for Windows 3.1 or later only. This has now been corrected, since
  91. Pcucp should work with Windows 3.0 too.
  92.  
  93. The window update code has been slightly modified so that selecting
  94. an area is not affected by the update optimization (see #05 below).
  95.  
  96. A fair warning : Originally I was planning to use some variation
  97. of the user supported software scheme for Pcucp. I still might, if
  98. I get some practical problems solved.
  99.  
  100.  
  101. Pcucp 1.10 Beta#08
  102. ----------------------------------------------------------------------
  103.  
  104. A bug was corrected in the escape sequence translation code of
  105. the configuration file parser. The bug caused uppercase characters
  106. to be mapped to lowercase after a hex escape. This modification
  107. affects both the dos and unix end. Other slight modifications have
  108. been incorporated to the unix end as well. These should enable
  109. better error recording when opening a pseudo terminal for a new
  110. shell fails.
  111.  
  112. The windows now scroll during Edit selection. This enables
  113. selecting larger areas than the current window size. Combining
  114. Shift to selecting may still be more convenient when the areas
  115. are substantially larger than the window size.
  116.  
  117. The priorization algorithm for terminal windows has been slightly
  118. modified. Now a terminal not only gets a higher priority with
  119. input focus, but also is deprived that priority when focus is
  120. lost to any window. The former behavior left the related channel
  121. priorized when the focus moved to a non-terminal window.
  122.  
  123. The configuration examples in config.doc have been replaced with
  124. configuration file templates from which various configurations
  125. can be selected by commenting lines in/out. The dos/Windows template
  126. is readily available from the extracted package (PCUCP.CFG), while
  127. the unix template is included in the source file package (PCUCP##.TAR).
  128.  
  129. I recommend the program wdial (1.00) for dialing in the Windows-
  130. environment. This should be available (e.g.) at :
  131.  
  132.   garbo.uwasa.fi:/windows/comm/wdial100.zip
  133.   WSMR-SIMTEL20.Army.Mil:/msdos/widows3/wdial100.zip
  134.  
  135.  
  136. Pcucp 1.10 Beta#07
  137. ----------------------------------------------------------------------
  138.  
  139. The initial terminal window is now faked a resize at connection
  140. time in order to make it behave identically with terminal windows
  141. open after connection.
  142.  
  143. Pressing Shift when starting an Edit selection now resumes the
  144. previous selection. This can be used to select areas larger
  145. than the current window size.
  146.  
  147. Empty lines within the selected area are now copied on the
  148. clipboard with Edit/Copy. The former code skipped such lines.
  149.  
  150. The binary initialization file format has changed. Therefore, you
  151. may get an error message during initialization. In this case the
  152. former size and position settings are lost. On the next run
  153. (with the same configuration file) Pcucp should operate normally.
  154.  
  155. I'm planning to release this version (as 1.10a Beta) for wider
  156. distribution, provided that no severe bugs are found.
  157.  
  158.  
  159. Pcucp 1.10 Beta#06
  160. ----------------------------------------------------------------------
  161.  
  162. Two new configuration keywords are introduced with this version.
  163.  
  164. AUTOWRAP controls the autowrap feature. Note that autowrap is now
  165. enabled by default. Earlier versions had it disabled, since some
  166. programs wouldn't work correctly with autowrap enabled. My
  167. impression is that autowrap on should be the default for a real
  168. vt100.
  169.  
  170. SCRBUFSIZE controls how much memory is allocated for the display
  171. buffer in each (terminal) window. The bigger the buffer the more
  172. lines fit in the scrollback buffer (then again, the bigger the
  173. buffer, the greater the cpu overhead when scrolling ..).
  174.  
  175. As screen buffers up to 32k were introduced, a bug caused by
  176. 16-bit int oveflow was discovered and corrected.
  177.  
  178. Pcucp now stores window size and position information in a
  179. (binary) file in PCUCPDIR. The file name is same as the name of
  180. the configuration file, but with INI-suffix. The idea is that
  181. Pcucp should now 'remember' where you had each window and how big
  182. they were last time you used pcucp.
  183.  
  184. Ctrl+Ins and Shift+Ins now operate as shortcuts to Copy and Paste.
  185.  
  186. The unix-end has been slighty modified. It does no longer set a
  187. default size (80x24) when initializing a new pty, but relies on
  188. the dos end to report the window size right after opening a new
  189. shell. Sometimes it seemed that this default setting was delayed
  190. enough to replace the size reported by the dos end. In practice
  191. this means that 1.01 and older versions of Pcucp may get a pty
  192. with exotic size setting. So, if you are using an older dos end
  193. you should add something like "stty rows 24 columns 80" in e.g.
  194. your .cshrc in order to ensure correct size setting.
  195.  
  196.  
  197. Pcucp 1.10 Beta#05
  198. ----------------------------------------------------------------------
  199.  
  200. The window update code has been hacked further. Now the update
  201. is (in effect) aborted as new data arrives from the line. This
  202. results in better performance in screen content transfer, that
  203. is, maximum line usage can be maintained even when text is
  204. flooding on a large terminal window. A side effect is, of course,
  205. that a large screen may not be completely updated until input
  206. from the line ceases. (So the look and feel is again a bit more
  207. 'xtermish' :-) The realization of this feature is a bit crude
  208. and may be replaced with something smarter in the future.
  209.  
  210.  
  211. Pcucp 1.10 Beta#04
  212. ----------------------------------------------------------------------
  213.  
  214. The window update code has been modified and some bugs have been
  215. corrected. As a result the update should now be considerably faster.
  216.  
  217.  
  218. Pcucp 1.10 Beta#03
  219. ----------------------------------------------------------------------
  220.  
  221. The windows now retain their contents when resized. I tried to
  222. realize this in 'xtermish' fashion.
  223.  
  224. A bug in the window update code has been corrected. This should
  225. make the update slightly faster.
  226.  
  227.  
  228. Pcucp 1.10 Beta#02
  229. ----------------------------------------------------------------------
  230.  
  231. By the restriction of distribution in the copyright notice in
  232. read.me I want to limit the distribution of the beta versions
  233. to a small number of users until the software has been proven
  234. to be reasonably robust. So, please don't put this in a ftp-
  235. server or the like (for now).
  236.  
  237. New features since 1.01 :
  238.  
  239.   - resizeable windows
  240.   - scrollback buffer
  241.   - copy & paste
  242.  
  243. These features are functional, but need some refining.
  244.  
  245. The limit of four terminal windows has been lifted with the
  246. new version.
  247.  
  248. I'm not quite sure whether moving the document files to the
  249. form of on-line help is actually worthwhile. I presume that an
  250. user of this program has to be at such an level of expertice
  251. that there is not much need of help at run-time : the problems
  252. merely lie in setting up the program, which is probably too
  253. much for a total novice anyway. Don't get me wrong, I don't
  254. mean to look down on a novice user. I would have automated
  255. the setup procedure if I knew how to make it foolproof. It
  256. seems, however, that there is no getting away from the fact
  257. that setting up a program like this simply requires knowledge
  258. about (at least) the basics in modem communications. Users
  259. having this knowledge are not likely to be novices.
  260.  
  261. The configuration file semantics are intact from 1.01 (as is
  262. config.doc) and there should be no need to change existing
  263. configuration files at this point. New keywords are likely
  264. to be introduced in future.
  265.  
  266. 1.10 requires the unix-end to be recompiled. The new unix-end,
  267. however should be downward compatible with 1.00 and 1.01, that
  268. is, the old dos ends can be used with it.
  269.  
  270. As you have probably noted, there is no plain-dos executable
  271. for 1.10 at this point. At least this will have to wait until
  272. the Windows-version is about complete and it will probably have
  273. only a subset of the new features. The same goes (only stronger)
  274. for things like versions of Pcucp for other systems and the like.
  275.  
  276. Comments, bug reports (and proposed fixes) are welcome. Note,
  277. however, that I might not be able to answer personally.
  278.  
  279.   Jouni Leppäjärvi - jml@stekt.oulu.fi
  280.  
  281. (BTW - If you have tried to reach me with email recently
  282. (~15.5 - 15.6.93) you might want to try again. Quite a
  283. lot of mail had accumulated during that time, but I managed
  284. to corrupt some of it as an indirect result of an recent
  285. os upgrade ..)
  286.  
  287.  
  288. Known problems
  289. ----------------------------------------------------------------------
  290.  
  291. If the unix-host is under heavy load, Pcucp might not get a change
  292. to run often enough to keep line usage 100 % and so performance is
  293. degraded. Giving Pcucp a higher priority should help. This should
  294. be no actual problem, since Pcucp uses the CPU in short bursts at
  295. (relatively) long intervals and so most of the CPU time would be
  296. free for other processes. The hard part here is that you need to
  297. convince your unix-operator to do this for you :-)
  298.  
  299. Note that even in 386 Enchanced mode Pcucp's performance in file
  300. transfer is severely degraded if a dos application is executing
  301. in the foreground. In standard (and real) mode Pcucp is completely
  302. stopped when a dos application is used. In 386 enchanced mode it
  303. seems to help to have the dos-box windowed instead of full screen.
  304. Modifying the Windows background priority or the dos-box foreground
  305. priority should also help, as should a shorter minimum timeslice.
  306.  
  307. It seems that transfering files in both directions at once
  308. causes a performance hit. This is due to the fact that ACK-
  309. packets race with the constantly flowing data packets and thus
  310. an unnecessary delay is generated between sending data packets.
  311. So far, I haven't been able to figure out an actual fix for
  312. this (without compromising the interactive nature of the packet
  313. protocol).
  314.  
  315. For some reason file transfer from the pc-end is somewhat slower
  316. than that from the unix-end. The only reason I can think of is
  317. that the unix-end's response time is somewhat longer than that of
  318. the pc-end. This is actually true for the posix/sysv-versions
  319. since the sleep time between polls is constant (100 ms) and
  320. longer than that in the pc-end (55 ms). The bsd-version with
  321. the 'synchronized sleep' realized with select() should fix this,
  322. but it seems not to (?).
  323.  
  324. In a typical case the connection to the unix-host is realized
  325. trough a device that connects to the pc trough a serial line
  326. and to the unix-host trough a local network. In the following
  327. discussion such a device is known as a 'bridge'. The unfortunate
  328. thing about bridges is that they are not likely to be 8-bit-clean
  329. and hence BITCODE must be used to deal with them, which decreases
  330. the effective line speed. Also, the bridge usually not only
  331. distorts the data but also takes special actions on some character
  332. codes such as C-s, which might cause any output from the bridge
  333. to the pc to stop until a C-q is received by the bridge. Also, there
  334. might be a 'bridge escape' code which causes 'dropping back' to the
  335. bridge prompt from the unix-session. These are (more or less) useful
  336. in the usual case, but not too nice for a Pcucp user, since any
  337. special action like this causes the connection to be effectively
  338. severed. BITCODE helps to keep out of trouble most of time, but it
  339. can't help such special codes not to be generated by line errors.
  340. This is where the configuration setting SALVSTR comes in. This string
  341. is sent over the communications when the remote end has stopped
  342. responding in order to command the bridge to resume a broken session.
  343. Of course, this might not be enough to salvage the connection in all
  344. cases (or maybe not with all bridges either), but it is a simple measure
  345. which should be useful in most (?) cases.
  346.  
  347. When SALVSTR was introduced I also had to make sure that any packets
  348. echoed by the bridge when a connection is broken would not be seen as
  349. valid packets coming from the remote end. This was done by modifying
  350. the packet checksum algorithm in a way depending on the string returned
  351. by the gethostname() function. Since this function is emulated in the
  352. pc-end by returning 'PC', an unix-host named 'PC' will not work with
  353. pcucp.
  354.  
  355.  
  356. A design overwiev - how it works
  357. ----------------------------------------------------------------------
  358.  
  359. Logically, Pcucp divides the serial connection to separate
  360. channels, which are used for shells and file transfer. This
  361. is realized trough a packet protocol that splits the data
  362. stream to be transfered into chunks of suitable size - 'packets'.
  363. In addition to the actual data, some control fields are included
  364. to each packet. Most importantly, these enable data validation
  365. in the receiving end. In case the validation fails, e.g. due
  366. to a line error, the broken packet is resent from the remote
  367. end until it arrives intact. The packets also carry information
  368. about their destination channel. So, the packet protocol
  369. effectively realizes multiple reliable logical channels on a
  370. single unreliable serial data stream.
  371.  
  372. As soon as a packet is received and validated, an anknowledge
  373. (ACK) is sent to the remote end. After receiving the ACK the
  374. remote end knows that the current packet has been successfully
  375. transfered and so it can proceed to the next. If there is no
  376. ACK for the packet within a time limit, then the current packet
  377. is resent periodically until an ACK arrives. Note that this
  378. strategy also allows the ACK to be lost, provided that the
  379. receiving end is prepared to ignore duplicates of a packet.
  380. (This is realized by including a cyclic sequence number into
  381. the control fields of a packet.)
  382.  
  383. The procedure described above works as such, but it tends to
  384. waste a fraction of the line capasity, since the transmitting
  385. end has to wait idle until the ACK arrives (or the time limit
  386. expires). This can be corrected by using a 'sliding window'
  387. scheme, that is, sending more packets while waiting for the
  388. ACK for the current one. The 'sliding window' scheme realized
  389. in Pcucp uses a window size of two, that is, it sends (only)
  390. the following packet while waiting for the ACK for the current
  391. packet.
  392.  
  393. The ACK wait time before resending a packet is somewhat longer
  394. than the expected time, since resending packets when not needed
  395. would cause a severe performance hit. This results in poor
  396. performance on noisy lines. (This is, however, inherently
  397. related to all packet protocols, since in case of an error an
  398. entire packet is lost. A bigger window size would help, but
  399. in the same time compromise the interactive nature of pcucp.)
  400.  
  401. The packet protocol has a special packet type with fixed data
  402. size. This offers a saving of 1-2 bytes in the packet header.
  403. This saving is considerable on low communications speeds.
  404. Because the size of the packet is fixed, the fixed packet size
  405. definition must agree on both ends or Pcucp won't work. While
  406. PACKETSIZE in configuration file specifies the 'optimum' packet
  407. size it also specifies the fixed packet size.
  408.  
  409. Because of the fact that in most cases the serial link to the
  410. unix-host is not 8-bit-clean, that is, some characters more
  411. or less mysteriosly change, totally disappear or cause special
  412. effects, Pcucp has the ability of using only a restricted range
  413. of the 256 (=byte) codes available. This is realized through an
  414. algorithm that codes and decodes between 8-bit bytes and the
  415. restricted set. BITCODE keyword in configuration file specifies
  416. how the bytes are to be converted. Since this totally changes
  417. the interpretation of the line data, BITCODE definitions must
  418. agree in both ends for Pcucp to function at all.
  419.  
  420. A non-elegant feature of the unix-end is that the program polls its
  421. file descriptors sleeping between polls. The elegant way, I think,
  422. would be select(). But since I want to keep the most of the source
  423. modules common for both the unix- and the dos-end, this is a
  424. virtually impossible approach. The change is not even motivated by
  425. excessive CPU load : In fact, my experience suggests that the program
  426. is practically a zero load thing when idle. (Currently, the bsd-version
  427. of Pcucp actually uses select(), but not in the orthodox way.)
  428.  
  429.