Since people have been talking about pre-internet BBSs, one thing I clearly remember is the various steps involved in downloading stuff.
So suppose, purely hypothetically, that you had found a BBS which would let you downloaded pirated games. How did you actually do the downloading? Well, you needed two things:
The first thing you needed was a downloading protocol, which let your modem program know which of the various bits coming in from the modem were part of a binary file, as opposed to being text-to-display, etc. These had names like XMODEM, YMODEM and ZMODEM, in approximately increasing order of awesomeness. The better ones were faster, but they also had very important features like disconnection-recovery. If you’ve spent an hour with your 1200-baud modem and you’re 250K into a 300K file, and then your sister picks up the phone, disconnecting your modem, so your connection drops, you really want to be able to reconnect, and download just the remaining 50K. The other “killer app” was automatic download detection. So with the first generation of all of this stuff, you would connect with a special modem program, in which you would do your general “browsing” of the BBS main menu and so forth. Then when you found that this BBS did in fact have UltimaV.zip ready for download, you would tell it to start the download, then quit your modem software, then manually run “xmodem.exe -download b:ultimaV.zip” or something like that. Then XMODEM would run for an hour, at the end of which your file would be downloaded. But in a big step upward from that, later modem software would let you tell the BBS “please start downloading ultimaV.zip”, and then your modem software would automatically recognize the bits that meant “I am starting a ZMODEM download”, and immediately start it going, with the xmodem/ymodem/zmodem built right into your modem software.
The other thing you needed to do was to turn a bunch of files into a single file. The first well-known way to do that was the “.arc” (for “archive”) file format. As I remember the story (and I’m sure some googling would correct the inaccuracies here), some random company invented it, and released a program called ARC.EXE, which would take a bunch of individual files, compress them, and group them together into a single file. This worked, but was SUPER slow. So a guy named Phil Katz wrote a program that did the same thing, but WAY faster. (Actually, two programs: PKARC to compress and PKXARC to extract). Then the ARC company sued him. So he got pissed off, invented a much better format, released it to the public domain forever, and again, wrote two programs, one for compressing and one for uncompressing. They were called PKZIP and PKUNZIP, and the .zip format has been used ever since.
One final random detail I remember from those days (and this has more to do with my youthful days pirating DOS games on 5.25 inch floppies than the internet)… back in the early days of DOS games, games came on (one or more) 5.25 inch floppies. Sometimes, those floppies would just be normal DOS-formatted floppies full of files. So if you wanted to send a copy of that floppy to a BBS, you would just .zip all its files into a single .zip. But sometimes, the disk would boot up itself and have its own OS of some sort, and have no DOS files at all. (I’m now a professional programmer with two decades of experience, and I admit this still feels like magic to me.) You might or might not be able to copy a floppy disk like this, onto a blank disk, using various tools nominally designed for “archiving”, with the best known being “copyiipc”. Of course, game makers didn’t want people copying their games and sharing them for free, so there was an ongoing technology arms race in which the game makers made their floppy disks harder and harder to copy, and copyiipc and equivalent software getting better and better. (I’d be interested to hear technical details of how this worked, if anyone is familiar with it… I mean, could you physically manufacture a floppy disk where reading track 8 sector 5 wouldn’t always return the same value, and then set up your game to only boot if it read that track/sector and got inconsistent results, and thus copyiipc couldn’t replicate that, or something?)
Anyhow, copyiipc let you COPY floppy disks, but not turn them into a file you could send over a modem. But someone, in a fit of larcenous genius, wrote a program called “snatchit”. You would run snatchit. Then you would run copyiipc. And snatchit would somehow intercept what copyiipc was doing, and instead of copying from a disk to a disk, it would copy from a disk to a file. Then you could send that file, basically an entire copyiipc-disk-image, over the modem, and then on the other side, someone could run snatchit again, feed that data into a live-running copy of copyiipc, and end up with a floppy disk copy of whatever copy-protected software you were trying to pirate.
I gotta say, in retrospect, I’m impressed as hell by whoever wrote snatchit. Assuming they didn’t have access to copyiipc’s source code, they had to use some sort of primitive debugger to reverse-engineer exactly what copyiipc was doing, then write a program to leech onto that and encode all the data, then reverse that. I wouldn’t even know how to START with something like that.
Good times…