From: baldo AT chasque DOT apc DOT org Message-Id: <3.0.1.32.19970708043731.0068cc5c@chasque.apc.org> Date: Tue, 08 Jul 1997 04:37:31 -0300 To: "Grzegorz Hankiewicz" Subject: Re: How to access the vide memory under DJGPP to print text. Cc: djgpp AT delorie DOT com In-Reply-To: <5pb362$l1r$1@diana.ibernet.es> Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit Precedence: bulk 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