From 5234c224d0c0b31c699857487b025dc051f71d31 Mon Sep 17 00:00:00 2001 From: Kartik Agaram Date: Tue, 22 Sep 2020 22:23:24 -0700 Subject: 6840 Extract "unmoving background" into a separate function. --- apps/tile/environment.mu | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) (limited to 'apps') diff --git a/apps/tile/environment.mu b/apps/tile/environment.mu index cd5721b4..d7a7a92c 100644 --- a/apps/tile/environment.mu +++ b/apps/tile/environment.mu @@ -26,7 +26,7 @@ fn initialize-environment _env: (addr environment) { ncols <- shift-right 1 dest <- get env, code-separator-col copy-to *dest, ncols - draw-vertical-line screen, 1, nrows, ncols + clear-canvas env ncols <- add 2 # repl-margin-left move-cursor screen, 3, ncols # input-row, input-col } @@ -159,19 +159,13 @@ $process:body: { fn render _env: (addr environment) { var env/esi: (addr environment) <- copy _env + clear-canvas env var screen-ah/edi: (addr handle screen) <- get env, screen var _screen/eax: (addr screen) <- lookup *screen-ah var screen/edi: (addr screen) <- copy _screen - # prepare screen - clear-screen screen - var nrows/eax: (addr int) <- get env, nrows var _repl-col/ecx: (addr int) <- get env, code-separator-col var repl-col/ecx: int <- copy *_repl-col - draw-vertical-line screen, 1, *nrows, repl-col repl-col <- add 2 # repl-margin-left - move-cursor screen, 5, repl-col # input-row + stack-margin-top - print-string screen, "stack:" - move-cursor screen, 3, repl-col # input-row, input-col # cursor-word var cursor-word-ah/esi: (addr handle word) <- get env, cursor-word var _cursor-word/eax: (addr word) <- lookup *cursor-word-ah @@ -308,3 +302,18 @@ fn render-integer screen: (addr screen), val: int, justify-threshold: int { fn hash-color val: int -> result/eax: int { result <- try-modulo val, 7 # assumes that 7 is always the background color } + +fn clear-canvas _env: (addr environment) { + var env/esi: (addr environment) <- copy _env + var screen-ah/edi: (addr handle screen) <- get env, screen + var _screen/eax: (addr screen) <- lookup *screen-ah + var screen/edi: (addr screen) <- copy _screen + clear-screen screen + var nrows/eax: (addr int) <- get env, nrows + var _repl-col/ecx: (addr int) <- get env, code-separator-col + var repl-col/ecx: int <- copy *_repl-col + draw-vertical-line screen, 1, *nrows, repl-col + repl-col <- add 2 # repl-margin-left + move-cursor screen, 5, repl-col # input-row + stack-margin-top + print-string screen, "stack:" +} -- cgit 1.4.1-2-gfad0