42 lines
1.1 KiB
Markdown
42 lines
1.1 KiB
Markdown
# Kestrel
|
|
|
|
**Kestrel** is:
|
|
|
|
- an implementation of the [Uxn](https://wiki.xxiivv.com/site/uxn.html) virtual
|
|
machine as a library in OCaml
|
|
- an implementation of the [Varvara](https://wiki.xxiivv.com/site/varvara.html)
|
|
ecosystem using said library, supporting the devices needed for command-line programs.
|
|
|
|
## Building
|
|
|
|
**Kestrel** requires OCaml 5.3 or upper, as it uses the newly introduced
|
|
effects syntax.
|
|
|
|
There are no requirements aside from the OCaml standard library, so it can be
|
|
built simply using `dune`.
|
|
|
|
```shell-session
|
|
$ dune build
|
|
```
|
|
|
|
It then can be run using `dune exec -- kestrel`.
|
|
|
|
```shell-session
|
|
$ dune exec -- kestrel file.rom
|
|
```
|
|
|
|
The `uxnmin` program, which is similar to upstream's in functionality, can be
|
|
built without `dune`:
|
|
|
|
```shell-session
|
|
$ ocamlopt exe/uxnmin.ml -o uxnmin
|
|
```
|
|
|
|
## Bootstrapping
|
|
|
|
Since **Kestrel** supports the needed Varvara devices for running the Drifblim
|
|
assembler, it can be used to bootstrap the ecosystem. Bundled in the repository
|
|
are copies of the Drifloon hex dump, the source code for Drifblim, and `dzoe`'s
|
|
`xh.rom`.
|
|
|
|
A bootstrap script is provided that builds the assembler and some test ROMs.
|