Files
crawos/source/kernel/features/cli.asm
2025-12-30 22:52:30 +00:00

101 lines
1.4 KiB
NASM
Executable File

os_start_cli:
pusha
call os_print_newline
mov si, prompt
call os_print_string
mov ax, 20
mov di, user_input
call os_display_input
; ------------------------------------------------
os_read_cli:
pusha
mov si, user_input
call os_upper_case ; Make the input uppercase so it's case insensitive
.output_the_user_input:
call os_print_newline
.check_matches: ; Check if the user input matches any internal commands
; Help
mov si, user_input
mov di, help_string
call os_compare_strings
cmp cl, 1
je help
; Clear screen
mov si, user_input
mov di, clear_string
call os_compare_strings
cmp cl, 1
je clear
; Reboot
mov si, user_input
mov di, reboot_string
call os_compare_strings
cmp cl, 1
je power_reboot
; Cat
mov si, user_input
mov di, cat_string
call os_compare_strings
cmp cl, 1
je cat
; LS
mov si, user_input
mov di, ls_string
call os_compare_strings
cmp cl, 1
je ls
; Pong
mov si, user_input
mov di, pong_string
call os_compare_strings
cmp cl, 1
je pong
jmp .unkown
.unkown:
mov si, unknown_command
call os_print_string
mov si, user_input
call os_print_string
jmp .finish
.finish:
popa
call os_start_cli
clear:
call os_set_text_mode
call os_read_cli.finish
help:
mov si, help_text
call os_print_string
call os_read_cli.finish
pong:
call game_pong
call os_read_cli.finish
cat:
call util_cat
call os_read_cli.finish
ls:
call util_ls
call os_read_cli.finish