From fde8a1ab65d5e33d90123a3aaa9b5c15e249689f Mon Sep 17 00:00:00 2001 From: Loic Guegan Date: Thu, 29 Apr 2021 08:49:41 +0200 Subject: Debug, add memory print driver --- src/drivers/psftext.cc | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 src/drivers/psftext.cc (limited to 'src/drivers/psftext.cc') diff --git a/src/drivers/psftext.cc b/src/drivers/psftext.cc new file mode 100644 index 0000000..da7e8c9 --- /dev/null +++ b/src/drivers/psftext.cc @@ -0,0 +1,66 @@ +#include "psftext.hpp" +#include "core/paging.hpp" +#include "libs/string.hpp" +#include "drivers/framebuffer.hpp" + +PSF_STATUS psf_status; + +void psftext_init(void* psf_addr){ + printk("Loading PSF font... "); + memcpy(psf_addr, &psf_status.header, sizeof(PSF_HEADER)); + if(psf_status.header.magic!=PSF_MAGIC){ + printk("Invalid PSF magic number. Abort.\n"); + return; + } + + printk("Flags %d Version %d Glyphs number %d Size %dx%d", + psf_status.header.flags, psf_status.header.version, + psf_status.header.glyph_count, psf_status.header.glyph_width, psf_status.header.glyph_height); + psf_status.x=0; + psf_status.y=0; + psf_status.psf_addr=(u8*)psf_addr; + psf_status.nline=fb_cfg.height/psf_status.header.glyph_height; + psf_status.nchar=fb_cfg.width/psf_status.header.glyph_width; + psf_status.bg=0; + psf_status.fg=200; + print("\n"); +} + +void psftext_putchar(char c){ + if(c=='\n'){ + psf_status.y++; + psf_status.x=0; + if(psf_status.y>psf_status.nline) + framebuffer_scrollup(psf_status.header.glyph_height); + return; + } + + u8* glyph=(psf_status.psf_addr+psf_status.header.header_length+c*psf_status.header.glyph_size); + FB_PIXEL pixel; + for(int i=0;i>=1; + } + } + glyph+=psf_status.header.glyph_width/8; + } + psf_status.x++; + if(psf_status.x>psf_status.nchar){ + psf_status.y++; + psf_status.x=0; + if(psf_status.y>psf_status.nline) + framebuffer_scrollup(psf_status.header.glyph_height); + } +} \ No newline at end of file -- cgit v1.2.3