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