Add couple of commands and tweak the input length
This commit is contained in:
parent
46691e9975
commit
0c0c882b21
63
src/os.asm
63
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
|
||||
|
|
Loading…
Reference in New Issue