diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2021-02-27 07:21:29 -0800 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2021-02-27 07:21:29 -0800 |
commit | 03178cde6fd47f4eebb49852199681355bff5a14 (patch) | |
tree | b72acc9b3258b4641e60d5b932d6c861ca975512 /baremetal/shell/print.mu | |
parent | a9e0cb7cc9da462c6e7886edfb554d7266e84c18 (diff) | |
download | mu-03178cde6fd47f4eebb49852199681355bff5a14.tar.gz |
7818 - baremetal/shell: parse numbers
Diffstat (limited to 'baremetal/shell/print.mu')
-rw-r--r-- | baremetal/shell/print.mu | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/baremetal/shell/print.mu b/baremetal/shell/print.mu index f8e9de31..13605fef 100644 --- a/baremetal/shell/print.mu +++ b/baremetal/shell/print.mu @@ -3,6 +3,12 @@ fn print-cell _in: (addr handle cell), out: (addr stream byte) { var in/eax: (addr handle cell) <- copy _in var in-addr/eax: (addr cell) <- lookup *in var in-type/ecx: (addr int) <- get in-addr, type + compare *in-type, 1/number + { + break-if-!= + print-number in-addr, out + return + } compare *in-type, 2/symbol { break-if-!= @@ -26,3 +32,9 @@ fn print-symbol _in: (addr cell), out: (addr stream byte) { loop } } + +fn print-number _in: (addr cell), out: (addr stream byte) { + var in/esi: (addr cell) <- copy _in + var val/eax: (addr float) <- get in, number-data + write-float-decimal-approximate out, *val, 3/precision +} |