about summary refs log tree commit diff stats
path: root/400.mu
Commit message (Collapse)AuthorAgeFilesLines
* shell: separate 'def' from 'set'Kartik K. Agaram2021-04-211-0/+1
| | | | | 'def' creates new bindings (only in globals) 'set' only modifies existing bindings (either in env or globals)
* an interface approximating stack tracesKartik K. Agaram2021-04-201-0/+1
|
* some primitives for monitoring code integrityKartik K. Agaram2021-04-181-0/+4
|
* data.img now has more than one sector of dataKartik K. Agaram2021-04-161-2/+2
|
* explicitly pass data disk to mainKartik K. Agaram2021-03-271-2/+2
|
* mouse support that requires pollingKartik K. Agaram2021-03-231-0/+3
|
* writes to disk now workingKartik K. Agaram2021-03-231-0/+1
| | | | | | Tested by inserting a call into the shell, but we can't leave it in because every test ends up clobbering the disk. So it's now time to think about a testable interface for the disk.
* .Kartik K. Agaram2021-03-221-1/+1
|
* shell: read initial expression from secondary diskKartik K. Agaram2021-03-211-0/+3
| | | | See shell/README.md for (extremely klunky) instructions.
* update vocabulary documentationKartik K. Agaram2021-03-081-3/+3
| | | | Top-level and linux/ now have separate vocabulary.md files.
* 7866Kartik Agaram2021-03-071-3/+3
|
* 7842 - new directory organizationKartik K. Agaram2021-03-031-132/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Baremetal is now the default build target and therefore has its sources at the top-level. Baremetal programs build using the phase-2 Mu toolchain that requires a Linux kernel. This phase-2 codebase which used to be at the top-level is now under the linux/ directory. Finally, the phase-2 toolchain, while self-hosting, has a way to bootstrap from a C implementation, which is now stored in linux/bootstrap. The bootstrap C implementation uses some literate programming tools that are now in linux/bootstrap/tools. So the whole thing has gotten inverted. Each directory should build one artifact and include the main sources (along with standard library). Tools used for building it are relegated to sub-directories, even though those tools are often useful in their own right, and have had lots of interesting programs written using them. A couple of things have gotten dropped in this process: - I had old ways to run on just a Linux kernel, or with a Soso kernel. No more. - I had some old tooling for running a single test at the cursor. I haven't used that lately. Maybe I'll bring it back one day. The reorg isn't done yet. Still to do: - redo documentation everywhere. All the README files, all other markdown, particularly vocabulary.md. - clean up how-to-run comments at the start of programs everywhere - rethink what to do with the html/ directory. Do we even want to keep supporting it? In spite of these shortcomings, all the scripts at the top-level, linux/ and linux/bootstrap are working. The names of the scripts also feel reasonable. This is a good milestone to take stock at.
* 7331 - hacky way to convert slice to stringKartik Agaram2020-12-041-0/+5
|
* 7329 - snapshot: advent day 4 part 2Kartik Agaram2020-12-041-1/+2
| | | | | | | | | | | | I've found two bugs in SubX libraries: 1. next-word had an out-of-bounds read 2. next-word was skipping comments, because that's what I need during bootstrapping. I've created a new variant called next-raw-word that doesn't skip comments. These really need better names. We're now at the point where 4b.mu has the right structure and returns identical result to 4a.mu.
* 7290Kartik Agaram2020-11-271-0/+2
| | | | | | | 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.
* 7239Kartik Agaram2020-11-151-56/+56
|
* 7225Kartik Agaram2020-11-111-0/+2
| | | | | | | 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.
* 7127Kartik Agaram2020-10-271-0/+1
|
* 7115Kartik Agaram2020-10-261-2/+2
|
* 7106 - tile: arrays of intsKartik Agaram2020-10-251-1/+1
|
* 7101 - tile: remove quotes when evaluating stringsKartik Agaram2020-10-251-0/+1
| | | | This found several bugs due to me not checking for null strings.
* 7100 - tile: render string literalsKartik Agaram2020-10-251-0/+2
|
* 6963 - tile: more idiomatic conventional replKartik Agaram2020-10-051-1/+1
|
* 6946 - print floats somewhat intuitively in hexKartik Agaram2020-10-041-0/+3
|
* 6921Kartik Agaram2020-10-011-1/+1
|
* 6860Kartik Agaram2020-09-261-0/+1
| | | | | Snapshot: tile currently segfaulting. I need to back up and make it easier to debug.
* 6821 - highlight words clobbered by the next wordKartik Agaram2020-09-201-2/+2
| | | | Another suggestion from the Future of Software forum.
* 6810 - tile: adaptive column widthsKartik Agaram2020-09-191-0/+1
|
* 6808Kartik Agaram2020-09-191-1/+1
|
* 6807 - tile: render intermediate stack stateKartik Agaram2020-09-191-0/+2
|
* 6800Kartik Agaram2020-09-191-2/+2
|
* 6794 - cleaner interface for keyboardKartik Agaram2020-09-161-1/+1
| | | | | | | So far I've been assuming that read-key only works for ascii, and that I'd need to get more sophisticated both for multi-byte utf-8 and multi-byte terminal escape codes like arrow keys. Rather to my surprise, both work fine. We just need to adjust the types to reflect this fact.
* 6792Kartik Agaram2020-09-161-2/+0
| | | | Roll back all buffering of Stdout.
* 6790 experiment: explicit flushKartik Agaram2020-09-161-0/+2
| | | | | | | | | tile is already visibly slow (49x212 screen) :/ So programmer needs more control over performance. But this may not be the right approach. That extra flush-stdout in tui.mu suggests it's either going to be finicky, or we have to flush on every attribute change. And going through a buffered-file may be slower. May.
* 6781 - new app: RPN (postfix) calculatorKartik Agaram2020-09-151-4/+8
| | | | This was surprisingly hard; bugs discovered all over the place.
* 6778Kartik Agaram2020-09-141-1/+1
|
* 6777Kartik Agaram2020-09-141-0/+2
| | | | Print answers in decimal in apps/arith.mu
* 6769 - support for creating fake files in Mu testsKartik Agaram2020-09-101-1/+3
|
* 6742 - support for formatting in fake screensKartik Agaram2020-09-071-0/+2
| | | | | We still need a few primitives, but we can implement these as needed. I'm ready to call the fake screen done.
* 6733 - read utf-8 'grapheme' from byte streamKartik Agaram2020-08-281-0/+1
| | | | | | No support for combining characters. Graphemes are currently just utf-8 encodings of a single Unicode code-point. No support for code-points that require more than 32 bits in utf-8.
* 6731Kartik Agaram2020-08-281-2/+2
|
* 6718Kartik Agaram2020-08-161-0/+1
|
* 6703 - new types: code-point and graphemeKartik Agaram2020-08-021-1/+1
| | | | | | | | | | Both have the same size: 4 bytes. So far I've just renamed print-byte to print-grapheme, but it still behaves the same. I'm going to support printing code-points next, but grapheme 'clusters' spanning multiple code-points won't be supported for some time.
* 6699 - start building out fake screenKartik Agaram2020-08-011-16/+16
| | | | | We now have all existing apps and prototypes going through the dependency-injected wrapper, even though it doesn't actually implement the fake screen yet.
* 6687 - stream-empty? and stream-full?Kartik Agaram2020-07-301-0/+3
|
* 6682 - experimental support for streams and slicesKartik Agaram2020-07-281-2/+2
| | | | | | | | | Slices contain `addr`s so the same rules apply to them. They can't be stored in structs and so on. But they may be an efficient temporary while parsing. Streams are currently a second generic type after arrays, and gradually strengthening the case to just bite the bullet and support first-class generics in Mu.
* 6659Kartik Agaram2020-07-181-7/+7
| | | | Tighten up some function signatures.
* 6643Kartik Agaram2020-07-131-9/+9
|
* 6632Kartik Agaram2020-07-111-3/+3
|
* 6630 - define type signatures for SubX functionsKartik Agaram2020-07-101-0/+159
This was easier than I'd feared.