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 .output_the_user_input: call os_print_newline .check_matches: ; Check if the user input matches any internal commands ; Help mov di, user_input mov si, help_string call os_compare_strings cmp cl, 1 je help ; Clear screen mov di, user_input mov si, clear_string call os_compare_strings cmp cl, 1 je clear ; Reboot mov di, user_input mov si, reboot_string call os_compare_strings cmp cl, 1 je os_reboot ; Reboot mov di, user_input mov si, cat_string call os_compare_strings cmp cl, 1 je cat ; Pong mov di, user_input mov si, 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_nl 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_nl call os_read_cli.finish cat: call util_cat call os_read_cli.finish pong: call game_pong call os_read_cli.finish section .data welcome_text db 'Welcome to CrawOS, the Cool, Real and AWsome Operating System', 0 user_input times 20 db 0 prompt_length db 20 prompt db 'CrawOS sh> ', 0 help_string db 'HELP', 0 clear_string db 'CLEAR', 0 reboot_string db 'REBOOT', 0 cat_string db 'CAT', 0 pong_string db 'PONG', 0 help_text db 'This is for Cowards: "HELP" for this help text, "CLEAR" to clear the screen, esc or "REBOOT" to reboot', 0 command_result_text db 'You typed: ', 0 unknown_command db 'Error: Unkown Command.. ', 0