Commit Graph

21 Commits

Author SHA1 Message Date
Kartik K. Agaram 295e50f025 shell: reliable image rendering 2021-07-29 07:55:28 -07:00
Kartik K. Agaram 267c74b59a shell: render image from pbm data stream 2021-07-27 22:38:26 -07:00
Kartik K. Agaram 17e50d27d4 shell: array type 2021-07-25 16:24:45 -07:00
Kartik K. Agaram 4b5a6f6c30 . 2021-07-19 20:05:00 -07:00
Kartik K. Agaram 70919b45f0 .
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.
2021-06-12 15:16:50 -07:00
Kartik K. Agaram ba5f556543 . 2021-05-04 20:20:03 -07:00
Kartik K. Agaram a71ff2383a . 2021-04-28 09:45:39 -07:00
Kartik K. Agaram f5ece0451b start cleaning up pixel graphics
Filling pixels isn't a rare corner case. I'm going to switch to a dense
rather than sparse representation for pixels, but callers will have to
explicitly request the additional memory.
2021-04-19 10:47:30 -07:00
Kartik K. Agaram 97df52bf2f shell: ctrl-r runs on real screen without a trace
We run out of memory fairly early in the course of drawing a chessboard
on the whole screen.
2021-04-17 23:52:52 -07:00
Kartik K. Agaram c11ea74442 . 2021-04-17 22:53:45 -07:00
Kartik K. Agaram b0096cd6a6 shell: streams that you can append graphemes to 2021-04-10 23:05:16 -07:00
Kartik K. Agaram 1afc02113a shell: fake keyboard 2021-04-10 22:28:24 -07:00
Kartik K. Agaram 770cac9412 shell: UI now showing fake keyboard
But we don't actually support fake keyboards anywhere yet.
2021-04-10 21:20:46 -07:00
Kartik K. Agaram a509279aea shell: start on support for fake keyboard 2021-04-10 20:49:20 -07:00
Kartik K. Agaram 400574f956 shell: move fake screen to sandbox 2021-04-10 20:44:26 -07:00
Kartik K. Agaram 17f77da27d shell: fake screens
I just realized Mu has a pretty big weakness: writes to null pointers don't
error out. Perhaps writes to address 0 do, but address 1 and so on don't?

I need a slightly more sophisticated page table.
2021-04-10 18:32:27 -07:00
Kartik K. Agaram 97cffa20d4 shell: start of 'print' primitive 2021-04-10 15:59:40 -07:00
Kartik K. Agaram 1d724f9260 shell: structural equality check
Mu can now compute (factorial 5)
2021-04-09 22:51:24 -07:00
Kartik K. Agaram 5b50feaeee 7862 - shell: more informative traces for eval
Also a bugfix in dealing with streams in cells that is becoming part of
a pattern.
2021-03-07 10:55:11 -08:00
Kartik K. Agaram e4fc67ee44 7856 - shell: primitive functions 2021-03-05 09:30:15 -08:00
Kartik K. Agaram 71e4f38129 7842 - new directory organization
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.
2021-03-03 22:21:03 -08:00