Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!usc!sdd.hp.com!news.cs.indiana.edu!maytag!xenitec!zswamp!root From: root@zswamp.uucp (Geoffrey Welsh) Newsgroups: comp.dcom.modems Subject: Hardware Flow Control Message-ID: <251.2862CB8C@zswamp.uucp> Date: 22 Jun 91 00:12:47 GMT Organization: Izot's Swamp BBS (FidoNet), Kitchener, Ontario Lines: 58 In a letter to All, MikeB (HAL/MISSLINKS/MikeB%Traveling_Software;_Inc.@MCIMAIL.COM ) wrote: >I'm curious how exactly the RTS/CTS handshaking flow control >works between a PC and a modem. From what I've seen the >following is true: >o The CTS is asserted when the modem buffer is full >(256 bytes?). >o If a PC asserts RTS, it causes the *remote* modem to stop >sending data >although a few bytes still get through. >o There is no way to signal the local modem to stop sending >data. You seem to have inverted the idea of "asserted". The host may transmit to the modem as long as the modem has CTS asserted; when it does so is up to its firmware, but a buffer nearing full is a perfect example of a really good reason. The modem may transmit to the host as long as the host has RTS asserted; full buffer is again a good reason to de-assert RTS. In either case the other end can be expected to send a couple more bytes before noticing the handshaking lines (though I suspect that the better coded modems will send no more than one byte). If you're using an error correcting protocol between the modems, it should also support signalling between modems. Overall example: fast computer sending compressed data to a V.32 modem at 19,200 bps; slow computer (e.g. 4.77 MHz XT ) receiving from a V.32 modem at 19,200 bps (with the aid of a 16550), and the protocol is a streamer (ZMODEM, YMODEM-G, UUCP-e, etc.) When the XT's buffer is full, it drops RTS, causing the local modem stops transmitting. When its internal buffers are full, it indicates to the remote modem not to send any more data packets. When the remote modem's buffer is full, it will de-assert CTS, causing the serial driver on the sending computer to stop transmitting. Nifty, eh? Note that some of the more advanced modems implement some form of flow control, even when not in error correction mode; they send an XOFF over the phone line in the hopes that the other end understands. I usually don't use this method, since I always use error correcting protocols at speeds above 2400. >Why is RTS implemented that way? Because someone tried it that way, it worked, and others did likewise. -- Geoffrey Welsh - Operator, Izot's Swamp BBS (FidoNet 1:221/171) root@zswamp.uucp or ..uunet!watmath!xenitec!zswamp!root 602-66 Mooregate Crescent, Kitchener, ON, N2M 5E6 Canada (519)741-9553 "He who claims to know everything can't possibly know much" -me