From 33cb3dfa30d13fd5668287eff7090b1a42ab392e Mon Sep 17 00:00:00 2001 From: 0x35c Date: Wed, 11 Dec 2024 20:54:03 +0100 Subject: [PATCH] feature: start to implement the drivers for char printing support --- headers/font.h | 4 +- headers/fonts/eating_pasta_regular_32.h | 1647 +++++++++++++++++++++++ headers/vbe.h | 4 + src/drivers/vbe.c | 18 +- src/kernel.c | 20 +- src/terminal/put.c | 39 +- 6 files changed, 1694 insertions(+), 38 deletions(-) create mode 100644 headers/fonts/eating_pasta_regular_32.h diff --git a/headers/font.h b/headers/font.h index d7b7810..b214f0f 100644 --- a/headers/font.h +++ b/headers/font.h @@ -5,5 +5,5 @@ struct font { uint32_t height; uint32_t width; - char **bitmap; -}; \ No newline at end of file + char *bitmap; +}; diff --git a/headers/fonts/eating_pasta_regular_32.h b/headers/fonts/eating_pasta_regular_32.h new file mode 100644 index 0000000..0937e76 --- /dev/null +++ b/headers/fonts/eating_pasta_regular_32.h @@ -0,0 +1,1647 @@ +#pragma once + +#include "font.h" +#include + +struct font eating_pasta_regular_32_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 = 10, + .height = 32, + .bitmap = " ######### ######### ######### ######### ######### " + "######### ######### ######### ######### ######### ######### " + "######### ######### ######### ######### ######### ######## " + "######## ######## ######## ####### ####### " + " ### ####### ######## ######### ######### " + " ####### ####### ##### ", + }, + { + .width = 14, + .height = 11, + .bitmap = " ##### #### ###### ############ ############ " + "############ ############ ############ ############ " + "###### ##### ###### ##### ##### ### #### ", + }, + { + .width = 31, + .height = 30, + .bitmap = + " ### ### " + " ######## ######## ######## ######### " + "######## ######## ######### ######## " + "######### ######### ######## ######### " + "######## ######## ############################ " + "############################# ############################# " + "############################# ############################ " + "######### ######## ######## ######### " + "######## ######## ############################ " + "############################# ############################# " + "############################# ############################# " + "######### ######## ######### ######## " + "######## ######### ######## ######## " + "######## ######## ######### ######## " + "######## ######## #### ###### ", + }, + { + .width = 23, + .height = 39, + .bitmap = + " ## ## ## " + " ######## ############# " + "############### ################ ################# " + "################## ################### ########### ## " + " ######### ## ######## ## ######## ## " + " ######### ## ######### ## ########### " + " ############# ############### " + "################ ################ ############## " + " ########### ########### ## " + "######## ## ######## ## ####### ## " + "## ####### ###### ## ######## #################### " + "#################### ################### ################### " + " ################## ################# ########## " + " ## ## ## " + " ", + }, + { + .width = 39, + .height = 32, + .bitmap = + " ###### #### ########## " + "######## ############ ######### " + "############# ######## ############## " + "######### ####### ###### ######## ###### " + " ###### ######### ##### ##### ######### " + " ##### ###### ######## ##### ###### " + "######### ############## ######## " + "############## ######### ############# ######## " + " ############ ######### ########### " + "######### ####### ######## ######## ########## " + " ######### ############ ######## " + "############# ######### ############## " + " ######### ####### ###### ######### ###### ##### " + " ######### ###### ##### ######## " + "##### ##### ######### ###### ##### " + "######### ###### ###### ######## ############## " + " ######### ############# ######### " + "############# ######### ########### " + "######### ######### ######### ##### " + " ######## ", + }, + { + .width = 26, + .height = 32, + .bitmap = + " ####### " + "########### ############# ############### " + " ################ ######## ####### " + "######## ####### ######## ####### ######## " + "######## ######## ####### ####### ######## " + " ################ ############### " + "############# ## ############# ######## ############ " + "######## ############ ######## ############# ######### " + "############### ######### ##################### " + "#################### ######## ########### ######## " + "######### ######## ######### ##################### " + " ###################### ###################### " + "####################### ############# ######## ########### " + " ###### ###### ### ", + }, + { + .width = 7, + .height = 11, + .bitmap = " ##### ###### ###### ###### ###### ###### ###### ###### " + "##### ##### ### ", + }, + { + .width = 14, + .height = 38, + .bitmap = + " # ##### ####### ######## " + "######### ######### ######### ######### ######## " + " ######### ######### ######## ######### ######### " + " ######## ######## ######## ######### " + "######### ######### ######### ######### ######### " + " ######### ######## ######## ######## " + "######### ######### ######### ######### " + "########## ######### ########## ########## " + "######## ##### ## ", + }, + { + .width = 14, + .height = 38, + .bitmap = + " ## #### ####### ######### ######### " + " ######### ######## ######### ######## " + "######### ######## ######### ######### " + "######## ######## ######### ######### ######### " + " ######## ######## ######## ######## " + "######### ######### ######### ######### ######## " + " ######### ######### ######### ######### " + "########## ######### ########## ######### ####### " + " ###### ### ", + }, + { + .width = 15, + .height = 16, + .bitmap = + " ##### ##### # ##### # ### ##### ### " + "############################## ############# ########### " + "############ ############################## ############# ### " + "##### ### ##### ##### ", + }, + { + .width = 20, + .height = 20, + .bitmap = " ######## ######## ######## " + " ######## ######## ############ " + "############################################################" + "############################################################" + "#################### ############# ######## " + " ######## ######## ####### " + " ####### # ", + }, + { + .width = 9, + .height = 13, + .bitmap = + " #### ###### ###### ####### ####### ####### ####### " + "###### ####### ###### ###### ##### ", + }, + { + .width = 18, + .height = 9, + .bitmap = " ####### " + "############################################################" + "############################################################" + "###### #####", + }, + { + .width = 10, + .height = 10, + .bitmap = " ##### ####### ######### ######### ######### ######### " + "######### ######### ####### ", + }, + { + .width = 18, + .height = 36, + .bitmap = + " ####### ######## " + "####### ######## ######## ######## " + " ######## ####### ######## ######## " + " ####### ######## ######## " + "######## ######## ######## ######## " + " ######## ######## ######## " + "######### ######## ######## ######### " + " ######## ######## ######### " + "######### ######## ######## ######### " + " ######## ######## ######## " + "####### ", + }, + { + .width = 22, + .height = 32, + .bitmap = + " ####### ########### ############# " + " ############### ################# ################## " + " ################### ######## ######### ######## " + "######### ####### ######## ####### ######## ####### " + " ######## ####### ############### ############## " + " ############## ############## ############### " + " ############### ############### ####### ####### " + " ####### ######## ####### ######## ######## ######### " + " ######## ##################### ################### " + "################### ################## ################ " + " ############## ############ ######## ", + }, + { + .width = 16, + .height = 32, + .bitmap = + " ######## ######### ######### " + " ########## ########### ############ ############## " + "############### ############### ############### ############## " + "#### ######### ## ######## ######## ######## " + " ######## ######## ######## ######## " + " ######## ######## ######## ######## " + "######## ######## ######## ######## " + "######## ######## ######## ######## ", + }, + { + .width = 21, + .height = 31, + .bitmap = + " ######### ############## ################ " + "################## ################### ################### " + "############################## ################## ######### " + " ### ######### ######## ######## " + " ######### ######## ######### " + " ######### ######### ######### " + "########## ########## ########## " + "########## ########### ########### " + "############ " + "##################################################################" + "############################################################", + }, + { + .width = 24, + .height = 32, + .bitmap = + " ######## ############ " + "################ ################# ################### " + " ################### ######### ########## ##### " + "######## ### ####### ####### " + " ####### ####### ####### " + " ######### ########## " + "########### ########### ############ " + " # ######## ######## " + "####### ####### ## ######## #### " + " ######## ####### ######### ##################### " + "##################### ##################### " + "################### ################# ############## " + " ######## ", + }, + { + .width = 25, + .height = 32, + .bitmap = + " ######## ######### " + "########## ########### ############ " + " ############ ############# " + "############## ############## ############### " + " ################ ####### ####### ####### " + "######## ######## ######## ####### ######## " + "####### ######## ###### ######## ####### " + "######## ######################## ######################## " + "######################## ######################## " + "######################## ######################## " + "######################## #################### " + "######## ######## ######## " + " ######## ######### " + "####### ", + }, + { + .width = 21, + .height = 31, + .bitmap = + " ################# ################### ################## " + "################## ################## ################## " + "####### ### ######## ######## " + "######## # ############### ################ " + "################# ################## ################### " + "################## # ######### ######### " + " ######## ######### ######## " + " ######## ######## ## ########## " + "################## ################## ################# " + "################ ################# ############## " + "########## ", + }, + { + .width = 22, + .height = 32, + .bitmap = + " ### ####### ######### " + " ######### ######### ######### " + " ######### ######### ######### " + " ######### ######### ############### " + " ################# ################## ################### " + "##################### ########## ######## ######### ####### " + "######## ################ ############### " + "############### ############### ####### ######## " + "####### ######## ####### ########## ######### " + "################## ################## ################ " + " ############## ############ ######## ", + }, + { + .width = 17, + .height = 32, + .bitmap = + " " + "##################################################################" + "############################################### ###### ######## " + " ####### ######## ####### ######## " + " ######## ######## ######## ######## " + " ######## ######## ######## " + "######### ######### ######## ######### " + " ######### ######### ######## ######### " + " ######### ######### ######### ######## " + " ", + }, + { + .width = 23, + .height = 32, + .bitmap = + " ######## ############## " + "################ ################# ################### " + "#################### #################### ######## " + "######## ######## ####### ######## ####### ######## " + " ####### ######## ####### ################### " + "################## ################ ############### " + " ################ ################## ######## " + "######## ######## ######## ####### ####### ####### " + " ###### ######## ####### ######### " + "############################## ###################### " + "##################### #################### " + "################### ################## ############### " + " ########## ", + }, + { + .width = 22, + .height = 32, + .bitmap = + " ####### ########### ############## " + " ################ ################# ################### " + " ################### ####### ######### ####### ######## " + "####### ######## ####### ######## ####### ######## " + "####### ######## ####### ######## ######## ######## " + "######### ######### #################### #################### " + " ################### ################## ############### " + " ########### ######### ######### " + " ######### ######### ######### " + " ######### ######### ######## " + " ###### ## ", + }, + { + .width = 10, + .height = 26, + .bitmap = " ##### ####### ######### ######### ######### " + "######### ######### ######### ####### " + " ##### " + "######## ######## ######################################## " + "######## ###### ", + }, + { + .width = 11, + .height = 30, + .bitmap = " ##### ####### ######### ######### ######### " + "######### ######### ######### ####### " + " " + " ##### ###### ####### ####### " + "####### ####### ####### ####### ###### " + "###### ##### #### ", + }, + { + .width = 15, + .height = 22, + .bitmap = + " ### ##### ###### " + "######## ########## ########### ############# " + "############ ########## ######## ######## " + "########### ############## ############################## " + "############# ########### ######## ###### " + " #### # ", + }, + { + .width = 16, + .height = 16, + .bitmap = " " + "############################################################" + "#################################### " + " ########## " + "############################################################" + "#################### ###############", + }, + { + .width = 15, + .height = 22, + .bitmap = " ### ##### ####### " + " ######## ########## ########### ############# " + " ############ ########## ######## " + "####### ########### " + "######################################################### " + "########## ######### ####### #### " + "## ", + }, + { + .width = 18, + .height = 32, + .bitmap = + " ####### ########### ############# " + "############### ################ ################# " + "################# ####### ####### ####### ###### ####### " + "############# ####### ####### ####### ######## " + " ######### ######### ########## ########## " + " ########## ######### ######## " + "######## ######## " + " ## ####### ######## " + "######## ######## ######## ######## " + " ###### ", + }, + { + .width = 33, + .height = 35, + .bitmap = + " ########## ############### " + " ################### ##################### " + " ####################### ######################### " + " ########### ########### ######### ######### " + " ######### ######## ######## ######## " + " ######## ##### ####### ######## ########### ####### " + " ####### ############ ####### ####### ############# " + "######## ####### ###### ##### ################ ####### ### " + "############### ###### ### ############### ###### #### " + "############### ###### ##### ####### ######## ############## " + "######## ######## ####################### ######## " + "###################### ####### #################### ######## " + " ###### ############ ######### ########### " + "########## ######### ########### ###### " + " ################### ####################### " + " ###################### ##################### " + " #################### ################## " + " ################# ########### ", + }, + { + .width = 27, + .height = 32, + .bitmap = + " ########## ########### " + "############ ############ " + "############# ############# " + "############## ############## " + "############## ####### ####### ####### " + "####### ####### ####### ######## ######## " + " ####### ######## ####### ####### " + "####### ####### ####### ####### ####### " + "####### ####### ######## ##################### " + " ##################### ##################### " + "###################### ####################### ####### " + " ######## ####### ######## ######## ######## " + " ######## ######## ####### ######## ######## " + " ################# ######### " + "###### ", + }, + { + .width = 23, + .height = 32, + .bitmap = + " ######## ############## ################ " + " ################## #################### " + "##################### ######## ########### ######## " + "########## ####### ######### ####### ######## ####### " + " ######### ####### ########### ##################### " + "#################### #################### ################## " + " ################## #################### ######## " + "############ ######## ########## ####### ####### " + "####### ######## ####### ######## ####### " + "######## ####### ########## ###################### " + "##################### #################### " + "#################### ################# ############## " + " ########## ", + }, + { + .width = 22, + .height = 32, + .bitmap = + " ###### ########## ############# " + " ############### ################# ################## " + " ######### ####### ######### ####### ######## ###### " + " ######## ###### ######### ######## " + "######## ######## ######## " + "######## ######## ######## " + "######## ######## ######## ### " + "######## ###### ######## ###### ######## ###### " + " ########## ####### #################### ################### " + " ################## ################# ############### " + " ############ ####### ", + }, + { + .width = 23, + .height = 31, + .bitmap = + " ## ######### ############ " + " ############## ################ " + "################# ################## ################### " + " ####### ########### ######## ########## ######## " + "######## ######## ######## ######## ####### ######## " + " ####### ######## ####### ######## ###### " + "####### ####### ####### ######## ####### " + "######## ####### ####### ####### ######## ####### " + " ######### ####### ########## ####### ############ " + "################### ################## ################# " + " ############### ############# ########### " + " ###### ", + }, + { + .width = 22, + .height = 31, + .bitmap = + " ######### #################### " + "##################### ##################### ##################### " + "##################### ##################### ######## " + "######## ######## ######## " + "######## ################# ################## " + "################## ################# ################# " + "################# ######## ######## " + " ######## ######## ######## " + " ##################### ##################### " + "##################### ##################### ##################### " + " #################### #################### ##### ", + }, + { + .width = 20, + .height = 32, + .bitmap = " ################## " + "################## ################### ################### " + "################### ################### ################### " + "######## ######## ######## " + "######## ######## ######## " + "################# ################# ################## " + "################# ################# ################# " + "######## ######## ######## " + "######## ######## ######## " + "######## ######### ######### " + "######### ######## ######## ", + }, + { + .width = 22, + .height = 32, + .bitmap = + " ######### ############ " + " ############## ################ ################# " + " ########## ####### ######## ####### ######### ###### " + " ######## ###### ######## ##### ######## " + "######## ######## ######## " + "######## ######## ########## ######## ########## " + "######## ########## ######## ########## ######## ########## " + "######## ######### ######## ###### ######## ###### " + " ########## ####### #################### ################### " + " ################# ################# ############### " + " ############ ###### ", + }, + { + .width = 25, + .height = 32, + .bitmap = + " ####### # ### ######## ################ " + " ################ ################ " + "################ ################ " + "################ ################ " + "################# ################# " + "################# " + "##################################################################" + "##################################################################" + "##################################################################" + "################### ################# " + "################# ################# " + "################# ################# " + "################# ################# " + "################# ######### ####### ######### " + "####### ######### ########", + }, + { + .width = 7, + .height = 31, + .bitmap = "############################################################" + "############################################################" + "############################################################" + "#####################################", + }, + { + .width = 22, + .height = 32, + .bitmap = + " # ####### ####### " + " ####### ######## " + "######## ######## ######## " + "######## ######## ######## " + "######## ######## ######## " + "######## ######## ######## " + "############### ############### ############### " + "######## ######## ######## ######## ######### ######### " + "########## #################### ################### " + "################### ################# ################ " + " ############## ########### ###### ", + }, + { + .width = 25, + .height = 32, + .bitmap = + " ### ######## ## ######## " + " ###### ######### ####### ######### ######## " + "######## ####### ######## ######## ######## " + "######## ######## ######## ######## ######## " + "######## ######## ######## ######### ######## " + "######### ################# ################# " + "################ ############### ############## " + " ############### ################ " + "####### ######### ####### ########## ####### " + "########## ####### ########## ####### ########## " + "######## ############ ######## ############ ######## " + "########## ######## ######## ######## ####### " + "####### ##### ###### ## ", + }, + { + .width = 18, + .height = 31, + .bitmap = + " ######## ######## ######## ######## " + " ######## ######## ######## " + "######## ######## ######## ######## " + " ######## ######## ######## " + "######## ######## ######## ######## " + " ######## ######## ######## " + "####### ####### ####### ## " + "################# ################# ################# " + "################# ################ ################ " + "########### ", + }, + { + .width = 29, + .height = 32, + .bitmap = " ########## ######### ########## ########## " + "########### ########## ########### ########### " + "############ ########### ############ ########### " + "############ ############ ############# ############ " + "############# ############# ############# ############# " + "############## ############# ############################ " + "############################ ####### ############ ####### " + "####### ############ ####### ####### ########## ####### " + "####### ########## ####### ####### ######### ####### " + "####### ######## ####### ####### ###### ####### " + "####### ###### ####### ####### #### ####### " + "####### ### ####### ####### ####### " + "####### ####### ####### ####### " + "####### ####### ####### ####### " + "####### ####### ####### ####### " + "####### ####### ##### ", + }, + { + .width = 25, + .height = 32, + .bitmap = + " ####### ####### ######### ######## ######### " + " ################### ################### " + "################### #################### " + "#################### ##################### " + "##################### ###################### ####### " + "############## ####### ############## ####### ######## ###### " + " ####### ######## ####### ####### ######## ####### ####### " + "######## ###### ####### ######## ############## ######## " + "############## ######## ############# ######## ############# " + "######## ############ ######## ############ ######## " + "############ ######## ########### ######## ########### " + "######## ########## ######## ########## ######## " + "######### ######## ######### ######## ######## " + "######## ######## ", + }, + { + .width = 26, + .height = 33, + .bitmap = + " ####### ############ " + "############### ################## " + "################## #################### " + "###################### ######### ########### ######## " + "######### ######## ######## ####### ######## " + "####### ######## ####### ######## ####### " + " ####### ####### ####### ####### ####### " + "####### ####### ####### ####### ####### " + " ####### ####### ####### ######## ######## " + "######## ####### ######## ####### ######## " + " ######## ######### ######## ########### ######### " + "#################### ################### " + "################## ################# " + "################ ############## ######### " + " ", + }, + { + .width = 22, + .height = 31, + .bitmap = + " ########## ############## ################ " + " ################# ################## ################### " + " ######## ######### ######## ######## ######## ####### " + " ######## ####### ######## ####### ######## " + "####### ######## ####### ######## ######## ######## " + "######## ######## ########## ################### " + "################### ################## ################# " + "################ ############## ########## " + "######### ######## ######## " + " ######## ######## ######## " + " ######## ####### ", + }, + { + .width = 26, + .height = 36, + .bitmap = + " ####### ############ " + "############### ################## " + "################## #################### " + "###################### ######### ########### ######## " + "######### ######## ######## ####### ######## " + "####### ######## ####### ######## ####### " + " ####### ####### ####### ####### ####### " + "####### ####### ####### ####### ####### " + " ####### ####### ####### ######## ## ######## " + "######## ########### ####### ############ ######## " + "########### ######### ########### ########## ######### " + " #################### ################### " + "################## ################## " + "################### ################## ######## " + "####### ##### #### " + " ## ", + }, + { + .width = 23, + .height = 31, + .bitmap = + " ########## ############## ################ " + " ################# ################## " + "################### ######## ######### ######## " + "######## ######## ####### ######## ####### ######## " + " ####### ######## ####### ######## ####### " + "######## ######## ######## ######## ######## " + "########## ################### ################### " + "################## ################# ################ " + " ################ ################# ######### " + "######## ######## ######### ######## ######### " + "######## ########## ######## ######### ######## " + "######## ######## ##### ####### ## ", + }, + { + .width = 22, + .height = 32, + .bitmap = + " ######### ############## ################ " + " ################ ################# ################## " + " ################## ######### ### ######## " + " ######## ######## ######## " + " ######### ########## ############## " + " ################ ################ ############### " + " ############ ########## " + "######### ######## ######## # " + " ######## ##### ######### #################### " + "################### #################### ################### " + "################## ################ ########## ", + }, + { + .width = 19, + .height = 31, + .bitmap = + "##################################################################" + "################################################ ######## " + " ######## ######## ######## " + "######## ######## ######## ######## " + " ####### ####### ####### " + "######## ######## ######## ######## " + " ######### ######### ######### " + " ######### ######## ######## " + "######## ######## ######## ######## " + " ", + }, + { + .width = 24, + .height = 32, + .bitmap = + " ### ##### ####### ######## ####### " + "######## ####### ######## ####### ################ " + " ################ ################ " + "################ ################ ################ " + " ####### ######## ####### ######## ####### " + "######## ####### ######## ####### ######## " + "####### ######## ####### ######## ####### ####### " + " ####### ####### ####### ####### ####### " + "####### ####### ######## ####### ######## " + "######## ######## ######### ################### " + "################## ################# ############### " + " ############# ########## " + "####### ", + }, + { + .width = 25, + .height = 32, + .bitmap = + " ### ####### ######## ################ " + "######### ######## ######## ######## ######## " + "######## ######## ######## ######## ####### " + "######## ####### ######## ######## ######## " + "######## ####### ######## ######## ####### " + "######## ####### ######## ######## ####### " + "######## ######## ######## ######## ####### " + "####### ####### ####### ######## ####### " + "################ ################ ############## " + " ############## ############## " + "############## ############ ############ " + " ############ ########### " + "########### ##### ", + }, + { + .width = 34, + .height = 31, + .bitmap = + "####### ####### ############## ######### " + "############## ######### ############### ######### " + " ################ ######### ################ ######### " + " ####### ######## ########### ####### ######## " + "########### ######## ######## ########### ######## ######## " + " ########### ######## ####### ########### ######## " + "####### ###### ###### ####### ####### ###### ###### ####### " + " ######## ###### ###### ######## ######## ###### ###### " + "######## ######## ###### ###### ####### ############## " + "############# ############# ############# ############# " + " ############# ############# ############# " + "############ ############ ############ ############ " + " ############ ########### ########### ########### " + " ########### ########### ########### ########## " + " ########## ########## ########## " + "######### ########## ######### ######### " + " ######### ######### ######## ", + }, + { + .width = 24, + .height = 32, + .bitmap = + " #### ### ###### ####### ######### " + "######### ######### ########## ######### ######### " + "######### ######### ######### ######### " + "################## ################# ################ " + " ############## ############# " + "############ ########### ########## " + " ######### ########## " + "############ ############ ############## " + " ############## ################ " + "################ ################## ######## ######## " + " ######### ######### ######## ######## ######### " + "######### ######## ######## ######### ######### " + "####### ######## #### #### ", + }, + { + .width = 27, + .height = 32, + .bitmap = + " ######### ################### " + " ######## ######### ######### ########## " + "######### ######### ######## ########## ######### " + " ######### ######## ######### ######### " + "######### ######## ################# " + "################ ############## " + "############## ############ " + "########### ########## ######### " + " ####### ######## " + " ######## ######## " + "######## ######## ######## " + " ######## ######## " + " ######## ######## ######## " + " ######## ######## ", + }, + { + .width = 19, + .height = 33, + .bitmap = + " ################## " + "##################################################################" + "######### ################# ######## ######## " + " ######## ######## ######## " + "######## ######## ######## ######## " + " ######## ######## ######## " + "######## ######## ######## ######## " + " ######## ####### ######## " + "################## ################## ################## " + "################## ################## ################# #### " + " ", + }, + { + .width = 18, + .height = 39, + .bitmap = + " ############### ############### ############### " + "################ ################ ################ " + "################ ################# ######### ######### " + " ######### ######### ######### " + "######## ######## ######## ######## " + " ######## ######## ######## " + "######## ######## ######## ######## " + " ######## ######## ######### " + "######### ######### ######### ######## " + " ################ ################ ################ " + "################ ############### ############### " + "############### ############# ", + }, + { + .width = 18, + .height = 36, + .bitmap = + " ###### ######## ######## " + " ####### ######## ####### " + "######## ######## ####### ######## " + " ######## ####### ######## " + "######## ######## ######## ######## " + " ######## ######## ######## " + "######## ######### ######## ######## " + " ######### ######## ######## " + "######### ######## ######## ######## " + " ######### ######## ######## " + "####### ", + }, + { + .width = 18, + .height = 39, + .bitmap = + " ############### ############### ############### " + "############### ################ ################ " + "################ ################ ######## " + "######## ######## ######### ######### " + " ######### ######### ######### " + "######### ######### ######### ######### " + " ######### ######### ######### " + "######### ######### ######### ######### " + " ######## ######## ######### " + "######### ################ ################ ################ " + "################ ################ ################ " + "############### ############# ", + }, + { + .width = 19, + .height = 17, + .bitmap = " ##### ####### ######## " + " ######### ########## ########## " + "########### ############ ############ " + "###### ###### ###### ###### ####### ###### " + "###### ####### ####### ####### ####### ####### " + "####### ######## ###### ## ", + }, + { + .width = 23, + .height = 8, + .bitmap = + "##################################################################" + "##################################################################" + "############################# ###### ", + }, + { + .width = 9, + .height = 8, + .bitmap = " ## #### ###### ###### ####### ###### " + "#### ## ", + }, + { + .width = 27, + .height = 32, + .bitmap = + " ########### ########### " + "########### ############# " + "############# ############# " + "############## ############## ####### " + "####### ####### ####### ####### ####### " + " ####### ####### ####### ######## " + "####### ####### ####### ####### ####### " + "####### ######## ####### ####### ######## " + " ####### ######## #################### " + "##################### ##################### " + "###################### ####################### ######## " + " ######## ####### ######## ######## ######## " + " ######## ######## ####### ################# " + " ################# ######### " + "####### ", + }, + { + .width = 23, + .height = 32, + .bitmap = + " ######## ############# ################ " + " ################### #################### " + "##################### ####### ############ ####### " + "########## ####### ######### ####### ################# " + " ################# ########### ###################### " + "##################### #################### ################# " + " ################## #################### " + "##################### ######## ########## ######## " + "######## ######## ################ ######## ####### " + " ######## ####### ########## ####### ############# " + "##################### #################### ################### " + " ################# ############## ########## " + " ", + }, + { + .width = 21, + .height = 32, + .bitmap = + " ###### ########## ############# " + " ############### ################# ################## " + "######### ####### ######### ####### ######## ###### " + "######## ############### ######## " + "######## ######## ######## " + "######## ######## ######## " + "######## ######## ######## ### " + "######## ############### ###### ######## ###### " + "######### ####### #################### ################### " + "################## ################# ############### " + " ########### ####### ", + }, + { + .width = 23, + .height = 31, + .bitmap = + " ## ######### ############ " + " ############## ################ " + "################# ################## ################### " + " ######## ########### ######## ########## ######## " + "######## ####### ####### ####### ####### ####### " + " ####### ####### ####### ######## ####### " + "######## ####### ######## ####### ####### " + "####### ####### ####### ####### ######## ####### " + " ######### ####### ########## ####### ############ " + "################### ################## ################# " + " ############## ############# ########### " + " ##### ", + }, + { + .width = 22, + .height = 31, + .bitmap = + " ######### ##################### " + "##################### ##################### ##################### " + "##################### ##################### ######## " + "######## ######## ######## " + "######### ################## ################# " + "################# ################# ################# " + "################# ######## ######## " + "######## ######## ######## " + " ##################### ##################### " + "##################### ##################### ##################### " + "##################### #################### ##### ", + }, + { + .width = 20, + .height = 32, + .bitmap = + " ################## ################### " + "################### ################### ################### " + "################### ################### ######## " + "######## ######## ######### " + "######### ######### ################## " + "################## ################## ################## " + "################## ################## ######### " + "######### ######### ######## " + "######## ######## ######## " + "######## ######## ######## " + "######### ######## ", + }, + { + .width = 22, + .height = 32, + .bitmap = + " ######### ############ " + " ############## ################ ################# " + " ########## ####### ######## ###### ######### ####### " + " ######## ###### ######### ##### ######## " + "######## ######## ######## " + "######## ######## ########## ######## ########## " + "######## ########## ######## ########## ######## ########## " + "######## ########## ######### ###### ######## ###### " + " ########## ####### #################### ################### " + " ################## ################# ############### " + " ############ ###### ", + }, + { + .width = 26, + .height = 32, + .bitmap = + " ###### # ### ######## ######## ######## " + " ######## ######## ######## ######## ######## " + "######## ######### ######## ################## " + " ################## ################## " + "################## ######## ######### ######## " + "######################### ######################### " + "######################### ######################### " + "######################### ######################### " + "######################### ######################### ######## " + " ######### ######## ######### ######## ######### " + "######## ######### ######## ######### ######## " + " ######### ######## ######### ######## ######### " + "######## ######### ######## ######### ####### " + " ######### #########", + }, + { + .width = 7, + .height = 31, + .bitmap = "############################################################" + "############################################################" + "############################################################" + "#####################################", + }, + { + .width = 23, + .height = 32, + .bitmap = + " ## ####### " + "####### ######## ######## " + " ######## ######## ######## " + " ######## ######## ######## " + " ######## ######## ######## " + " ######## ######## " + "######## ######## ####### ######## ####### " + " ######## ######## ######## ######## ######## " + "######## ######### ######### ########## " + "#################### ################### ################### " + " ################## ################ " + "############## ########## ###### ", + }, + { + .width = 25, + .height = 32, + .bitmap = + " ## ######## ### ######### " + " ###### ######### ######## ######## ######## " + "######## ######## ######## ######## ######## " + "######## ######## ######### ######### ######## " + "######### ######## ######### ######### ######## " + "######### ######## ######### ################# " + "################# ################ ############### " + " ################ ################# " + "######## ######### ######## ########## ######## " + "########## ######## ########## ####### ########### " + "####### ############ ####### ############ ######## " + "########## ######## ######## ######## ###### " + "######## ##### ###### ## ", + }, + { + .width = 18, + .height = 31, + .bitmap = + " ######## ######## ######## ######## " + " ######## ######## ######## " + "######## ######## ######## ######## " + " ######## ######### ######## " + "######## ######## ######## ######## " + " ######## ######## ######## " + "######## ######## ####### ## " + "################# ################# ################# " + "################# ################ ################ " + "########### ", + }, + { + .width = 29, + .height = 32, + .bitmap = + " ########## ######### ########## ########## " + "########### ########## ########### ########### " + "########### ########### ############ ########### " + "############ ############ ############# ############ " + "############# ############# ############# ############# " + "############################ ############################ " + "############################ #################### ####### ####### " + "############ ####### ####### ########### ####### ####### " + "########## ####### ####### ######### ###### ####### " + "######## ###### ######## ####### ###### ######## ###### " + " ###### ######## #### ###### ######## ## " + "###### ######## ###### ######## ###### " + "######## ############### " + "############### ####### ####### ####### " + "####### ####### ####### ###### ##### " + " ", + }, + { + .width = 26, + .height = 32, + .bitmap = + " ######## ####### ######### ######## ########## " + " ######## ########## ######## ########### ######## " + "########### ######## ############ ######## ############ " + " ######## ############ ####### ############# ####### " + "############# ####### ############## ####### " + "############## ####### ############### ####### ######## " + "###### ####### ######## ####### ####### ######## ####### " + "####### ######## ############## ######### ############## " + "######### ############# ######### ############# ######### " + "############# ######### ############ ######### ############ " + "######### ########### ######### ########### ######### " + "########### ######## ########## ######## ########## " + "######## ######### ######## ######### ######## " + " ######## ", + }, + { + .width = 25, + .height = 33, + .bitmap = " ####### ############ " + "############### ################# " + "################### #################### " + "##################### ######### ########### ######## " + " ######### ####### ######### ####### " + "######## ####### ######## ####### ######## " + "####### ####### ####### ####### ####### " + " ####### ####### ####### ####### " + "####### ####### ####### ####### ####### " + "######## ######## ######## ####### ######## " + " ####### ######## ######## ######### " + "######## ########### ######### #################### " + " ################### ################## " + "################# ################ " + "############## ########## ", + }, + { + .width = 22, + .height = 31, + .bitmap = + " ########## ############## ################ " + " ################# ################## ################## " + " ######## ########## ######## ######### ######## ####### " + " ######## ####### ######## ####### ######## " + "####### ######## ####### ######## ####### ######## " + "######## ######## ########## ################### " + "################## ################## ################## " + "################ ############## ########## " + "######### ######### ######### " + "######### ######### ######### " + "######### ######## ", + }, + { + .width = 25, + .height = 36, + .bitmap = + " ####### ############ " + "############### ################# " + "################### #################### " + "##################### ######### ########### ######## " + "######### ####### ######### ####### ######## " + "####### ######## ####### ######## ####### " + "####### ####### ####### ####### ####### ####### " + " ####### ####### ####### ####### " + "####### ####### ######## ######## ## ####### " + "######## ########### ######## ############ ######## " + "########### ######## ########## ########## ######### " + "#################### ################### " + "################## ################### " + "################### ################# ######## " + "####### ##### #### " + " ## ", + }, + { + .width = 23, + .height = 31, + .bitmap = + " ########## ############## ################ " + " ################# ################## " + "################## ######## ########## ######## " + "######### ######## ####### ######## ####### " + "######## ####### ######## ####### ######## " + "####### ######## ####### ######## ######## ######## " + "########## ################### ################## " + "################## ################## ################ " + " ################ ################# ######### ####### " + " ######### ######### ######### ######### ######### " + "######### ######### ######### ######### ####### " + "######### ##### ######## ## ", + }, + { + .width = 22, + .height = 32, + .bitmap = + " ######### ############## ################ " + " ################ ################# ################## " + " ################## ######### ## ######## " + " ######## ######## ######## " + " ######### ########### ############## " + " ################ ################ ############### " + " ############ ######### " + "######### ######## ######## # " + " ######## ##### ######### #################### " + "################### #################### ################### " + "################## ################ ########## ", + }, + { + .width = 19, + .height = 31, + .bitmap = + "##################################################################" + "################################################ ######## " + " ######## ######## ######## " + "######## ######## ######## ######## " + " ####### ####### ####### " + "######## ######## ######## ######## " + " ######### ######### ######### " + " ######### ######## ######## " + "######## ######## ######## ######## " + " ", + }, + { + .width = 24, + .height = 32, + .bitmap = + " ### ##### ####### ######## ####### " + "######## ####### ################ ################ " + " ####### ######## ####### ######## ####### " + "####### ####### ####### ####### ####### " + "####### ####### ####### ####### ####### ####### " + " ####### ####### ####### ####### ####### " + "######## ####### ######## ####### ######## " + "####### ####### ####### ####### ######## ####### " + " ####### ####### ####### ######## ######## " + "######## ######## ################### " + "################## ################# ############### " + " ############# ########## " + "####### ", + }, + { + .width = 25, + .height = 32, + .bitmap = + " ### ####### ######## ################ " + "######### ######## ######## ######## ######## " + "######## ######## ######## ######### ####### " + "######## ####### ######## ######## ######## " + "######## ####### ######## ######## ####### " + "######## ####### ######## ######## ####### " + "######## ######## ######## ######## ####### " + "####### ####### ####### ######## ####### " + "################ ################ ############## " + " ############## ############## " + "############## ############ ############ " + " ############ ########### " + "########### ##### ", + }, + { + .width = 34, + .height = 31, + .bitmap = + "####### ####### ############## ######### " + "############## ######### ############### ######### " + " ############### ######### ################ ######### " + " ####### ######## ########### ######## ######## " + "########### ######## ######## ########### ######## ######## " + " ########### ######## ######## ############ ####### " + "####### ###### ###### ####### ####### ###### ###### ######## " + " ####### ###### ###### ######## ######## ###### ###### " + "######## ######## ##### ###### ####### ############## " + "############## ############# ############# " + "############# ############# ############# ############# " + " ############ ############ ############ ############ " + " ############ ########### ########### " + "########### ########### ########## ########## " + " ########## ########## ########## ########## " + " ######### ########## ######### " + "######### ######### ######### ######## ", + }, + { + .width = 24, + .height = 32, + .bitmap = + " #### ### ###### ####### ######### " + "######### ######### ########## ######### ######### " + "######### ######### ######### ######### " + "################## ################# ############### " + " ############## ############# " + "############ ########### ########## " + " ######### ########## " + "########### ############ ############## " + " ############## ################ " + "################ ################## ######## ######## " + " ######### ######### ######## ######## ######### " + "######### ######## ######## ######### ######### " + "####### ######## #### #### ", + }, + { + .width = 27, + .height = 32, + .bitmap = + " ######### ################## " + " ######## ########## ######### ######### " + "######## ########## ######### ######### ######## " + " ########## ######### ######### ######## " + "################## ################# " + "############### ############### " + "############# ############ " + "########### ######### ######### " + " ######## ######## " + " ####### ####### " + "####### ####### ####### " + " ######## ######### " + " ######### ######### ######### " + " ######### ######### ", + }, + { + .width = 19, + .height = 33, + .bitmap = + "##################################################################" + "############################# ################# " + "######## ######## ######## ######## " + " ######## ######## ######## " + "######## ######## ######## ######## " + " ######## ######## ######## " + "######## ######## ######## ####### " + " ######## ################# ################## " + "################## ################## ################## " + "################# #### ", + }, + { + .width = 15, + .height = 42, + .bitmap = " ## #### ###### ####### " + " ######### ########## ############ ########### " + " ########## ######### ######## ######## " + " ######## ######## ######## ######## " + " ######## ######## ######### ######## " + "######## ######## ######## ######### " + " ######## ######## ######## ####### " + " ####### ####### ######### ######### " + " ######### ########## ########### ########### " + " ########## ########## ######## ####### " + " ##### ## ", + }, + { + .width = 10, + .height = 41, + .bitmap = " ######## ######### ######### ######### ######### " + "######### ################################################ " + "######### ######### ######### ######### ######### ######### " + "######### ######### ######### ######### ######### ######### " + "######### ######### ######### ######### ######### ######### " + "######### ######### ######### ######### ######### " + "############################################################" + " ######## ", + }, + { + .width = 15, + .height = 42, + .bitmap = " ## #### ###### ####### " + " ######### ########## ############ ########### " + " ########## ######### ######## ######## " + " ######## ######## ######## ######## " + " ######## ######## ######### ######## " + " ######## ######## ######## ######### " + " ######## ######## ######## ######## " + " ######## ######## ######## ######### " + " ######### ########## ########## ########### " + " ########### ########## ######## ###### " + " ##### ## ", + }, + { + .width = 25, + .height = 12, + .bitmap = + " ### ####### ######### " + " ## ########### #### ############# ###### " + "############## ######## ######################### " + "####################### ###################### #### " + "############ ### ######### ###### ", + }, + { + .width = 0, + .height = 0, + .bitmap = NULL, + }, +}; diff --git a/headers/vbe.h b/headers/vbe.h index 6ece596..634f212 100644 --- a/headers/vbe.h +++ b/headers/vbe.h @@ -1,5 +1,6 @@ #pragma once +#include "icon.h" #include struct vbe_interface { @@ -11,3 +12,6 @@ struct vbe_interface { }; extern struct vbe_interface display; + +void draw_icon(uint32_t pos_x, uint32_t pos_y, struct icon *img); +void put_pixel(uint32_t color, uint32_t x, uint32_t y); diff --git a/src/drivers/vbe.c b/src/drivers/vbe.c index 67f416e..5abf11e 100644 --- a/src/drivers/vbe.c +++ b/src/drivers/vbe.c @@ -1,10 +1,22 @@ #include "vbe.h" #include "drivers.h" +#include "icon.h" struct vbe_interface display; -void put_pixel(uint16_t x, uint16_t y) +void put_pixel(uint32_t color, uint32_t x, uint32_t y) { - - // + // divide by 4 because display.buff is in 32bit instead of 8bit + const uint32_t coords = x + y * display.pitch / 4; + display.buff[coords] = color; +} + +void draw_icon(uint32_t pos_x, uint32_t pos_y, struct icon *img) +{ + for (uint32_t y = 0; y < img->height; y++) { + for (uint32_t x = 0; x < img->width; x++) { + put_pixel(img->pixels[y * img->width + x], pos_x + x, + pos_y + y); + } + } } diff --git a/src/kernel.c b/src/kernel.c index 5ad9255..3d46e62 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -29,24 +29,6 @@ #error "This tutorial needs to be compiled with a ix86-elf compiler" #endif -static void put_pixel(uint32_t color, uint32_t x, uint32_t y) -{ - // / - // 4 cause display.buff is in 32bit instead of 8bit - const uint32_t coords = x + y * display.pitch / 4; - display.buff[coords] = color; -} - -void draw_icon(uint32_t pos_x, uint32_t pos_y, struct icon *img) -{ - for (uint32_t y = 0; y < img->height; y++) { - for (uint32_t x = 0; x < img->width; x++) { - put_pixel(img->pixels[y * img->width + x], pos_x + x, - pos_y + y); - } - } -} - void kernel_main(multiboot_info_t *mbd, uint32_t magic) { /* terminal_initialize(); */ @@ -60,7 +42,7 @@ void kernel_main(multiboot_info_t *mbd, uint32_t magic) /* "complex 8*unknown quantity -byte descriptor table. -- Troy " */ /* "Martin 03:50, 22 March 2009 (UTC)\n"); */ - draw_icon(0, 0, &image_icon); + terminal_putchar('A'); /* memset(display.buff, 255, 1024 * 1024); */ /* shell_init(); */ } diff --git a/src/terminal/put.c b/src/terminal/put.c index d446ce3..c323dc9 100644 --- a/src/terminal/put.c +++ b/src/terminal/put.c @@ -1,9 +1,12 @@ #include "ctype.h" +#include "font.h" +#include "fonts/eating_pasta_regular_32.h" #include "kprintf.h" #include "shell.h" #include "string.h" #include "sys/io.h" #include "terminal.h" +#include "vbe.h" #include #include @@ -82,13 +85,19 @@ uint8_t terminal_get_default_color(void) uint8_t terminal_get_char(int column, int row) { - /* return screen->buffer[row * VGA_WIDTH + column]; */ + return screen->buffer[row * VGA_WIDTH + column]; } -void terminal_putentryat(char c, uint8_t color, size_t x, size_t y) +void terminal_putentryat(char c, uint32_t color, size_t x, size_t y) { - const size_t index = y * VGA_WIDTH + x; - TERM_BUF[index] = vga_entry(c, color); + struct font node = eating_pasta_regular_32_font[(int)c]; + char *glyph = node.bitmap; + for (size_t cy = 0; cy < node.height; cy++) + for (size_t cx = 0; cx < node.width; cx++) + if (glyph[cy + node.width + cx] == '#') + put_pixel(color, x + cx, y + cy); + /* const size_t index = y * VGA_WIDTH + x; */ + /* TERM_BUF[index] = vga_entry(c, color); */ } static void terminal_scroll(void) @@ -151,16 +160,18 @@ void terminal_clear(void) int terminal_putchar(char c) { - if (c == '\r') - screen->column = 0; - else if (c == '\n') - terminal_new_line(); - if (!isprint(c)) - return 1; - terminal_putentryat(c, screen->color, screen->column, screen->row); - if (++screen->column == VGA_WIDTH) - terminal_new_line(); - return 1; + terminal_putentryat(c, 0xCCFFE5, 10, 10); + /* if (c == '\r') */ + /* screen->column = 0; */ + /* else if (c == '\n') */ + /* terminal_new_line(); */ + /* if (!isprint(c)) */ + /* return 1; */ + /* terminal_putentryat(c, screen->color, screen->column, screen->row); + */ + /* if (++screen->column == VGA_WIDTH) */ + /* terminal_new_line(); */ + /* return 1; */ } int terminal_write(const char *data, size_t size)