diff options
Diffstat (limited to 'prototypes/browse/7.mu')
-rw-r--r-- | prototypes/browse/7.mu | 101 |
1 files changed, 0 insertions, 101 deletions
diff --git a/prototypes/browse/7.mu b/prototypes/browse/7.mu deleted file mode 100644 index f306e9b5..00000000 --- a/prototypes/browse/7.mu +++ /dev/null @@ -1,101 +0,0 @@ -fn main args: (addr array addr array byte) -> exit-status/ebx: int { - var filename/eax: (addr array byte) <- first-arg args - var file/esi: (addr buffered-file) <- load-file filename - enable-screen-grid-mode - var nrows/eax: int <- copy 0 - var ncols/ecx: int <- copy 0 - nrows, ncols <- screen-size 0 - enable-keyboard-immediate-mode - { - render file, nrows, ncols - var key/eax: grapheme <- read-key-from-real-keyboard - compare key, 0x71 # 'q' - loop-if-!= - } - enable-keyboard-type-mode - enable-screen-type-mode - exit-status <- copy 0 -} - -# decide how to lay out pages on screen -fn render in: (addr buffered-file), nrows: int, ncols: int { - # hardcoded parameter: page-width - var toprow/eax: int <- copy 2 - var botrow/ecx: int <- copy toprow - botrow <- add 0x20 - var leftcol/edx: int <- copy 5 - var rightcol/ebx: int <- copy leftcol - rightcol <- add 0x30 - render-page in, toprow, leftcol, botrow, rightcol -} - -fn render-page in: (addr buffered-file), toprow: int, leftcol: int, botrow: int, rightcol: int { - clear toprow, leftcol, botrow, rightcol - var row/ecx: int <- copy toprow -$line-loop: { - compare row, botrow - break-if->= - var col/edx: int <- copy leftcol - move-cursor 0, row, col - { - compare col, rightcol - break-if->= - var c/eax: byte <- read-byte-buffered in - compare c, 0xffffffff # EOF marker - break-if-= $line-loop - compare c, 0xa # newline - break-if-= # no need to print newlines - # print c - var g/eax: grapheme <- copy c - print-grapheme 0, g - col <- increment - loop - } # $char-loop - row <- increment - loop - } # $line-loop -} - -fn clear toprow: int, leftcol: int, botrow: int, rightcol: int { - var row/ecx: int <- copy toprow - { - compare row, botrow - break-if->= - var col/edx: int <- copy leftcol - move-cursor 0, row, col - { - compare col, rightcol - break-if->= - print-string 0, " " - col <- increment - loop - } - row <- increment - 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 -} - -fn load-file filename: (addr array byte) -> out/esi: (addr buffered-file) { - var result: (handle buffered-file) - { - var tmp1/eax: (addr handle buffered-file) <- address result - open filename, 0, tmp1 - } - var tmp2/eax: (addr buffered-file) <- lookup result - out <- copy tmp2 -} - -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 -} |