about summary refs log tree commit diff stats
Commit message (Collapse)AuthorAgeFilesLines
* 6748 - promote browser prototype an app with testsKartik Agaram2020-09-075-183/+498
| | | | Now that we have a fake screen we can start testing it.
* 6747Kartik Agaram2020-09-071-3/+3
|
* 6746Kartik Agaram2020-09-0738-15685/+16856
|
* 6745Kartik Agaram2020-09-071-8/+300
| | | | So copypasta, much wow.
* 6744Kartik Agaram2020-09-071-10/+83
|
* 6743Kartik Agaram2020-09-071-4/+6
|
* 6742 - support for formatting in fake screensKartik Agaram2020-09-078-10/+240
| | | | | We still need a few primitives, but we can implement these as needed. I'm ready to call the fake screen done.
* 6741 - fake screen now scrolls correctlyKartik Agaram2020-09-061-10/+73
|
* 6740Kartik Agaram2020-09-061-0/+19
|
* 6739Kartik Agaram2020-09-061-9/+3
|
* 6738Kartik Agaram2020-09-061-5/+17
|
* 6737Kartik Agaram2020-09-062-10/+133
|
* 6736Kartik Agaram2020-09-021-13/+13
|
* 6735 - print unicode string to fake screenKartik Agaram2020-09-021-0/+29
|
* 6734 - first test for text-mode screen primitivesKartik Agaram2020-09-021-4/+37
|
* 6733 - read utf-8 'grapheme' from byte streamKartik Agaram2020-08-2816-1/+189
| | | | | | 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.
* 6732Kartik Agaram2020-08-281-2/+2
|
* 6731Kartik Agaram2020-08-282-3/+3
|
* 6730Kartik Agaram2020-08-281-2/+2
|
* 6729Kartik Agaram2020-08-281-19/+25
|
* 6728 - new skeleton for screen primitivesKartik Agaram2020-08-221-1/+132
| | | | Finally this compiles.
* 6727 - bugfix in a multiply instructionKartik Agaram2020-08-225-6/+10
| | | | Also more error-detection for this case all across the toolchain.
* 6726Kartik Agaram2020-08-222-2/+2
|
* 6725 - support negative literalsKartik Agaram2020-08-222-9/+27
|
* 6724Kartik Agaram2020-08-2212-18009/+19237
|
* 6723Kartik Agaram2020-08-221-3/+4
|
* 6722Kartik Agaram2020-08-222-24/+123
|
* 6721Kartik Agaram2020-08-221-1/+2
|
* 6720Kartik Agaram2020-08-2239-106/+106
|
* 6719 - error-checking for 'index' instructionsKartik Agaram2020-08-2113-5/+1219
| | | | | | | | 1000+ LoC spent; just 300+ excluding tests. Still one known gap; we don't check the entirety of an array's element type if it's a compound. So far we just check if say both sides start with 'addr'. Obviously that's not good enough.
* 6718Kartik Agaram2020-08-163-0/+14
|
* 6717Kartik Agaram2020-08-152-0/+82
|
* 6716Kartik Agaram2020-08-1512-21538/+22310
|
* 6715Kartik Agaram2020-08-032-0/+7
| | | | | | | | | | | | | | | | | | | | | | | There's a question of how we should match array types with a capacity on ones without. For now we're going to do the simplest possible thing and just make type-match? more robust. It'll always return false if the types don't match exactly. For ignoring capacity we'll rely on the checks of the `address` operation (which don't exist yet). This means we should do this to pass an address to an array to a function f with signature `f (addr array int)`: var a: (array int 3) var b/eax: (addr array int) <- address a f b rather than this: var a: (array int 3) var b/eax: (addr array int 3) <- address a f b Similar reasoning applies to stream types. Arrays and streams are currently the only types that can have an optional capacity.
* 6714Kartik Agaram2020-08-021-0/+3
|
* 6713 - move-cursor on fake screenKartik Agaram2020-08-021-0/+9
|
* 6712 - new prototype with cleaner box shapesKartik Agaram2020-08-021-0/+437
|
* 6711Kartik Agaram2020-08-021-21/+0
|
* 6710 - utf-8 encodingKartik Agaram2020-08-021-54/+34
| | | | | | | | | | | | | | | | Example program: fn main -> r/ebx: int { var x/eax: code-point <- copy 0x2192 # unicode character 'rightwards arrow' print-code-point 0, x print-string 0, "\n" r <- copy 0 } Run: $ ./translate_mu x.mu && ./a.elf → $
* snapshot: encoding code-points to utf-8Kartik Agaram2020-08-022-0/+183
| | | | | I have it partly working, but just realized I've been reversing the output bytes.
* 6708Kartik Agaram2020-08-022-0/+0
|
* 6707Kartik Agaram2020-08-021-3/+32
|
* 6706 - support utf-8Kartik Agaram2020-08-023-2/+48
| | | | | | | | | | | | | | For example: fn main -> r/ebx: int { var x/eax: grapheme <- copy 0x9286e2 # code point 0x2192 in utf-8 print-grapheme-to-real-screen x print-string-to-real-screen "\n" } Graphemes must fit in 4 bytes (21 bits for code points). Unclear what we should do for longer clusters since graphemes are a fixed-size type at the moment.
* 6705Kartik Agaram2020-08-021-1/+1
| | | | Another stupid bug: I've been printing out 3 nulls for every byte of ascii.
* 6704Kartik Agaram2020-08-022-28/+28
| | | | | This is stupid; all this while I've been writing escape sequences to the screen they've been going out on stderr.
* 6703 - new types: code-point and graphemeKartik Agaram2020-08-0251-75/+144
| | | | | | | | | | 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.
* 6702Kartik Agaram2020-08-022-3/+18
|
* 6701Kartik Agaram2020-08-022-2/+4
|
* 6700 - clear fake screenKartik Agaram2020-08-011-0/+24
| | | | | | One thing I hadn't realized in all my hacking on the mu1 prototype: clear-screen doesn't modify active attributes. It's equivalent to printing spaces all over the screen with the current attributes.
* 6699 - start building out fake screenKartik Agaram2020-08-0166-442/+705
| | | | | 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.