On 02/23/2013 01:10 PM, Jules Richardson wrote:
On 02/23/2013 10:01 AM, allison wrote:
Simple solution, SLOW DOWN the data rate until it
works.
Flow control is only needed in systems that cannot handle high rates of
traffic.
On a lot of the older micros hardware flow control was best if available as
the system often was so slow it could not keep up or send xoff in a timely
fashion. Also pre enhanced 16450 usart most only could buffer maybe
1 to 3 chars in the part.
Yes, having slept on it this seems sensible - the transfer rates I'm
getting at 9600 seem to be far worse than I'd expect even with the receiver
having the overhead of a slow BASIC interpreter, suggesting that the link
might be almost saturated with XON/XOFF flow control chars. It still seems
odd that receipt of 19d as the checksum byte trips it up, when 19d at other
times doesn't; I've looked at the Linux sx code now and it doesn't seem to
be doing anything special when it sends the checksum byte that it doesn't
do for other data.
I don't think I can turn off software flow control from RSI basic (the
manual suggests that it's always present), and there seems to be no way of
changing the line speed via the basic environment either - but I think
there is a TPM util (just not included in the TPM 'install' on the RSI
disk) to set the line parameters, so I'll go hunting for that. Hopefully
the RSI interpreter honors whatever the OS has previously set up, rather
than resetting to its own defaults at startup.
Well, I found the util and dropped the line speed down to 1200 baud - and
it still dies at exactly the same point!
I seem to have a workaround in that I found a modem.sys util with a file
transfer mode that's 'compatible enough' with xmodem (it always times out
on the first packet receive, but then does the right thing and gets the
sender to re-send, after which everything transfers without trouble).
I'm still puzzled by why this was failing though; something somewhere was
obviously getting confused, but it's hard to tell what the root cause is
(or quite why it only affects the checksum byte and not other transmitted data)
Once I've got MEX or IMP set up on there (as suggested by Gene) then it
doesn't really matter, I suppose. :-)
cheers
Jules