diff options
Diffstat (limited to 'assembler/get_char.s')
-rw-r--r-- | assembler/get_char.s | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/assembler/get_char.s b/assembler/get_char.s new file mode 100644 index 0000000..f1f43e7 --- /dev/null +++ b/assembler/get_char.s @@ -0,0 +1,21 @@ +// R9: end_char +get_char: + PUSH {LR} + BL uart_recv + MOVS R1, 025 // ^U (NAK) + CMP R0, R1 + BEQ redo_line + MOVS R1, 004 // ^D (EOT) + CMP R0, R1 + BEQ done_for_real + CMP R0, R9 + POP {PC} + +get_line: + BL get_char + ... + B get_line + +redo_line: + ... + B get_line |