diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2021-03-05 15:18:46 -0800 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2021-03-05 15:18:46 -0800 |
commit | bcde6be5283baef7c672404c9099fa0303bdacc3 (patch) | |
tree | 7d86772b86f1e8e9a5f5dd1163917ad96f6de14b /shell/trace.mu | |
parent | e4fc67ee44cda0769ce4d1e844ff8b5b4a937491 (diff) | |
download | mu-bcde6be5283baef7c672404c9099fa0303bdacc3.tar.gz |
7857 - shell: first function call
Diffstat (limited to 'shell/trace.mu')
-rw-r--r-- | shell/trace.mu | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/shell/trace.mu b/shell/trace.mu index 34303f43..218e35d5 100644 --- a/shell/trace.mu +++ b/shell/trace.mu @@ -255,6 +255,36 @@ fn trace-lines-equal? _a: (addr trace-line), _b: (addr trace-line) -> _/eax: boo return data-match? } +fn dump-trace _self: (addr trace) { + var already-hiding-lines?: boolean + var y/ecx: int <- copy 0 + var self/esi: (addr trace) <- copy _self + compare self, 0 + { + break-if-!= + return + } + var trace-ah/eax: (addr handle array trace-line) <- get self, data + var _trace/eax: (addr array trace-line) <- lookup *trace-ah + var trace/edi: (addr array trace-line) <- copy _trace + var i/edx: int <- copy 0 + var max-addr/ebx: (addr int) <- get self, first-free + var max/ebx: int <- copy *max-addr + $dump-trace:loop: { + compare i, max + break-if->= + $dump-trace:iter: { + var offset/ebx: (offset trace-line) <- compute-offset trace, i + var curr/ebx: (addr trace-line) <- index trace, offset + var curr-label-ah/eax: (addr handle array byte) <- get curr, label + var curr-label/eax: (addr array byte) <- lookup *curr-label-ah + y <- render-trace-line 0/screen, curr, 0, y, 0x80/width, 0x30/height, 7/fg, 0/bg + } + i <- increment + loop + } +} + ## UI stuff fn mark-lines-dirty _self: (addr trace) { |