This commit is contained in:
Kartik K. Agaram 2021-04-15 20:12:36 -07:00
parent 91e30acbd8
commit 0192e2031f
2 changed files with 9 additions and 5 deletions

View File

@ -66,19 +66,16 @@ fn load-state data-disk: (addr disk), _sandbox: (addr sandbox), globals: (addr g
# ((globals . ((a . (fn ...))
# ...))
# (sandbox . ...))
fn store-state data-disk: (addr disk), _sandbox: (addr sandbox), _globals: (addr global-table) {
fn store-state data-disk: (addr disk), sandbox: (addr sandbox), globals: (addr global-table) {
compare data-disk, 0/no-disk
{
break-if-!=
return
}
var sandbox/eax: (addr sandbox) <- copy _sandbox
var data-ah/eax: (addr handle gap-buffer) <- get sandbox, data
var data/eax: (addr gap-buffer) <- lookup *data-ah
var stream-storage: (stream byte 0x200)
var stream/edi: (addr stream byte) <- address stream-storage
write stream, "((sandbox . "
append-gap-buffer data, stream
write-sandbox stream, sandbox
write stream, "))"
store-sector data-disk, 0/lba, stream
}

View File

@ -53,6 +53,13 @@ fn allocate-sandbox-with _out: (addr handle sandbox), s: (addr array byte) {
initialize-sandbox-with out-addr, s
}
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
append-gap-buffer data, out
}
##
fn render-sandbox screen: (addr screen), _self: (addr sandbox), xmin: int, ymin: int, xmax: int, ymax: int, globals: (addr global-table) {