about summary refs log tree commit diff stats
Commit message (Collapse)AuthorAgeFilesLines
* start implementing indent-sensitivityKartik K. Agaram2021-06-181-2/+26
| | | | | | | General plan: stop skipping newlines during tokenization introduce a new indent token, initially skip it transparently start doing cleverer things
* .Kartik K. Agaram2021-06-181-6/+2
|
* .Kartik K. Agaram2021-06-181-8/+6
|
* make code in Readme easier to copyKartik K. Agaram2021-06-182-14/+14
| | | | Thanks Sumeet Agarwal for the suggestion.
* fix emulated buildKartik K. Agaram2021-06-181-2/+2
| | | | | | | | Embarrassingly broken since May 15 (commit ff8ec9bcff). Thanks Jack Rusher for reporting this. (fixes #48)
* shell: stop punning tokens as cellsKartik K. Agaram2021-06-183-89/+116
|
* Merge pull request #47 from akkartik/fix-precisionKartik Agaram2021-06-172-2/+5
|\ | | | | Fix precision
| * create .gitignoreSumeet Agarwal2021-06-171-0/+3
| |
| * change precision when loading sandbox codeSumeet Agarwal2021-06-171-2/+2
|/
* .Kartik Agaram2021-06-1556-44831/+46598
|
* .Kartik K. Agaram2021-06-151-0/+150
|
* .Kartik K. Agaram2021-06-152-1/+3
|
* .Kartik Agaram2021-06-153-73/+103
|
* .Kartik Agaram2021-06-152-0/+32
|
* .Kartik Agaram2021-06-151-0/+85
|
* .Kartik K. Agaram2021-06-151-1/+3
| | | | | Support newlines. Looks like we pasted the input from the browser window during the pairing session.
* example program by Sumeet AgarwalKartik K. Agaram2021-06-151-0/+48
| | | | | https://adventofcode.com/2017/day/1 https://archive.org/details/2021-06-02-akkartik-sumeet
* shell: better screenshotKartik Agaram2021-06-154-2/+2
|
* always print black pixels when rendering screensKartik K. Agaram2021-06-151-2/+0
| | | | This is an old 'optimization' that turns out to not actually matter.
* .Kartik Agaram2021-06-151-0/+7
|
* shell: improve docsKartik Agaram2021-06-152-5/+14
|
* .Kartik Agaram2021-06-151-33/+34
|
* document responsiveness trade-offKartik K. Agaram2021-06-152-35/+28
|
* do more work per fake-screen refreshKartik K. Agaram2021-06-151-1/+1
| | | | | | Refreshing the fake screen is still a heavyweight operation. Double-buffering makes it less obvious but doesn't actually reduce the amount of work. We need to ensure that we do enough work between refreshes to make them economic.
* more precisely track count of calls to evalKartik K. Agaram2021-06-152-20/+13
| | | | | Before I only separately counted calls at each stack depth. I don't remember if that seemed good enough or was just an oversight.
* flickerlessly render fake screens in environmentKartik K. Agaram2021-06-155-35/+100
| | | | | | | | Font rendering now happens off the real screen, which provides the effect of double-buffering. Apps can now also use convert-graphemes-to-pixels for more traditional double-buffering.
* .Kartik K. Agaram2021-06-151-3/+4
|
* periodic run of misc_checksKartik K. Agaram2021-06-123-4/+5
| | | | | I should really stop using /disp8 jumps at the top-level given how inconvenient it is to check for overly large offsets.
* helper to render fonts outside video RAM, take 2Kartik K. Agaram2021-06-122-28/+56
|
* fix a bounds checkKartik K. Agaram2021-06-121-4/+5
| | | | This should have gotten cleaned up during commit e0f6dd5240 (Mar 23).
* roll back previous commitKartik K. Agaram2021-06-122-48/+22
| | | | | These helpers don't actually help render to buffers with geometries different from video RAM.
* extract a helper to render fonts outside video RAMKartik K. Agaram2021-06-122-22/+48
|
* .Kartik K. Agaram2021-06-129-208/+140
| | | | | Roll back to commit 70919b45f0. Recent commits add lots of extra function args for dubious benefit.
* snapshotKartik K. Agaram2021-06-123-14/+71
| | | | Looks like what's slowing down screen rendering is in fact _font_ rendering.
* .Kartik K. Agaram2021-06-121-16/+14
|
* trying to eliminate flicker when rendering screenKartik K. Agaram2021-06-121-13/+26
| | | | | | | | | | | | | | | | | | | Two interesting things: - We don't really need double-buffering for rendering the screen on the sandbox as a progress indicator. Everything else is untouched, and render-screen should be doing that as well. - Rendering just pixels of the fake screen is buttery smooth. It's the _graphemes_ that are slowing things down. Even though there's so many fewer of them! As a result, drawing the fake screen less frequently in `evaluate` doesn't actually help with flicker. Even though it'll make the debug cycle shorter. So my current plan is to attack flicker in isolation before I mess with the render frequency. In this commit I optimized away the cursor handling. Still doesn't seem to be helping. In fact it actually seems _worse_.
* eliminate some implicit writes to real screenKartik K. Agaram2021-06-127-120/+120
|
* .Kartik K. Agaram2021-06-125-66/+69
| | | | | | Rename cells containing screens to screen vars because of the ambiguity that each grapheme in fake screens is represented by a type screen-cell. While we're at it, we also analogously rename keyboard vars.
* shell: larger fake screenKartik K. Agaram2021-06-124-37/+41
|
* .Kartik Agaram2021-06-111-3/+3
|
* .Kartik K. Agaram2021-06-111-42/+1
|
* try to abolish NULL from primitivesKartik K. Agaram2021-06-111-77/+504
|
* car/cdr of nil is now nilKartik K. Agaram2021-06-111-2/+18
|
* hacky bugfix: support floats in nthKartik K. Agaram2021-06-111-1/+1
| | | | | | | | | | | | | | | Needed because we don't yet have a primitive in the shell to truncate/round non-integers to integers. Before: (nth (/ 31 10) # we don't have float literals yet '(1 2 3 4)) => NULL ..with an unpleasant abort likely later on. Really the correct thing to do is ensure none of my primitives ever returns NULL. Start with car/cdr.
* better nameKartik K. Agaram2021-06-111-2/+3
|
* cancel pending testKartik K. Agaram2021-06-111-64/+0
| | | | | | | | | | | After all that, I'm not sure this is the desired behavior. If a function defines multiple bindings, we shouldn't rename all their keys. So how to choose? Perhaps it's not so bad to have "symlinks" in this "file system". To unlink two bindings you now need to define one of them in the sandbox. All the refactoring is still useful, though.
* back to the pending testKartik K. Agaram2021-06-111-60/+4
| | | | I'm ready again to take on commit 6169ec59c after lots of refactoring.
* .Kartik K. Agaram2021-06-111-3/+25
| | | | | | | | Save a single trace to potentially multiple globals just like a gap buffer (if say we have a single let binding defining multiple functions). I don't have a strong use for this yet, but it seems cleaner. Maybe it's redundant or wrong.
* .Kartik K. Agaram2021-06-111-1/+0
|
* .Kartik K. Agaram2021-06-111-29/+9
|