Orígenes del Alt-Ctrl-Del

By | April 28, 2008

David Bradley se graduó en 1971 por la Universidad de Dayton (Ohio), el mismo año que Intel lanzó el procesador 4004, y recibió su Ph.D. por la universidad de Purdue el mismo año que salió el kit de construcción del Altair. “El primer ordenador que habría utilizado habría sido un [IBM] 360”, dijo. Se incorporó a IBM en junio de 1975 y trabajó y trabajó con un System/23 Datamaster en 1978, el primer ordenador de IBM con un procesador no-IBM. Para el PC, él escribió la totalidad de la BIOS. “Escribí todo el código con la excepción del control de cassete y los test de power-on” comentó.

Recientemente nos ha contado como ideó la combinación Alt-Ctrl-Del:

En algún momento durante el desarrollo de la BIOS del IBM PC, probablemente de enero de 1981, tuvimos un problema de desarrollo. Un montón de nuevo software estaba saliendo y siendo puesto a prueba y, como frecuentemente sucede con el nuevo software, éste deja de correr, y deja colgada a la máquina. Cuando los programas que realizas son en ensamblador, hay muchas posibilidades de que algo como esto suceda. A menos que estés trabajando con una placa base que no esté dentro de una caja, la única manera de reiniciar la máquina era desconectar la corriente, esperar unos segundos para que los condensadores se descarguen, entonces encender de nuevo la máquina. A continuación, esperar a que el “Power On Self Test” se ejecute, lo que puede llegar a tardar hasta un minuto si hay una gran cantidad de memoria instalada en la máquina, esperar que arranque el DOS (desde el disquete, por supuesto), y entonces relanzar el programa bajo prueba y tratar de averiguar lo que salió mal.

La solución mas simple habría sido un botón de reinicio. Sin embargo, la construcción mecánica del interior del PC habria hecho difícil localizar un lugar y, además, siempre estaba el problema de pulsarlo inadvertidamente. Así que decidimos usar el teclado. Había que escoger un juego de teclas que fuera difícil pulsar accidentalmente. Dado que la BIOS tenía que caber en 8KB y ya estabamos casi por 9KB, debía de ser muy breve la secuencia de instrucciones que lo detectara. Por ello dos de las teclas debian de ser de cambio de estado (shift) ya que la BIOS de teclado las monitoriza y mantiene el estado en RAM. Por eso escogí las mas nuevas y menos usadas ‘shift keys’:  Ctrl y Alt. Finalmente escogí la tecla de acción lo mas alejada posible de ellas.  Si miras en el teclado original de 83 teclas del IBM PC (significativamente diferente de los teclados actuales, verás que solo hay una instancia de las teclas Ctrl y Alt en el lado izquierdo y un solo Del el el lado mas derecho del teclado. Podría haber elegido ‘Enter’ en lugar de ‘Del’, pero (a) Enter es una tecla mas grande, con lo cual hay mas posibilidades de pulsarla por accidente, y (b) ‘Del’ es un mejor mnemotécnico que ‘Enter’ para la drástica acción que se va a realizar.

IBM Model F XT

El código para controlar la pulsación del C-A-D fue de 9 instrucciones, ocupando 30 bytes de longitud. Después de detectar dos cambios de estado de las teclas modificadoras y la tecla “Supr”, almacena una bandera en una posición de memoria especial, y luego salta a la posición de reset del 8088. El código del POST detecta la bandera especial (0x1234 en el área de RAM BIOS) después de haber hecho la inicialización del sistema, pero antes de hacer la larga prueba de memoria. Se supone que la memoria ya ha sido probada en el encendido inicial de la máquina, y otra prueba de memoria es probablemente innecesario. Además es mucho más rápido de esta manera.

Esta no era la primera vez que usaba una secuencia de tres teclas para acceder a una función del sistema. El system/23 DataMaster, el cual usaba un microprocesador Intel 8085, fue un prototipo del IBM PC en muchos sentidos. Yo había escrito un pequeño depurador para usar en nuestro sistema de desarrollo del S/23 (podéis pensar en el DEBUG del disquette original del DOS). Un desarrollador podía acceder a ese depurador con una secuencia de tres teclas similar al del C-A-D (aunque no idéntica, ya que aunque el teclado era el mismo, el interfaz y las teclas especiales no). Así que usar una secuencia de tres teclas para resetear/reiniciar el IBM PC era lo más natural.

Ctl-Alt-Del fue una simple solución a un problema. No fue la solución completa, ya que si el programa que fallaba hubiera desactivado las interrupciones (una instrucción de un solo byte en el x86) nada de lo que hicieras en el teclado provocaria una interrupión a la BIOS. Pero funcionó en la mayoría de los casos. Y desde entonces fue uno de los cientos de pequeños (y grandes) problemas que tuvimos que solucionar antes de que el PC pudiera ser anunciado, despues de 10 minutos de diseño, codificación y testeo, fue momento de pasar al siguiente problema.

Has empleado casi tanto tiempo en leer esto como yo tardé en crear e implementar el C-A-D

Bueno,  yo creo que he tardado mas en traducir esto. Espero os haya gustado

Paco.

Leave a Reply

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