/************************************************************************************** Copyright (c) 2002 The UbixOS Project $Id$ **************************************************************************************/ #include <ubixos/io.h> unsigned char *videoBuffer = (char *)0xB8000; int printColor = 0x07; void kprint(char *string) { unsigned int bufferOffset = 0,character = 0,i = 0; /* We Need To Get The Y Position */ outportByte(0x3d4, 0x0e); bufferOffset = inportByte(0x3d5); bufferOffset <<= 8; /* Shift Address Left 8 Bits */ /* Then We Need To Add The X Position */ outportByte(0x3d4, 0x0f); bufferOffset += inportByte(0x3d5); bufferOffset <<= 1; /* Shift Address Left 1 Bits */ while ((character=*string++)) { switch(character) { default: videoBuffer[bufferOffset++] = character; videoBuffer[bufferOffset++] = printColor; break; } /* Check To See If We Are Out Of Bounds */ if (bufferOffset >= 160*25) { for (i = 0; i < 160*24; i++) { videoBuffer[i] = videoBuffer[i+160]; } for (i = 0; i < 80; i++) { videoBuffer[(160*24)+(i*2)] = 0x20; videoBuffer[(160*24)+(i*2)+1] = 0x07; } bufferOffset -= 160; } } }