From df836219eb17d4e1c02ee19dbb7afb0ae4dbe01d Mon Sep 17 00:00:00 2001 From: CrazyEttin <> Date: Wed, 26 May 2021 17:05:49 +0300 Subject: [PATCH] Initial commit --- make.sh | 9 +++++ src/boot.asm | 23 +++++++++++++ src/os.asm | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 125 insertions(+) create mode 100755 make.sh create mode 100644 src/boot.asm create mode 100644 src/os.asm diff --git a/make.sh b/make.sh new file mode 100755 index 0000000..2a147e4 --- /dev/null +++ b/make.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +cd src/ +nasm boot.asm -f bin -o ../build/boot.bin +nasm os.asm -f bin -o ../build/os.bin + +cd ../build/ +cat boot.bin os.bin > EttinOS.img +rm boot.bin os.bin diff --git a/src/boot.asm b/src/boot.asm new file mode 100644 index 0000000..435ddd6 --- /dev/null +++ b/src/boot.asm @@ -0,0 +1,23 @@ +[ORG 0x7c00] +mov ax, 0 +mov ds, ax +jmp 0:start +start: + +mov ax, 0x1000 +mov es, ax +mov bx, 0 + +mov al, 32 +mov dh, 0 +mov ch, 0 +mov cl, 2 + +mov ah, 2 +int 0x13 + +jmp 0x1000:0 + +times 510-($-$$) db 0 +db 0x55 +db 0xaa diff --git a/src/os.asm b/src/os.asm new file mode 100644 index 0000000..d773bdd --- /dev/null +++ b/src/os.asm @@ -0,0 +1,93 @@ +mov ax, 0x1000 +mov ds, ax + +mov si, welcome +call print + +loop: +mov si, prompt +call print +mov di, input +call read +cmp byte [input], 0 +je loop +mov si, input +call print +mov si, newline +call print +mov cx, 0x4e +mov di, input +mov al, 0 +rep stosb +jmp loop + +print: +lodsb +cmp al, 0 +je .done +mov ah, 0xe +int 0x10 +jmp print +.done: +ret + +read: +mov cl, 0 +.loop: +mov ah, 0 +int 0x16 +cmp al, 0xd +je .return +cmp al, 8 +je .backspace +cmp cl, 0x4d +je .loop +cmp al, 0x20 +je .space +cmp al, 0x9 +je .erase +cmp al, 0 +je .loop +.character: +mov byte [di], 0 +mov ah, 0xe +int 0x10 +stosb +inc cl +jmp .loop +.erase: +mov al, 0x20 +jmp .character +.space: +cmp byte [di], 0 +je .character +mov al, byte [di] +mov ah, 0xe +int 0x10 +inc di +inc cl +jmp .loop +.backspace: +cmp cl, 0 +je .loop +mov ah, 0xe +int 0x10 +dec di +dec cl +jmp .loop +.return: +mov si, newline +call print +ret + +welcome: +db 0xd, 0xa, "Welcome to EttinOS!", 0xd, 0xa, 0xd, 0xa, 0 + +input: +times 78 db 0 + +prompt: +db "> ", 0 + +newline: +db 0xd, 0xa, 0