# INT 10H

INT 10h, INT 10H o INT 16 és l'abreviatura de la crida d'interrupció de la BIOS 10 $_{hex}$, el 17è vector d'interrupció en un sistema informàtic basat en x86. La BIOS normalment configura un controlador d'interrupcions en mode real en aquest vector que proporciona serveis de vídeo. Aquests serveis inclouen la configuració del mode de vídeo, la sortida de caràcters i cadenes, i els primitius gràfics (llegir i escriure píxels en mode gràfic).
Per utilitzar aquesta trucada, carregueu AH amb el número de la subfunció desitjada, carregueu altres paràmetres necessaris en altres registres i feu la trucada. INT 10h és bastant lent, de manera que molts programes obvien aquesta rutina de la BIOS i accedeixen directament al maquinari de la pantalla. La configuració del mode de vídeo, que es fa amb poca freqüència, es pot aconseguir mitjançant la BIOS, mentre que dibuixar gràfics a la pantalla en un joc s'ha de fer ràpidament, de manera que l'accés directe a la memòria RAM de vídeo és més adequat que fer una trucada de la BIOS per a cada píxel.
A més, en un sistema x86 modern, les trucades de la BIOS només es poden realitzar en mode real o en mode 8086 virtual. v8086 no és una opció en mode llarg. Això vol dir que un sistema operatiu modern, que funciona en mode protegit (32 bits) o en mode llarg (64 bits), hauria de canviar al mode real i tornar a trucar a la BIOS, una operació molt cara. Tot i que la majoria dels sistemes moderns solen utilitzar controladors de dispositiu que configuren directament el mode de vídeo, no és factible que els sistemes aficionats tinguin un controlador de dispositiu per a cada targeta de vídeo, un problema que també afecta els sistemes antics i no compatibles com Windows 98. En canvi, aquests sistemes poden passar al mode real per canviar el mode de vídeo i, a continuació, dibuixar directament al framebuffer.
Als sistemes EFI 1.x, l'INT 10H i les extensions VESA BIOS (VBE) se substitueixen pel protocol EFI UGA. En els sistemes UEFI 2.x àmpliament utilitzats, l'INT 10H i el VBE se substitueixen pel UEFI GOP.

## Llista de funcions compatibles

La llista és incompleta; cal utilitzar la llista de Ralf Brown per obtenir informació completa.Cal afegir només IBM/PC o altres funcions estàndard habituals. De 00h a 0fh són CGA.
| Funció | Codi de funció | Paràmetres | Retorn |
| Estableix el mode de vídeo | AH=00h | AL = mode de vídeo | AL = bandera de mode de vídeo / byte de mode de controlador CRT |
| Estableix la forma del cursor en mode text | AH=01h | CH = Inici de fila d'escaneig, CL = Final de fila d'escaneig Normalment, una cel·la de caràcters té 8 línies d'exploració, de 0 a 7. Per tant, CX=0607h és un cursor de subratllat normal, CX=0007h és un cursor de bloc complet. Si s'estableix el bit 5 de CH, sovint significa "Amaga el cursor". Així que CX=2607h és un cursor invisible. Algunes targetes de vídeo tenen 16 línies d'escaneig, 00h-0Fh. Algunes targetes de vídeo no utilitzen el bit 5 de CH. Amb aquests, feu Inici>Final (p. ex. CX=0706h) | |
| Estableix la posició del cursor | AH=02h | BH = Número de pàgina, DH = Fila, DL = Columna |
| Obteniu la posició i la forma del cursor | AH=03h | BH = Número de pàgina | AX = 0, CH = Inici de la línia d'exploració, CL = Finalitzar la línia d'exploració, DH = Fila, DL = Columna |
| Llegiu la posició del llapis de llum (no funciona en sistemes VGA) | AH=04h | | AH = Estat (0=no activat, 1=activat), BX = Pixel X, CH = Pixel Y, CX = Número de línia de píxels per als modes 0Fh-10h, DH = Caràcter Y, DL = Caràcter X |
| Seleccioneu la pàgina de visualització activa | AH=05h | AL = Número de pàgina | |
| Desplaceu-vos cap amunt de la finestra | AH=06h | AL = línies per desplaçar-se (0 = esborra, s'utilitzen CH, CL, DH, DL), BH = Color de fons i color de primer pla. BH = 43h, significa que el color de fons és vermell i el color de primer pla és cian. Consulteu els atributs de color de la BIOS CH = número de fila superior, CL = número de columna esquerra, DH = número de fila inferior, DL = número de columna dreta | |
| Desplaceu-vos cap avall per la finestra | AH=07h | com a dalt | |
| Llegir caràcter i atribut a la posició del cursor | AH=08h | BH = Número de pàgina | AH = Color, AL = Caràcter |
| Escriu caràcter i atribut a la posició del cursor | AH=09h | AL = Caràcter, BH = Número de pàgina, BL = Color, CX = Nombre de vegades que cal imprimir el caràcter | |
| Escriu el caràcter només a la posició del cursor | AH=0Ah | AL = Caràcter, BH = Número de pàgina, CX = Nombre de vegades per imprimir el caràcter | |
| Estableix el color de fons/vora | AH=0Bh, BH = 00h | BL = Color de fons/vora (vora només en modes de text) | |
| Estableix la paleta | AH=0Bh, BH = 01h | BL = ID de paleta (només era vàlid a CGA, però les targetes més noves l'admeten en molts o tots els modes gràfics) | |
| Escriure gràfics píxel | AH=0Ch | AL = Color, BH = Número de pàgina, CX = x, DX = y | |
| Llegir píxels de gràfics | AH=0Dh | BH = Número de pàgina, CX = x, DX = y | AL = Color |
| Sortida de teletip | AH=0Eh | AL = Caràcter, BH = Número de pàgina, BL = Color (només en mode gràfic) | |
| Obteniu el mode de vídeo actual | AH=0Fh | | AL = Mode de vídeo, AH = nombre de columnes de caràcters, BH = pàgina activa |
| Canviar el conjunt de caràcters del mode de text | AH=11h | BH = Nombre de bytes per caràcter, CX = Nombre de caràcters a canviar, DX = Caràcter inicial a canviar, ES:BP = Desplaçament de dades de caràcters | |
| Cadena d'escriptura (EGA+, que significa PC AT com a mínim) | AH=13h | AL = Mode d'escriptura, BH = Número de pàgina, BL = Color, CX = Nombre de caràcters de la cadena, DH = Fila, DL = Columna, ES:BP = Desplaçament de la cadena | |
| establiu modes de vídeo compatibles amb VESA, començant a 640 per 480 i arribant a 1280 per 1024 amb 256 colors | AX=4f02h | BX = mode de vídeo, si s'estableix el bit de signe (bit 15), la memòria de vídeo no s'actualitzarà | |
| Altres ordres VESA VBE | AX=4F00h a 4F15h | Veure especificació | Veure especificació |

## Referències

* ↑ «8086 Assembly Language INT 10h Video Interrupt - 4Beginner.com» (en anglès). [Consulta: 3 desembre 2023].
* ↑ «What is efifb? — The Linux Kernel documentation» (en anglès). www.kernel.org. [Consulta: 24 novembre 2020].
* ↑ «What is vesafb? — The Linux Kernel documentation» (en anglès). www.kernel.org. [Consulta: 24 novembre 2020].
* ↑ «A Font changing routine» (en anglès). Forever Young Software. [Consulta: 8 març 2020].