diff options
Diffstat (limited to 'shell')
-rw-r--r-- | shell/environment.mu | 13 | ||||
-rw-r--r-- | shell/global.mu | 3 | ||||
-rw-r--r-- | shell/sandbox.mu | 13 |
3 files changed, 22 insertions, 7 deletions
diff --git a/shell/environment.mu b/shell/environment.mu index 99712450..0fddb557 100644 --- a/shell/environment.mu +++ b/shell/environment.mu @@ -17,10 +17,19 @@ fn render-environment screen: (addr screen), _self: (addr environment) { # sandbox layout: 1 padding, 41 code, 1 padding = 43 # total = 128 chars var self/esi: (addr environment) <- copy _self - var globals/eax: (addr global-table) <- get self, globals + var globals/ecx: (addr global-table) <- get self, globals render-globals screen, globals - var sandbox/eax: (addr sandbox) <- get self, sandbox + var sandbox/edx: (addr sandbox) <- get self, sandbox render-sandbox screen, sandbox, 0x55/sandbox-left-margin, 0/sandbox-top-margin, 0x80/screen-width, 0x2f/screen-height-without-menu + # render menu + var cursor-in-globals?/eax: (addr boolean) <- get self, cursor-in-globals? + { + compare *cursor-in-globals?, 0/false + break-if-!= + render-sandbox-menu screen, sandbox + return + } + render-globals-menu screen, globals } fn edit-environment _self: (addr environment), key: byte, data-disk: (addr disk) { diff --git a/shell/global.mu b/shell/global.mu index e26b1d3c..3eb1df69 100644 --- a/shell/global.mu +++ b/shell/global.mu @@ -181,6 +181,9 @@ fn render-globals screen: (addr screen), _self: (addr global-table) { render-primitives screen, 1/xmin=padding-left, 0x55/xmax, 0x2f/ymax } +fn render-globals-menu screen: (addr screen), _self: (addr global-table) { +} + fn edit-globals _self: (addr global-table), key: byte, data-disk: (addr disk) { } diff --git a/shell/sandbox.mu b/shell/sandbox.mu index 286ce6e8..83be593c 100644 --- a/shell/sandbox.mu +++ b/shell/sandbox.mu @@ -119,12 +119,15 @@ fn render-sandbox screen: (addr screen), _self: (addr sandbox), xmin: int, ymin: } y <- add 2 # padding y <- maybe-render-screen screen, self, xmin, y - # render menu +} + +fn render-sandbox-menu screen: (addr screen), _self: (addr sandbox) { + var self/esi: (addr sandbox) <- copy _self var cursor-in-data?/eax: (addr boolean) <- get self, cursor-in-data? compare *cursor-in-data?, 0/false { break-if-= - render-sandbox-menu screen, self + render-sandbox-edit-menu screen, self return } var cursor-in-trace?/eax: (addr boolean) <- get self, cursor-in-trace? @@ -401,7 +404,7 @@ fn print-screen-cell-of-fake-screen screen: (addr screen), _target: (addr screen draw-grapheme-at-cursor screen, *src-grapheme, *src-color, *src-background-color } -fn render-sandbox-menu screen: (addr screen), _self: (addr sandbox) { +fn render-sandbox-edit-menu screen: (addr screen), _self: (addr sandbox) { var _width/eax: int <- copy 0 var height/ecx: int <- copy 0 _width, height <- screen-size screen @@ -414,7 +417,7 @@ fn render-sandbox-menu screen: (addr screen), _self: (addr sandbox) { set-cursor-position screen, 0/x, y draw-text-rightward-from-cursor screen, " ^r ", width, 0/fg, 0x5c/bg=black draw-text-rightward-from-cursor screen, " run main ", width, 7/fg, 0xc5/bg=blue-bg - $render-sandbox-menu:render-ctrl-m: { + $render-sandbox-edit-menu:render-ctrl-m: { var self/eax: (addr sandbox) <- copy _self var has-trace?/eax: boolean <- has-trace? self compare has-trace?, 0/false @@ -422,7 +425,7 @@ fn render-sandbox-menu screen: (addr screen), _self: (addr sandbox) { break-if-= draw-text-rightward-from-cursor screen, " ^m ", width, 0/fg, 0x38/bg=trace draw-text-rightward-from-cursor screen, " to trace ", width, 7/fg, 0xc5/bg=blue-bg - break $render-sandbox-menu:render-ctrl-m + break $render-sandbox-edit-menu:render-ctrl-m } draw-text-rightward-from-cursor screen, " ^m ", width, 0/fg, 3/bg=keyboard draw-text-rightward-from-cursor screen, " to keyboard ", width, 7/fg, 0xc5/bg=blue-bg |