80 lines
894 B
NASM
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
|