
ZMODEM - turrini
https://en.wikipedia.org/wiki/ZMODEM
======
anexprogrammer
> Introduced 1986; 30 years ago

Now I feel old. I remember when this was new and clever. Made downloading from
BBS's much nicer over XModem. At 2400 baud or whatever was current then!

~~~
ghaff
There were a bunch of different something-Modems around that time that fiddled
around with window sizes, retransmission approaches, batch transmission, and
so forth. In case anyone is wondering, there was a YModem (also developed by
Forsberg) in addition to XModem and ZModem along with various variants.

I even interned for a small company one summer that implemented one of these
for a timesharing service using Prime minis.

~~~
pimeys
SModem was the best. You could chat with people while downloading files.

------
lostcluster
I remember when we did our own zmodem implementation so we could bypass
download limits. Large BBS' at the time had restrictions on how many KB you
could download in a day, but they only counted completed file transfers.
ZModem had a provision for restarting failed transfers, so it was normal for a
transfer to fail before completion (call waiting!) and the user to come back
later to finish it. Our implementation could receive the last packet
successfully, then push the transfer back a few blocks (retries) and fail.

Shout out to the 519!

~~~
ConroyBumpus
Leech zmodem, scourge of the 713.

------
stevefeinstein
It's still hard to match the convenience of moving files to and from a server
with RZ/SZ.

If your terminal emulator supports it, it will see the trigger sequence
emitted and start the modem protocol over your ssh connection and save the
file.

Since it runs over your current ssh connection it's perfectly secure.

It's so much easier then switching to a local terminal to use scp to get or
put a local file. Sure, I know it's not the most efficient protocol but with
the speed of todays networks the kind of files you're dealing with when doing
administration or development are more quickly transferred by not having to do
the context switch.

If there's a mac terminal that will do scp that has shell integration on the
host. I'd switch to that, but I haven't found one. Is there?

~~~
rsync
I agree ... I forget to do this these days but in _relatively modern_ days I
used to use sz/rz all the time ... circa 2000-2004 I guess ...

~~~
Grishnakh
I _still_ use sz/rz on an almost daily basis, for doing embedded system
development. The system I work with is only accessible over UART, so rz/sz is
the only way to transfer files to the host PC (well, the only _convenient_
way; the other way is through JTAG, which is a PITA, and only useful for
imaging, not just transferring some small data file from the running system).

~~~
housel
Same here. UART isn't always the only option on my platforms, but if Ethernet,
WiFi, or USB gadget is unavailable for whatever reason, sz/rz (from Linux) or
loady (ymodem, from U-Boot) is usually the next best choice. Minicom makes
using these fairly convenient.

------
hilop
Looking b ack at stuff like Zmodem, it's instructive to compare the computing
culture then and now. Back then, everything was so _cryptic_. Documentation
was hard to find printed books, code and config was extremely abbreviated (
_sometimes_ for legitimate technical reasons of storage capacity). It was all
very off-putting unless you put w lot of effort into research, or ran in the
social circles that already had data and knowledge.

Nowadays we have an embarassment of riches of information and community and
expressiveness and usability (when the APIs aren't locked down by DRM and
trade secrets)

~~~
wvenable
The most striking thing to me was there was a huge amount of free-as-in-beer
software powering the entire BBS "network" and lots of helpful communities but
almost nothing was open source.

~~~
Grishnakh
From what I could tell, it took a long time for the academic tradition of
making the source available to work its way into the non-academic world. The
academics were using UNIX and other mainframe/minicomputer systems, but non-
academics at home didn't have much access to this stuff unless they got
themselves an account somewhere they could access through modem. So everyone
else was "raised" in the PC tradition, which came from MS-DOS and the 8-bit
micros before it. There, there was a bunch of "shareware" and a bunch of
freeware available on BBSes, but the whole idea of passing around source code
so everyone could benefit or make modifications just hadn't even come up. I
grew up on BBSes and the idea of having source code just never even occurred
to me honestly, until I started hearing about it when Linux became popular in
the early 90s. The first real open-source stuff (which was really Free
software), which pushed it as a philosophy, had to be from RMS and his GNU
project, but I never even heard of that until Linux came along, and I think it
was mostly confined to the insular academic world before this. When Linux came
along, the GNU project finally had a kernel and could be put together into an
actual working OS, and at the very same time, the internet was really catching
on outside the academic world (this is about 1992 remember), and the WWW was
only a couple years away. I'd say it was the perfect trifecta: the already-
existing GNU software and tools (glibc, gcc, etc. are really important for
having a working OS and building stuff), the Linux kernel, and the new-found
accessibility of the internet allowing global communication and collaboration.

------
tyingq
Kermit was in the same space as Zmodem. I remember it fondly, as they were
very progressive around "open source" way back in the early 90's, and probably
earlier. They accepted what was essentially a "pull request" over USENET
discussions forums from me to add a feature.

[http://www.kermitproject.org/ckfaq.html](http://www.kermitproject.org/ckfaq.html)

~~~
lokedhs
Except they were never open. You could download the code, but you were not
allowed to distribute modifications to it.

The project was cancelled in 2011, and according to the web page it's open
source now, and I think that the open sourcing didn't happen until then.

~~~
tyingq
I did put "open source" in quotes for that reason. At the time, it what
somewhat novel to be able to get the source code at all, and even more novel
that the writers would accept code from end users to put back into the
product.

~~~
qwertyuiop924
>At the time, it what somewhat novel to be able to get the source code at all

Really? IIRC, in Jason Scott's excellent BBS documentary (you should go watch
it. Like, right now. It's that good), Thom Henderson (from SEA. Remember them?
I don't, because I wasn't alive. Which is why I have to rely on documentaries)
said that it was expected in UNIX circles, which is where Kermit originated.

Or were you on PC? I don't know, I wasn't alive.

~~~
tyingq
For commercial end users of SunOS, Ultrix, etc, most of what we used was
closed source.

Kermit was not the only software you could get source code for. However, the
entire ecosystem was much smaller than what exists today.

I'll concede it may have been different in more academic environments.

~~~
qwertyuiop924
_shrugs_

Of course, in the early days of unix, you got the OS in source form, but those
were long gone by then. AFAIK, a lot of independently developed utilities were
distributed in source form, in part because it was common to have to edit the
sources and compile yourself if you weren't on the exact same architecture as
the author. But that's just what I've heard.

------
nchelluri
Who remembers IceZmodem? A backwards compatible protocol that allowed you to
play Tetris or listen to .MOD files while downloading... and if you were
downloading from an IceZmodem capable host, you'd even get increased download
speeds!

[http://textfiles.com/computers/DOCUMENTATION/izm-q&a.txt](http://textfiles.com/computers/DOCUMENTATION/izm-q&a.txt)

~~~
nchelluri
> IceZmodem (IZM) v1.1 Protocol-Chat,DOS,Editor,MORE!

> IceSoft Software presents IceZmodem, an amazing

> new Zmodem file transfer protocol with 100%

> standard Zmodem compatibility and many enhancements.

> While transferring files you can chat with the

> remote user, shell to DOS, edit a text file,

> play Digital MOD file Music, or play games.

> You can even get 2 pages of system information about

> the remote computer. Sysops can view the dropfile

> to find out who is using the BBS. It has one of the

> best status displays ever and includes a Screen

> Saver. TurboTrans, a Zmodem speed booster, has

> helped to get 99% efficiency on some file

> transfers.

> This amazing protocol simply has to be seen to

> be believed! Supports Sound Blaster or DACs

> for music.

\-
[http://archives.thebbs.org/ra90c.htm](http://archives.thebbs.org/ra90c.htm)

------
chrisfinne
This submission is a ploy by the NSA and advertisers to further refine their
demographic slot of "old hackers".

Kermit, zmodem, bbs, baud.

South Park's Member Berries are in full force here.

CoCo forever!

~~~
jcadam
Or recruiters are adding everyone who responds to their 'too
old/overqualified' blacklists.

I miss the BBS days. Very few non-geeks around. The internet just isn't the
same.

------
ceautery
Fun times. My first experience with modem file downloads was the ASCII Express
protocol on my old Apple //. Cutting my teeth on modem init strings, and
keeping current with file protocols helped me break into IT despite not having
a degree in it.

For example: "What, your Xmodem transfer always fails on the same block... oh,
you most have xon/xoff flow control turned on. Try swapping that &K4 with an
&K3 instead."

At one wacky point in my career, I ended up supporting a program "SPC"
(software protocol converter), that flipped zmodem over an X.25 network to SNA
to a mainframe. It ran on an OS2/Warp box. I wish I was making that up. I
really do.

------
codezero
This immediately reminded me of GIFLink.

It was a layer over protocols like zmodem that rendered images as they
downloaded. Think of that for a second. Modems were so slow that you could
watch the image line by line render to decide if you wanted to continue on
with the download. Yes they were porn images.

~~~
Grishnakh
I remember the "porn" images from the BBS days. They were pretty laughable
really, usually just pictures of naked women, frequently showing only their
bare breasts and obscuring the rest. I think they were frequently just scans
from Playboy, which was rather tame.

Compare to these days, where there's all kinds of crazy hard-core stuff
available for free with a quick Bing search, in both still-photo and video.

~~~
nsxwolf
No disrespect but you weren't calling the right BBSs.

------
dmd
My impression of zmodem and kermit, from 13 years ago (remembering then from a
decade prior's use):

[http://dmd.3e.org/2003/12/zmodem-vs-
kermit/](http://dmd.3e.org/2003/12/zmodem-vs-kermit/)

~~~
jejones3141
Kermit's design accommodated connections that zmodem couldn't (half-duplex,
connections that don't let one send some control characters. seven bit
connections, or connections between systems using ASCII and systems using
EBCDIC), and the basic protocol was easy to write. You could use Kermit to
send data between your C-64 and a Cray 1 or Burroughs Large system--and it was
used to send data from the International Space Station to earth. Later
versions supported sliding windows and large packets where possible and let
one selectively quote characters, while still providing backwards
compatibility with earlier versions.

~~~
dmd
Well, yeah, exactly. Kermit was slow and careful and pretty well guaranteed to
get your data across _correctly_ , eventually.

Zmodem was more of a fast motorcycle. Your data might not always make it there
alive in a rainstorm, but it was quick and and had fun doing it.

------
notlisted
Surprised nobody mentioned BiModem in the comments (popular at least in
Europe). Simultaneous up- and downloads, which was great to get keep those
up/down ratios at their proper levels.

~~~
spacemanmatt
I loved BiModem. I used it to transfer files in both directions simultaneously
while also chatting with the remote party. Very cool for the time.

------
qwertyuiop924
BBSes: Yet another technology I missed, because I wasn't alive. Ah well.

Speaking of things that I wasn't there for, did you know TinyTIM's still up?
Sketch (perhaps better known around here as Jason Scott) hasn't actually
killed it because it's so cheap to run. Mind, nobody's actually around
anymore, but you can explore the relics of a once-great civilization over at
[http://www.tim.org/](http://www.tim.org/).

------
robmiller
I was a little kid connecting to the US gov list of 800 number BBSes and
always had fun choosing Kermit as my protocol, but ZModem was much faster!

~~~
stan_rogers
The trick was to split. ZMODEM down (or YMODEM before that) and Kermit up.

------
jamesbrownuhh
I remember trying out Zmodem early on, only to find that it obviously had some
kind of bug in that it would reliably and consistently drop the line after a
certain amount of data had been transferred.

Not so, of course - but unlike Xmodem and Ymodem which acknowledged every
packet (and slowed things down), Zmodem would not constantly ack back to the
host unless there was an error... So this triggered the modem's inactivity
timeout, since despite the constant stream of data coming down from the remote
system, there were no "keystrokes" or other packets travelling in the other
direction. Hence, after X minutes... Line drop.

Easily sorted with a few AT commands, eventually. :)

------
batbomb
See also BBCP:

[http://www.slac.stanford.edu/~abh/bbcp/](http://www.slac.stanford.edu/~abh/bbcp/)

[http://www.slac.stanford.edu/~abh/bbcp/bbcp.git/](http://www.slac.stanford.edu/~abh/bbcp/bbcp.git/)

------
cyberjunkie
The sheer joy of the rare sights of decent transfer rates and counting every
single 'block' progress. Wew!

------
bronson
When modeming into the university unix system, I really enjoyed being able to
type `sz file` and bam the file is on my local machine, with progress meter
and everything.

So I wrote rzh, "receive zmodem here". Navigate to where you want to receive
files, run rzh (which gives you a subshell) then ssh anywhere. Bounce through
six machines if you want. When you sz a file, rzh will receive it.

[https://github.com/bronson/rzh](https://github.com/bronson/rzh)

Haven't touched it much in a decade, alas.

------
dewyatt
I think I used ZMODEM to pull a core dump off a McData FC switch a couple
years ago. Used the core dump to recover the password for the switch.

------
teh_klev
Just to add to the nostalgia, back in the day we used to use a protocol/app
called BLAST[0] to grab data off of Data General mini-computers onto PC's back
in the 80's. Hugely simple to use and damned reliable.

[0]:
[https://en.wikipedia.org/wiki/BLAST_(protocol)](https://en.wikipedia.org/wiki/BLAST_\(protocol\))

------
koytch
Zmodem's code is uglier than Kermit's IMO. Gods help you if you have to read
either, but Kermit is written better and EK is almost understandable once you
fold all unneeded #define's.

I'm surprised no-one mentioned the venerable UUCP. It has more variants than
X/Y/Zmodem combined: at least 12.

------
michaelcampbell
I had a small "brush with greatness" in ... ~1984, or so? I was on Compuserve
at 1200 baud, and although I forget the circumstance, I had a cserve "chat"
with Ward Christensen; the inventor of Xmodem. I can't even remember what we
talked about, but he was surprised that I knew who he was just by his name.

------
logotype
Ah, the good old days. I ran a BBS in Sweden with ProBoard. Anyone else used
that for BBS'es here?

~~~
ucs
I ran TriBBS for years as a kid in the Maryland/DC metro area (301).

My OS of choice was OS/2 Warp. It could handle a full-time, two-node BBS and
still allow me to do other tasks without skipping a beat -- all on a 486 with
8 MB of RAM!

I also remember being rather envious of how cool Renegade, WWIV and company
looked. Not to mention the more exotic software powering the, er, rather more
questionable boards: software with ominous names like ViSiON-X or
Oblivion/2... But after trying them all, I eventually switched from TriBBS to
PCBoard.

It was the right choice: I loved the flexibility of PCBoard's scripting
language and C SDK. Adding functionality to my BBS is what prompted me to pony
up for Borland's Turbo C++ and get serious about programming.

------
kevin_thibedeau
The sad thing is I'm stuck on a codebase that uses Xmodem for core operations
and have to forgo such niceties as having file name, size, and timestamp
automatically handled. I don't know why they didn't just implement Ymodem like
they should have.

------
johng
My favorite was HS/Link -- upload and download at the same time with speeds
superior to Zmodem? Yes please!

[https://en.wikipedia.org/wiki/HS/Link](https://en.wikipedia.org/wiki/HS/Link)

------
Clubber
We used this in the BBS days.

~~~
revelation
Still use this today, it's what you do with an embedded device when all you
have is a serial line and need to get files on/off.

Slow as hell though, but then I didn't grow up with this stuff.

~~~
pmoriarty
Screen[1] contains an implementation of zmodem (and is one of screen's
advantages over tmux). I've used it before on VMs on which I had a serial
console but no network connection or other way to get/put files.

[1] -
[https://www.gnu.org/software/screen/](https://www.gnu.org/software/screen/)

~~~
geocrasher
Very cool! I didn't realize screen had this. I've always used sz/rz when
needed. It's kludgy but comes in handy every so often. I have it installed on
all my linux boxes for that special occasion.

------
j45
Zmodem was the first big leap forward. Interesting how efficiency is baked
into the brains of so many folks who used to have to think about every byte
they might transmit or receive.

------
blank_dan
I'm disappointed that the wikipedia article makes no mention of Yam. Which
boasted of the worst user interface ever invented.

------
booleanbetrayal
I miss the days of ZModem and YModem.

------
scoopr
All the cool kids used SModem, which allowed for downloading and chatting at
the same time!

~~~
spacemanmatt
Neat - I thought BiModem was the only one that supported that!

------
api
Ahh, the BBS days. 513 represent!

------
mycall
KERMIT is still used for deep sea beacon communications.

------
RRRA
Have a look at zssh.

... and shoutout to the 514 ;-)

