Bootstrapping The Old Fashioned Way

The PDP-11, the Altair 8800, and the IMSAI 8080 were some of the heroes of the computer revolution, and they have something in common — front panel switches, and a lot of them. You probably have a fuzzy idea about those switches, maybe from reading Levy’s Hackers, where the painful process of toggling in programs is briefly described. But how exactly does it work? Well thanks to [Dave Plummer] of Dave’s Garage, now we have a handy tutorial. The exact computer in question is a reproduction of the IMSAI 8080, the computer made famous by a young Matthew Broderick in Wargames. [Dave] managed to score the reproduction and a viewer saved him the time of assembly.

The example program is a Larson Scanner, AKA making an strip of lights push a pulse of light across the strip. [Dave] starts with the Assembly code, a scant 11 lines, and runs it through an assembler available online. That gives us machine code, but there’s no hex keypad for input, so we need those in 8-bit binary bytes. To actually program the machine, you set the address switches to your start-of-program location, and the data switches to your first byte. The “deposit” switch sets that byte, while the “deposit next” switch increments the address and then stores the value. It means you don’t have to key in an address for each instruction, just the data. Get to the end of the program, confirm the address is set to the start, and flick run. Hope you toggled everything in correctly. If so, you’re rewarded with a friendly scanner so reminiscent of 80s TV shows. Stick around after the break to see the demonstration!

62 thoughts on “Bootstrapping The Old Fashioned Way

    1. once designed a piece of hardware to go into a vax. showed up at the customer site one day with my prototype, my trusty kaypro 10, and a vax assembly reference card. i’d hand-assemble scope loops, poke them into the console of the vax using kermit, and probe around with an oscilloscope. when i first showed up, they were “how quaint.” then it was “hey! scope loops fast enough to see on a scope!” (they were using an interactive interpreter under ultrix for their debugging). by the time i left it was “show us how you did that!”

    2. Same but with Z80 code. Also typed in the 12K of hex digits for TRS80 LII BASIC into my S100 machine over a week or two, saving on cassette tape each time, and patching the keyboard and screen routines by depositing values in my machine monitor.

  1. Way back, I had a job at an ATM repair depot, the boot code was entered by switches to get the control unit up. Found it peculiar given the level of sophistication of the machine to spit out cash unerringly.

    1. Well .. doing it that way, at least you have no doubt as to the source of what was booted. Unlike the dubious proposition of connecting it to literally every other computer on the planet, and then relinquishing your control to some ‘TPM’ so some faceless corporation can, in theory, prevent the baddies from controlling it.

      1. A TPM is basically just the guts of a Yubikey (a crypto processor and secure storage) on a motherboard. Nobody is controlling you with it. They can be pretty handy, too.(even with secure boot, you can either use a signed shim or enroll your own keys.) At least on desktops and laptops, things that weren’t meant to be general purpose are another matter.

  2. I entered a bootstrap sequence in octal in Oscar’s PDP 11/70 simulator that I have — just once (well a couple times to get right) and rewarded with a booted system. Not something I want to spend time doing every time :) . A whole program must have been a royal pain in those days….

    1. the pdp-8 bootstrap we used to use was two words long. it lit off a read that had been set up by reset, then looped to itself until that was overwritten by data coming from the disk.

    2. I left my first job out of college as a result of bootstrapping PDP 11 systems used to test jet engines. You had to key in the 16-bit address and then key in the 16-bit command for that address before moving on to the next line of code. It was rather lengthy but after doing it so many times I had it memorized. One day my boss came in and saw me doing the task and asked what I was doing. I told him that I was bootstrapping the system in order to receive the tape program input. He said that I couldn’t be because I did not have a piece of paper in front of me. I explained that I had it memorized. He said that’s impossible. As I was just finishing, I went back to the beginning and showed him line by line that everything was exactly correct. He blew his stack and yelled at me. I turned in my resignation within 2 weeks. Ah, those were the days. 😉

  3. On the HP1000’s, PDPs and I’m sure many other minicomputers, it was common to enter any manner of blinking lights programs that had the purpose of telling us how busy the computer was. The blinking lights program was always set to the lowest priority, so the faster the lights went from side to side, generally meant the less busy the computer was.

    1. I recall a PDP with a few of these. The lights were setup to show the useful programs jumping from device to device as the light blinkers were swapped out. Was cool but cost 10% of the machines time so they weren’t left installed.

    2. Supposedly you could get yourself a cheap transistor radio, tune it to an unused part of the AM band, and get an idea what the computer was doing. A properly running program would have a sound distinct from one hung up in a loop, etc.

      1. I did that with a calculator I once had: Texas Instruments programmable with red LEDs. The program was to find the smallest factor greater than one. While it was running, very slowly, the screen was off, when it found the factor, the screen displayed the number. When it did so, the RF generated from the screen was very noisy in the AM band, and not hisses but rapid chirps and “toodley-doos”. I could work away on whatever school assignment, and when I heard the racket, could see what the factor was.

      2. I can confirm that yes, you could do this. The early personal computers were not RF shielded and generated a lot of radio noise that varied according to what they were doing. An infinite loop was a distinct sound because it kept going indefinitely. These machines did not usually have interrupts either for multitasking or I/O.

  4. I used to work in the minicomputer industry. Flipping switches and/or punching data on a hex keypad was an every day occurrence to get the bootloader in off the tape or disk drive. Had the sequences memorized, about 28 or so 32-bit instructions/data entries. To this day I can instantly translate binary-to-hex and back on sight.

    Separately, back in the early 80’s a friend had an actual IMSAI 8080. We worked together to design a circuit that flashed a bunch of different patterns on 8 LEDs, well beyond the Larsen Scanner pattern. It was meant to be a conversation starter for parties and trips to theme parks. The playback was from a PROM with binary counters clocked by a 555, using the 555 as the Least Significant Bit so we could get 512 locations. All the patterns were developed using the IMSAI’s display, and we got the data pattern for the PROM from that.

    1. Worked on a IBM PI2 on the USAF AWACS platform, still ran the bootloader this way in the late 90s. Also troubleshot ram by cycling through the memory addresses one at a time looking for hung/dead bits. Fun times.

  5. I traded an IMSIA 8080 and a dual floppy cabinet and a 5 foot tall stack of 8″ disks for a then brand new Compaq Portable III 286. I still have the Compaq and wish to heaven I had never made that trade. Still, in hindsight I did get a lot more actual work done with the Compaq.

          1. Joshua said: “Let’s don’t forget the afterglow effect, also. No Larson scanner is complete without one. Of course, this cannot be simulated on a front panel.”

            This absolutely can be simulated on a front panel, or anywhere else for that matter. All you need is control in time over the brightness of each lamp in the scanner. Today an 8-bit microcontroller sequencing some red LEDs is a great solution.[1] The brightness of each LED is set using pulse-width-modulation (PWM).[2] The whole scanner display is updated fast enough so that because of human persistence-of-vision it appears to operate smoothly.[3] See an example working in [4] below.

            1. Proper Larson Scanner with Software PWM [Code]

            https://pastebin.com/ZAR4a3TJ

            2. Pulse-Width Modulation

            https://en.wikipedia.org/wiki/Pulse-width_modulation

            3. Persistence of Vision

            https://en.wikipedia.org/wiki/Persistence_of_vision

            4. Larson scanner 8 LEDs with PWM on arduino mega version 2 [00:38 YouTube Video]

            https://www.youtube.com/watch?v=VouhhZyNnHY

  6. I remember bootstrapping a “small” IBM 1130 Computing System (introduced in 1965) with console toggle switches.[1][2] A necessary step if the 1130 isn’t already set up to Initial Program load (IPL or boot) from an external device such as a IBM 2310 removable cartridge drive containing a 14-inch IBM 2315 1,024,000 byte removable disk cartridge [3], a punched card reader, or a punched paper tape reader. The IPL procedure is buried in the operating manual or “Practices” that were thousands of pages deep housed in roll-around carts low enough to read from while seated at the operating console.
    1. IBM 1130 Computing System
    https://www.technikum29.de/en/computer/ibm1130
    2. IBM 1130
    https://en.wikipedia.org/wiki/IBM_1130
    3. IBM 2310 Removable Disk Drive
    https://en.wikipedia.org/wiki/History_of_IBM_magnetic_disk_drives#IBM_2310

  7. I demonstrated this to my grandson using a PDP-11 emulator I have, just as I used to do on the real thing 50 years ago. He just couldn’t grasp it. He shook his head at a roll of papertape I showed him. But he did rather like the (text version) of the “tank” game in the terminal emulator!

    1. I believe that we are an Old Guard. We grew up with the evolution of Digital Computers, so we understand how they do what they do, and how it got here.
      Today’s Generations learning this stuff, need to jump into what they do, and how much it can help of a particular purpose. The actual Nuts and Bolts are separated from results as generally it’s take too long to learn, before you get to the ‘Fun Stuff’.

      I think it’s now a ‘Hardware OR Software’ for a learning course today. In the Early Computer times, it was ‘Software AND Hardware’ learning to get an end result. It was all blended into the same package.

      1. Kids today still get a blast out of playing with a “boot to BASIC” (or nearly) home micro, just as I did. Even with much nicer programming environments available (block based programming, controlling an actual robot) there’s something about typing “print b” and seeing it display the “secret number” you taught it.

        Yeah I’ve got a floppy drive for the apple iigs, just have no disks. Building a serial cable for ADT pro…

  8. I still have the first computer I ever heard about anyone having at home – a PDP-8e.
    I did have a program that would make the lights move, also toggled in as I don’t have a teletype.
    I got mine years later, but at least one person paid the cost of a Buick to buy a system with 4K 12 bit words and the only permanent storage was paper tape.

      1. This is a reply to a few other posts.
        I once met a technician who was one of those who built Whirlwind. Back then, there was a Computer Museum in Boston, and one of the register flip-flops on display had his initials.
        As for useful skills, I could still unjam or change the ribbon in an 029 keypunch.
        The oldest calculating device I own is an adding machine from the 1920’s – several columns of keys and a hand lever to add.
        Plus a possibly older Underwood typewriter that I learned to type on. Broken now, unfortunately.
        And I am still working as a software engineer, mostly on Linux. My *ix experience goes back to Ultrix (DEC’s version of 4.2 BSD Unix). It would take too long to list the languages I have used.
        Like I said, I should retire to the Living Computer History Museum as an exhibit.

  9. Yes, I remember in that being done with an IBM 1130, which actually had a lot of room to put the radio inside. I could do some name dropping to say who showed me that. Let’s just say he also wrote a LISP interpreter for the machine.
    As from my comments, it is clear I should retire to the Living Computer History Museum as an exhibit.

  10. Spent a lot of time with the IBM 1130. This one did have the IPL button and the “cold start” binary cards – which were a pain to reproduce because the 029 keypunch would jam if you tried to do the entire card at once. Had to dup, let go of the key, dup some more….
    And the disk drive took over 2 seconds to seek from one end to the other.

  11. This post brings back fond memories! My first hands-on experience with a computer was in 1971. Our high school computer club briefly had use of a PDP-8 and we took full advantage, spending hours on it every afternoon. You had to toggle in the bootstrap loader, so the program of interest could be loaded from paper tape. Most commonly for us that was FOCAL – an interpreted language like BASIC in which we could write and play text based games.

    The PDP-8 had a 12 bit word, so most addresses and data were written as four digit octal numbers. You quickly developed a “muscle memory” for how to place your fingers to toggle in three bits at a time. It really was no trouble at all to toggle in the bootstrap loader.

    Just a few years later I was working for a software company. We had an RJE emulator (a system for remotely submitting batch jobs to a mainframe computer) that was built around a PDP-8! Still the same process to bootstrap it, but the RJE software was loaded from a card deck instead of paper tape. It was like seeing an old friend. :)

  12. I worked for the company that supplied the prop computer for Wargames and built an S-100 card to blink the lights on the front panel at a rate that might be picked up on camera.

    There were instructions on how to start it up pasted to the underside of the keyboard, but you don’t see the lights doing anything in the film. Either they never started the program, or 1970s LEDs got washed out by the set lighting.

  13. Back in the early ’80s I my job was assembling and commissioning Medical Linear Accelerators used in radiation therapy for Atomic Energy of Canada Ltd. The PDP 11/04 computer that controlled the Linac required that I type in a 66 character program into a KSR43 and run it which would read in a short 110 byte long paper tape boot loader which would then load the main program off a stack of fan-fold paper tape. We’d have to stack up paper tape between a couple of boxes, then start the load and head off for coffee break while the tape fed through. Not very elegant, but we only had to do it once per machine. My first personal computer was a MicroAce Z80 which was a clone of the Sinclair ZX-80 and came as a kit. My first ‘real’ computer was the venerable Radio Shack Model III with 16K ram. I saved and loaded programs on a cassette tape from a cheap portable tape recorder. Some tapes required a lot of fiddling with volume control to load. My first word processor was one typed in from the Micro-80 magazine. It wasn’t even smart enough to do a carriage return at the end of a line. I remember typing in another program that was a crude precursor to a spreadsheet. It could only handle a few cells with the memory available, but it seemed like magic.
    I got the Model III computer as part of a Microprocessor and Electronics course that I did by CORRESPONDENCE through McGraw Hill. Yep, they would send me course booklets, I would study the content then fill out answers on an answer booklet that I would mail back to them by snail mail. They would then send the next installment of the course. I eventually finished and began a career in electronics starting with a job assembling, then testing Scanning Electron Microscopes, then went on to work at a company called Gandalf Electronics which made commercial grade modems. Eventually ended up at Atomic Energy, then worked for the local Cancer Clinic. Then in 1997 I got my MCSE on Windows NT4 and worked as a systems engineer until my retirement in 2019. Never went to college, but I did okay.

    Man, those were the good old days. 😉

  14. Hm. Interesting, but also confusing.
    I don’t get it why this is seen as some sort of skill or something along these lines.
    With patience, everyone can memorize pushing buttons after a while.

    Also, why not do something useful with this wonderful machine and run a real OS, like MP/M? It can real programs, CP/M programs. Not just the equivalent of some batch files.

    Or if you really want to aquire a new skill set, why not learn an instrument or learn morse telegraphy (ideally, about 60 BPM) ? Being able to play an instrument greatly helps for mastering the latter.

    Best wishes,
    Joshua

  15. I remember hand-assembling code for the 6800-based Heathkit Microprocessor Trainer and entering it on a hex keypad with a 14-segment LED display. I’d taken a two-semester course at the local community college around 1980 in which the first semester involved studying the schematics and the second involved learning to program it. It was a great foundation for a career in programming and digital electronic design.

Leave a Reply to faboCancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.