Todoexpertos.com
http://www.todoexpertos.com
La respuesta está en Internet
Información de la pregunta
Título: Problema con paginas virtuales
Experto: pablojbf
Valoración: 3
Fecha: 02/04/2003


Problema con paginas virtuales
Hola que tal? Mira, es que tengo un problemilla con las pantallas virtuales te paso este codigo vale??? #include #include #include #include void set_modo(int modo); void put_pixel(int x, int y, int color); void linea_horiz(int x1, int x2, int y, int color); void linea_verti(int x, int y1, int y2, int color); void borra_pantalla(void); void rectangulo(int x1,int y1,int x2,int y2,int color); int get_pixel(int x, int y); void relleno(int x, int y, int color); void PutPixel(int x, int y, unsigned char color, unsigned char *where); void FlipTo(unsigned char *source, unsigned char *where); void set_modo(int modo) { union REGS inregs,outregs; inregs.h.ah=0; inregs.h.al=modo; int86(0x10,&inregs,&outregs); } void borra_pantalla(void) { unsigned char *vgaset=(unsigned char *) MK_FP(0xA000,0); memset(vgaset,0,64000); } int get_pixel(int x, int y) { char color; int offset=320*y+x; color=peekb(0xA000,offset); return color; } void put_pixel(int x, int y, int color) { int offset; offset=320*y+x; pokeb(0xA000,offset,color); } void linea_horiz(int x1, int x2, int y, int color) { int n,offset; for(n=x1;n<=x2;n++) { offset=320*y+n; pokeb(0xA000,offset,color); } } void linea_verti(int x, int y1, int y2, int color) { int n,offset; for(n=y1;n<=y2;n++) { offset=320*n+x; pokeb(0xA000,offset,color); } } void rectangulo(int x1,int y1,int x2,int y2,int color) { linea_horiz(x1,x2,y1,color); linea_horiz(x1,x2,y2,color); linea_verti(x1,y1,y2,color); linea_verti(x2,y1,y2,color); } void FlipTo(unsigned char *source, unsigned char *where) { memmove(where, source, 64000); } void PutPixel(int x, int y, unsigned char color, unsigned char *where) { where[(y<<8)+(y<<6)+x]=color; } void main(void) { int yo,x,y; unsigned char *DIR_VGA=(unsigned char *) MK_FP(0xA000, 0); unsigned char *pantalla; pantalla=(unsigned char *) malloc(64000); if(pantalla=NULL) exit(1); randomize(); set_modo(0x13); borra_pantalla(); put_pixel(200,100,4); linea_horiz(12,123,121,4); linea_verti(12,12,145,4); rectangulo(134,17,178,40,4); for(x=0; x<10; x++) pantalla[320+x]=random(256); //cuando lo hace 20 o 30 veces se cuelga el ordenador borra_pantalla(); FlipTo(pantalla,DIR_VGA); getchar(); free(pantalla); } ¿por que se cuelga y que puedo hacer para que no se me cuelge? Muchas gracias.

¿20 o 30 veces?
¿como lo va a hacer 20 o 30 veces, si el bucle solo lo repite 10? Y de todos modos random(256) devuelve numero entre 0 y 255 es eso lo que quieres, porque igual es el 0 el que lo cuelga. Espero que te vaya bien el consejo, de todos modos, si el problema esta en algun movimiento de memoria, que es lo más probable yo no se mucho sobre las direcciones de memoria del procesador para salida por pantalla y tampoco te recomiendo que hagas esto así, usa alguna librería como DirectX o OpenGL, porque conseguiras un codigo más portable, y con eso si te podré ayudar. Lo siento si no te soy de gran ayuda.

Pregunta finalizada. Valoración: 3.
Bien. Una respuesta aceptable.


Volver al mensaje
http://www.todoexpertos.com/categorias/tecnologia-e-internet/programacion/c-y-c------/respuestas/433161/problema-con-paginas-virtuales