diff options
Diffstat (limited to 'prototypes/browse/18')
-rw-r--r-- | prototypes/browse/18/README.md | 8 | ||||
-rw-r--r-- | prototypes/browse/18/file-state.mu | 45 | ||||
-rw-r--r-- | prototypes/browse/18/main.mu | 33 |
3 files changed, 0 insertions, 86 deletions
diff --git a/prototypes/browse/18/README.md b/prototypes/browse/18/README.md deleted file mode 100644 index 51f9878a..00000000 --- a/prototypes/browse/18/README.md +++ /dev/null @@ -1,8 +0,0 @@ -Start fleshing out the previous prototype's plans into something working. - -We're back to just plain text without bold formatting. Let's get something -like prototype 3 working with the new architecture. Since Mu still has no -checks we need to move slowly. - -One issue with this architecture: I have separate checks for `next-char == -EOF` and `done-reading? fs`. I'm gonna tolerate that duplication for now. diff --git a/prototypes/browse/18/file-state.mu b/prototypes/browse/18/file-state.mu deleted file mode 100644 index d42bf8bf..00000000 --- a/prototypes/browse/18/file-state.mu +++ /dev/null @@ -1,45 +0,0 @@ -type file-state { - source: (handle buffered-file) - eof?: boolean -} - -fn init-file-state _self: (addr file-state), filename: (addr array byte) { - var self/eax: (addr file-state) <- copy _self - load-file self, filename - var eof/eax: (addr boolean) <- get self, eof? - copy-to *eof, 0 # false -} - -fn load-file _self: (addr file-state), filename: (addr array byte) { - var self/eax: (addr file-state) <- copy _self - var out/esi: (addr handle buffered-file) <- get self, source - open filename, 0, out # 0 = read mode -} - -fn next-char _self: (addr file-state) -> result/eax: byte { - var self/ecx: (addr file-state) <- copy _self - var source/eax: (addr handle buffered-file) <- get self, source - var in/eax: (addr buffered-file) <- lookup *source - result <- read-byte-buffered in - # if result == EOF, set eof? - compare result, 0xffffffff # EOF marker - { - var eof/ecx: (addr boolean) <- get self, eof? - copy-to *eof, 1 # true - } -} - -fn done-reading? _self: (addr file-state) -> result/eax: boolean { - var self/eax: (addr file-state) <- copy _self - var eof/eax: (addr boolean) <- get self, eof? - result <- copy *eof -} - -fn dump in: (addr buffered-file) { - var c/eax: byte <- read-byte-buffered in - compare c, 0xffffffff # EOF marker - break-if-= - var g/eax: grapheme <- copy c - print-grapheme 0, g - loop -} diff --git a/prototypes/browse/18/main.mu b/prototypes/browse/18/main.mu deleted file mode 100644 index f98e9a2b..00000000 --- a/prototypes/browse/18/main.mu +++ /dev/null @@ -1,33 +0,0 @@ -fn main args: (addr array addr array byte) -> exit-status/ebx: int { - # initialize fs from args[1] - var filename/eax: (addr array byte) <- first-arg args - var file-state-storage: file-state - var fs/esi: (addr file-state) <- address file-state-storage - init-file-state fs, filename - render fs - exit-status <- copy 0 -} - -fn render fs: (addr file-state) { - render-normal fs -} - -fn render-normal fs: (addr file-state) { - { - var c/eax: byte <- next-char fs - # if (c == EOF) break - compare c, 0xffffffff # EOF marker - break-if-= - # - var g/eax: grapheme <- copy c - print-grapheme 0, g - # - loop - } -} - -fn first-arg args-on-stack: (addr array addr array byte) -> out/eax: (addr array byte) { - var args/eax: (addr array addr array byte) <- copy args-on-stack - var result/eax: (addr addr array byte) <- index args, 1 - out <- copy *result -} |