about summary refs log tree commit diff stats
path: root/shell
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2021-07-28 23:54:32 -0700
committerKartik K. Agaram <vc@akkartik.com>2021-07-28 23:58:46 -0700
commitfc951149a005ee13eef70182b375be204bea27d1 (patch)
tree35868a5c774479a8bfdc783becaa515e29d403f1 /shell
parente2f18e8866bd75669c04bff52c3f8e96d13eeb4e (diff)
downloadmu-fc951149a005ee13eef70182b375be204bea27d1.tar.gz
shell: support loading 128x128px images
I'm loading them in uncompressed ASCII format, and all streams and gap
buffers all over the place need to get massively scaled up to 256KB
capacity. But the tests don't yet run out of RAM, so I'll keep going.
Diffstat (limited to 'shell')
-rw-r--r--shell/environment.mu8
-rw-r--r--shell/global.mu2
-rw-r--r--shell/parse.mu2
-rw-r--r--shell/read.mu4
-rw-r--r--shell/sandbox.mu2
-rw-r--r--shell/tokenize.mu2
6 files changed, 10 insertions, 10 deletions
diff --git a/shell/environment.mu b/shell/environment.mu
index 0816f41b..c3d78d86 100644
--- a/shell/environment.mu
+++ b/shell/environment.mu
@@ -950,11 +950,11 @@ fn word-at-cursor _self: (addr environment), out: (addr stream byte) {
 fn load-state _self: (addr environment), data-disk: (addr disk) {
   var self/esi: (addr environment) <- copy _self
   # data-disk -> stream
-  var s-storage: (stream byte 0x2000)  # space for 16/sectors
+  var s-storage: (stream byte 0x40000)  # space for 0x200/sectors
   var s/ebx: (addr stream byte) <- address s-storage
   draw-text-wrapping-right-then-down-from-cursor-over-full-screen 0/screen, "loading sectors from data disk", 3/fg, 0/bg
   move-cursor-to-left-margin-of-next-line 0/screen
-  load-sectors data-disk, 0/lba, 0x10/sectors, s
+  load-sectors data-disk, 0/lba, 0x200/sectors, s
 #?   draw-stream-wrapping-right-then-down-from-cursor-over-full-screen 0/screen, s, 7/fg, 0xc5/bg=blue-bg
   # stream -> gap-buffer (HACK: we temporarily cannibalize the sandbox's gap-buffer)
   draw-text-wrapping-right-then-down-from-cursor-over-full-screen 0/screen, "parsing", 3/fg, 0/bg
@@ -1034,11 +1034,11 @@ fn store-state data-disk: (addr disk), sandbox: (addr sandbox), globals: (addr g
     break-if-!=
     return
   }
-  var stream-storage: (stream byte 0x2000)  # space enough for 16/sectors
+  var stream-storage: (stream byte 0x40000)  # space enough for 0x200/sectors
   var stream/edi: (addr stream byte) <- address stream-storage
   write stream, "(\n"
   write-globals stream, globals
   write-sandbox stream, sandbox
   write stream, ")\n"
-  store-sectors data-disk, 0/lba, 0x10/sectors, stream
+  store-sectors data-disk, 0/lba, 0x200/sectors, stream
 }
diff --git a/shell/global.mu b/shell/global.mu
index cd5a4244..7cf06d6d 100644
--- a/shell/global.mu
+++ b/shell/global.mu
@@ -57,7 +57,7 @@ fn load-globals in: (addr handle cell), self: (addr global-table) {
     var value-gap-buffer-ah/edi: (addr handle gap-buffer) <- address value-gap-buffer-storage
     allocate value-gap-buffer-ah
     var value-gap-buffer/eax: (addr gap-buffer) <- lookup *value-gap-buffer-ah
-    initialize-gap-buffer value-gap-buffer, 0x1000/4KB
+    initialize-gap-buffer value-gap-buffer, 0x40000/256KB
     load-gap-buffer-from-stream value-gap-buffer, value-data
     load-lexical-scope value-gap-buffer-ah, self
     loop
diff --git a/shell/parse.mu b/shell/parse.mu
index d888f56b..3bdc72b6 100644
--- a/shell/parse.mu
+++ b/shell/parse.mu
@@ -267,7 +267,7 @@ fn parse-atom _curr-token: (addr token), _out: (addr handle cell), trace: (addr
       compare should-trace?, 0/false
     }
     break-if-=
-    var stream-storage: (stream byte 0x400)
+    var stream-storage: (stream byte 0x40000)
     var stream/ecx: (addr stream byte) <- address stream-storage
     write stream, "=> symbol "
     var nested-trace-storage: trace
diff --git a/shell/read.mu b/shell/read.mu
index 1066d215..4e66fd7b 100644
--- a/shell/read.mu
+++ b/shell/read.mu
@@ -1,6 +1,6 @@
 fn read-cell in: (addr gap-buffer), out: (addr handle cell), trace: (addr trace) {
   # eagerly tokenize everything so that the phases are easier to see in the trace
-  var tokens-storage: (stream token 0x400)
+  var tokens-storage: (stream token 0x10000)
   var tokens/edx: (addr stream token) <- address tokens-storage
   tokenize in, tokens, trace
   var error?/eax: boolean <- has-errors? trace
@@ -10,7 +10,7 @@ fn read-cell in: (addr gap-buffer), out: (addr handle cell), trace: (addr trace)
     return
   }
   # insert more parens based on indentation
-  var parenthesized-tokens-storage: (stream token 0x400)
+  var parenthesized-tokens-storage: (stream token 0x10000)
   var parenthesized-tokens/ecx: (addr stream token) <- address parenthesized-tokens-storage
   parenthesize tokens, parenthesized-tokens, trace
   var error?/eax: boolean <- has-errors? trace
diff --git a/shell/sandbox.mu b/shell/sandbox.mu
index eb18990c..47086a1f 100644
--- a/shell/sandbox.mu
+++ b/shell/sandbox.mu
@@ -14,7 +14,7 @@ fn initialize-sandbox _self: (addr sandbox), fake-screen-width: int, fake-screen
   var data-ah/eax: (addr handle gap-buffer) <- get self, data
   allocate data-ah
   var data/eax: (addr gap-buffer) <- lookup *data-ah
-  initialize-gap-buffer data, 0x2000/default-gap-buffer-size=8KB
+  initialize-gap-buffer data, 0x40000/default-gap-buffer-size=256KB
   #
   var value-ah/eax: (addr handle stream byte) <- get self, value
   populate-stream value-ah, 0x1000/4KB
diff --git a/shell/tokenize.mu b/shell/tokenize.mu
index 2ba391a9..fba26b74 100644
--- a/shell/tokenize.mu
+++ b/shell/tokenize.mu
@@ -724,7 +724,7 @@ fn next-balanced-stream-token in: (addr gap-buffer), _out: (addr token), trace:
   var bracket-count: int
   # stream tokens contain whole function definitions on boot, so we always
   # give them plenty of space
-  populate-stream out-data-ah, 0x400/max-definition-size=1KB
+  populate-stream out-data-ah, 0x40000/max-definition-size=256KB
   var _out-data/eax: (addr stream byte) <- lookup *out-data-ah
   var out-data/edi: (addr stream byte) <- copy _out-data
   $next-balanced-stream-token:loop: {