rendered paste bodyunsigned char *memcpy(unsigned char *dest, const unsigned char *src, int count)
{
int i;
for (i=0; i<count; i++) {
dest[i] = src[i];
}
return dest;
}
unsigned char *memset(unsigned char *dest, unsigned char val, int count)
{
int i;
for (i=0; i<count; i++) {
dest[i] = val;
}
return dest;
}
unsigned short* videoram = (unsigned short*)0xB8000;
int width = 80;
int height = 25;
void vgacon_init(){
}
void vgacon_scroll(int lines){
unsigned short size = (lines*width);
unsigned short *src = videoram + size;
memcpy (videoram, src,(width*height)-size);
memset ((unsigned short*)videoram + ((width*height)-size), 0, size*2); /* size * 2 because a character on vga memory is 16bits wide */
}
void vgacon_putc(unsigned short x, unsigned short y, unsigned short character, unsigned short attributes){
unsigned short* where = videoram + ((width*x)+y);
unsigned attr = attributes << 8;
*where = character | attr;
}