]> git.dujemihanovic.xyz Git - nameless-os.git/commitdiff
Add basic bootsector
authorDuje Mihanović <duje.mihanovic@skole.hr>
Fri, 20 Aug 2021 14:46:08 +0000 (16:46 +0200)
committerDuje Mihanović <duje.mihanovic@skole.hr>
Fri, 20 Aug 2021 14:46:08 +0000 (16:46 +0200)
It prints out "Gotta start somewhere". Tested on QEMU and even on real hardware
with success.

.gitignore [new file with mode: 0644]
boot.s [new file with mode: 0644]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..12ab2c1
--- /dev/null
@@ -0,0 +1,2 @@
+toolchain/
+boot
diff --git a/boot.s b/boot.s
new file mode 100644 (file)
index 0000000..50730d0
--- /dev/null
+++ b/boot.s
@@ -0,0 +1,22 @@
+       bits 16 ; boot sectors run in real mode
+       org 7c00h ; boot sector is always loaded at 0x7c00
+
+       mov al, 1 ; update cursor after write
+       mov bh, 0 ; write to page 0
+       mov bl, 00000111b ; attribute: high nibble is foreground (light gray),
+                                         ; low nibble is background (black)
+                                         ; NOTE: in the binary, these will be inverted, so low nibble here will become high nibble in binary and vice versa!
+       mov cx, msg1end - msg1 ; size of message
+       mov dl, 0 ; column to write to
+       mov dh, 0 ; row to write to
+       push cs ; push code segment to stack
+       pop es ; pop pushed code segment to extra segment, this serves as the base to the string
+       mov bp, msg1 ; offset where the string is
+       mov ah, 13h ; write string subservice 
+       int 10h ; call BIOS interrupt 0x10
+       jmp msg1end ; jmp to endless loop
+       msg1 db "Gotta start somewhere"
+       msg1end: jmp msg1end
+
+       times 510-($-$$) db 0 ; fill with 0 until 0x1fc is reached
+       dw 0xaa55 ; BIOS MBR signature