summaryrefslogtreecommitdiff
path: root/src/kernel/stub.asm
diff options
context:
space:
mode:
authorBenji Dial <Benji3.141@gmail.com>2019-12-24 22:31:22 -0500
committerBenji Dial <Benji3.141@gmail.com>2019-12-24 22:31:22 -0500
commitf5f0f5ddae199121daebcd2213aabd81686cc074 (patch)
tree91d8d29ea497e282f841849e620d43f8fcafcfcc /src/kernel/stub.asm
parenta947a7a143029ee8ef5cb4a4232d7439b8a79670 (diff)
downloadportland-os-f5f0f5ddae199121daebcd2213aabd81686cc074.tar.gz
start of 0.0.9 branch, using multiboot this time
Diffstat (limited to 'src/kernel/stub.asm')
-rw-r--r--src/kernel/stub.asm76
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