Todoexpertos.com
http://www.todoexpertos.com
La respuesta está en Internet
Información de la pregunta
Título: Problema con paginas virtuales
Experto: dide
Valoración: 4
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.

Re: Problema con paginas virtuales
el código está correcto! lo único q le falta es la incluir la libreria mem.h #include asi si q funciona :-) Un saludo cordia. DidE

Problema con paginas virtuales
Muchas gracias... ya no se me cuelga pero ahora tengo otro problemilla... unsigned char *DIR_VGA=(unsigned char *) MK_FP(0xA000, 0); unsigned char *pantalla; pantalla=(unsigned char *) malloc(64000); if(pantalla==NULL) exit(1); randomize(); Se me va al exit(1)...no me reserva los 64000 bytes, y lo tengo en modelo Huge... Gracias

Pregunta finalizada. Valoración: 4.
Muy Bien. Me ha sido de gran utilidad


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