/**************************************************************************************
Copyright (c) 2002
The UbixOS Project
$Id$
**************************************************************************************/
#include <ubixos/io.h>
#include <video/video.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;
}
}
}