SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: kenshin en Sábado 9 de Marzo de 2002, 18:59

Título: Re: Puntero a memoria de video
Publicado por: kenshin en Sábado 9 de Marzo de 2002, 18:59
Alguien puede echarme una mano sobre cómo declarar un puntero a la memoria de video...

El tema es el siguente:


typedef unsigned char uchar;
//ahora el puntero a la memoria de video
//que no funciona:(
uchar *vga_ptr=(uchar *)MK_FP(0xA000,0);

//después cualquier cosa, p.e: pintar de negro toda la pantalla
memset(vga_ptr, 0, 64000);


...el tema es que no sé porqué el puntero debe estar mal direccionado y no consigo hacer esto tan simple.

...luego, se podría aplicar a crear un buffer para almacenar gráficos y después volcarlos a la pantalla, etc...

Please help...GRACIAS!
:D
Título: Re: Puntero a memoria de video
Publicado por: bench en Jueves 14 de Marzo de 2002, 16:34
La Declaracion e inicializacion que tienes del puntero es Correcta si has incluido el archivo dos.h, De Tal Forma Que Debes Revizar la Activacion del Modo Grafico
la Cual Dependera del Sistema Operativo. Si es en Ambiente Unix(linux) el Modo Grafico se Activa Con Una Funcion de ioctl.

Tambien puedes Declarla Como:

unsigned char *Dir_Vga = (unsigned char *) 0xA0000000;

Espero Te Sirva la Informacion.
Título: Re: Puntero a memoria de video
Publicado por: kenshin en Jueves 14 de Marzo de 2002, 20:21
Gracias, ya había encontrado la solución del "problema"...
...era simplemente que debía compilar en modo LARGE (para la memoria)...

Un saludo, gracias!
 ;)
Título: Re: Puntero a memoria de video
Publicado por: Astor en Jueves 20 de Febrero de 2003, 03:24
Compilar en modo large ?
No seria mejor usar un puntero de tipo far ?
Título: Puntero a memoria de video
Publicado por: Quoyle en Jueves 20 de Febrero de 2003, 19:46
Yo he trabajado mucho con esto, y nunca me ha hecho falta compilar en modo large.

Yo declaraba los punteros a la memoria de video como unsigned int, por lo menos así viene en todos los libros.

unsigned int *video = 0xA000;