summaryrefslogtreecommitdiff
path: root/kernel/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/main.cpp')
-rw-r--r--kernel/main.cpp32
1 files changed, 27 insertions, 5 deletions
diff --git a/kernel/main.cpp b/kernel/main.cpp
index c958ac0..9cd9875 100644
--- a/kernel/main.cpp
+++ b/kernel/main.cpp
@@ -7,10 +7,20 @@
int main(){
//Test print a char
- char* letter=(char*)0xB8A00;
+ /*char* letter=(char*)0xB8A00;
*letter='H';
letter++;
- *letter=(GREEN << 4) | BLUE;
+ *letter=(GREEN << 4) | BLUE;*/
+
+ memPrint VideoRam;
+
+
+ VideoRam.print("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
+ VideoRam.print("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
+ VideoRam.print("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
+ VideoRam.print("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
+ VideoRam.print("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
+ VideoRam.print("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
//Infinite loop
while(1);
@@ -29,9 +39,21 @@ extern "C" void _boot(){
Gdt gdt;
//Load Gdt into memory
- //gdt.loadGdt();
-
- //Call main function
+ gdt.loadGdt();
+
+ //Init all segments and stack
+ __asm__("\
+ movw $0x10, %ax; \n \
+ movw %ax, %ds; \n \
+ movw %ax, %es \n \
+ ljmp $0x08, $updateDS;\
+ updateDS: \n\
+ movw $0x18, %ax \n \
+ movw %ax, %ss \n \
+ movl $0x00B00000, %esp \n\
+ ");
+
+ //Call main function after stack pointer changing (due to C++ optimisation)
main();
}