monitor: Argument parsing
This commit is contained in:
parent
292718d866
commit
3ec126f877
|
@ -115,6 +115,38 @@ monitor_shell_tokenize_found_token:
|
||||||
inc r0
|
inc r0
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
; parse up to 4 arguments into individual strings
|
||||||
|
; for example, "this is a test" will be converted to
|
||||||
|
; r0: pointer to "this" data.8 0
|
||||||
|
; r1: pointer to "is" data.8 0
|
||||||
|
; r2: pointer to "a" data.8 0
|
||||||
|
; r3: pointer to "test" data.8 0
|
||||||
|
; inputs:
|
||||||
|
; none
|
||||||
|
; outputs:
|
||||||
|
; r0: pointer to 1st null-terminated argument, or zero if none
|
||||||
|
; r1: pointer to 2nd null-terminated argument, or zero if none
|
||||||
|
; r2: pointer to 3rd null-terminated argument, or zero if none
|
||||||
|
; r3: pointer to 4th null-terminated argument, or zero if none
|
||||||
|
monitor_shell_parse_arguments:
|
||||||
|
push r31
|
||||||
|
|
||||||
|
mov r0, [MONTIOR_SHELL_ARGS_PTR]
|
||||||
|
mov r1, ' '
|
||||||
|
mov r31, 3
|
||||||
|
push r0
|
||||||
|
monitor_shell_parse_arguments_loop:
|
||||||
|
call monitor_shell_tokenize
|
||||||
|
push r0
|
||||||
|
loop monitor_shell_parse_arguments_loop
|
||||||
|
pop r3
|
||||||
|
pop r2
|
||||||
|
pop r1
|
||||||
|
pop r0
|
||||||
|
|
||||||
|
pop r31
|
||||||
|
ret
|
||||||
|
|
||||||
; push a character to the text buffer
|
; push a character to the text buffer
|
||||||
; inputs:
|
; inputs:
|
||||||
; r0: character
|
; r0: character
|
||||||
|
|
Loading…
Reference in New Issue
Block a user