about summary refs log tree commit diff stats
path: root/apps/tile/value.mu
Commit message (Collapse)AuthorAgeFilesLines
* 7352Kartik Agaram2020-12-141-5/+5
|
* 7297 - tile: use floats everywhereKartik Agaram2020-11-291-11/+13
|
* 7290Kartik Agaram2020-11-271-2/+4
| | | | | | | I've wrestled for a long time with how to support integer division with its hard-coded registers. The answer's always been staring me in the face: just turn it into a function! We already expect function outputs to go to hard-coded registers.
* 7269Kartik Agaram2020-11-211-3/+1
|
* 7237Kartik Agaram2020-11-141-2/+0
| | | | | | | Minor tweaks to get Mu shell running nicely on a Linux console atop Qemu. We also need to switch a few 256-color codes to 8-color mode. I'm not sure whether/how to patch the repo for those.
* 7226Kartik Agaram2020-11-111-17/+0
|
* 7225Kartik Agaram2020-11-111-8/+107
| | | | | | | Both manual tests described in commit 7222 now work. To make them work I had to figure out how to copy a file. It requires a dependency on a new syscall: lseek.
* 7222Kartik Agaram2020-11-101-5/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Ok, I found a failing manual test for files as well. Here are the two steelman tests, one for screens and one for files: 1. 5 5 fake-screen =s s 1 down 1 right ctrl-d foo expand final state: s foo foo s 1 down 1 right ⇗ ┌─────┐ ┌─────┐ ┌─────┐ 1 ┌─────┐ 1 ┌─────┐ │ ┌─────┐ │ ┌─────┐ │ ─ │ │ │ │ ─ └─────┘ └─────┘ └─────┘ └─────┘ └─────┘ └─────┘ └─────┘ 2. "x" open =f f read f read ctrl-d read2 expand final state: f read2 read2 f read f read ⇗ FILE ❝def❞ FILE ❝abc❞ FILE ❝❞ ❝def❞ ❝ghi❞ In both cases there are 3 levels of issues: - getting a single-line expression to work - getting a single-line expression to work when operating on a binding defined in a previous line - getting an expanded function call to work The third is where the rub is right now. And what both examples above share is that the function performs 2 mutations to the screen/file. So we need a deep copy after all. And it's not very clear how to copy a file descriptor including the seek location. Linux's dup() syscall creates an alias to the file descriptor. And opening /proc seems awfully Linux-specific: https://stackoverflow.com/questions/54727231/duplicating-file-descriptor-and-seeking-through-both-of-them-independently/54727424#54727424
* 7218Kartik Agaram2020-11-091-1/+4
| | | | | | | | | | | | | | | This bug was incredibly painful to track down: the one-line fix is to replace 'line' with 'first-line' in the call to 'evaluate' in render-line before recursing. Things that made it challenging: - A high degree of coiling with recursive calls and multiple places of evaluation. - An accidental aliasing in bindings (when rendering the main column in render-line) that masked the underlying bug and made things seem to work most of the time. - Too many fucking arguments to render-line, a maze of twisty line objects all alike.
* 7210Kartik Agaram2020-11-071-0/+2
| | | | | Bug fixed; I had to reinitialize the table of bindings. Interesting debugging experience.
* 7202 - rendering screens above other valuesKartik Agaram2020-11-061-0/+24
|
* 7198 - tile: primitive 'print'Kartik Agaram2020-11-061-5/+5
|
* 7197 - tile: render screen contents and cursorKartik Agaram2020-11-061-10/+38
|
* 7196 - tile: render empty screenKartik Agaram2020-11-061-15/+77
|
* 7195 - tile: create 'screen' objectsKartik Agaram2020-11-061-0/+20
|
* 7193 - tile: extract taxonomy of values into a separate fileKartik Agaram2020-11-061-0/+208