diff options
-rw-r--r-- | shell/global.mu | 2 | ||||
-rw-r--r-- | shell/main.mu | 12 | ||||
-rw-r--r-- | shell/sandbox.mu | 8 |
3 files changed, 17 insertions, 5 deletions
diff --git a/shell/global.mu b/shell/global.mu index c8e849e2..3410654d 100644 --- a/shell/global.mu +++ b/shell/global.mu @@ -45,7 +45,7 @@ fn initialize-globals _self: (addr global-table) { } fn write-globals out: (addr stream byte), _self: (addr global-table) { - write out, "()\n" + write out, " (globals . ())\n" } fn render-globals screen: (addr screen), _self: (addr global-table), xmin: int, ymin: int, xmax: int, ymax: int { diff --git a/shell/main.mu b/shell/main.mu index 5d5dc987..a13e6b83 100644 --- a/shell/main.mu +++ b/shell/main.mu @@ -56,6 +56,12 @@ fn load-state data-disk: (addr disk), _sandbox: (addr sandbox), globals: (addr g var sandbox-cell-storage: (handle cell) var sandbox-cell-ah/edx: (addr handle cell) <- address sandbox-cell-storage lookup-symbol sandbox-literal, sandbox-cell-ah, *initial-root, 0/no-globals, 0/no-trace, 0/no-screen, 0/no-keyboard + var sandbox-cell/eax: (addr cell) <- lookup *sandbox-cell-ah + compare sandbox-cell, 0 + { + break-if-!= + return + } # print: cell -> stream print-cell sandbox-cell-ah, s, 0/no-trace # stream -> gap-buffer @@ -74,11 +80,9 @@ fn store-state data-disk: (addr disk), sandbox: (addr sandbox), globals: (addr g } var stream-storage: (stream byte 0x200) var stream/edi: (addr stream byte) <- address stream-storage - write stream, "((globals . " + write stream, "(\n" write-globals stream, globals - write stream, " )\n" - write stream, " (sandbox . " write-sandbox stream, sandbox - write stream, "))" + write stream, ")\n" store-sector data-disk, 0/lba, stream } diff --git a/shell/sandbox.mu b/shell/sandbox.mu index 69cb511b..a2fe3758 100644 --- a/shell/sandbox.mu +++ b/shell/sandbox.mu @@ -57,7 +57,15 @@ fn write-sandbox out: (addr stream byte), _self: (addr sandbox) { var self/eax: (addr sandbox) <- copy _self var data-ah/eax: (addr handle gap-buffer) <- get self, data var data/eax: (addr gap-buffer) <- lookup *data-ah + { + var len/eax: int <- gap-buffer-length data + compare len, 0 + break-if-!= + return + } + write out, " (sandbox . " append-gap-buffer data, out + write out, ")\n" } ## |