Initial commit
This commit is contained in:
commit
df836219eb
|
@ -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
|
|
@ -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
|
|
@ -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
|
Loading…
Reference in New Issue