monitor: Add a (very hacky) text cursor
This commit is contained in:
parent
0c99d2b558
commit
3de7fd9567
|
@ -37,13 +37,31 @@ monitor_shell_key_down_event:
|
||||||
cmp.8 r0, 0x0E ; backspace
|
cmp.8 r0, 0x0E ; backspace
|
||||||
ifz jmp monitor_shell_key_down_event_backspace
|
ifz jmp monitor_shell_key_down_event_backspace
|
||||||
|
|
||||||
; otherwise, add it to the text buffer and print it to the screen
|
; then, overwrite the cursor
|
||||||
|
mov r1, r0
|
||||||
|
mov r0, 8 ; backspace character
|
||||||
|
call print_character_to_monitor
|
||||||
|
mov r0, r1
|
||||||
|
|
||||||
|
; then, add it to the text buffer and print it to the screen
|
||||||
call scancode_to_ascii
|
call scancode_to_ascii
|
||||||
call print_character_to_monitor
|
call print_character_to_monitor
|
||||||
call monitor_shell_push_character
|
call monitor_shell_push_character
|
||||||
|
|
||||||
|
; finally, print the cursor and redraw the line
|
||||||
|
mov r0, '_'
|
||||||
|
call print_character_to_monitor
|
||||||
call redraw_monitor_console_line
|
call redraw_monitor_console_line
|
||||||
ret
|
ret
|
||||||
monitor_shell_key_down_event_enter:
|
monitor_shell_key_down_event_enter:
|
||||||
|
; clear the cursor from the screen
|
||||||
|
mov r0, 8 ; backspace character
|
||||||
|
call print_character_to_monitor
|
||||||
|
mov r0, ' ' ; space character
|
||||||
|
call print_character_to_monitor
|
||||||
|
mov r0, 8 ; backspace character
|
||||||
|
call print_character_to_monitor
|
||||||
|
|
||||||
mov r0, 10 ; line feed
|
mov r0, 10 ; line feed
|
||||||
call print_character_to_monitor
|
call print_character_to_monitor
|
||||||
|
|
||||||
|
@ -52,6 +70,7 @@ monitor_shell_key_down_event_enter:
|
||||||
|
|
||||||
call monitor_shell_parse_line
|
call monitor_shell_parse_line
|
||||||
call monitor_shell_clear_buffer
|
call monitor_shell_clear_buffer
|
||||||
|
|
||||||
mov r0, monitor_shell_prompt
|
mov r0, monitor_shell_prompt
|
||||||
call print_string_to_monitor
|
call print_string_to_monitor
|
||||||
ret
|
ret
|
||||||
|
@ -60,13 +79,16 @@ monitor_shell_key_down_event_backspace:
|
||||||
mov r1, [MONITOR_SHELL_TEXT_BUF_PTR]
|
mov r1, [MONITOR_SHELL_TEXT_BUF_PTR]
|
||||||
cmp r1, MONITOR_SHELL_TEXT_BUF_BOTTOM
|
cmp r1, MONITOR_SHELL_TEXT_BUF_BOTTOM
|
||||||
iflteq ret
|
iflteq ret
|
||||||
; delete the last character from the screen, and pop the last character from the buffer
|
; delete the last character from the screen, draw the cursor, and pop the last character from the buffer
|
||||||
mov r0, 8 ; backspace character
|
mov r0, 8 ; backspace character
|
||||||
call print_character_to_monitor
|
call print_character_to_monitor
|
||||||
mov r0, ' ' ; space character
|
mov r0, ' ' ; space character
|
||||||
call print_character_to_monitor
|
call print_character_to_monitor
|
||||||
mov r0, 8 ; backspace character
|
mov r0, 8 ; backspace character
|
||||||
call print_character_to_monitor
|
call print_character_to_monitor
|
||||||
|
call print_character_to_monitor
|
||||||
|
mov r0, '_' ; cursor
|
||||||
|
call print_character_to_monitor
|
||||||
call monitor_shell_delete_character
|
call monitor_shell_delete_character
|
||||||
call redraw_monitor_console_line
|
call redraw_monitor_console_line
|
||||||
ret
|
ret
|
||||||
|
@ -209,4 +231,4 @@ const MONITOR_SHELL_TEXT_BUF_BOTTOM: 0x03ED3FE0 ; 32 characters
|
||||||
const MONITOR_SHELL_TEXT_BUF_PTR: 0x03ED3FDC ; 4 bytes - pointer to the current input character
|
const MONITOR_SHELL_TEXT_BUF_PTR: 0x03ED3FDC ; 4 bytes - pointer to the current input character
|
||||||
const MONTIOR_SHELL_ARGS_PTR: 0x03ED36C5 ; 4 bytes - pointer to the beginning of the command arguments
|
const MONTIOR_SHELL_ARGS_PTR: 0x03ED36C5 ; 4 bytes - pointer to the beginning of the command arguments
|
||||||
|
|
||||||
monitor_shell_prompt: data.str "> " data.8 0
|
monitor_shell_prompt: data.str "> _" data.8 0
|
||||||
|
|
Loading…
Reference in New Issue
Block a user