diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2021-04-05 23:52:13 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2021-04-05 23:55:13 -0700 |
commit | 0db683ffdbf09ef6830857c6bedc887d654de78f (patch) | |
tree | b5aa9c3143057230bee405c3d1b314d52dbdcc6e /shell/main.mu | |
parent | 9142cd8519e11564c097ec4ccb5933a94ed6fea0 (diff) | |
download | mu-0db683ffdbf09ef6830857c6bedc887d654de78f.tar.gz |
shell: extensible array of globals
I'm not bothering with full dynamic scope for now.
Diffstat (limited to 'shell/main.mu')
-rw-r--r-- | shell/main.mu | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/shell/main.mu b/shell/main.mu index 62298a18..29c815dc 100644 --- a/shell/main.mu +++ b/shell/main.mu @@ -2,6 +2,9 @@ # A Lisp with indent-sensitivity and infix, no macros. fn main screen: (addr screen), keyboard: (addr keyboard), data-disk: (addr disk) { + var globals-storage: global-table + var globals/edi: (addr global-table) <- address globals-storage + initialize-globals globals var sandbox-storage: sandbox var sandbox/esi: (addr sandbox) <- address sandbox-storage initialize-sandbox sandbox @@ -16,7 +19,7 @@ fn main screen: (addr screen), keyboard: (addr keyboard), data-disk: (addr disk) compare key, 0 loop-if-= # no way to quit right now; just reboot - edit-sandbox sandbox, key, screen, keyboard, data-disk + edit-sandbox sandbox, key, globals, screen, keyboard, data-disk } loop } @@ -36,7 +39,7 @@ fn load-sandbox data-disk: (addr disk), _self: (addr sandbox) { var key/eax: byte <- read-byte s compare key, 0/null break-if-= - edit-sandbox self, key, 0/no-screen, 0/no-keyboard, 0/no-disk + edit-sandbox self, key, 0/no-globals, 0/no-screen, 0/no-keyboard, 0/no-disk loop } } |