From 0c0c882b218b47e784357d4e9f5b4054d7a73e48 Mon Sep 17 00:00:00 2001 From: CrazyEttin <> Date: Wed, 26 May 2021 20:15:44 +0300 Subject: [PATCH] Add couple of commands and tweak the input length --- src/os.asm | 63 ++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 56 insertions(+), 7 deletions(-) diff --git a/src/os.asm b/src/os.asm index 1ed1b39..04bf7f6 100644 --- a/src/os.asm +++ b/src/os.asm @@ -7,11 +7,27 @@ call print loop: mov si, prompt call print -mov cx, 0x4d -mov di, input -mov al, 0 -rep stosb -mov di, input +call read +cmp byte [input], 0 +je loop +mov si, input +mov di, cmdhello +call compare +jc .hello +mov si, input +mov di, cmdecho +call compare +jc .echo +mov si, unknown +call print +jmp loop + +.hello: +mov si, hello +call print +jmp loop + +.echo: call read cmp byte [input], 0 je loop @@ -32,6 +48,11 @@ jmp print ret read: +mov di, input +mov cx, 0x80 +mov al, 0 +rep stosb +mov di, input mov cl, 0 .loop: mov ah, 0 @@ -40,7 +61,7 @@ cmp al, 0xd je .return cmp al, 0x8 je .backspace -cmp cl, 0x4d +cmp cl, 0x80 je .loop cmp al, 0x20 je .space @@ -94,6 +115,23 @@ mov si, newline call print ret +compare: +mov al, [si] +mov bl, [di] +cmp al, bl +jne .nequal +cmp al, 0 +je .equal +inc si +inc di +jmp compare +.nequal: +clc +ret +.equal: +stc +ret + welcome: db 0xd, 0xa, "Welcome to EttinOS!", 0xd, 0xa, 0xd, 0xa, 0 @@ -104,6 +142,17 @@ newline: db 0xd, 0xa, 0 input: -times 0x4d db 0 +times 0x80 db 0 .end: db 0 + +unknown: +db "Unknown command", 0xd, 0xa, 0 + +cmdhello: +db "hello", 0 +hello: +db "Hello world!", 0xd, 0xa, 0 + +cmdecho: +db "echo", 0