Initial commit

This commit is contained in:
CrazyEttin 2021-05-26 17:05:49 +03:00
commit df836219eb
3 changed files with 125 additions and 0 deletions

9
make.sh Executable file
View File

@ -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

23
src/boot.asm Normal file
View File

@ -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

93
src/os.asm Normal file
View File

@ -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