diff options
| author | Loic Guegan <manzerbredes@mailbox.org> | 2021-04-29 08:49:41 +0200 |
|---|---|---|
| committer | Loic Guegan <manzerbredes@mailbox.org> | 2021-04-29 08:49:41 +0200 |
| commit | fde8a1ab65d5e33d90123a3aaa9b5c15e249689f (patch) | |
| tree | 14134c0c2f322cbcba0989b78bd7057f76c157c3 /src/drivers | |
| parent | 067d6e340be698b0e26b7732215a1969e0e683f3 (diff) | |
Debug, add memory print driver
Diffstat (limited to 'src/drivers')
| -rw-r--r-- | src/drivers/acpi.hpp | 2 | ||||
| -rw-r--r-- | src/drivers/framebuffer.cc | 2 | ||||
| -rw-r--r-- | src/drivers/framebuffer.hpp | 2 | ||||
| -rw-r--r-- | src/drivers/memtext.cc | 41 | ||||
| -rw-r--r-- | src/drivers/memtext.hpp | 11 | ||||
| -rw-r--r-- | src/drivers/psftext.cc (renamed from src/drivers/psf.cc) | 6 | ||||
| -rw-r--r-- | src/drivers/psftext.hpp (renamed from src/drivers/psf.hpp) | 6 | ||||
| -rw-r--r-- | src/drivers/vgatext.cc (renamed from src/drivers/vga_t.cc) | 18 | ||||
| -rw-r--r-- | src/drivers/vgatext.hpp (renamed from src/drivers/vga_t.hpp) | 8 |
9 files changed, 74 insertions, 22 deletions
diff --git a/src/drivers/acpi.hpp b/src/drivers/acpi.hpp index 15374d8..3e5c410 100644 --- a/src/drivers/acpi.hpp +++ b/src/drivers/acpi.hpp @@ -1,6 +1,6 @@ #pragma once -#include "include/boucane.hpp" +#include "boucane.hpp" #define ACPI_RSDP_SIGNATURE 0x2052545020445352 #define ACPI_RSDT_SIGNATURE 0x54445352 diff --git a/src/drivers/framebuffer.cc b/src/drivers/framebuffer.cc index 4d5389c..9f90d84 100644 --- a/src/drivers/framebuffer.cc +++ b/src/drivers/framebuffer.cc @@ -22,7 +22,7 @@ void framebuffer_draw(FB_PIXEL p){ void framebuffer_scrollup(u32 npixel){ u64 start=fb_cfg.location+npixel*fb_cfg.pitch; u64 amount=fb_cfg.pitch*(fb_cfg.height-npixel); - memcpy((void*)start,(void*)fb_cfg.location,amount); + memcpy((void*)start,(void*)fb_cfg.location,amount); // TODO change because page fault can occurs } void framebuffer_clear(){ diff --git a/src/drivers/framebuffer.hpp b/src/drivers/framebuffer.hpp index 958a44b..4f5e0c1 100644 --- a/src/drivers/framebuffer.hpp +++ b/src/drivers/framebuffer.hpp @@ -1,6 +1,6 @@ #pragma once -#include "include/boucane.hpp" +#include "boucane.hpp" typedef struct { u32 pitch; diff --git a/src/drivers/memtext.cc b/src/drivers/memtext.cc new file mode 100644 index 0000000..b5371b1 --- /dev/null +++ b/src/drivers/memtext.cc @@ -0,0 +1,41 @@ +#include "memtext.hpp" +#include "core/paging.hpp" +#include "core/types.hpp" +#include "libs/string.hpp" + + + +char memtext_buffer[MEMTEXT_BUFFER_SIZE]; +u64 memtext_x=0; + +void memtext_init(){ + PAGING_MAP2_RANGE(MEMTEXT_ADDR_LOCATION,0x0,8); + u64* p_addr=(u64*)MEMTEXT_ADDR_LOCATION; + *p_addr=(u64)memtext_buffer; + + // Cleaning buffer + for(memtext_x=0;memtext_x<MEMTEXT_BUFFER_SIZE;memtext_x++) + memtext_buffer[memtext_x]=0; + memtext_x=0; +} + +void memtext_putchar(char c){ + + if(memtext_x>=MEMTEXT_BUFFER_SIZE){ + memtext_scrollup(1); + memtext_buffer[memtext_x-1]=c; + return; + } + memtext_buffer[memtext_x]=c; + memtext_x++; +} + +void memtext_scrollup(u32 n){ + u64 start=(u64)memtext_buffer; + for(u64 i=0;i<MEMTEXT_BUFFER_SIZE;i++){ + if(i+n<MEMTEXT_BUFFER_SIZE) + memtext_buffer[i]=memtext_buffer[i+n]; + else + memtext_buffer[i]=0; + } +}
\ No newline at end of file diff --git a/src/drivers/memtext.hpp b/src/drivers/memtext.hpp new file mode 100644 index 0000000..18b3014 --- /dev/null +++ b/src/drivers/memtext.hpp @@ -0,0 +1,11 @@ +#pragma once + +#include "boucane.hpp" + +#define MEMTEXT_BUFFER_SIZE 1024 +#define MEMTEXT_ADDR_LOCATION 0x0 + + +void memtext_init(); +void memtext_putchar(char c); +void memtext_scrollup(u32 n); diff --git a/src/drivers/psf.cc b/src/drivers/psftext.cc index ce838e8..da7e8c9 100644 --- a/src/drivers/psf.cc +++ b/src/drivers/psftext.cc @@ -1,11 +1,11 @@ -#include "psf.hpp" +#include "psftext.hpp" #include "core/paging.hpp" #include "libs/string.hpp" #include "drivers/framebuffer.hpp" PSF_STATUS psf_status; -void psf_init(void* psf_addr){ +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){ @@ -26,7 +26,7 @@ void psf_init(void* psf_addr){ print("\n"); } -void psf_putchar(char c){ +void psftext_putchar(char c){ if(c=='\n'){ psf_status.y++; psf_status.x=0; diff --git a/src/drivers/psf.hpp b/src/drivers/psftext.hpp index 1163dee..221a1e6 100644 --- a/src/drivers/psf.hpp +++ b/src/drivers/psftext.hpp @@ -1,6 +1,6 @@ #pragma once -#include "include/boucane.hpp" +#include "boucane.hpp" #define PSF_MAGIC 0x864ab572 @@ -27,5 +27,5 @@ typedef struct PSF_STATUS { extern PSF_HEADER psf_header; -void psf_init(void* psf_addr); -void psf_putchar(char c);
\ No newline at end of file +void psftext_init(void* psf_addr); +void psftext_putchar(char c);
\ No newline at end of file diff --git a/src/drivers/vga_t.cc b/src/drivers/vgatext.cc index 0ff3f82..be01f0e 100644 --- a/src/drivers/vga_t.cc +++ b/src/drivers/vgatext.cc @@ -1,6 +1,6 @@ -#include "vga_t.hpp" +#include "vgatext.hpp" -#include "include/boucane.hpp" +#include "boucane.hpp" #define MAX_COL 80 #define MAX_LINE 25 @@ -13,19 +13,19 @@ VIDEO_STATE VS={ GRAY, }; -void vga_t_init(){ +void vgatext_init(){ PAGING_MAP(0xB8000); PAGING_MAP(0xB8000+4096); } -void vga_t_putchar(char c){ +void vgatext_putchar(char c){ // Handle newline here if(c=='\n'){ VS.col=0; VS.line+=1; if(VS.line>=MAX_LINE){ VS.line=MAX_LINE-1; - vga_t_scrollup(); + vgatext_scrollup(); } return; } @@ -41,18 +41,18 @@ void vga_t_putchar(char c){ VS.line+=1; if(VS.line>=MAX_LINE){ VS.line=MAX_LINE-1; - vga_t_scrollup(); + vgatext_scrollup(); } } } -void vga_t_clear(){ +void vgatext_clear(){ for(u8 i=0;i<MAX_LINE;i++){ - vga_t_scrollup(); + vgatext_scrollup(); } } -void vga_t_scrollup(){ +void vgatext_scrollup(){ // Move VS.line up for(u8 i=1;i<=MAX_LINE;i++){ for(u8 j=0;j<=MAX_COL;j++) diff --git a/src/drivers/vga_t.hpp b/src/drivers/vgatext.hpp index bf553bf..2111691 100644 --- a/src/drivers/vga_t.hpp +++ b/src/drivers/vgatext.hpp @@ -16,20 +16,20 @@ typedef struct VIDEO_STATE { u8 fg; } VIDEO_STATE; -void vga_t_init(); +void vgatext_init(); /** * Print char */ -void vga_t_putchar(char); +void vgatext_putchar(char); /** * Scroll the framebuffer from one line */ -void vga_t_scrollup(); +void vgatext_scrollup(); /** * Clear all char from the framebuffer */ -void vga_t_clear(); +void vgatext_clear(); |
