Commit Graph

6863 Commits

Author SHA1 Message Date
Kartik Agaram 4eedb6803a 6763 2020-09-10 20:14:17 -07:00
Kartik Agaram 3f4aedd8c9 6762 2020-09-10 01:07:14 -07:00
Kartik Agaram 8617fa2ff8 6761 2020-09-08 22:49:52 -07:00
Kartik Agaram 6b36e4dbc7 6760
Fix a couple of subtle bugs.

- the VM was conditionally reading from the instruction stream, so that
  other bugs got masked by decoding errors.
- push-n-bytes was clobbering eax.
2020-09-08 22:48:47 -07:00
Kartik Agaram d9a05dfbb7 6759 - first test for app/browse/ 2020-09-07 23:51:09 -07:00
Kartik Agaram 8c9b8e8f77 6758 2020-09-07 23:43:23 -07:00
Kartik Agaram 571ff107a2 6757 2020-09-07 23:35:18 -07:00
Kartik Agaram 8aa1b8d45e 6756 2020-09-07 23:23:25 -07:00
Kartik Agaram 485228ed72 6755 2020-09-07 23:12:54 -07:00
Kartik Agaram 3579140874 6754 2020-09-07 23:04:23 -07:00
Kartik Agaram bebb90a2ee 6753 2020-09-07 22:57:52 -07:00
Kartik Agaram 664910816c 6752 2020-09-07 22:18:44 -07:00
Kartik Agaram fc42975cf4 6751
More copypasta. I'd be able to remove this duplication if we had first-class
functions, but they involve an accessibility cost.
2020-09-07 22:14:54 -07:00
Kartik Agaram 137cde5bfa 6750 2020-09-07 21:21:31 -07:00
Kartik Agaram dce4efd268 6749 - plumb screen through in a few places 2020-09-07 21:11:46 -07:00
Kartik Agaram 83fc84ee0d 6748 - promote browser prototype an app with tests
Now that we have a fake screen we can start testing it.
2020-09-07 21:10:52 -07:00
Kartik Agaram c38a3de14d 6747 2020-09-07 16:50:29 -07:00
Kartik Agaram 68df24fa77 6746 2020-09-07 16:39:44 -07:00
Kartik Agaram a0430d5807 6745
So copypasta, much wow.
2020-09-07 16:27:25 -07:00
Kartik Agaram 31aa22c188 6744 2020-09-07 16:11:26 -07:00
Kartik Agaram b432689690 6743 2020-09-07 16:02:28 -07:00
Kartik Agaram 5462619d96 6742 - support for formatting in fake screens
We still need a few primitives, but we can implement these as needed. I'm
ready to call the fake screen done.
2020-09-07 14:18:48 -07:00
Kartik Agaram 9f293fef05 6741 - fake screen now scrolls correctly 2020-09-06 22:45:43 -07:00
Kartik Agaram 05b9b2ab9c 6740 2020-09-06 22:06:12 -07:00
Kartik Agaram 454e345e49 6739 2020-09-06 21:55:11 -07:00
Kartik Agaram eaf95be101 6738 2020-09-06 21:39:05 -07:00
Kartik Agaram 742bbf27f7 6737 2020-09-06 21:36:05 -07:00
Kartik Agaram 58a70a38cf 6736 2020-09-02 21:50:12 -07:00
Kartik Agaram 150f2bce23 6735 - print unicode string to fake screen 2020-09-02 21:48:26 -07:00
Kartik Agaram 6c54814131 6734 - first test for text-mode screen primitives 2020-09-02 21:27:41 -07:00
Kartik Agaram cd94852dbc 6733 - read utf-8 'grapheme' from byte stream
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.
2020-08-28 23:24:04 -07:00
Kartik Agaram 392ebcce80 6732 2020-08-28 22:38:08 -07:00
Kartik Agaram d07dfdd40c 6731 2020-08-28 22:34:07 -07:00
Kartik Agaram 34ac52cb43 6730 2020-08-28 22:04:12 -07:00
Kartik Agaram ddea9a73e2 6729 2020-08-28 21:57:06 -07:00
Kartik Agaram 6358afc5c1 6728 - new skeleton for screen primitives
Finally this compiles.
2020-08-22 14:44:01 -07:00
Kartik Agaram 15b9880136 6727 - bugfix in a multiply instruction
Also more error-detection for this case all across the toolchain.
2020-08-22 14:35:44 -07:00
Kartik Agaram db894e7968 6726 2020-08-22 14:25:29 -07:00
Kartik Agaram ef8e98dd06 6725 - support negative literals 2020-08-22 13:59:57 -07:00
Kartik Agaram 0361a76d86 6724 2020-08-22 13:30:48 -07:00
Kartik Agaram 426fcd3ec3 6723 2020-08-22 13:26:08 -07:00
Kartik Agaram 38128ae167 6722 2020-08-22 12:35:39 -07:00
Kartik Agaram db541c3595 6721 2020-08-22 10:15:14 -07:00
Kartik Agaram 66daf3cc1f 6720 2020-08-22 10:14:37 -07:00
Kartik Agaram e8ffaf29ce 6719 - error-checking for 'index' instructions
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.
2020-08-21 21:32:48 -07:00
Kartik Agaram be2a94d9b8 6718 2020-08-16 22:43:03 -07:00
Kartik Agaram 1a1ab91e77 6717 2020-08-15 21:43:52 -07:00
Kartik Agaram 828bc32057 6716 2020-08-15 21:38:36 -07:00
Kartik Agaram 208b28303c 6715
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.
2020-08-03 21:45:41 -07:00
Kartik Agaram 672ea33132 6714 2020-08-02 21:25:28 -07:00