IBM PC ROM BIOS

El BIOS residía en una memoria ROM de la tarjeta madre del IBM PC y ocupaba 8 KiB.

El BIOS realizaba un Power On Self Test (POST)), donde se revisaban e inicializaban algunos componentes del computador, se inicializaba y ponía operativo al BIOS y al final se ejecutaba el Boot Strap Loader, el cual, cargaba en memoria RAM y ejecutaba el programa que residía en el primer sector del disquete, o en caso de no poder hacerlo, cargaba al IBM Cassette BASIC, la versión de BASIC que residía en la ROM de la tarjeta madre.

Una vez finalizado el Power On Self Test, se ejecutaba el Boot Strap Loader (BSL) para comenzar la secuencia de bootstrap.

En el primer sector del disquete (formateado con el PC DOS), se encontraba un pequeño programa que era cargado por el Boot Strap Loader a la dirección de memoria 0000:7C00 y luego le pasaba el control.

Ciertos programas comerciales venían con el primer sector diferente, y este contenía código propio para propósitos especiales, como por ejemplo, un mecanismo de protección anticopia.

Adicionalmente había rutinas que respondían a interrupciones de dispositivos del hardware.

Los parámetros a la función se pasan por medio los registros internos del CPU (AX, BX, CX, DX, etc), y en caso de que una función tuviera que retornar algún valor, también lo hacía mediante los registros del procesador.

En computadores posteriores al IBM PC se fueron agregando más dispositivos de hardware que generaban interrupciones.

El BIOS tiene diferentes tablas y áreas de datos, necesarias para poder realizar sus funciones.

El IBM ROM BIOS tenía un área de datos en RAM que iba desde 0040:0000 hasta 0040:00FF.

Adicionalmente había un área localizada entre 0030:0000 hasta 0030:00FF donde se encontraba un stack para uso durante el POST y que estaba activo cuando se realizaba el Boot Strap Loader y este le pasaba el control al programa localizado en el primer sector del disquete.

Detalle del IBM PC ROM BIOS y del IBM PC ROM BASIC de la tarjeta madre original del IBM PC de 1981.