Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!clyde!cbatt!ihnp4!chinet!ward From: ward@chinet.UUCP Newsgroups: comp.unix.questions,comp.sys.ibm.pc,comp.sys.att,comp.sources.wanted,misc.wanted Subject: Re: What is the Diff between Xmodem/Ymodem Message-ID: <988@chinet.UUCP> Date: Mon, 29-Dec-86 22:00:38 EST Article-I.D.: chinet.988 Posted: Mon Dec 29 22:00:38 1986 Date-Received: Tue, 30-Dec-86 06:36:15 EST References: <2374@psuvax1.UUCP> Reply-To: ihnp4!chinet!ward (Ward Christensen) Organization: Chinet - Public Access Unix Lines: 31 Xref: watmath comp.unix.questions:443 comp.sys.ibm.pc:671 comp.sys.att:80 comp.sources.wanted:219 misc.wanted:348 XMODEM is the protocol that was defined when I submitted MODEM.ASM to the CP/M (8080) users group in August or September '77. People didn't like my rather kludgy syntax of "modem sq" - Keith Petersen stripped down the program for use on a remote CP/M system and called it XMODEM. Since MODEM was a piece of 'hardware', the name XMODEM 'stuck' as the protocol name. My original protocol, now technically called "Xmodem checksum" or some- times "Christensen Protocol", is the most simple of the protocols. It is not all that great - chances of un-detected line errors getting through are a bit too high. Others added a CRC to make the protocol more bulletproof, thus: XMODEM-CRC. Chuck Forsberg rewrote my protocol in C for CP/M - I don't know the entire history, but he developed rb/sb (receive batch, send batch) for Unix, which 'defined' the YMODEM protocol. It typically uses 1K blocks, and a CRC. Chuck also cleverly sent a block zero (I started with block # 1 in Xmodem) to send the filename, length, date, etc (filename being the minimum). Thus rb/sb can send batches of files in 1K blocks with CRC - much more efficient than my original 128-byte record size (because that was a CP/M sector). ZMODEM is chuck's latest brainchild, which is a "sliding window" protocol, which I understand to mean "allows multiple packets to be sent before receiving an acknowledgement". UMODEM is a 'program' implementing xmodem (all the other items in your question are protocols, (though XMODEM was originally a program, too) so I'll not go into Umodem further). KERMIT was developed at Columbia (My terrible memory prevents me from properly acknowledging the authors), for micro to mainframe communications. At least ONE reason for its development was that XMODEM was unsuitable for some mainframes - such as IBM, because at the time, their communications 'front ends' didn't support the 8-bit bytes, timeouts, lack of "end of block" characters, which XMODEM, developed for micro-micro communications, required. I hope this overview answered your questions.