# Int 15h

INT 15h es la forma abreviada de la interrupción 0x15. Esta interrupción controla los servicios extendidos del PC.

## Características

Antiguamente, esta interrupción se encargaba únicamente de ofrecer acceso a las unidades de cinta, en la actualidad, tiene un amplio rango de funciones como control del joystick, control de APM (Advanced Power Management), establecer el modo de velocidad de la cpu, etc.

## Lista de servicios de la INT 15h

| AH = 00h | Unidad de cinta | Encender motor de la unidad de cinta |
| AH = 01h | Unidad de cinta | Apagar motor de la unidad de cinta |
| AH = 02h | Unidad de cinta | Leer datos |
| AH = 03h | Unidad de cinta | Escribir datos |
| AH = 21h | SISTEMA | Datos de informe de errores durante POST |
| AH = 52h | Extensiones de INT 13h | Interceptar cuando el medio se expulse |
| AH = 84h | Joystick | Funciones de Joystick |
| AH = 85h | SISTEMA | Interceptar pulsación de la tecla PetSis |
| AH = 86h | BIOS | Esperar intervalo de microsegundos |
| AH = 87h | SISTEMA | Copiar memoria extendida |
| AH = 88h | SISTEMA | Obtener tamaño de la memoria extendida |
| AH = 89h | SISTEMA | Pasar a modo protegido |
| AX = 2400h | SISTEMA | Desactivar línea A20 |
| AX = 2401h | SISTEMA | Activar línea A20 |
| AX = 5300h | APM | Comprobar instalación |
| AX = 5301h | APM | Conectar interfaz de modo real |
| AX = 5302h | APM | Conectar interfaz de 16 bits |
| AX = 5303h | APM | Conectar interfaz de 32 bits |
| AX = 5304h | APM | Desconectar interfaz |
| AX = 5307h | APM | Establecer estado de energía |
| AX = 5307h CX=0001h | APM | Pasar pc a modo STANBY |
| AX = 5307h CX=0002h | APM | Suspender sistema |
| AX = 5307h CX=0003h | APM | Apagar sistema |
| AX = 5308h | APM | Activar/desactivar administración de energía |
| AX = 5380h BH=04h | APM | Obtener tiempo de auto apagado |
| AX = 5380h BH=05h | APM | Establecer tiempo de auto apagado |
| AX = 5380h BH=0Ch | APM | Obtener modo de velocidad de CPU |
| AX = 5380h BH=0Dh | APM | Establecer modo de velocidad de CPU |
| AH = C1h | SISTEMA | Obtener inicio del segmento de datos de la BIOS extendida |
| AX = C200h | Ratón PS/2 | Activar/Desactivar ratón |
| AX = C201h | Ratón PS/2 | Reiniciar ratón |
| AX = C202h | Ratón PS/2 | Establecer tasa de muestreo |
| AX = C203h | Ratón PS/2 | Establecer resolución |
| AX = C204h | Ratón PS/2 | Obtener tipo |
| AX = C205h | Ratón PS/2 | Inicializar ratón |
| AX = C206h | Ratón PS/2 | Comandos extendidos |
| AX = C207h | Ratón PS/2 | Establecer dirección del driver del ratón |
| AX = C208h | Ratón PS/2 | Escribir al puerto del ratón |
| AX = C209h | Ratón PS/2 | Leer del puerto del ratón |

## Tabla de funciones de Joystick

| DH = 00h | Joystick | Lee los cuatro botones del joystick |
| DH = 01h | Joystick | Lee la palanca |
| DH = 02h | Joystick | Igual que 00h pero en valores de 0 a 255 |
| DH = 03h | Joystick | Calibra el joystick |
| DH = 04h | Joystick | Comprobar si el joystick está calibrado |
| DH = 05h | Joystick | Lee un dato raw de la palanca |
| DH = 08h | Joystick | Lee el botón especificado |
| DH = 09h | Joystick | Lee todos los botones hasta el botón 16 |
| DH = 80h | Joystick | Elimina el driver de la memoria |
| DH = 81h | Joystick | Comprueba si el driver está en memoria |

## INT 15h AH=00h - Encender motor de la unidad de cinta

Parámetros:
| AH = 00h | Encender motor |
Retorna:
| CF | Activada en error, limpia si no hay error |
| AH = ?? | Código de error (86h = No hay casette) |
Ejemplo:

## INT 15h AX=C207h - Establecer dirección del driver del ratón

Parámetros:
| ES:BX | Dirección del controlador o 0000h:0000h para eliminar el driver |
Retorna:
| CF | Activada en error, limpia si no hay error |
| AH = ?? | Código de error (00h si la operación se completó con éxito) |
Ejemplo: