From dda9c8a1ef8eda161db99caa63143eeae2711ebc Mon Sep 17 00:00:00 2001 From: 0x35c Date: Tue, 17 Dec 2024 15:33:21 +0100 Subject: [PATCH] feature: terminal scroll works again (with a bg image, without the bg image it's a wip) --- headers/fonts/eating_pasta_regular_13.h | 1406 ++++++++++++----------- libbozo/src/ctype/isprint.c | 4 +- src/drivers/vbe.c | 1 - src/kernel.c | 1 - src/terminal/put.c | 52 +- tools/icon_maker.py | 37 + 6 files changed, 840 insertions(+), 661 deletions(-) create mode 100644 tools/icon_maker.py diff --git a/headers/fonts/eating_pasta_regular_13.h b/headers/fonts/eating_pasta_regular_13.h index 1d61912..b97987c 100644 --- a/headers/fonts/eating_pasta_regular_13.h +++ b/headers/fonts/eating_pasta_regular_13.h @@ -4,645 +4,767 @@ #include "font.h" -struct font eating_pasta_regular_13_font[] = {\ - { - .width = 0, - .height = 0, - .bitmap = NULL, - }, - { - .width = 0, - .height = 0, - .bitmap = NULL, - }, - { - .width = 0, - .height = 0, - .bitmap = NULL, - }, - { - .width = 0, - .height = 0, - .bitmap = NULL, - }, - { - .width = 0, - .height = 0, - .bitmap = NULL, - }, - { - .width = 0, - .height = 0, - .bitmap = NULL, - }, - { - .width = 0, - .height = 0, - .bitmap = NULL, - }, - { - .width = 0, - .height = 0, - .bitmap = NULL, - }, - { - .width = 0, - .height = 0, - .bitmap = NULL, - }, - { - .width = 0, - .height = 0, - .bitmap = NULL, - }, - { - .width = 0, - .height = 0, - .bitmap = NULL, - }, - { - .width = 0, - .height = 0, - .bitmap = NULL, - }, - { - .width = 0, - .height = 0, - .bitmap = NULL, - }, - { - .width = 0, - .height = 0, - .bitmap = NULL, - }, - { - .width = 0, - .height = 0, - .bitmap = NULL, - }, - { - .width = 0, - .height = 0, - .bitmap = NULL, - }, - { - .width = 0, - .height = 0, - .bitmap = NULL, - }, - { - .width = 0, - .height = 0, - .bitmap = NULL, - }, - { - .width = 0, - .height = 0, - .bitmap = NULL, - }, - { - .width = 0, - .height = 0, - .bitmap = NULL, - }, - { - .width = 0, - .height = 0, - .bitmap = NULL, - }, - { - .width = 0, - .height = 0, - .bitmap = NULL, - }, - { - .width = 0, - .height = 0, - .bitmap = NULL, - }, - { - .width = 0, - .height = 0, - .bitmap = NULL, - }, - { - .width = 0, - .height = 0, - .bitmap = NULL, - }, - { - .width = 0, - .height = 0, - .bitmap = NULL, - }, - { - .width = 0, - .height = 0, - .bitmap = NULL, - }, - { - .width = 0, - .height = 0, - .bitmap = NULL, - }, - { - .width = 0, - .height = 0, - .bitmap = NULL, - }, - { - .width = 0, - .height = 0, - .bitmap = NULL, - }, - { - .width = 0, - .height = 0, - .bitmap = NULL, - }, - { - .width = 0, - .height = 0, - .bitmap = NULL, - }, - { - .width = 1, - .height = 1, - .bitmap = " ", - }, - { - .width = 4, - .height = 13, - .bitmap = "####### ### ### ### ### ### ### ### ### ### ### ", - }, - { - .width = 6, - .height = 5, - .bitmap = " ## ##### ##### ## ## ## # ", - }, - { - .width = 13, - .height = 12, - .bitmap = " ### ### #### #### #### #### ############ ############ #### #### ############ ############ ### ### ### ### #### #### ", - }, - { - .width = 9, - .height = 15, - .bitmap = " # #### ###### ####### #### #### #### ####### ###### # ### # ### ######## ####### ####### # ", - }, - { - .width = 16, - .height = 13, - .bitmap = " #### ### ##### #### ### ## ### ### ## #### ##### ### ### #### #### ### ###### ### ## ## #### ## ## ### ## ### #### ##### #### #### ## ", - }, - { - .width = 11, - .height = 13, - .bitmap = " #### ###### ### ## ### ### ###### ##### ### #### ### ######## ######## ### #### ######### ##### ### ### ", - }, - { - .width = 3, - .height = 5, - .bitmap = " ######## ## # ", - }, - { - .width = 5, - .height = 15, - .bitmap = " # ### #### ### #### ### ### ### ### ### ### ### #### #### ### ", - }, - { - .width = 6, - .height = 16, - .bitmap = " ## #### ### #### ### ### #### #### #### #### ### ### #### #### ### ", - }, - { - .width = 7, - .height = 6, - .bitmap = " # # # # ##### ##### ##### # ", - }, - { - .width = 8, - .height = 9, - .bitmap = " ### ### ### ######################## ### ### ## ", - }, - { - .width = 4, - .height = 5, - .bitmap = " ## ### ### ### ## ", - }, - { - .width = 8, - .height = 3, - .bitmap = "########################", - }, - { - .width = 4, - .height = 4, - .bitmap = " ## ####### ###", - }, - { - .width = 7, - .height = 14, - .bitmap = " ### ### ### ### ### ### ### ### #### ### ### #### ### ### ", - }, - { - .width = 9, - .height = 13, - .bitmap = " #### ###### ######## ### ### ### ### ## ### ## ## ### ## ### ### ### ### ######## ####### ##### ", - }, - { - .width = 6, - .height = 13, - .bitmap = " ### #### ################# ### ### ### ### ### ### ### ###", - }, - { - .width = 9, - .height = 13, - .bitmap = " ### ###### ######## ### #### ### #### ### #### #### #### ####### ##################", - }, - { - .width = 10, - .height = 13, - .bitmap = " #### ####### ######## # ### ## #### #### # ### ### ## ### ######## ######## ##### ", - }, - { - .width = 10, - .height = 13, - .bitmap = " #### ##### ##### ###### ### ### ####### ### #### ############################# # #### #### #### ", - }, - { - .width = 8, - .height = 14, - .bitmap = " ##### ####### ####### ### ### ###### ####### ######## #### #### ########### ####### ##### ", - }, - { - .width = 9, - .height = 13, - .bitmap = " #### #### ### #### ###### ######## ### ####### ### ### ### ### ### ######## ###### ## ", - }, - { - .width = 7, - .height = 13, - .bitmap = "############## ###### ### #### ### ### #### ### ### ### #### #### ", - }, - { - .width = 10, - .height = 13, - .bitmap = " ##### ####### ######## ### ### ### ## ####### ###### ######## ### ## ### #### ######## ######## ###### ", - }, - { - .width = 9, - .height = 13, - .bitmap = " #### ####### ######## ## ###### ###### ### ######## ######## ###### ### #### #### ## ", - }, - { - .width = 5, - .height = 10, - .bitmap = " ### #### #### ### ## ### #### ### ", - }, - { - .width = 5, - .height = 12, - .bitmap = " # ### #### ### ## ## ### ### ## ", - }, - { - .width = 7, - .height = 9, - .bitmap = " # ### #### ##### ### ###### ##### ### ", - }, - { - .width = 7, - .height = 7, - .bitmap = " #### ###### ###### ###### ###### ######", - }, - { - .width = 7, - .height = 9, - .bitmap = " # ### #### ##### ### ###### ##### ### # ", - }, - { - .width = 8, - .height = 13, - .bitmap = " #### ###### ###### ### ###### ## ### ##### #### ### ### ### ### ", - }, - { - .width = 14, - .height = 14, - .bitmap = " ###### ######## ########## #### ### ### ######### ######### ### ## ### # #### ## ### ##### ############ ### ### ### #### ######### ######## ####### ", - }, - { - .width = 11, - .height = 12, - .bitmap = " ##### ##### ###### ## ### ### ### ### ### ### ## ######### ######### ### ### ### ####### ####", - }, - { - .width = 9, - .height = 12, - .bitmap = "####### ######## ### ####### ############ ####### ######## ### ### ### #################### ###### ", - }, - { - .width = 9, - .height = 13, - .bitmap = " #### ###### #### ### ### ### ### #### #### #### ### ## ### ### ######## ###### #### ", - }, - { - .width = 9, - .height = 12, - .bitmap = "##### ####### ####### ### #### ## ### ### ## ### ###### ####### #### ####### ###### #### ", - }, - { - .width = 9, - .height = 13, - .bitmap = "######## ######## ######## ### ### #### ####### ###### ### ### ######## ######## ######## ", - }, - { - .width = 8, - .height = 12, - .bitmap = "########################### ### ####### ####### ####### ### ### ### ### ", - }, - { - .width = 9, - .height = 13, - .bitmap = " ### ###### ######## ### ### ### #### #### #### #### ### #### ### ## ######## ###### #### ", - }, - { - .width = 10, - .height = 13, - .bitmap = "### ###### ###### ###### ###### ##################################### ####### ####### ####### ####### ####", - }, - { - .width = 3, - .height = 12, - .bitmap = "####################################", - }, - { - .width = 9, - .height = 13, - .bitmap = " ### ### ### ### ### ### ###### ###### ######## ### ######## ####### #### ", - }, - { - .width = 10, - .height = 13, - .bitmap = "### ### ### ### ### ### ### ### #### ####### ###### ###### ####### ### #### ### #### ### ### ### # ", - }, - { - .width = 8, - .height = 13, - .bitmap = " ### ### ### ### ### ### ### ### ### ### ####### ####### #######", - }, - { - .width = 12, - .height = 13, - .bitmap = " ## ## #### #### ##### #### ##### ##### ##### ##### ########### ########### ### ### ### ### ### ### ### # ### ### ### ### ### ### ###", - }, - { - .width = 10, - .height = 13, - .bitmap = "#### ####### ######## ######## ######## ######### ###### ## ###### ######### ######### ######## ######## ####### ####", - }, - { - .width = 10, - .height = 13, - .bitmap = " ##### ####### ######### ### #### ### ###### ###### ###### ### ### ### ### #### ######## ####### ##### ", - }, - { - .width = 8, - .height = 13, - .bitmap = "### ###### ####### ### ###### ###### ###### ########### ###### #### ### ### ### ", - }, - { - .width = 10, - .height = 15, - .bitmap = " ##### ####### ######### ### #### ### ###### ###### ###### ####### ##### ### ##### ######## ####### ####### ## # ", - }, - { - .width = 9, - .height = 13, - .bitmap = "### ###### ####### ### ### ### ### ### ### ### #### ####### ###### ###### ### ### ### ####### # ", - }, - { - .width = 9, - .height = 13, - .bitmap = " ##### ###### ####### #### #### #### ####### ##### #### ### ######## ####### ###### ", - }, - { - .width = 8, - .height = 12, - .bitmap = "################ ### ### ### ### ### ### ### ### ### ### ", - }, - { - .width = 10, - .height = 13, - .bitmap = " ### ### ### ### ### ### ## ### ## ### ## ### ### ### ### ### ### ### ### ### ######## ###### #### ", - }, - { - .width = 10, - .height = 13, - .bitmap = "### ###### ### ### #### ### ### ### ### ### ### ### ### ###### ###### ###### ###### ##### #### ", - }, - { - .width = 14, - .height = 13, - .bitmap = "### #### ###### #### ####### #### ### ### #### ### ### ##### ### ############ ############ ###### ##### ##### ##### ##### ##### #### #### #### #### #### ### ", - }, - { - .width = 10, - .height = 13, - .bitmap = " ### ## #### #### ######## ###### ###### #### #### ##### ###### ####### ### #### #### ### ### ####", - }, - { - .width = 11, - .height = 13, - .bitmap = "#### ####### ### #### #### #### ### ####### ##### #### ### ### ### ### ### ### ", - }, - { - .width = 8, - .height = 13, - .bitmap = " ####### ####### ## #### ### ### ### ### ### ### ### ###### ################", - }, - { - .width = 7, - .height = 16, - .bitmap = " ####################### ### ### ### ### ### ### ### ### #### ############## ######", - }, - { - .width = 7, - .height = 14, - .bitmap = "### ### #### ### ### #### ### ### #### ### ### ### #### ###", - }, - { - .width = 7, - .height = 16, - .bitmap = "###### ############## #### ### ### ### ### ### ### ### ### ################# ###### ", - }, - { - .width = 8, - .height = 7, - .bitmap = " ### #### #### ##### ###### ## ### ### ###", - }, - { - .width = 9, - .height = 3, - .bitmap = "###########################", - }, - { - .width = 4, - .height = 3, - .bitmap = " ## ### # ", - }, - { - .width = 11, - .height = 12, - .bitmap = " #### ##### ###### ## ### ### ### ### ### ### ### ######### ######### ### ### #### ####### ###", - }, - { - .width = 9, - .height = 12, - .bitmap = "###### ######## ### ####### ############ ####### ######## ### ### ### #################### ###### ", - }, - { - .width = 9, - .height = 13, - .bitmap = " #### ###### #### ### ### ### ### #### #### #### #### ## ### ### ######## ###### #### ", - }, - { - .width = 10, - .height = 12, - .bitmap = " ##### ###### ####### ## #### ## ### ## ## ## ### ### ### ### #### ####### ###### #### ", - }, - { - .width = 9, - .height = 13, - .bitmap = " ######## ######## ######## ### ### #### ###### ###### ### ### ######## ######## ########", - }, - { - .width = 8, - .height = 12, - .bitmap = "####################### ### ### ####### ####### ####### ### ### ### ### ", - }, - { - .width = 9, - .height = 13, - .bitmap = " ### ###### ######## ### ### ### #### #### #### ######## #### ### ### ######## ###### #### ", - }, - { - .width = 10, - .height = 13, - .bitmap = "### ###### ###### ####### ####### ##################################### ####### ####### ####### ####### ####", - }, - { - .width = 3, - .height = 12, - .bitmap = "####################################", - }, - { - .width = 9, - .height = 13, - .bitmap = " ### ### ### ### ### ### ###### ###### ######## ############ ####### #### ", - }, - { - .width = 11, - .height = 13, - .bitmap = " ### ### ### ### ### ### ### ### #### ####### ###### ###### ####### ### #### ### #### ### #### ### # ", - }, - { - .width = 8, - .height = 13, - .bitmap = " ### ### ### ### ### ### ### ### ### ### ####### ####### ###### ", - }, - { - .width = 12, - .height = 13, - .bitmap = " ## ## #### #### ##### #### ##### ##### ##### ##### ########### ########### ### ### ### ### ### ### ### # ### ### ### ### ### ### ###", - }, - { - .width = 10, - .height = 13, - .bitmap = "#### ####### ####### ######## ######## ######### ###### ## ## ### ##### ### ##### ### #### ### #### ### ### ### ### ", - }, - { - .width = 10, - .height = 13, - .bitmap = " ##### ####### ######### ### #### ### ###### ###### ###### ####### ### ### #### ######## ####### ##### ", - }, - { - .width = 9, - .height = 13, - .bitmap = " ### ###### ####### ### ### ### ### ### ### ### #### ####### ###### #### ### ### ### ", - }, - { - .width = 10, - .height = 15, - .bitmap = " ##### ####### ######### ### #### ### ###### ###### ###### ####### ##### ### ##### ######## ####### ####### ### # ", - }, - { - .width = 10, - .height = 13, - .bitmap = " ### ###### ####### ### ### ### ### ### ### ### #### ####### ###### ###### ### ### ### #### ### # ", - }, - { - .width = 9, - .height = 13, - .bitmap = " ##### ###### ####### #### #### #### ####### ##### #### ### ######## ####### ###### ", - }, - { - .width = 8, - .height = 12, - .bitmap = "################ ### ### ### ### ### ### ### ### ### ### ", - }, - { - .width = 10, - .height = 13, - .bitmap = " ### ### ### ### ## ###### ###### ###### ### ## ### ### ### ### ### ### ### ######## ###### #### ", - }, - { - .width = 10, - .height = 13, - .bitmap = "### ####### ### ### #### ### ### ### ### ### ### ### ### ###### ###### ###### ###### ##### #### ", - }, - { - .width = 14, - .height = 13, - .bitmap = "### #### ###### #### ###### #### ### ### #### ### ### ######### ############ ############ ##### ##### ##### ##### ##### ##### #### #### #### #### #### ### ", - }, - { - .width = 10, - .height = 13, - .bitmap = " ### ## #### #### ######## ###### ###### #### #### ##### ###### ####### ### #### #### ### ### ####", - }, - { - .width = 11, - .height = 13, - .bitmap = "#### ####### ### #### #### ### ### ####### ##### ##### ### ### ### ### ### ### ", - }, - { - .width = 8, - .height = 13, - .bitmap = " ####### ####### ## #### ### ### ### ### ### ### ### ###### ################", - }, - { - .width = 6, - .height = 17, - .bitmap = " # ### #### #### ### ### ### ### #### ### #### #### #### #### #### #### # ", - }, - { - .width = 4, - .height = 17, - .bitmap = " ###################################################################", - }, - { - .width = 6, - .height = 17, - .bitmap = " ## ### ##### #### ### ### ### #### ### #### ### ### ### #### ##### ### ## ", - }, - { - .width = 10, - .height = 5, - .bitmap = " ## #### # ########## ######### #### ", - }, - { - .width = 0, - .height = 0, - .bitmap = NULL, - }, -}; \ No newline at end of file +struct font eating_pasta_regular_13_font[] = { + { + .width = 0, + .height = 0, + .bitmap = NULL, + }, + { + .width = 0, + .height = 0, + .bitmap = NULL, + }, + { + .width = 0, + .height = 0, + .bitmap = NULL, + }, + { + .width = 0, + .height = 0, + .bitmap = NULL, + }, + { + .width = 0, + .height = 0, + .bitmap = NULL, + }, + { + .width = 0, + .height = 0, + .bitmap = NULL, + }, + { + .width = 0, + .height = 0, + .bitmap = NULL, + }, + { + .width = 0, + .height = 0, + .bitmap = NULL, + }, + { + .width = 0, + .height = 0, + .bitmap = NULL, + }, + { + .width = 0, + .height = 0, + .bitmap = NULL, + }, + { + .width = 0, + .height = 0, + .bitmap = NULL, + }, + { + .width = 0, + .height = 0, + .bitmap = NULL, + }, + { + .width = 0, + .height = 0, + .bitmap = NULL, + }, + { + .width = 0, + .height = 0, + .bitmap = NULL, + }, + { + .width = 0, + .height = 0, + .bitmap = NULL, + }, + { + .width = 0, + .height = 0, + .bitmap = NULL, + }, + { + .width = 0, + .height = 0, + .bitmap = NULL, + }, + { + .width = 0, + .height = 0, + .bitmap = NULL, + }, + { + .width = 0, + .height = 0, + .bitmap = NULL, + }, + { + .width = 0, + .height = 0, + .bitmap = NULL, + }, + { + .width = 0, + .height = 0, + .bitmap = NULL, + }, + { + .width = 0, + .height = 0, + .bitmap = NULL, + }, + { + .width = 0, + .height = 0, + .bitmap = NULL, + }, + { + .width = 0, + .height = 0, + .bitmap = NULL, + }, + { + .width = 0, + .height = 0, + .bitmap = NULL, + }, + { + .width = 0, + .height = 0, + .bitmap = NULL, + }, + { + .width = 0, + .height = 0, + .bitmap = NULL, + }, + { + .width = 0, + .height = 0, + .bitmap = NULL, + }, + { + .width = 0, + .height = 0, + .bitmap = NULL, + }, + { + .width = 0, + .height = 0, + .bitmap = NULL, + }, + { + .width = 0, + .height = 0, + .bitmap = NULL, + }, + { + .width = 0, + .height = 0, + .bitmap = NULL, + }, + { + .width = 1, + .height = 1, + .bitmap = " ", + }, + { + .width = 4, + .height = 13, + .bitmap = "####### ### ### ### ### ### ### ### ### ### ### ", + }, + { + .width = 6, + .height = 5, + .bitmap = " ## ##### ##### ## ## ## # ", + }, + { + .width = 13, + .height = 12, + .bitmap = " ### ### #### #### #### #### " + "############ ############ #### #### ############ " + "############ ### ### ### ### #### #### ", + }, + { + .width = 9, + .height = 15, + .bitmap = " # #### ###### ####### #### #### #### " + " ####### ###### # ### # ### ######## ####### " + "####### # ", + }, + { + .width = 16, + .height = 13, + .bitmap = " #### ### ##### #### ### ## ### ### ## #### " + " ##### ### ### #### #### ### ###### " + "### ## ## #### ## ## ### ## ### #### ##### " + " #### #### ## ", + }, + { + .width = 11, + .height = 13, + .bitmap = " #### ###### ### ## ### ### ###### " + "##### ### #### ### ######## ######## ### #### " + "######### ##### ### ### ", + }, + { + .width = 3, + .height = 5, + .bitmap = " ######## ## # ", + }, + { + .width = 5, + .height = 15, + .bitmap = " # ### #### ### #### ### ### ### ### ### ### ### " + "#### #### ### ", + }, + { + .width = 6, + .height = 16, + .bitmap = " ## #### ### #### ### ### #### #### #### " + "#### ### ### #### #### ### ", + }, + { + .width = 7, + .height = 6, + .bitmap = " # # # # ##### ##### ##### # ", + }, + { + .width = 8, + .height = 9, + .bitmap = " ### ### ### ######################## ### " + "### ## ", + }, + { + .width = 4, + .height = 5, + .bitmap = " ## ### ### ### ## ", + }, + { + .width = 8, + .height = 3, + .bitmap = "########################", + }, + { + .width = 4, + .height = 4, + .bitmap = " ## ####### ###", + }, + { + .width = 7, + .height = 14, + .bitmap = " ### ### ### ### ### ### ### ### " + "#### ### ### #### ### ### ", + }, + { + .width = 9, + .height = 13, + .bitmap = " #### ###### ######## ### ### ### ### ## ### ## " + "## ### ## ### ### ### ### ######## ####### ##### ", + }, + { + .width = 6, + .height = 13, + .bitmap = " ### #### ################# ### ### ### ### " + "### ### ### ###", + }, + { + .width = 9, + .height = 13, + .bitmap = " ### ###### ######## ### #### ### #### " + "### #### #### #### ####### ##################", + }, + { + .width = 10, + .height = 13, + .bitmap = " #### ####### ######## # ### ## #### " + " #### # ### ### ## ### ######## ######## " + " ##### ", + }, + { + .width = 10, + .height = 13, + .bitmap = + " #### ##### ##### ###### ### ### ####### ### " + "#### ############################# # #### #### #### ", + }, + { + .width = 8, + .height = 14, + .bitmap = " ##### ####### ####### ### ### ###### ####### " + "######## #### #### ########### ####### ##### ", + }, + { + .width = 9, + .height = 13, + .bitmap = " #### #### ### #### ###### ######## ### " + "####### ### ### ### ### ### ######## ###### ## ", + }, + { + .width = 7, + .height = 13, + .bitmap = "############## ###### ### #### ### ### #### " + "### ### ### #### #### ", + }, + { + .width = 10, + .height = 13, + .bitmap = " ##### ####### ######## ### ### ### ## ####### " + " ###### ######## ### ## ### #### ######## ######## " + " ###### ", + }, + { + .width = 9, + .height = 13, + .bitmap = + " #### ####### ######## ## ###### ###### ### ######## " + "######## ###### ### #### #### ## ", + }, + { + .width = 5, + .height = 10, + .bitmap = " ### #### #### ### ## ### #### ### ", + }, + { + .width = 5, + .height = 12, + .bitmap = + " # ### #### ### ## ## ### ### ## ", + }, + { + .width = 7, + .height = 9, + .bitmap = + " # ### #### ##### ### ###### ##### ### ", + }, + { + .width = 7, + .height = 7, + .bitmap = " #### ###### ###### ###### ###### ######", + }, + { + .width = 7, + .height = 9, + .bitmap = + " # ### #### ##### ### ###### ##### ### # ", + }, + { + .width = 8, + .height = 13, + .bitmap = " #### ###### ###### ### ###### ## ### ##### " + "#### ### ### ### ### ", + }, + { + .width = 14, + .height = 14, + .bitmap = " ###### ######## ########## #### ### " + "### ######### ######### ### ## ### # #### ## ### ##### " + "############ ### ### ### #### ######### " + "######## ####### ", + }, + { + .width = 11, + .height = 12, + .bitmap = " ##### ##### ###### ## ### ### ### " + "### ### ### ## ######### ######### ### ### ### " + "####### ####", + }, + { + .width = 9, + .height = 12, + .bitmap = "####### ######## ### ####### ############ ####### " + "######## ### ### ### #################### ###### ", + }, + { + .width = 9, + .height = 13, + .bitmap = " #### ###### #### ### ### ### ### #### #### " + " #### ### ## ### ### ######## ###### #### ", + }, + { + .width = 9, + .height = 12, + .bitmap = "##### ####### ####### ### #### ## ### ### ## ### " + "###### ####### #### ####### ###### #### ", + }, + { + .width = 9, + .height = 13, + .bitmap = + "######## ######## ######## ### ### #### ####### " + "###### ### ### ######## ######## ######## ", + }, + { + .width = 8, + .height = 12, + .bitmap = "########################### ### ####### ####### " + "####### ### ### ### ### ", + }, + { + .width = 9, + .height = 13, + .bitmap = " ### ###### ######## ### ### ### #### #### " + " #### #### ### #### ### ## ######## ###### #### ", + }, + { + .width = 10, + .height = 13, + .bitmap = "### ###### ###### ###### ###### " + "##################################### ####### ####### " + "####### ####### ####", + }, + { + .width = 3, + .height = 12, + .bitmap = "####################################", + }, + { + .width = 9, + .height = 13, + .bitmap = " ### ### ### ### ### ### " + "###### ###### ######## ### ######## ####### #### ", + }, + { + .width = 10, + .height = 13, + .bitmap = "### ### ### ### ### ### ### ### #### ####### " + "###### ###### ####### ### #### ### #### ### ### " + "### # ", + }, + { + .width = 8, + .height = 13, + .bitmap = " ### ### ### ### ### ### ### " + "### ### ### ####### ####### #######", + }, + { + .width = 12, + .height = 13, + .bitmap = " ## ## #### #### ##### #### ##### ##### ##### " + "##### ########### ########### ### ### ### ### ### ### ### " + "# ### ### ### ### ### ### ###", + }, + { + .width = 10, + .height = 13, + .bitmap = "#### ####### ######## ######## ######## ######### " + "###### ## ###### ######### ######### ######## ######## " + "####### ####", + }, + { + .width = 10, + .height = 13, + .bitmap = + " ##### ####### ######### ### #### ### ###### ###### " + " ###### ### ### ### ### #### ######## ####### ##### ", + }, + { + .width = 8, + .height = 13, + .bitmap = "### ###### ####### ### ###### ###### ###### " + "########### ###### #### ### ### ### ", + }, + { + .width = 10, + .height = 15, + .bitmap = " ##### ####### ######### ### #### ### ###### " + "###### ###### ####### ##### ### ##### ######## " + "####### ####### ## # ", + }, + { + .width = 9, + .height = 13, + .bitmap = "### ###### ####### ### ### ### ### ### ### ### " + "#### ####### ###### ###### ### ### ### ####### # ", + }, + { + .width = 9, + .height = 13, + .bitmap = + " ##### ###### ####### #### #### #### ####### " + " ##### #### ### ######## ####### ###### ", + }, + { + .width = 8, + .height = 12, + .bitmap = "################ ### ### ### ### ### " + "### ### ### ### ### ", + }, + { + .width = 10, + .height = 13, + .bitmap = + " ### ### ### ### ### ### ## ### ## ### ## ### ### " + " ### ### ### ### ### ### ### ######## ###### #### ", + }, + { + .width = 10, + .height = 13, + .bitmap = + "### ###### ### ### #### ### ### ### ### ### ### ### " + "### ###### ###### ###### ###### ##### #### ", + }, + { + .width = 14, + .height = 13, + .bitmap = + "### #### ###### #### ####### #### ### ### #### ### ### " + "##### ### ############ ############ ###### ##### ##### ##### " + "##### ##### #### #### #### #### #### ### ", + }, + { + .width = 10, + .height = 13, + .bitmap = " ### ## #### #### ######## ###### ###### #### " + " #### ##### ###### ####### ### #### #### ### " + "### ####", + }, + { + .width = 11, + .height = 13, + .bitmap = "#### ####### ### #### #### #### ### ####### " + "##### #### ### ### ### ### " + " ### ### ", + }, + { + .width = 8, + .height = 13, + .bitmap = " ####### ####### ## #### ### ### ### ### " + "### ### ### ###### ################", + }, + { + .width = 7, + .height = 16, + .bitmap = " ####################### ### ### ### ### ### " + " ### ### ### #### ############## ######", + }, + { + .width = 7, + .height = 14, + .bitmap = "### ### #### ### ### #### ### ### " + "#### ### ### ### #### ###", + }, + { + .width = 7, + .height = 16, + .bitmap = "###### ############## #### ### ### ### ### " + "### ### ### ### ################# ###### ", + }, + { + .width = 8, + .height = 7, + .bitmap = " ### #### #### ##### ###### ## ### ### ###", + }, + { + .width = 9, + .height = 3, + .bitmap = "###########################", + }, + { + .width = 4, + .height = 3, + .bitmap = " ## ### # ", + }, + { + .width = 11, + .height = 12, + .bitmap = " #### ##### ###### ## ### ### ### " + "### ### ### ### ######### ######### ### ### #### " + "####### ###", + }, + { + .width = 9, + .height = 12, + .bitmap = "###### ######## ### ####### ############ ####### " + "######## ### ### ### #################### ###### ", + }, + { + .width = 9, + .height = 13, + .bitmap = " #### ###### #### ### ### ### ### #### #### " + " #### #### ## ### ### ######## ###### #### ", + }, + { + .width = 10, + .height = 12, + .bitmap = + " ##### ###### ####### ## #### ## ### ## ## ## " + " ### ### ### ### #### ####### ###### #### ", + }, + { + .width = 9, + .height = 13, + .bitmap = + " ######## ######## ######## ### ### #### ###### " + "###### ### ### ######## ######## ########", + }, + { + .width = 8, + .height = 12, + .bitmap = "####################### ### ### ####### ####### " + "####### ### ### ### ### ", + }, + { + .width = 9, + .height = 13, + .bitmap = " ### ###### ######## ### ### ### #### #### " + " #### ######## #### ### ### ######## ###### #### ", + }, + { + .width = 10, + .height = 13, + .bitmap = "### ###### ###### ####### ####### " + "##################################### ####### ####### " + "####### ####### ####", + }, + { + .width = 3, + .height = 12, + .bitmap = "####################################", + }, + { + .width = 9, + .height = 13, + .bitmap = " ### ### ### ### ### ### " + "###### ###### ######## ############ ####### #### ", + }, + { + .width = 11, + .height = 13, + .bitmap = " ### ### ### ### ### ### ### ### #### " + "####### ###### ###### ####### ### #### ### " + "#### ### #### ### # ", + }, + { + .width = 8, + .height = 13, + .bitmap = " ### ### ### ### ### ### ### " + "### ### ### ####### ####### ###### ", + }, + { + .width = 12, + .height = 13, + .bitmap = " ## ## #### #### ##### #### ##### ##### ##### " + "##### ########### ########### ### ### ### ### ### ### ### " + "# ### ### ### ### ### ### ###", + }, + { + .width = 10, + .height = 13, + .bitmap = "#### ####### ####### ######## ######## ######### " + "###### ## ## ### ##### ### ##### ### #### ### #### ### " + "### ### ### ", + }, + { + .width = 10, + .height = 13, + .bitmap = + " ##### ####### ######### ### #### ### ###### ###### " + " ###### ####### ### ### #### ######## ####### ##### ", + }, + { + .width = 9, + .height = 13, + .bitmap = " ### ###### ####### ### ### ### ### ### ### ### " + "#### ####### ###### #### ### ### ### ", + }, + { + .width = 10, + .height = 15, + .bitmap = " ##### ####### ######### ### #### ### ###### " + "###### ###### ####### ##### ### ##### ######## " + "####### ####### ### # ", + }, + { + .width = 10, + .height = 13, + .bitmap = + " ### ###### ####### ### ### ### ### ### ### ### " + "#### ####### ###### ###### ### ### ### #### ### # ", + }, + { + .width = 9, + .height = 13, + .bitmap = + " ##### ###### ####### #### #### #### ####### " + " ##### #### ### ######## ####### ###### ", + }, + { + .width = 8, + .height = 12, + .bitmap = "################ ### ### ### ### ### " + "### ### ### ### ### ", + }, + { + .width = 10, + .height = 13, + .bitmap = + " ### ### ### ### ## ###### ###### ###### ### ## " + " ### ### ### ### ### ### ### ######## ###### #### ", + }, + { + .width = 10, + .height = 13, + .bitmap = + "### ####### ### ### #### ### ### ### ### ### ### ### " + "### ###### ###### ###### ###### ##### #### ", + }, + { + .width = 14, + .height = 13, + .bitmap = + "### #### ###### #### ###### #### ### ### #### ### ### " + "######### ############ ############ ##### ##### ##### ##### " + "##### ##### #### #### #### #### #### ### ", + }, + { + .width = 10, + .height = 13, + .bitmap = " ### ## #### #### ######## ###### ###### #### " + " #### ##### ###### ####### ### #### #### ### " + "### ####", + }, + { + .width = 11, + .height = 13, + .bitmap = "#### ####### ### #### #### ### ### ####### " + "##### ##### ### ### ### ### " + " ### ### ", + }, + { + .width = 8, + .height = 13, + .bitmap = " ####### ####### ## #### ### ### ### ### " + "### ### ### ###### ################", + }, + { + .width = 6, + .height = 17, + .bitmap = " # ### #### #### ### ### ### ### #### ### " + " #### #### #### #### #### #### # ", + }, + { + .width = 4, + .height = 17, + .bitmap = " ###########################################################" + "########", + }, + { + .width = 6, + .height = 17, + .bitmap = " ## ### ##### #### ### ### ### #### ### " + "#### ### ### ### #### ##### ### ## ", + }, + { + .width = 10, + .height = 5, + .bitmap = " ## #### # ########## ######### #### ", + }, + { + .width = 0, + .height = 0, + .bitmap = NULL, + }, +}; diff --git a/libbozo/src/ctype/isprint.c b/libbozo/src/ctype/isprint.c index 20c825e..04855cf 100644 --- a/libbozo/src/ctype/isprint.c +++ b/libbozo/src/ctype/isprint.c @@ -1,4 +1,4 @@ int isprint(int c) { - return (32 <= c && c < 127); -} \ No newline at end of file + return (c >= 32 && c < 127); +} diff --git a/src/drivers/vbe.c b/src/drivers/vbe.c index 5abf11e..c8a6f60 100644 --- a/src/drivers/vbe.c +++ b/src/drivers/vbe.c @@ -1,5 +1,4 @@ #include "vbe.h" -#include "drivers.h" #include "icon.h" struct vbe_interface display; diff --git a/src/kernel.c b/src/kernel.c index 0113d29..bc3b85f 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -3,7 +3,6 @@ #include "drivers.h" #include "gdt.h" #include "icon.h" -#include "icons/image.h" #include "idt.h" #include "kprintf.h" #include "memory.h" diff --git a/src/terminal/put.c b/src/terminal/put.c index 34974ca..27c1021 100644 --- a/src/terminal/put.c +++ b/src/terminal/put.c @@ -3,6 +3,7 @@ #include "font.h" #include "fonts/eating_pasta_regular_13.h" #include "fonts/minecraft_medium_13.h" +#include "icons/image.h" #include "kprintf.h" #include "shell.h" #include "string.h" @@ -75,16 +76,21 @@ uint8_t terminal_get_char(int x, int y) void terminal_putentryat(struct font node, uint32_t fg_color, uint32_t bg_color, size_t x, size_t y) { + if (node.width == 1 && node.height == 1) { + return; + } char *glyph = node.bitmap; for (size_t cy = 0; cy < node.height; cy++) { for (size_t cx = 0; cx < node.width; cx++) { - put_pixel((glyph[cy * node.width + cx] == '#') - ? fg_color - : bg_color, - x + cx, y + cy); - /* put_pixel((fg_color, x + cx, y + cy); */ + if (glyph[cy * node.width + cx] == '#') + put_pixel(fg_color, x + cx, y + cy); + /* put_pixel((glyph[cy * node.width + + * cx] == '#') ? fg_color */ + /* : bg_color, */ + /* x + cx, y + cy); */ /* else if (bg_color) */ - /* put_pixel(bg_color, x + cx, y + cy); */ + /* put_pixel(bg_color, x + cx, y + cy); + */ } } } @@ -97,21 +103,23 @@ static struct font get_font_node(int c) static void terminal_scroll(void) { screen->row--; + draw_icon(0, 0, &image_icon); for (size_t i = 0; i < VGA_WIDTH * (VGA_HEIGHT - 1); i++) { const uint32_t x = (i % VGA_WIDTH) * FONT_SIZE; const uint32_t y = (i / VGA_WIDTH) * FONT_SIZE; + screen->buffer[i] = screen->buffer[i + VGA_WIDTH]; terminal_putentryat(get_font_node(screen->buffer[i]), screen->fg_color, screen->bg_color, x, y); } /* for (size_t i = 0; i < VGA_WIDTH; i++) */ /* terminal_putentryat(get_font_node(' '), 0, 0, i * FONT_SIZE, */ - /* VGA_HEIGHT - 1); */ + /* (VGA_HEIGHT - 1) * FONT_SIZE); */ } static void terminal_new_line(void) { screen->column = 0; - if (++screen->row == VGA_HEIGHT) + if (++screen->row == VGA_HEIGHT - 1) terminal_scroll(); } @@ -121,20 +129,23 @@ void terminal_change_default_color(uint32_t color) /* terminal_set_color(color); */ /* for (size_t y = 0; y < VGA_HEIGHT; y++) { */ /* for (size_t x = 0; x < VGA_WIDTH; x++) { */ - /* const size_t index = y * VGA_WIDTH + x; */ + /* const size_t index = y * VGA_WIDTH + x; + */ /* uint8_t entry_color = * get_entry_color(TERM_BUF[index]); */ /* TERM_BUF[index] = vga_entry( */ /* TERM_BUF[index], */ - /* entry_color == screen->default_color ? color + /* entry_color == screen->default_color + * ? color */ /* : * entry_color); */ /* } */ /* } */ - /* memcpy(screen->buffer, TERM_BUF, sizeof(screen->buffer)); */ + /* memcpy(screen->buffer, TERM_BUF, + * sizeof(screen->buffer)); */ /* screen->default_color = color; */ /* screen->color = color; */ } @@ -150,12 +161,15 @@ void terminal_clear(void) // TODO /* for (size_t y = 0; y < VGA_HEIGHT; y++) { */ /* for (size_t x = 0; x < VGA_WIDTH; x++) { */ - /* const size_t index = y * VGA_WIDTH + x; */ - /* TERM_BUF[index] = vga_entry(' ', screen->color); + /* const size_t index = y * VGA_WIDTH + x; + */ + /* TERM_BUF[index] = vga_entry(' ', + * screen->color); */ /* } */ /* } */ - /* memcpy(screen->buffer, TERM_BUF, sizeof(screen->buffer)); */ + /* memcpy(screen->buffer, TERM_BUF, + * sizeof(screen->buffer)); */ /* screen->column = 0; */ /* screen->row = 0; */ } @@ -168,12 +182,19 @@ int terminal_putchar(char c) terminal_new_line(); if (!isprint(c)) return 1; + /* if (c == ' ') { */ + /* for (size_t cy = 0; cy < 13; cy++) */ + /* for (size_t cx = 0; cx < 13; cx++) */ + /* put_pixel(0, screen->column + cx, */ + /* screen->row + cy); */ + /* } else { */ screen->buffer[screen->column + screen->row * VGA_WIDTH] = c; terminal_putentryat(get_font_node(c), screen->fg_color, screen->bg_color, screen->column * FONT_SIZE, screen->row * FONT_SIZE); if (++screen->column == VGA_WIDTH) terminal_new_line(); + /* } */ return 1; } @@ -194,7 +215,8 @@ int terminal_writestring(const char *data) void update_cursor(void) { - /* uint16_t pos = screen->row * VGA_WIDTH + screen->column; */ + /* uint16_t pos = screen->row * VGA_WIDTH + + * screen->column; */ /* outb(0x3D4, 0x0F); */ /* outb(0x3D5, pos & 0xFF); */ diff --git a/tools/icon_maker.py b/tools/icon_maker.py new file mode 100644 index 0000000..1caa13e --- /dev/null +++ b/tools/icon_maker.py @@ -0,0 +1,37 @@ +from PIL import Image + +import sys +import os + + +if (len(sys.argv) < 2): + print("Error: usage python icon_maker.py {img}") + +image = Image.open(sys.argv[1]) + +width, height = image.size +pixels = list(image.getdata()) +pixels = [r << 16 | g << 8 | b for r, g, b in pixels] + +string = str(pixels).replace("(", "{").replace(")", "}").replace("[", "{").replace("]", "}") + +filename: str = os.path.basename(sys.argv[1]).split(".")[0] + +string = f"""\ +#pragma once + +#include +#include "icon.h" + +uint32_t {filename}_color_map[{width} * {height}] = {string}; + +struct icon {filename}_icon = {{ + .height = {height}, + .width = {width}, + .pixels = {filename}_color_map +}}; + +""" + +with open(f"./headers/icons/{filename}.h", "w") as f: + f.write(string) \ No newline at end of file