2021-05-26 14:05:49 +00:00
|
|
|
mov ax, 0x1000
|
|
|
|
mov ds, ax
|
|
|
|
|
|
|
|
mov si, welcome
|
|
|
|
call print
|
|
|
|
|
|
|
|
loop:
|
|
|
|
mov si, prompt
|
|
|
|
call print
|
2021-05-26 15:25:56 +00:00
|
|
|
mov cx, 0x4d
|
|
|
|
mov di, input
|
|
|
|
mov al, 0
|
|
|
|
rep stosb
|
2021-05-26 14:05:49 +00:00
|
|
|
mov di, input
|
|
|
|
call read
|
|
|
|
cmp byte [input], 0
|
|
|
|
je loop
|
|
|
|
mov si, input
|
|
|
|
call print
|
|
|
|
mov si, newline
|
|
|
|
call print
|
|
|
|
jmp loop
|
|
|
|
|
|
|
|
print:
|
|
|
|
lodsb
|
|
|
|
cmp al, 0
|
|
|
|
je .done
|
|
|
|
mov ah, 0xe
|
|
|
|
int 0x10
|
|
|
|
jmp print
|
|
|
|
.done:
|
|
|
|
ret
|
|
|
|
|
|
|
|
read:
|
|
|
|
mov cl, 0
|
|
|
|
.loop:
|
|
|
|
mov ah, 0
|
|
|
|
int 0x16
|
|
|
|
cmp al, 0xd
|
|
|
|
je .return
|
2021-05-26 15:25:56 +00:00
|
|
|
cmp al, 0x8
|
2021-05-26 14:05:49 +00:00
|
|
|
je .backspace
|
|
|
|
cmp cl, 0x4d
|
|
|
|
je .loop
|
|
|
|
cmp al, 0x20
|
|
|
|
je .space
|
|
|
|
cmp al, 0x9
|
|
|
|
je .erase
|
|
|
|
cmp al, 0
|
|
|
|
je .loop
|
|
|
|
.character:
|
|
|
|
mov byte [di], 0
|
|
|
|
mov ah, 0xe
|
|
|
|
int 0x10
|
|
|
|
stosb
|
|
|
|
inc cl
|
|
|
|
jmp .loop
|
|
|
|
.erase:
|
|
|
|
mov al, 0x20
|
|
|
|
jmp .character
|
|
|
|
.space:
|
|
|
|
cmp byte [di], 0
|
|
|
|
je .character
|
|
|
|
mov al, byte [di]
|
|
|
|
mov ah, 0xe
|
|
|
|
int 0x10
|
|
|
|
inc di
|
|
|
|
inc cl
|
|
|
|
jmp .loop
|
|
|
|
.backspace:
|
|
|
|
cmp cl, 0
|
|
|
|
je .loop
|
|
|
|
mov ah, 0xe
|
|
|
|
int 0x10
|
|
|
|
dec di
|
|
|
|
dec cl
|
|
|
|
jmp .loop
|
|
|
|
.return:
|
2021-05-26 15:25:56 +00:00
|
|
|
mov di, input.end
|
|
|
|
.tspfind:
|
|
|
|
dec di
|
|
|
|
cmp byte [di], 0
|
|
|
|
je .tspfind
|
|
|
|
cmp byte [di], 0x20
|
|
|
|
je .tsperase
|
|
|
|
jmp .done
|
|
|
|
.tsperase:
|
|
|
|
mov al, 0
|
|
|
|
stosb
|
|
|
|
dec di
|
|
|
|
jmp .tspfind
|
|
|
|
.done:
|
2021-05-26 14:05:49 +00:00
|
|
|
mov si, newline
|
|
|
|
call print
|
|
|
|
ret
|
|
|
|
|
|
|
|
welcome:
|
|
|
|
db 0xd, 0xa, "Welcome to EttinOS!", 0xd, 0xa, 0xd, 0xa, 0
|
|
|
|
|
|
|
|
prompt:
|
|
|
|
db "> ", 0
|
|
|
|
|
|
|
|
newline:
|
|
|
|
db 0xd, 0xa, 0
|
2021-05-26 15:25:56 +00:00
|
|
|
|
|
|
|
input:
|
|
|
|
times 0x4d db 0
|
|
|
|
.end:
|
|
|
|
db 0
|