INT 10H

De la Viquipèdia, l'enciclopèdia lliure

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.[1]

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.[2][3]

Llista de funcions compatibles[modifica]

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 [4] 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[modifica]

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