about summary refs log tree commit diff stats
Commit message (Collapse)AuthorAgeFilesLines
* 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.
* 6698Kartik Agaram2020-08-012-2/+2
|
* 6697Kartik Agaram2020-08-013-94/+86
|
* 6696Kartik Agaram2020-07-311-0/+13
|
* 6695Kartik Agaram2020-07-313-11/+13
|
* 6694Kartik Agaram2020-07-312-20/+22
|
* 6693Kartik Agaram2020-07-316-19746/+20046
|
* 6692Kartik Agaram2020-07-311-1/+6
|
* 6691 - start building a fake screenKartik Agaram2020-07-312-6/+98
| | | | There was a bug in defining types containing other user-defined types.
* 6690Kartik Agaram2020-07-301-1/+2
|
* 6689 - some little white lies to GitHubKartik Agaram2020-07-301-1/+5
|
* 6688Kartik Agaram2020-07-301-0/+1
|
* 6687 - stream-empty? and stream-full?Kartik Agaram2020-07-306-3/+154
|
* 6686Kartik Agaram2020-07-302-0/+0
|
* 6685Kartik Agaram2020-07-2913-21171/+21593
|
'#n920'>920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068