logotipo

img_google

Juego de caracteres de la VGA.

Para terminar con esta lección, os voy a explicar cómo conseguir unas máscaras con el juego de caracteres de la VGA. Esto os puede ser de utilidad para visualizar caracteres en pantalla de la forma que queráis y con el tamaño que deseéis. De esta forma podéis hacer presentaciones o utilizar  marcadores en vuestros videojuegos bastante vistosos, tenéis aquí un ejemplo de la utilidad de lo que os voy a explicar:

Pulsa F2 para ejecutar el programa MARCADOR. - Posibilidad no disponible en la versión HTML-.

 Todo se basa en la utilización de una función de la BIOS suministrada por la interrupción de video 10h. Este servicio es la función 11h, subfunción 30h. Al llamar a esta función, la BIOS nos devuelve un puntero (una dirección) a una zona de memoria donde se encuentra, un mapa del juego de caracteres de la VGA. Podemos solicitar siete juegos de caracteres distintos, según el valor que pongamos en el registro bh. El formato completo para esta función es:

 int 10h     Función 11h  Subfunción 30h

         Entrada: ah   = 11h            (*número de función*)
                  al   = 30h            (*número de subfunción*)
                  bh   = 3              (*caracteres 8x8*)
                                        (*bh=2 caracteres 8x14*)
                                        (*bh=6 caracteres 8x16*)
 

         Salida : es:bp= puntero FAR (segmento:desplazamiento) donde reside
                         el juego de caracteres pedido.

Si nosotros situamos en esa dirección un array como el siguiente:
 
   Tabla:Array[ 1..256 , 1..8 ] of byte;
                ------   ----
                 | |      | |
                 | |      | |
             Número de    Altura del
            caracteres    carácter
 

obtendremos en cada posición de esa tabla una máscara (byte) de la fila indicada por la segunda dimensión de la tabla, del carácter indicado por la primera posición de la tabla. Os pondré un ejemplo para que 'pilléis' la idea:
 
Imaginemos que queremos obtener las máscaras (filas) que forman la letra 'A' mayúscula. El mapa del carácter sería:
 
        12345678              12345678

   1       __            1    00011000    <-- Tabla[65,1]   =      24
   2      ____           2    00111100    <-- Tabla[65,2]   =      60
   3     __  __          3    01100110    <-- Tabla[65,3]   =     102
   4     __  __          4    01100110    <-- Tabla[65,4]   =     102
   5     ______          5    01111110    <-- Tabla[65,5]   =     126
   6     __  __          6    01100110    <-- Tabla[65,6]   =     102
   7     __  __          7    01100110    <-- Tabla[65,7]   =     102
   8                     8    00000000    <-- Tabla[65,8]   =       0
 
                             (BINARIO)                          (DECIMAL)

Esto se aplica para todos los caracteres y para todos los tamaños, con los cambios necesarios.

Os presento a continuación un programa para modo texto más sencillito que el anterior, donde podréis ver cómo utilizar el mapa de caracteres. :)

Pulse F2 para ejecutar el programa BANNER. %Ebanner* - Posibilidad no disponible en la versión HTML-.

Este programa tiene un funcionamiento similar al comando Banner, existente en varios sistemas operativos como Unix y Novell Netware. Podéis utilizar sus rutinas para poner títulos en programas texto de instalación o quién sabe, para hacer visualizadores como el VCPV. ;)
 
 


[ Anterior | Índice | Siguiente ]

La última versión de este texto se podrá encontrar en Internet, en la dirección:
www.pobox.com/users/ncabanes/