diff options
| author | s-ol <s+removethis@s-ol.nu> | 2021-07-10 13:57:54 +0000 |
|---|---|---|
| committer | s-ol <s+removethis@s-ol.nu> | 2021-07-10 13:57:54 +0000 |
| commit | a7f7cdd29fe625153d12adfbbdac4ffaf93390a3 (patch) | |
| tree | 2dd148bb65fccbccc855dd6359f540f07a1f9943 /examples | |
| parent | examples: exit via SBI (diff) | |
| download | subv-a7f7cdd29fe625153d12adfbbdac4ffaf93390a3.tar.gz subv-a7f7cdd29fe625153d12adfbbdac4ffaf93390a3.zip | |
fix ask_name STDIO
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/ask_name.subv | 68 |
1 files changed, 18 insertions, 50 deletions
diff --git a/examples/ask_name.subv b/examples/ask_name.subv index dfd5a7a..4be18eb 100644 --- a/examples/ask_name.subv +++ b/examples/ask_name.subv @@ -7,7 +7,7 @@ # $ ./subv.sh examples/ask_.subv >examples/ask_.elf # $ cat 2>dev/null | ./qemu.sh examples/ask_.elf # What's your name? -# > Sol +# > Sol # Hello Sol, nice to meet you! == code 0x80400000 @@ -16,13 +16,16 @@ # 63/branch 1/subop/!= 5/rs/t0 0/rs/x0 0/off13 main: - 6f/jal 1/rd/ra init/off21 - # print HELLO_WHATSURNAME 37/lui a/rd/a0 HELLO_WHATSURNAME/imm20hi 13/opi a/rd/a0 0/subop/add a/rs/a0 HELLO_WHATSURNAME/imm12lo 6f/jal 1/rd/ra print/off21 + # read in Name + 37/lui a/rd/a0 PROMPT/imm20hi + 13/opi a/rd/a0 0/subop/add a/rs/a0 PROMPT/imm12lo + 6f/jal 1/rd/ra print/off21 + 37/lui a/rd/a0 Name/imm20hi 13/opi a/rd/a0 0/subop/add a/rs/a0 Name/imm12lo 6f/jal 1/rd/ra read/off21 @@ -53,48 +56,6 @@ exit: # ECALL 73/system 0/subop/priv 0/funct12/ecall -init: -# initialize UART0 - # load 0x10000000 (UART0) into t0 - 37/lui 5/rd/t0 10000/imm20 - - # disable interrupts - 23/store 0/width/b 5/rs/t0 1/off12 0/rs/x0 - - # enable DLAB - 13/opi 6/rd/t1 0/subop/add 0/rs/x0 80/imm12 - 23/store 0/width/b 5/rs/t0 3/off12 6/rs/t1 - - # max speed = 38400bps - 13/opi 6/rd/t1 0/subop/add 0/rs/x0 3/imm12 - 23/store 0/width/b 5/rs/t0 0/off12 6/rs/t1 - 23/store 0/width/b 5/rs/t0 1/off12 0/rs/x0 - - # disable DLAB - 13/opi 6/rd/t1 0/subop/add 0/rs/x0 3/imm12 - 23/store 0/width/b 5/rs/t0 3/off12 6/rs/t1 - - # enable fifo, clear, watermark=14b - 13/opi 6/rd/t1 0/subop/add 0/rs/x0 c7/imm12 - 23/store 0/width/b 5/rs/t0 2/off12 6/rs/t1 - - # set dtr, srs, aux2 - 13/opi 6/rd/t1 0/subop/add 0/rs/x0 b/imm12 - 23/store 0/width/b 5/rs/t0 4/off12 6/rs/t1 - - 13/opi 6/rd/t1 0/subop/add 0/rs/x0 1/imm12 - 23/store 0/width/b 5/rs/t0 1/off12 6/rs/t1 - - # return - 67/jalr 0/subop 0/rd/x0 1/rs/ra 0/off12 - -old: - # set "data terminal ready" and "request to send" bits in MCR - 13/opi 6/rd/t1 0/subop/add 0/rs/x0 3/imm12 - 23/store 0/width/b 5/rs/t0 4/off12 6/rs/t1 - # return - 67/jalr 0/subop 0/rd/x0 1/rs/ra 0/off12 - print: # print a C-string from a0 # load 0x10000000 (UART0) into t0 @@ -123,8 +84,8 @@ read: # read a C-string into a0 # load 0x10000000 (UART0) into t0 37/lui 5/rd/t0 10000/imm20 - # load 0x0a (\n) into t1 - 13/opi 6/rd/t1 0/subop/add 0/rs/x0 0a/imm12 + # load 0x0d (\r) into t1 + 13/opi 6/rd/t1 0/subop/add 0/rs/x0 0d/imm12 read:loop: # spin if FIFO is empty (data_ready = UART+5 & 1) @@ -135,13 +96,17 @@ read:loop: 03/load 7/rd/t2 4/width/bu 5/rs/t0 0/imm12 # break loop if newline (t2 == t1) 63/branch 0/subop/== 7/rs/t2 6/rs/t1 read:break/off13 - # store char from t1 at [a0] - 23/store 0/width/b a/rs/a0 7/rs/t2 0/off12 + # echo and store char from t2 + 23/store 0/width/b 5/rs/t0 0/off12 7/rs/t2 + 23/store 0/width/b a/rs/a0 0/off12 7/rs/t2 # increment a0 13/opi a/rd/a0 0/subop/add a/rs/a0 1/imm12 # jump back up 6f/jal 0/rd/x0 read:loop/off21 read:break: + # echo \n + 13/opi 7/rd/t2 0/subop/add 0/rs/x0 0a/imm12 + 23/store 0/width/b 5/rs/t0 0/off12 7/rs/t2 # return 67/jalr 0/rd/x0 0/subop 1/rs/ra 0/off12 @@ -156,5 +121,8 @@ HELLO_: NICETOMEETU: # ", nice to meet you!\n\0" 2c/8 20/8 6e/8 69/8 63/8 65/8 20/8 74/8 6f/8 20/8 6d/8 65/8 65/8 74/8 20/8 79/8 6f/8 75/8 21/8 0a/8 00/8 +PROMPT: + # "> " + 3e/8 20/8 00/8 Name: - 00/8 + 0/256 |
