diff options
Diffstat (limited to 'src/kernel/stub.asm')
-rw-r--r-- | src/kernel/stub.asm | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/src/kernel/stub.asm b/src/kernel/stub.asm new file mode 100644 index 0000000..2c097d3 --- /dev/null +++ b/src/kernel/stub.asm @@ -0,0 +1,76 @@ +;Copyright 2019 Benji Dial + +;Permission to use, copy, modify, and/or distribute this +;software for any purpose with or without fee is hereby +;granted, provided that the above copyright notice and this +;permission notice appear in all copies. + +;THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS +;ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL +;IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO +;EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +;INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER +;RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +;ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +;ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE +;OF THIS SOFTWARE. + +extern main + +section .mb_header +dd 0xe852_50d6;magic +dd 0x0000_0000;architecture - i386 +dd mb_end - $$;length +dd 0x17adaf2a - mb_end + $$;check + +;tags +dw 0x0001;info request +dw 0x0000;flags +dd mb_end - $$ - 16 +dd 5;boot device +dd 6;memory map + +mb_end: + +section .text +bits 32 +_start: + mov dword [info_pointer], ebx + mov esp, stack + call main + mov edx, eax + + mov eax, 0x20f0_20f0 + mov ebx, 0x000b_8000 + mov ecx, 0x000b_8fa0 +clear_screen_loop: + mov dword [ebx], eax + add ebx, 4 + test ebx, ecx + jne clear_screen_loop + + mov dword [0x000b_8000], 0xf072_f045 + mov dword [0x000b_8004], 0xf06f_f072 + mov dword [0x000b_8008], 0xf020_f072 + + mov ebx, 0x000b_8022 +error_number_loop: + mov al, dl + and al, 0x07 + or al, 0x30 + mov byte [ebx], al + sub ebx, 2 + shr edx, 3 + test ebx, 0x000b_800a + jne error_number_loop + + cli +halt: + hlt + jmp halt + +section .bss +global info_pointer +info_pointer resd 1 +resb 0x1000 - $ + $$ +stack:
\ No newline at end of file |