David Bradley graduated in 1971 from the University of Dayton (Ohio), the same year Intel released the 4004 processor, and received his Ph.D. from Purdue University the same year the Altair construction kit came out. “The first computer I would have used would have been an [IBM] 360”, he said. He joined IBM in June 1975 and worked and worked with a System/23 Datamaster in 1978, the first IBM computer with a non-IBM processor. For the PC, he wrote the whole BIOS. “I wrote all the code with the exception of the cassette control and the power-on tests”, he commented.
He has recently told us how he came up with the Alt-Ctrl-Del combination:
At some point during the development of the IBM PC BIOS, probably in January 1981, we had a development problem. A lot of new software was coming out and being tested and, as often happens with new software, it stops running, and it hangs the machine. When the programs you write are in assembly, there are many chances of something like this happening. Unless you are working with a motherboard that is not inside a case, the only way to restart the machine was to disconnect the power, wait a few seconds for the capacitors to discharge, then switch the machine back on. Next, wait for the “Power On Self Test” to run, which can take up to a minute if there is a large amount of memory installed in the machine, wait for DOS to boot (from the floppy disk, of course), and then relaunch the program under test and try to work out what went wrong.
The simplest solution would have been a reset button. However, the mechanical construction of the inside of the PC would have made it hard to find a place for it and, besides, there was always the problem of pressing it inadvertently. So we decided to use the keyboard. We had to pick a set of keys that was hard to press by accident. Since the BIOS had to fit in 8KB and we were already close to 9KB, the instruction sequence that detected it had to be very short. So two of the keys had to be shift keys, since the keyboard BIOS monitors them and keeps the state in RAM. That is why I picked the newest and least used ‘shift keys’: Ctrl and Alt. Finally I picked the action key as far away from them as possible. If you look at the original 83-key keyboard of the IBM PC (significantly different from today’s keyboards, you will see that there is only one instance of the Ctrl and Alt keys on the left side and a single Del on the rightmost side of the keyboard. I could have chosen ‘Enter’ instead of ‘Del’, but (a) Enter is a bigger key, so there are more chances of pressing it by accident, and (b) ‘Del’ is a better mnemonic than ‘Enter’ for the drastic action that is about to be performed.
The code to handle the C-A-D keypress was 9 instructions, taking up 30 bytes of length. After detecting two state changes of the modifier keys and the “Del” key, it stores a flag in a special memory location, and then jumps to the 8088 reset location. The POST code detects the special flag (0x1234 in the BIOS RAM area) after it has done the system initialisation, but before doing the long memory test. The memory is supposed to have already been tested at the initial power-on of the machine, and another memory test is probably unnecessary. Besides, it is much faster this way.

This was not the first time I used a three-key sequence to access a system function. The system/23 DataMaster, which used an Intel 8085 microprocessor, was a prototype of the IBM PC in many ways. I had written a small debugger to use on our S/23 development system (you can think of the DEBUG on the original DOS diskette). A developer could access that debugger with a three-key sequence similar to the C-A-D one (although not identical, since even though the keyboard was the same, the interface and the special keys were not). So using a three-key sequence to reset/restart the IBM PC was the most natural thing.
Ctl-Alt-Del was a simple solution to a problem. It was not the complete solution, since if the program that failed had disabled interrupts (a single-byte instruction on the x86) nothing you did on the keyboard would cause an interrupt to the BIOS. But it worked in most cases. And from then on it was one of the hundreds of small (and big) problems we had to solve before the PC could be announced; after 10 minutes of design, coding and testing, it was time to move on to the next problem.
You have spent almost as much time reading this as I took to create and implement the C-A-D
Well, I think I took longer to translate this. I hope you liked it
Paco.