home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / OSK / TELECOM / rzsz_3_24_3_OSK.lzh / Notes.CoCo < prev    next >
Text File  |  1993-11-07  |  5KB  |  97 lines

  1. Notes for CoCo users:
  2. ---------------------
  3. It is highly recomended that you use one of the Bruce Isted RS-232 drivers
  4. (SAcia or DAcia) from the Eliminator Software package if you are using a
  5. "standard" RS-232. Also, you should install one of the new clock modules that
  6. has the GIME toggle IRQ fix. If you have a "Halting" floppy/HD controller, you
  7. should use a RAMDISK device for Zmodem receives. Finally, note that proper
  8. RTS/CTS hardware handshakeing is required for reliable operation at speeds over
  9. 2400 baud (Most versions of "Standard" RS-232 paks have a 6551 ACIA chip in it
  10. that does NOT handle CTS transitions properly)
  11. --
  12. PrJ
  13.  
  14.  
  15.  
  16. Notes for CoCo hackers:
  17. -----------------------
  18. To compile this source on the CoCo, you will need Tim Keintzles make utility,
  19. Carl Krieders clib.l, and C_Prep 1.8 (or newer). The stock c.prep dies due to
  20. the massive amounts of "#define" directives.
  21. --
  22. PrJ
  23.  
  24.  
  25. Hand optimization to enhance speed by Maurice E. (Gene) Heskett, who does
  26. NOT claim to be a C guru, and who will not be responsible for its miss-use
  27. or erronious performance in any way.
  28.  
  29. The code included here is NOT 6309 specific.
  30.  
  31. When the original rzsz program package available here in the database was
  32. compiled, it was apparently done using the standard distribution clib.l at
  33. link time. It doesn't really make that much difference in the area I've been
  34. re-working however since all the available libraries share one rather
  35. glaring fault when its time to do a shift operation such as is called for by
  36. finding a set of >> to the right of a variables name in a line of code.
  37.  
  38. Now, one thing that is in common for both 16 and 32 bit versions of a crc
  39. generator for telecom useage is that the most common shift by far is a "by
  40. 8" shift. This shift is very easily done in assembly with the nemonic pair
  41. of "tfr a,b" and "clra", (or the reverse direction) for doing a right shift
  42. of 8 bits, 20+ times faster to do than the "test for done, if not do one
  43. bit, branch to test", particularly if the shift is over a 'long' instead of
  44. an integer (or byte) Why the original compilers library didn't test for an 8
  45. bit or multiple thereof shift request and sub the correct tfr's is beyond
  46. me, but so far none of them do. Boisy tells me he might look into that
  47. eventually so all isn't lost.  If that was done, then anybody could expect a
  48. speedup in his C programs without having to do the monkey business of hand
  49. tweeking the .a file the compiler can make if given that option and then
  50. continueing the compile to the target .r file for eventual linking into
  51. runnable object.  This hand tweek will get the faster code though.
  52.  
  53. Here is a set of rz and sz object files which have had the crc routines hand
  54. optimized to handle both the 16 bit and the 32 bit shifts entirely in the
  55. processor registers or directly in memory without resorting to the slower
  56. library calls.  That did not remove the library code totally as sz in
  57. particular has shifter calls for both 6 and 7 bit shifts.
  58.  
  59.  
  60. In testing this code over a 14.4/V42BIS hookup, I did find one item that
  61. could create some #$%&*)($# comments in the case of rz.  The problem, or
  62. potential problem has to do with the size of buffer assigned to Sacia via
  63. the 'xtp' byte in the /t2 descriptor.  I had been running with it set for
  64. 3840 bytes here with xtp=$0F.  After we had crashed out in the middle of the
  65. testers returning the sz test file to me on 3 occasions, it came to us at
  66. about the same time that the input buffer shouldn't exceed the block size,
  67. else there would be so much data in the buffer thats unread that it would
  68. never get back in sync once an error repeat command had been sent. And it
  69. apparently exited so quickly that no error message could have been read had
  70. it been issued on this end.  The errors reported were reported on the
  71. sending end however.
  72.  
  73. So I changed the bootfile's /t2 descriptor so reduce it down to only 3 pages,
  74. or 768 bytes. Then rebooted.  Now the rts lights on the sniffer show a lot
  75. more activity as it controls the data flow, but it never overruns the
  76. present frame of data being moved. And it worked just fine. Now I could see
  77. where some systems that start out at 512 byte frames could still overrun it,
  78. Delphi runs the first 10k at 512 byte frames, but at the same time, we're
  79. not gonna worry about it very much unless Delphi installs some hi speed
  80. lines. Anybody else I've called has *always* sent the first frame at 1024
  81. bytes.
  82.  
  83. Our rz speeds weren't too bad, until I reduced the buffer. As long as we
  84. could buffer it, the data came in at rates between 1136 and 1280 cps. The
  85. reduced buffer size cut into the speed since it was holding the other end up
  86. in mid frame.  The average rz speed over a 24k file was then about 580 cps.
  87. sz, in this latest incarnation sent at a pretty steady 351 cps.  Neither of
  88. those last 2 real world figures are anywhere near a good 9600 baud circuit
  89. *yet*. Stay tuned!  I've got some untested ideas yet.  Note that both of the
  90. first 2 rz figures are *above* the 960 cps a 9600 baud circuit should be
  91. able to handle, so the Amiga timer/counter might not be dead accurate that
  92. we were using to "meter" this test.  His com prog is set to talk to his
  93. modem at 57,600 I think. He has logged a maximum xfer rate at 5200+ cps a
  94. couple of times.
  95. --
  96. Cheers, Gene Heskett
  97.