diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2021-04-10 20:09:18 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2021-04-10 20:09:18 -0700 |
commit | 6fa86619b286cae8a1a990ce5ac845d2b80428ca (patch) | |
tree | 1dd3d23b69154715341d9ff3d367f9b1cb4d24a1 /shell/global.mu | |
parent | 17f77da27d807ca4489a92a23506c88fb60bd89e (diff) | |
download | mu-6fa86619b286cae8a1a990ce5ac845d2b80428ca.tar.gz |
shell: tweaks for fake screens
- make them more discoverable - clear them between commands
Diffstat (limited to 'shell/global.mu')
-rw-r--r-- | shell/global.mu | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/shell/global.mu b/shell/global.mu index 0e7038e9..a3ec33a0 100644 --- a/shell/global.mu +++ b/shell/global.mu @@ -668,3 +668,31 @@ fn apply-print _args-ah: (addr handle cell), out: (addr handle cell), env-h: (ha # return what was printed copy-object second-ah, out } + +fn clear-screen-var _globals: (addr global-table) { + var globals/esi: (addr global-table) <- copy _globals + var screen-literal-storage: (stream byte 8) + var screen-literal/eax: (addr stream byte) <- address screen-literal-storage + write screen-literal, "screen" + var screen-index/ecx: int <- find-symbol-in-globals globals, screen-literal + compare screen-index, -1/not-found + { + break-if-!= + return + } + var global-data-ah/eax: (addr handle array global) <- get globals, data + var global-data/eax: (addr array global) <- lookup *global-data-ah + var screen-offset/ecx: (offset global) <- compute-offset global-data, screen-index + var screen-global/eax: (addr global) <- index global-data, screen-offset + var screen-cell-ah/eax: (addr handle cell) <- get screen-global, value + var screen-cell/eax: (addr cell) <- lookup *screen-cell-ah + var screen-cell-type/ecx: (addr int) <- get screen-cell, type + compare *screen-cell-type, 5/screen + { + break-if-= + return + } + var screen-ah/eax: (addr handle screen) <- get screen-cell, screen-data + var screen/eax: (addr screen) <- lookup *screen-ah + clear-screen screen +} |