This commit is contained in:
Kartik Agaram 2021-06-15 14:46:27 -07:00
parent bc21fe0baf
commit 88378503c4
1 changed files with 34 additions and 33 deletions

View File

@ -3,54 +3,55 @@
Currently runs a tiny dialect of Lisp. Steps to run it from the top-level: Currently runs a tiny dialect of Lisp. Steps to run it from the top-level:
1. Build it: 1. Build it:
```sh
$ ./translate shell/*.mu # generates code.img
```
You can now already run it: ```sh
```sh $ ./translate shell/*.mu # generates code.img
$ qemu-system-i386 code.img ```
```
But let's add some more 'meat' to play with. You can now already run it:
```sh
$ qemu-system-i386 code.img
```
But let's add some more 'meat' to play with.
2. Create a data disk with a library of functions. 2. Create a data disk with a library of functions.
```sh ```sh
$ dd if=/dev/zero of=data.img count=20160 $ dd if=/dev/zero of=data.img count=20160
$ cat shell/data.limg |dd of=data.img conv=notrunc $ cat shell/data.limg |dd of=data.img conv=notrunc
``` ```
Run with data disk (and 2GB of RAM): Run with data disk (and 2GB of RAM):
```sh ```sh
$ qemu-system-i386 -m 2G -hda code.img -hdb data.img $ qemu-system-i386 -m 2G -hda code.img -hdb data.img
``` ```
Try typing in some expressions and hitting `ctrl-s` to see their results. Try typing in some expressions and hitting `ctrl-s` to see their results.
Hit `ctrl-m` to focus on the `...` after a run, and browse how the results Hit `ctrl-m` to focus on the `...` after a run, and browse how the results
were computed. [Here's a demo.](https://archive.org/details/akkartik-2min-2021-02-24) were computed. [Here's a demo.](https://archive.org/details/akkartik-2min-2021-02-24)
The bottom of the screen shows context-dependent keyboard shortcuts. The bottom of the screen shows context-dependent keyboard shortcuts.
3. If your Qemu installation supports them, one of these commandline arguments 3. If your Qemu installation supports them, one of these commandline arguments
may speed up emulation: may speed up emulation:
- `-enable-kvm` - `-enable-kvm`
- `-accel ___` (run with `-accel help` for a list of available options) - `-accel ___` (run with `-accel help` for a list of available options)
If you do this, I recommend also adjusting the `responsiveness` mask in If you do this, I recommend also adjusting the `responsiveness` mask in
shell/evaluate.mu, which controls how frequently the fake screen updates. shell/evaluate.mu, which controls how frequently the fake screen updates.
Smaller values will seem more responsive, larger values will leave more time Smaller values will seem more responsive, larger values will leave more time
to run your programs. I like to see the screen update about once a second. to run your programs. I like to see the screen update about once a second.
Some suggested values depending on how fast your Qemu is running: Some suggested values depending on how fast your Qemu is running:
- `-enable-kvm` on a T420s running Linux: `0xffff/responsiveness=64k` - `-enable-kvm` on a T420s running Linux: `0xffff/responsiveness=64k`
- `-accel tcg` on a 2019 Mac: `0xfff/responsiveness=4k` - `-accel tcg` on a 2019 Mac: `0xfff/responsiveness=4k`
Putting it all together, here's the command I typically use on Linux: Putting it all together, here's the command I typically use on Linux:
``` ```
$ qemu-system-i386 -m 2G -enable-kvm -hda code.img -hdb data.img $ qemu-system-i386 -m 2G -enable-kvm -hda code.img -hdb data.img
``` ```
*Known issues* *Known issues*