Mail Archives: djgpp/2000/08/07/19:30:23
From: | "Carlos Alfredo Barahona FrenÁNdez" <CARLOSABF AT terra DOT es>
|
Newsgroups: | comp.os.msdos.djgpp
|
Subject: | set_gfx_mode doesn´t work!! (in Spanish)
|
Lines: | 108
|
X-Priority: | 3
|
X-MSMail-Priority: | Normal
|
X-Newsreader: | Microsoft Outlook Express 5.00.2314.1300
|
X-MimeOLE: | Produced By Microsoft MimeOLE V5.00.2314.1300
|
Message-ID: | <PmHj5.4089$X84.17473@telenews.teleline.es>
|
Date: | Mon, 07 Aug 2000 23:11:43 GMT
|
NNTP-Posting-Host: | 193.152.65.124
|
X-Complaints-To: | usenet AT teleline DOT es
|
X-Trace: | telenews.teleline.es 965689903 193.152.65.124 (Tue, 08 Aug 2000 01:11:43 MET DST)
|
NNTP-Posting-Date: | Tue, 08 Aug 2000 01:11:43 MET DST
|
Organization: | Clientes_Teleline
|
To: | djgpp AT delorie DOT com
|
DJ-Gateway: | from newsgroup comp.os.msdos.djgpp
|
Reply-To: | djgpp AT delorie DOT com
|
Hola ,me llamo Carlos Barahona y estoy trabajando en mi proyecto de final de
carrera utilizando DJGPP y Allegro, en MS-DOS.
Yo creo que mi instalación del DJGPP está correctamente realizada,ya que he
realizado algun programa ejemplo y me lo ha compilado y ejecutado bien.El
problema viene cuando llamo a la función set_gfx_mode de Allegro, cuando la
ejecuto me da un error de Desbordamiento de División, entonces el Rhide se
deja de ejecutar y no puedo hacer ni un simple dir /p porque el ordenador se
queda colgado.He seguido la traza del programa y he llegado al punto donde
me falla,y siempre es en el mismo sitio, en la linea número 88 del archivo
vga.c.
A continuación está el codigo de mi programa:
void main(void){
int eleccion,color=0;
PALETTE defecto;
allegro_init();
eleccion='0'&0xFF;
while((eleccion=='1'&0xFF) || (eleccion=='0'&0xFF))
{
install_keyboard();
printf("\n\nVAMOS A CAMBIAR EL MODO GRµFICO ...\n\n");
printf("\nQue modo desea poner:\n\t\t0->Modo Texto\n\t\t1->Modo
13\n\t\tCualquiera->Salir\n\t\t");
eleccion=readkey();
if((eleccion & 0xff)=='0')
modo_texto();
else if((eleccion & 0xff)=='1')
modo_13();
else
{
modo_texto();
allegro_exit();
}
}
}
END_OF_MAIN();
void modo_texto(void)
{
int error=0;
error=set_gfx_mode(GFX_TEXT,0,0,0,0);
if(error==-1)
{
printf("\nNO SE HA PODIDO PONER EL MODO TEXTO\n");
remove_keyboard();
}
else
{
remove_keyboard();
printf("\nSE HA PUESTO CON EXITO EL MODO TEXTO\n");
}
getch();
clrscr();
}
void modo_13(void)
{
int error=0,onda=0,opval=0,i=0,j=0;
PALETTE defecto;
error=set_gfx_mode(GFX_VGA,320,200,0,0);//Here it crashes
if(error==-1)
{
printf("\nNO SE HA PODIDO PONER EL MODO 13\n");
remove_keyboard();
}
else
{
Y ahora el trozo de codigo de las Allegro donde falla:
):
if ((w == 320) && (h == 200) && (v_w <= 320) && (v_h <= 200)) {
/* standard mode 13h */
b = _make_bitmap(320, 200, 0xA0000, &gfx_vga, 8, 320);
if (!b)
return NULL;
r.x.ax = 0x13;
__dpmi_int(0x10, &r);//Here it crashes
He intentado recompilar las Allegro tal y como lo explicaba un FAQ:
" Note: if the crash happens deep inside an Allegro function, this traceback
may not be so useful. When this happens you can recompile Allegro with
debugging information (in your Allegro directory, run "make clean", "set
DEBUGMODE=1", and "make install", but note that this requires the GNU
fileutils package to be installed), and then recompile your program to use
the debugging library. Don't forget to rebuild a normal Allegro version (as
above, but "set DEBUGMODE=") when you are done, because the debugging lib is
very slow. "
Y los resultados son los mismos.
Mi ordenador es un Pentium 200 MMX con 1 Mega de targeta gráfica, los dos
ficheros adjuntos infogfx.txt, infogfx2.txt son los resultados de ejecutar
el programa vesainfo y vesainfo -v respectivamente.
Por curiosidad,instalé DJGPP y Allegro en Windows-95 y he comprobado que el
mismo programa que en MS-DOS no funcionaba, (he probado tanto ejemplos de
Allegro,como distintos programas hechos por mi con Allegro), si que lo hace
en Windows 95.
- Raw text -