• Lunes 6 de Mayo de 2024, 06:12

Autor Tema:  Re: Puntero a memoria de video  (Leído 1792 veces)

kenshin

  • Miembro activo
  • **
  • Mensajes: 29
    • Ver Perfil
Re: Puntero a memoria de video
« en: Sábado 9 de Marzo de 2002, 18:59 »
0
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

bench

  • Miembro activo
  • **
  • Mensajes: 36
    • Ver Perfil
Re: Puntero a memoria de video
« Respuesta #1 en: Jueves 14 de Marzo de 2002, 16:34 »
0
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.

kenshin

  • Miembro activo
  • **
  • Mensajes: 29
    • Ver Perfil
Re: Puntero a memoria de video
« Respuesta #2 en: Jueves 14 de Marzo de 2002, 20:21 »
0
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!
 ;)

Astor

  • Miembro MUY activo
  • ***
  • Mensajes: 112
    • Ver Perfil
Re: Puntero a memoria de video
« Respuesta #3 en: Jueves 20 de Febrero de 2003, 03:24 »
0
Compilar en modo large ?
No seria mejor usar un puntero de tipo far ?

Quoyle

  • Nuevo Miembro
  • *
  • Mensajes: 16
    • Ver Perfil
Puntero a memoria de video
« Respuesta #4 en: Jueves 20 de Febrero de 2003, 19:46 »
0
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;
Actual Generation oOo Quoyle oOo Remember: Free your mind