Skip to content
Snippets Groups Projects

Master

Open m3-zayan requested to merge m3-zayan/minimalOS:master into master
1 file
+ 48
2
Compare changes
  • Side-by-side
  • Inline
+ 48
2
@@ -85,7 +85,28 @@ void terminal_putentryat(char c, uint8_t color, size_t x, size_t y) {
@@ -85,7 +85,28 @@ void terminal_putentryat(char c, uint8_t color, size_t x, size_t y) {
}
}
void terminal_putchar(char c) {
void terminal_putchar(char c) {
terminal_putentryat(c, terminal_color, terminal_column, terminal_row);
if (c == '\n'){
 
terminal_column = 0;
 
if (++terminal_row == VGA_HEIGHT){
 
/*terminal_row = 0;*/
 
terminal_row = VGA_HEIGHT - 1;
 
/*Perform scrolling by moving each row up by one*/
 
for (size_t y = 1;y < VGA_HEIGHT; y++){
 
for (size_t x = 0; x < VGA_WIDTH; x++){
 
size_t prev_index = (y - 1) * VGA_WIDTH + x;
 
size_t curr_index = y * VGA_WIDTH + x;
 
terminal_buffer[prev_index] = terminal_buffer[curr_index];
 
}
 
}
 
/*Clear the last row*/
 
size_t last_row_index = (VGA_HEIGHT - 1) * VGA_WIDTH;
 
for (size_t x = 0; x < VGA_WIDTH; x++) {
 
terminal_buffer[last_row_index + x] = make_vgaentry(' ',terminal_color);
 
}
 
}
 
 
}else{
 
terminal_putentryat(c, terminal_color, terminal_column, terminal_row);
if (++terminal_column == VGA_WIDTH) {
if (++terminal_column == VGA_WIDTH) {
terminal_column = 0;
terminal_column = 0;
if (++terminal_row == VGA_HEIGHT) {
if (++terminal_row == VGA_HEIGHT) {
@@ -93,6 +114,9 @@ void terminal_putchar(char c) {
@@ -93,6 +114,9 @@ void terminal_putchar(char c) {
}
}
}
}
}
}
 
 
 
}
void terminal_writestring(const char* data) {
void terminal_writestring(const char* data) {
size_t datalen = strlen(data);
size_t datalen = strlen(data);
@@ -111,5 +135,27 @@ void kernel_main() {
@@ -111,5 +135,27 @@ void kernel_main() {
* yet, '\n' will produce some VGA specific character instead.
* yet, '\n' will produce some VGA specific character instead.
* This is normal.
* This is normal.
*/
*/
terminal_writestring("Hello, kernel World!\n");
 
/*Outputs "Hello World" in red once */
 
terminal_setcolor(make_color(COLOR_RED, COLOR_BLACK));
 
terminal_writestring("Hello, kernel World!\n");
 
 
/*Outputs "Hello World" in white 6 times */
 
terminal_setcolor(make_color(COLOR_WHITE, COLOR_BLACK));
 
for (int i = 0; i < 6; i++){
 
terminal_writestring("Hello, kernel World!\n");
 
}
 
 
/*Outputs "Hello World" in blue 18 times */
 
terminal_setcolor(make_color(COLOR_BLUE, COLOR_BLACK));
 
for (int i = 0; i < 18; i++){
 
terminal_writestring("Hello, kernel World!\n");
 
}
 
 
/*Outputs "Hello World" in green 5 times */
 
terminal_setcolor(make_color(COLOR_GREEN, COLOR_BLACK));
 
for (int i = 0; i < 5; i++){
 
terminal_writestring("Hello, kernel World!\n");
 
}
 
}
}
Loading