diff --git a/bin/shade.bin b/bin/shade.bin index e7a83fd..b3eafbf 100755 Binary files a/bin/shade.bin and b/bin/shade.bin differ diff --git a/bin/shade.iso b/bin/shade.iso index 1709085..1cabc3d 100644 Binary files a/bin/shade.iso and b/bin/shade.iso differ diff --git a/include/shade/platform/drivers/vga_text_mode.h b/include/shade/platform/drivers/vga_text_mode.h index 67da5a8..e930d79 100644 --- a/include/shade/platform/drivers/vga_text_mode.h +++ b/include/shade/platform/drivers/vga_text_mode.h @@ -1,7 +1,7 @@ #ifndef SHADE_PRINT_H #define SHADE_PRINT_H -#include + #define REG_SCREEN_CTRL 0x3d4 #define REG_SCREEN_DATA 0x3d5 @@ -51,6 +51,5 @@ void kernel_msg_ok(char* msg); void init_state(); -tty_driver_t vga_text_mode_get_driver(); #endif \ No newline at end of file diff --git a/include/shade/tty.h b/include/shade/tty.h deleted file mode 100644 index 1eacef7..0000000 --- a/include/shade/tty.h +++ /dev/null @@ -1,137 +0,0 @@ -#ifndef SHADE_TTY_H -#define SHADE_TTY_H - -#include -#include - -/** - * @brief A type to represent a printable char - * - */ -typedef struct tty_ochar_struct { - char character; - char style; -} tty_ochar_t; - -/** - * @brief A type to represent a tty driver - * - */ -typedef struct tty_driver_struct { - int max_rows; - int max_cols; - - void (*putchar) (char c, int x, int y, char style); - void (*setcurxy) (int x, int y); -} tty_driver_t; - -/** - * @brief A type to represent a tty - * - */ -typedef struct tty_struct { - // size information - int rows; - int cols; - - // cursor information - int cursor_row; - int cursor_col; - - // stateful information - cansid_state cansid; - - // buffers - tty_ochar_t output_buffer[65536]; - char input_buffer[1024]; - - // driver - tty_driver_t driver; - - // flags - bool active; -} tty_t; - -static tty_t ttys[10]; -static int active_tty; - -/** - * @brief Create a new tty_t with the provided driver - * - * @param driver - * @return tty_t - */ -tty_t tty_new(tty_driver_t driver); - -/** - * @brief Switch the screen to the provided tty - clear screen and flip to that tty - * - * @param index - */ -void tty_switch(int index); - -/** - * @brief Print the specified char c on the tty tty, at the current cursor location - * - * @param tty - * @param c - * @see tty_mvpchar - */ -void tty_pchar(int tty, char c); -/** - * @brief Print the specified char t to the tty tty, but move the cursor to x, y first. - * - * @param tty - * @param c - * @param x - * @param y - * @see tty_pchar - */ -void tty_mvpchar(int tty, char c, int x, int y); - -// tty_pnl family -/** - * @brief Print a newline at the current cursor location on the tty tty. - * - * @param tty - * @see tty_mvpnl - */ -void tty_pnl(int tty); -/** - * @brief Move to the specified cursor location and print a newline. - * - * @param tty - * @param c - * @param x - * @param y - * @see tty_pnl - */ -void tty_mvpnl(int tty, int x, int y); - -// tty_clr family -/** - * @brief Clear the entire screen of the specified tty. Uses tty_clrl internally. - * - * @param tty - * @see tty_clrl - */ -void tty_clr(int tty); -/** - * @brief Clear the specified line of the specified tty. - * - * @param tty - * @param line - * @see tty_clr - */ -void tty_clrl(int tty, int line); - -/** - * @brief Set the cursor position on the specified tty to the specified position. - * - * @param tty - * @param x - * @param y - */ -void tty_setcurxy(int tty, int x, int y); - -#endif \ No newline at end of file diff --git a/include/shade/version.h b/include/shade/version.h index b0abfd5..5dc84c3 100644 --- a/include/shade/version.h +++ b/include/shade/version.h @@ -3,7 +3,7 @@ // This file was autogenerated by the shadeOS build system. It should not be modified. #define SHADE_OS_KERNEL_VERSION "0.1.1-alpha" #define SHADE_OS_KERNEL "shade-development" -#define SHADE_OS_BUILD "531ba0c" -#define SHADE_OS_COMPILE_DATE "Tue May 17 10:46:28 AM EDT 2022" +#define SHADE_OS_BUILD "09c487e" +#define SHADE_OS_COMPILE_DATE "Sat May 21 03:18:24 PM EDT 2022" #define SHADE_OS_CODENAME "willow" #endif diff --git a/obj/kernel/kernel.o b/obj/kernel/kernel.o index 2f51074..ffd573f 100644 Binary files a/obj/kernel/kernel.o and b/obj/kernel/kernel.o differ diff --git a/src/kernel/platform/drivers/vga_text_mode.c b/src/kernel/platform/drivers/vga_text_mode.c index 5f79c50..07f78d6 100644 --- a/src/kernel/platform/drivers/vga_text_mode.c +++ b/src/kernel/platform/drivers/vga_text_mode.c @@ -119,12 +119,3 @@ void putchar(char c, int x, int y, char style) { }; buffer[x + 25 * y] = cr; } - -tty_driver_t vga_text_mode_get_driver() { - tty_driver_t ttyd; - ttyd.max_cols = 25; - ttyd.max_rows = 80; - ttyd.putchar = putchar; - ttyd.setcurxy = set_cursor_pos; - return ttyd; -} \ No newline at end of file diff --git a/src/kernel/tty.c b/src/kernel/tty.c deleted file mode 100644 index 154f999..0000000 --- a/src/kernel/tty.c +++ /dev/null @@ -1,90 +0,0 @@ -#include -#include - -// Initialize a new tty_t object with the specified driver -tty_t tty_new(tty_driver_t driver) { - tty_t tty; - tty.active = false; - tty.cansid = cansid_init(); - tty.cols = driver.max_cols; - tty.cursor_col = 0; - tty.cursor_row = 0; - tty.driver = driver; - tty.rows = driver.max_rows; - return tty; -} - -void tty_switch(int index); - -// private function: print the contents of a tty's output buffer to the screen -void _tty_flip(int tty, bool clear) { - // clear the screen if required (used in tty_switch) - if (clear) tty_clr(tty); - // iterate over every (known) character in the tty output buffer - for (int x = 0; x < ttys[tty].cols; x++) { - for (int y = 0; y < ttys[tty].rows; y++) { - // get the tty_ochar_t - tty_ochar_t cr = ttys[tty].output_buffer[x + ttys[tty].cols + y]; - // and print it with the driver - ttys[tty].driver.putchar(cr.character, x, y, cr.style); - } - } - // and update the real cursor position - ttys[tty].driver.setcurxy(ttys[tty].cursor_col, ttys[tty].cursor_row); -} - -// tty_pchar family -void tty_pchar(int tty, char c) { - if (c == 0) { - return; - } - - if (c == '\n') { - tty_pnl(tty); - return; - } - - if (ttys[tty].cursor_col > ttys[tty].cols) { - tty_pnl(tty); - } - - color_char ccr = cansid_process(&ttys[tty].cansid, c); - - tty_ochar_t cr; - cr.character = ccr.ascii; - cr.style = ccr.style; - ttys[tty].output_buffer[ttys[tty].cursor_col + ttys[tty].cols * ttys[tty].cursor_row] = cr; - - ttys[tty].cursor_col++; - tty_setcurxy(tty, ttys[tty].cursor_col, ttys[tty].cursor_row); - - // if tty is selected, flip - if (tty == active_tty) _tty_flip(tty, false); -} - -void tty_mvpchar(int tty, char c, int x, int y) { - tty_setcurxy(tty, x, y); - tty_pchar(tty, c); -} - -// tty_pnl family -void tty_pnl(int tty) { - return; -} -void tty_mvpnl(int tty, int x, int y) { - return; -} - -// tty_clr family -void tty_clr(int tty) { - return; -} -void tty_clrl(int tty, int line) { - return; -} - -void tty_setcurxy(int tty, int x, int y) { - ttys[tty].cursor_col = x; - ttys[tty].cursor_row = y; - ttys[tty].driver.setcurxy(x, y); -} \ No newline at end of file