home *** CD-ROM | disk | FTP | other *** search
- Date: Saturday, 14 December 1985
- From: Keith Petersen, W8SDZ
- Re: MODEM/XMODEM robustness improvement on EOT tests successful
-
- One of the most serious shortcomings of the Christensen protocol is
- that a single EOT (04h) received during a protocol transfer is taken
- by the receiver as end-of-file. In the presense of noise, this can -
- and does occur. The result is an incomplete file on the receiving end
- and an abort after ten retries on the sending end.
-
- Frank Wancho and I have been experimenting with the idea of the
- receiving end sending a NAK when it gets the first EOT (or what it
- thinks is an EOT). The sender will send another EOT in response to
- this if it's really EOT. Otherwise, it will send SOH and the next
- record, thus allowing the receiver to recover from a false EOT.
-
- I have tried this with an experimental version of XMODEM (no source
- for IMP or MEX, so can't try them). It works perfectly.
-
- The code looks something like this:
-
- [Already have character here, expecting SOH for new record]
-
- TSTSOH if SOH then Jump to GOTSOH which gets rest of header, etc.
- if not EOT then Jump to SENDNAK
-
- else wait for one second of no received chars, send NAK
-
- then do:
-
- quick purge of input port to clear garbage
- wait up to 10 seconds for another character
- if timeout Jump to timeout routine
- if character is EOT return to caller with flag set
- Character was not EOT, Jump to TSTSOH to test for others
-
- --END OF ROUTINE--
-
- SENDNAK is same as always, wait for one second of no characters, send
- NAK, increment error count, Jump to receive loop.
-
- The only visable evidence that this improved code is in place is that
- the sender shows one error message: ** NAK received, not ACK **
- after it sends the real EOT. It just sends another, so no problem.
-
- Earlier versions of various Christensen MODEM programs would send EOTs
- forever (it was a closed loop). I have a max ten counter in the
- SENDEOT routine. The latest versions of IMP and KMD have only a three
- counter there, which I consider too low. The program should attempt
- to send EOT ten times, same as it does for any other received NAK
- during the file transfer.
-
- After we're through testing it, Frank will be releasing the improved
- Tops-20 MODEM program. I am still working on XMODEM for CP/M-80. It
- has so many conditional assembly switches and code dependant on other
- programs, such as BYE and ZCPR, that I am making a new program without
- all this rampent featuritus, which I will be releasing soon as XMD.
-
- --Keith
-