101 lines
1.4 KiB
NASM
Executable File
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
|