diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2018-05-15 10:21:35 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2018-05-15 10:21:35 -0400 |
commit | f2c3385bca9965d3e41f52d816bcc07d8a348339 (patch) | |
tree | 63a57cdb54e1ba0e1a03ac953d4baa2be43b4f2a | |
parent | fef70f8194258e631956a9336862e115393c8077 (diff) | |
download | minos-f2c3385bca9965d3e41f52d816bcc07d8a348339.tar.gz |
Start hooking up tokenizer
-rw-r--r-- | terminal.asm | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/terminal.asm b/terminal.asm index 647152d..0de17e9 100644 --- a/terminal.asm +++ b/terminal.asm @@ -7,6 +7,15 @@ terminal: push bp mov bp, sp + mov ax, ds + mov es, ax + sub sp, T_BUFSZ ; reserve space for tokens + + xor ax, ax + mov cx, T_BUFSZ + lea di, [bp - T_BUFSZ] + repne stosb ; zero out token storage + .clear_buffer: mov cx, T_BUFSZ ; counter is length of buffer mov di, t_buffer ; destination is buffer @@ -15,19 +24,19 @@ terminal: .do_prompt: mov cx, 0 ; reset counter ; this tracks keyboard presses - mov al, CR + mov al, ASCII_CR call putc ; write carriage return to console push t_msg_prompt ; address of prompt string push t_msg_prompt_fmt ; address of prompt format string call printf ; print prompt to console - add sp, 4 ; clean up stack + add sp, 2 * 2 ; clean up stack mov di, t_buffer ; input destination is buffer .read_command: call kbd_read ; get input from user .update_buffer: - cmp al, CR + cmp al, ASCII_CR je .flush_buffer ; if carriage return, flush buffer cmp cx, T_BUFSZ @@ -44,17 +53,23 @@ terminal: ; (di - 1) is the previous input je .do_prompt ; if no input (null), start over - mov al, CR + mov al, ASCII_CR call putc ; print carriage return ; ---- TEMPORARY --- ; a command parser will be here eventually ; TODO: write string tokenizer - push t_buffer ; push buffer string address - push t_buffer_fmt ; push buffer format string address - call printf ; write input to console - add sp, 4 ; clean up stack + lea si, [bp - T_BUFSZ] + push ' ' + push si + push t_buffer + call strtok + add sp, 2 * 3 + ;push t_buffer ; push buffer string address + ;push t_buffer_fmt ; push buffer format string address + ;call printf ; write input to console + ;add sp, 2 * 2 ; clean up stack ; --- END TEMPORARY --- jmp .clear_buffer ; zero out buffer / start over |