Things Every Hacker Once Knew: 1.6

The newest version is here.

I think it’s stabilizing. The rate of comments and submissions has been dropping.


     How VDTs explain some heritage programs, and how bitmapped
     displays eventually obsolesced them. Explain why the ADM-3
     was called "dumb" even though it was smart.

There’s also a mention of RS-323 on network gear.

Still nothing about XMODEM/YMODEM/ZMODEM – that’s probably the most requested addition left, but I really don’t see what could be interesting to say about them at this late date.

The reaction to this on my Patreon feed has been impressive. It seems to have driven $300-$400 of new subscriptions.


    1. >So the ADM-3 was dumb, the -3A was smart.

      Good catch! I’ve shipped a corrected 1.6.

      The interesting datum is that the 3 was a dumb terminal, then the 3A was a smart terminal still marketed as “the dumb terminal”.

      I knew this was screwy even at the time – I owned a 3A for a while, as I mentioned in a previous comment. But this makes the transition from “dumb” to “smart” really sharp. It was in mid-’75. Before that, the ADM-3 and VT-50 could not cursor-address; after that, the VT-52 and ADM-3A could.

  1. There were several problems solved and created by X/Y/Zmodem.
    XMODEM originally used 128 byte blocks with a checksum (I think 128 dates back to CP/M)
    Then they figured out checksums were wrong, and replaced the initial Ack with a ‘C’ and used a two byte CRC. But neither side did metadata.
    YMMODEM put the metadata (filename, date, size) in the 0th block, then used 1K blocks to make it faster.

    One reason was Telenet/Tymnet x.25 and PC Pursuit. Because there was a block size of around 120 bytes, it would send 90% of the packet to the local PAD (packet assembler, disassembler), then it would be pushed over, then the last 10% and then a timeout before the last part of the XModem packet would be sent, then the ack in the other direction would have a similar delay.

    Ymodem minimized that, but there was also a windowed XModem that you could send continuously and have enumerated packets acked. There were a few other YModem variants including one for good connections that just blasted data, but if one error the whole file needed to be resent.

    (Note I have an embedded system that is only large enough to do YModem so implemented it and I’m having flashbacks)

    ZModem was done as a public domain (before opensource was coined) implementation to make things faster. The packets can resize themselves based on line noise – lots of naks and they get smaller, few they get larger. It uses CRC32. It was before the compression wars, or at least you had ARC and PKARC then PKZIP to create compressed archives. ZModem would have all the metadata, could swap between IBM and UNIX conventions, and could send multiple files with one command. It was also big and one of the original “try to make C portable across everything” ugliness, pre GNU autotools, so it is a lesson in what “portable C” meant back then.

    I should also add the compression wars between ARC and ZIP is another interesting chapter – the various algorithms used and history.

  2. I wonder why the VT50 didn’t have cursor addressing when the VT05 did. The VT05 also had 20 lines, compared to the VT50’s 12. Seems like a strange step backwards.

    But maybe it was too expensive. The ADM-1 also had cursor addressing, in 1973, along with lots of other features the ADM-3a lacks (send line and send page for mainframe-style local editing), and is also an uppercase-only terminal (with ASR-33-style shifted-letter symbols)

    So I think what we’re seeing in 1975 is a category of minimally smart terminals, at a lower price point, with basically only cursor addressing (and lowercase, to the extent that was still a feature). Practically seems tailor-made for Unix (did other mini OSes have the same I/O model?)

    1. >So I think what we’re seeing in 1975 is a category of minimally smart terminals, at a lower price point

      Agreed. Also, the 1975 debuts seem to have been the first combination of cursor addressing with what we now think of as a standard-sized display – 24×80 or 25×80. It is at this point that we see the “classic” VDT emerge.

      >Practically seems tailor-made for Unix (did other mini OSes have the same I/O model?)

      Yes. The same combination of features that made sense for Unix made sense for earlier and later operating systems designed on DEC hardware – notably for TOPS-10 on the PDP-10, which is what these terminals were supporting when I first encountered them.

  3. Pointers to the wikipedia pages on Minicom, Telix, and Procomm are pertinent to how BBSing was done in the late 80s/early 90s, which is the predominant reason that Y/Z/modem evolved the way it did, and which this entire page is kind of background to.

  4. The HTML for the Hayes bit sequence got screwed up somehow. Missing the right parens, and then the “+” in the description is MIA as well.

Leave a comment

Your email address will not be published. Required fields are marked *