Alan Kay: The ENIAC Had No BIOS, and It Wasn't a Stored-Program Computer

Alan Kay's answer to "Did the ENIAC have a BIOS"?

Alan Kay answers whether the ENIAC had a BIOS: no, and nothing analogous to one. He sides with those who don't consider it a stored-program computer, then explores whether basic I/O code must live in firmware. Into the 1960s, computers like early DEC machines were cold-started by toggling in a few instructions; the CDC 6600 used a dead-start switch panel. The first officially named BIOS appeared in 1975 for CP/M.

I'm pretty sure it neither had a BIOS, nor anything analogous to a BIOS.
  1. retrac

    EDSAC as early as 1949 had an "initial orders" module. A boot-up ROM. There was a bank of rotary selector switches, to set the octal digits in each ROM word.

    David Wheeler (of subroutine fame) figured out the most sensible thing to put in the tiny ROM was a paper tape loader and mini-assembler that loaded the rest of itself from paper tape. So at switch-on the machine would start reading the tape input and run. Programs could be written on the teletype with mnemonics and relative addresses in octal.

    It seems a little strange that more advanced later machines like the original PDP-11 from 1970, couldn't "autostart" from ROM like that. You had to toggle in a bootloader.

    I think that was because core memory was non-volatile. (EDSAC didn't use core; it had a refreshing DRAM-like delay line memory.) With core, you only had to toggle the bootloader into once and, provided your software didn't accidentally overwrite it, it was still there after a power cycle. So re-toggling in the boot loader was not really that common, despite how much lore surrounds it.

  2. NelsonMinar

    I had Claude Opus disassemble the CDC 6600 dead start panel. The hard part was finding a better image of the switches so the vision could read the bits.¹

    The content isn't very interesting, and Claude's comments aren't very detailed. Not bad for 2 minutes of work about a 62 year old computer though. Look out Ken Shirriff, AI is coming for you.²

    Addr Octal Instruction Meaning

    0001 7512 DCN 12 Disconnect channel 12 (put it in a known idle state)

    0002 7712 FNC 12, 4000? Send function code to channel 12's device

    0003 4000? └ function code (last bit unclear: 4000 or 4001)

    0004 7712 FNC 12, 0001 Send another function code

    0005 0001 └ function code

    0006 7712 FNC 12, 1500? Send a third function code

    0007 1500? └ function code (least certain row)

    0010 2000 LDC 0160? Load A with a word count

    0011 0160? └ the count

    0012 7412 ACN 12 Activate channel 12

    0013 7112 IAM 12, 0015 Read A words from channel 12 into memory starting at 0015

    0014 0015 └ destination address

    1. https://dyninst.github.io/scalable_tools_workshop/petascale2...

    2. Not really. I have no idea if this disassembly is corrrect.

    3. Quora is prison for words.

More from this day

2026-09-27