aboutsummaryrefslogtreecommitdiff
path: root/src/drivers
diff options
context:
space:
mode:
authorLoic Guegan <manzerbredes@mailbox.org>2021-04-29 08:49:41 +0200
committerLoic Guegan <manzerbredes@mailbox.org>2021-04-29 08:49:41 +0200
commitfde8a1ab65d5e33d90123a3aaa9b5c15e249689f (patch)
tree14134c0c2f322cbcba0989b78bd7057f76c157c3 /src/drivers
parent067d6e340be698b0e26b7732215a1969e0e683f3 (diff)
Debug, add memory print driver
Diffstat (limited to 'src/drivers')
-rw-r--r--src/drivers/acpi.hpp2
-rw-r--r--src/drivers/framebuffer.cc2
-rw-r--r--src/drivers/framebuffer.hpp2
-rw-r--r--src/drivers/memtext.cc41
-rw-r--r--src/drivers/memtext.hpp11
-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();