2021-04-04 11:19:55 +02:00
|
|
|
#include "print.h"
|
2021-04-04 14:03:26 +02:00
|
|
|
#include "types.h"
|
|
|
|
|
|
|
|
#define MAX_COL 80
|
|
|
|
#define MAX_LINE 25
|
|
|
|
|
|
|
|
char *video=(char *)0xB8000;
|
|
|
|
u8 col=0;
|
|
|
|
u8 line=0;
|
2021-04-04 11:19:55 +02:00
|
|
|
|
|
|
|
|
|
|
|
void putchar(char c){
|
2021-04-04 14:03:26 +02:00
|
|
|
// Print char
|
|
|
|
video[col*2+MAX_COL*line*2]=c;
|
|
|
|
// Refresh location
|
|
|
|
col+=1;
|
|
|
|
if(col>= MAX_COL){
|
|
|
|
col=0;
|
|
|
|
line+=1;
|
|
|
|
if(line>=MAX_LINE){
|
|
|
|
line=MAX_LINE-1;
|
|
|
|
scrollup();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void print(char *str){
|
|
|
|
int i=0;
|
|
|
|
while(str[i]!='\0'){
|
|
|
|
putchar(str[i]);
|
|
|
|
i++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void clear(){
|
|
|
|
for(char i=0;i<MAX_LINE;i++){
|
|
|
|
scrollup();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void scrollup(){
|
|
|
|
// Move line up
|
|
|
|
for(char i=1;i<=MAX_LINE;i++){
|
|
|
|
for(char j=0;j<=MAX_COL;j++)
|
|
|
|
video[j*2+MAX_COL*(i-1)*2]=video[j*2+MAX_COL*i*2];
|
|
|
|
}
|
|
|
|
// Clear last line
|
|
|
|
for(char i=0;i<=MAX_COL;i++){
|
|
|
|
video[col*2+MAX_COL*(MAX_LINE-1)*2]='\0';
|
|
|
|
}
|
2021-04-04 11:19:55 +02:00
|
|
|
}
|