next up previous contents
Next: Resultados y conclusiones Up: La aplicación VM Previous: Ejecución de la aplicación

Simulación del video CGA

Se desarrolló la simulación del video CGA en funciones básicas. Principalmente, cambio de modo (un modo texto y dos gráficos), posicionar el cursor en la pantalla, escribir carácteres, activar páginas de texto, y escribir pixeles.

La simulación trabaja con 3 modos de video:

MODO Servicio de INT 0x10 Resolución
Texto 0x07 80 $\times$ 25
4 Color Graphic 0x04 320$\times$ 200
2ColorGraphic 0x06 640$\times$ 200
Si el programa selecciona un modo distinto a los declarados, por omisión se coloca en modo texto.

El objeto encargado de la simulación es el objeto ControlView. El modo texto trabaja con 4 paginas de texto, cada pagina se simula con un objeto ScrollView. Los modos gráficos se simulan con un objeto CGAView. Se mantienen 4 matrices de carácteres que sirven como memoria de video y que se cargan a los objetos ScrollView.

typedef struct _VideoTexto 
{
   unsigned row; 
   unsigned column; 
   char memVideo[25][81]; 
} VideoTexto; 

@interface ControlCGA:Object
{
    ScrollView  *text1;  // Pagina modo texto 1
    ScrollView  *text2;  // Pagina modo texto 2
    ScrollView  *text3;  // Pagina modo texto 3 
    ScrollView  *text4;  // Pagina modo texto 4 
    CGAView     *graf;   // Pagina de modo grafico 
    ...

    unsigned modo;  
    int pagina; 
    VideoTexto texto[4]; 
}

Los servicios del manejo del video de BIOS (INT 0x10) para CGA se simularon de la siguiente manera:

La simulación gráfica de CGA se realizo con la clase CGAView. Esta clase tiene una memoria de video, una variable que le indica el modo de trabajo (resolución alta o media), y dos variables que indica en tamaño del pixel. Este tamaño se obtiene de dividir la longitud del marco donde se desplegará la información, con la resolución del modo de video.

@interface CGAView:View
{
    int modo;           // Modo de trabajo: MEDIUM/HIGHT
    float radioX;       // radio de pixel (tamanho de salto w) 
    float radioY;       // radio de pixel (tamanho de salto h)
    id  myWindow;       // Ventana de la jerarquia View
    char *videomemory;  // Memoria de video
}

Aclaramos que esta simulación es un primer paso para obtener la simulación del video VGA y que si faltan servicios es porque sólo fue un ejercicio para mostrar el comportamiento de la aplicación em VM.app y para mostrar las facilidades que se tienen para simular los dispositivos de entrada y salida de una máquina DOS.

Esta simulación de video aún tiene problemas de rendimiento, pero se está estudiando los diferentes mecanismos para acelerar la ejecución.


next up previous contents
Next: Resultados y conclusiones Up: La aplicación VM Previous: Ejecución de la aplicación
Amilcar Meneses
2002-10-03