EttinOS/src/os.asm

80 lines
894 B
NASM

jmp start
%include "calls.inc"
start:
mov ax, 0x1000
mov ds, ax
mov ah, 0xf
int 0x10
mov byte [cpl], ah
mov si, welcome
call printstr
loop:
mov si, prompt
call printstr
call readstr
cmp byte [readstr.out], 0
je loop
exec:
.help:
mov si, readstr.out
mov di, cmd.help
call cmpstr
jnc .hello
call help
jmp loop
.hello:
mov si, readstr.out
mov di, cmd.hello
call cmpstr
jnc .echo
call hello
jmp loop
.echo:
mov si, readstr.out
mov di, cmd.echo
call cmpstr
jnc .keycode
call echo
jmp loop
.keycode:
mov si, readstr.out
mov di, cmd.keycode
call cmpstr
jnc .error
call keycode
jmp loop
.error:
mov si, cmd.error
call printstr
jmp loop
cpl:
db 0
welcome:
db 0xd, 0xa, "Welcome to EttinOS!", 0xd, 0xa, 0xd, 0xa, 0
prompt:
db "> ", 0
cmd:
.help:
db "help", 0
.hello:
db "hello", 0
.echo:
db "echo", 0
.keycode:
db "keycode", 0
.error:
db "Unknown command", 0xd, 0xa, 0
newline:
db 0xd, 0xa, 0