79 lines
1.3 KiB
NASM
Executable File
79 lines
1.3 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
|
|
|
|
.output_the_user_input:
|
|
call os_print_newline
|
|
|
|
.check_matches: ; Check if the user input matches any internal commands
|
|
mov si, user_input
|
|
mov di, help_string
|
|
call os_compare_strings
|
|
cmp cl, 1
|
|
je help
|
|
|
|
mov si, user_input
|
|
mov di, clear_string
|
|
call os_compare_strings
|
|
cmp cl, 1
|
|
je clear
|
|
|
|
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_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
|
|
|
|
pong:
|
|
call game_pong
|
|
call os_read_cli.finish
|
|
|
|
section .data
|
|
user_input times 20 db 0
|
|
prompt_length db 20
|
|
prompt db 'CrawOS: ', 0
|
|
help_string db 'HELP', 0
|
|
clear_string db 'CLEAR', 0
|
|
pong_string db 'PONG', 0
|
|
help_text db 'This is CrawOS, type "HELP" for help, "CLEAR" to clear the screen', 0
|
|
command_result_text db 'You typed: ', 0
|
|
unknown_command db 'Error: Unkown Command.. ', 0
|