Ctrl-Alt-Del history: non revisionist edition

Last Updated on April 30, 2023 by Dave Farquhar

When it comes to Ctrl-Alt-Del history, there’s a lot of selective memory going on.

Bill Gates said in September 2013 that he regrets the use of Ctrl-Alt-Del as a logon sequence, while David Bradley, the IBM PC engineer who built that feature into the first IBM PC, says he doesn’t know why Microsoft chose to use that sequence for logon anyway.

Both of them, for whatever reason, are forgetting a few things.

The need for a login key

Ctrl-Alt-Del history
Ctrl-Alt-Del went from being an emergency key sequence in DOS to the login sequence on Windows NT. A common underlying need was the reason why.

Gates is saying he wished they had a single key for login, and they asked IBM for one, and IBM didn’t want to make room for one on its keyboard.

But here’s the thing. The Ctrl-Alt-Del keystroke was something IBM built into its PC in 1980 or 1981, while it was under development. Development on Windows NT, which requires Ctrl-Alt-Del for login, began in 1989.

Given that the need arose in 1989, it seems unusual for Microsoft to be asking for it in 1980. For that matter, anticipating in 1980 that something you were building would still be around in 1989 seems unusual, as rapidly as the industry was changing. In the early 1980s, systems were designed with a shelf life of 1-3 years in mind. Microsoft wasn’t thinking about Windows NT at the time; in the early 1980s, Microsoft thought the future of computing was Unix. Yes, really.

Windows NT came along much later. It started out as the third iteration of OS/2, and initially was co-developed with IBM, maybe Microsoft did ask IBM to redesign the keyboard sometime in 1989 or 1990, before IBM and Microsoft went their separate ways. Given the troubled relationship between the two companies during that timeframe, it’s not surprising that IBM said no.

Why Ctrl-Alt-Del ended up being the login key sequence

So, what’s so special about Ctrl-Alt-Del?

David Bradley built it into the IBM PC as a convenience to its developers. When the IBM PC crashed, turning it off and back on was an option, but then you had to endure a memory check, which could take a while, depending on how much memory was in the machine. Sometimes it took minutes to complete. So a “soft reset” that restarted the machine while skipping the memory check was desirable. Bradley eventually settled on Ctrl-Alt-Del as the sequence because it was impossible to hit accidentally. On the original IBM PC keyboard, it took two hands to do it.

You can think of Ctrl-Alt-Del as sacred, in a way. At least it’s sacred to the x86 CPUs in PCs. That key sequence generates an interrupt, which tells the CPU to stop whatever it’s doing, no matter what it is, and do something. In this case, that something is to run a bit of code. Building it that way was the only way for a single-user, single-tasking, non-memory protected system to recover from a crash.

That sacredness was the reason Microsoft chose it to initiate the logon sequence in Windows NT. It made it virtually impossible to insert a trojan logon program that would steal your username and password. Microsoft really wanted Windows NT to get the government’s C2 security certification from the old NSA Orange Book, and this was one of the things they did to help them get it without making any changes to the underlying system architecture.

So the decision makes sense. Asking IBM to incorporate another key on the keyboard and allocate another interrupt to it makes a lot less sense.

There’s no love lost between IBM and Microsoft, and this is an indication of it. IBM saw Microsoft as a traitor, and Microsoft saw IBM as a hindrance. They needed each other for a while, and pretty much once it occurred to Microsoft that they could make a go on their own, a messy divorce was inevitable. If you’ve ever wondered why old-line Microsoft and old-line IBM employees act like an old divorced couple that hate each other, that’s why.

If you found this post informative or helpful, please share it!
%d bloggers like this: