diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2021-02-22 20:23:43 -0800 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2021-02-22 20:23:43 -0800 |
commit | 2387a8fba4e6b58c71cb44784ef46af1be80729c (patch) | |
tree | d1fca8dfec5fd430c5dbd067334b1e682deaf7b1 /baremetal/shell/sandbox.mu | |
parent | 421ed4651f0f9ceb23f07f8d00797e61d63a29ad (diff) | |
download | mu-2387a8fba4e6b58c71cb44784ef46af1be80729c.tar.gz |
7785 - baremetal/shell: trace primitives done
Rendering traces will be an ongoing journey.
Diffstat (limited to 'baremetal/shell/sandbox.mu')
-rw-r--r-- | baremetal/shell/sandbox.mu | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/baremetal/shell/sandbox.mu b/baremetal/shell/sandbox.mu index 6ba2e4ac..a766bc4d 100644 --- a/baremetal/shell/sandbox.mu +++ b/baremetal/shell/sandbox.mu @@ -12,6 +12,10 @@ fn initialize-sandbox _self: (addr sandbox) { initialize-gap-buffer data, 0x1000/4KB var value-ah/eax: (addr handle stream byte) <- get self, value populate-stream value-ah, 0x1000/4KB + var trace-ah/eax: (addr handle trace) <- get self, trace + allocate trace-ah + var trace/eax: (addr trace) <- lookup *trace-ah + initialize-trace trace, 0x100/lines } ## some helpers for tests @@ -48,12 +52,13 @@ fn delete-grapheme-before-cursor _self: (addr sandbox) { fn render-sandbox screen: (addr screen), _self: (addr sandbox), _x: int, _y: int { clear-screen screen var self/esi: (addr sandbox) <- copy _self + # data var data-ah/eax: (addr handle gap-buffer) <- get self, data var _data/eax: (addr gap-buffer) <- lookup *data-ah var data/edx: (addr gap-buffer) <- copy _data var x/eax: int <- copy _x var y/ecx: int <- copy _y - x, y <- render-gap-buffer-wrapping-right-then-down screen, data, x, y, 0x20/xmax, 0x20/ymax, x, y, 1/true + x, y <- render-gap-buffer-wrapping-right-then-down screen, data, x, y, 0x20/xmax, 0x20/ymax, x, y, 1/show-cursor { var value-ah/eax: (addr handle stream byte) <- get self, value var value/eax: (addr stream byte) <- lookup *value-ah @@ -63,6 +68,14 @@ fn render-sandbox screen: (addr screen), _self: (addr sandbox), _x: int, _y: int return } y <- increment + # trace + var trace-ah/eax: (addr handle trace) <- get self, trace + var _trace/eax: (addr trace) <- lookup *trace-ah + var trace/edx: (addr trace) <- copy _trace + y <- render-trace screen, trace, _x, y, 0x20/xmax, 0x20/ymax + y <- increment + # value + var x/eax: int <- copy 0 x, y <- draw-text-wrapping-right-then-down screen, "=> ", _x, y, 0x20/xmax, 0x20/ymax, _x, y, 7/fg, 0/bg var x2/edx: int <- copy x var value-ah/eax: (addr handle stream byte) <- get self, value @@ -99,6 +112,7 @@ fn edit-sandbox _self: (addr sandbox), key: byte { var value/edx: (addr stream byte) <- copy _value var trace-ah/eax: (addr handle trace) <- get self, trace var trace/eax: (addr trace) <- lookup *trace-ah + clear-trace trace run data, value, trace return } |