Mail Archives: djgpp/1997/07/08/04:23:56
At 04:18 PM 01/07/1997 +0200, you wrote:
>Hi.
>I would like to know how to access the video memory to print text when in
>text video modes.
>I want to know if I could make a game with text graphics in 80x25. Can you
>blit text to the memory the same as you do with the VGA to avoid flicker?
>How do you change colors or the palette in this mode?
>How can you set the 80x50 text mode?
>Thanks
>
Sorry for the people who speak English, but is very hard to me to write in
English. If someone want this writed in English, ask me, and I rewrite it
in English.
Hola! Como ví que sos de españa te escribo en español (o mejor dicho en mi
español que es muy malo y tiene muchas faltas de ortografía). Esto tambien
lo mando al mailing list de DJGPP para la gente que se pregunta lo mismo y
sabe hablar español.
Bueno, el buffer de texto está compuesto por columnas y filas al igual que
el buffer grafico de VGA, pero cada celda está compuesta por 16 bits que
contienen el caracter y los colores del mismo. La estructura de cada celda
es la siguiente:
8 bits - Código ASCII del caracter.
3 bits - Color del texto.
1 bit - Si está encendido significa color de alta intensidad, si está
apagado significa color de baja intensidad.
3 bits - Color del fondo.
1 bit - Si está activado hace que el caracter titilee (blink), si está
apagado el caracter aparece siempre.
Si estas en 80x25 o 80x50 es lo mismo, no hay que cambiar de banco o de
pagina ni nada de eso, es muy simple. Podés usar una matriz en memoria ram
y despues volcarla al buffer de texto que está localizado a 0xb800. No hice
ninguna rutina de esto para DJGPP, pero si queres te puedo dar unas que
tengo que están hechas para Microsoft C/C++ 7.0.
No se si el modo de texto tiene algun tipo de sincronizacion con el
monitor para hacer cosas "flicker free", pero con el modo de texto vas a
tener tanta velocidad que esto no creo que sea necesario.
Para poner el modo de texto es muy simple, cargas AX con 0x3 y llamar a la
interrupcion 0x10. Esto te pone el modo de texto 80x25. Si queres poner
80x50 tenes que primero poner el modo de texto 80x25 como te dije y despues
cargar AX con 0x1112 y llamar a la interrupcion 0x10.
Nunca probé cambiar la paleta para los modos de texto, pero me imagino que
será similar a ponerla en VGA, talvez sea de la misma forma, excepto que
pones solo 16 colores en vez de 256.
Bueno, espero haberte ayudado o haber ayudado a alguien mas. Si tenes
alguna duda preguntamela y veo si te puedo ayudar. Chau!
Ivan Baldo: baldo AT chasque DOT apc DOT org - http://www.chasque.apc.org/baldo
- Raw text -