mu/shell
Kartik K. Agaram 1354161a36 tmp: debugging why brline prints no pixels
Among other things, we turned off the trace to significantly speed up the
debug cycle.

State as of https://merveilles.town/@akkartik/106079258606146213

Ohhh, as I save the commit I notice a big problem: I've been editing the
disk image directly because writes to the Mu disk lose indentation. But
I've been forgetting that the state in the Mu disk needs to be pre-evaluated.
So function bindings need extra parens for the environment. The `pixel`
calls in the previous commit message are the first statement in the body,
and they aren't actually considered part of the body right now. No wonder
they don't run.

There are lots of other problems, but this will clarify a lot.
2021-04-17 08:34:48 -07:00
..
README.md . 2021-04-16 20:26:56 -07:00
cell.mu shell: streams that you can append graphemes to 2021-04-10 23:05:16 -07:00
evaluate.mu loosening a few more buffers 2021-04-17 08:29:43 -07:00
gap-buffer.mu add some structure to the serialization format 2021-04-15 19:56:16 -07:00
global.mu loosening a few more buffers 2021-04-17 08:29:43 -07:00
grapheme-stack.mu shell: highlight matching paren for cursor 2021-04-09 21:57:40 -07:00
main.mu loosening a few more buffers 2021-04-17 08:29:43 -07:00
parse.mu parse dotted lists 2021-04-15 19:47:01 -07:00
print.mu . 2021-04-17 08:23:55 -07:00
read.mu loosening a few more buffers 2021-04-17 08:29:43 -07:00
sandbox.mu tmp: debugging why brline prints no pixels 2021-04-17 08:34:48 -07:00
tokenize.mu shell: dot token 2021-04-15 08:48:53 -07:00
trace.mu shell: start jumping to keyboard using Tab 2021-04-10 22:14:20 -07:00
vimrc.vim 7842 - new directory organization 2021-03-03 22:21:03 -08:00

README.md

A prototype shell for the Mu computer

Currently runs a tiny subset of Lisp. Steps to run it from the top-level:

  1. Build it:
$ ./translate shell/*.mu      # generates code.img
  1. Run it:
$ qemu-system-i386 code.img

or:

$ bochs -f bochsrc

To save typing in a large s-expression, create a secondary disk for data:

$ dd if=/dev/zero of=data.img count=20160

Load an s-expression into it:

$ echo '(+ 1 1)' |dd of=data.img conv=notrunc

Now run with both code and data disks:

$ qemu-system-i386 -hda code.img -hdb data.img

or:

$ bochs -f bochsrc.2disks

You can type in expressions, hit ctrl-s to see their results, and hit Tab to focus on the ... below and browse how the results were computed. Here's a demo. The bottom of the screen shows context-dependent keyboard shortcuts (there's no mouse in the Mu computer at the moment).

Known issues

  • There's no way to save to disk.

  • Don't press keys too quickly (such as by holding down a key). The Mu computer will crash (and often Qemu will segfault).