diff --git a/.vscode/tasks.json b/.vscode/tasks.json index a8e9261..59c63e2 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -24,9 +24,27 @@ "problemMatcher": [] }, { - "label": "Run", + "label": "Build All", "type": "shell", - "command": "&('C:/Program Files/qemu/qemu-system-i386') -kernel bin/ThanOS.bin -serial mon:stdio -drive id=disk,file=hda.img,if=none -device ahci,id=ahci -device ide-drive,drive=disk,bus=ahci.0", + "command": "bash --login -c 'make'; bash --login -c 'make iso'", + "group": { + "kind": "test", + "isDefault": true, + }, + }, + { + "label": "Build all and run", + "type": "shell", + "command": "bash --login -c 'make'; bash --login -c 'make iso'; &('D:/Program Files/qemu/qemu-system-i386') -cdrom E:/OS/ThanOS/bin/ThanOS.iso -serial mon:stdio", + "group": { + "kind": "test", + "isDefault": true, + }, + }, + { + "label": "Run (NOT WORKING)", + "type": "shell", + "command": "&('D:/Program Files/qemu/qemu-system-i386') -kernel bin/ThanOS.bin -serial mon:stdio -drive id=disk,file=hda.img,if=none -device ahci,id=ahci -device ide-drive,drive=disk,bus=ahci.0", "group": { "kind": "test", "isDefault": true @@ -35,7 +53,7 @@ { "label": "Run (With ISO)", "type": "shell", - "command": "&('C:/Program Files/qemu/qemu-system-i386') -cdrom bin/ThanOS.iso -serial mon:stdio -drive file=hda.img,format=raw", + "command": "&('D:/Program Files/qemu/qemu-system-i386') -cdrom E:/OS/ThanOS/bin/ThanOS.iso -serial mon:stdio", "group": { "kind": "test", "isDefault": true @@ -51,4 +69,4 @@ } } ] -} \ No newline at end of file +} diff --git a/bin/ThanOS.iso b/bin/ThanOS.iso index ad05aa9..74fa1a0 100644 Binary files a/bin/ThanOS.iso and b/bin/ThanOS.iso differ diff --git a/kernel.asm b/kernel.asm index bb80040..aa95a89 100644 --- a/kernel.asm +++ b/kernel.asm @@ -1,10 +1,13 @@ -/* Declare constants for the multiboot header. */ -.set ALIGN, 1<<0 /* align loaded modules on page boundaries */ -.set MEMINFO, 1<<1 /* provide memory map */ -.set FLAGS, ALIGN | MEMINFO /* this is the Multiboot 'flag' field */ -.set MAGIC, 0x1BADB002 /* 'magic number' lets bootloader find the header */ -.set CHECKSUM, -(MAGIC + FLAGS) /* checksum of above, to prove we are multiboot */ - +;; ThanOS +;; Copyright Benjamin Kyd (c) 2018 + +;; declare constants for the multiboot header +.set ALIGN, 1<<0 ; align loaded modules on page boundaries +.set MEMINFO, 1<<1 ; provide memory map +.set FLAGS, ALIGN | MEMINFO ; this is the Multiboot 'flag' field +.set MAGIC, 0x1BADB002 ;'magic number' lets bootloader find the header +.set CHECKSUM, -(MAGIC + FLAGS) ; checksum of above, to prove we are multiboot + .section .multiboot .align 4 .long MAGIC @@ -14,12 +17,13 @@ .section .bss .align 16 stack_bottom: -.skip 16384 ; 16 KiB +.skip 16384 ; 16 KiB stack_top: .section .text .global _start .type _start, @function + _start: mov $stack_top, %esp call kernel_main @@ -31,4 +35,4 @@ _hang: hlt jmp _hang -.size _start, . - _start \ No newline at end of file +.size _start, . - _start diff --git a/kernel.cpp b/kernel.cpp index d0f8ed1..3e791fc 100644 --- a/kernel.cpp +++ b/kernel.cpp @@ -1,3 +1,6 @@ +// ThanOS +// Copyright Benjamin Kyd (c) 2018 + int kernel_main(void) { const char* str = "Your mother gay lol"; char* videoMemoryPtr = (char*)0xb8000; // Video memory start