aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorNathan Ringo <nathan@remexre.com>2024-10-21 08:28:00 -0500
committerNathan Ringo <nathan@remexre.com>2024-10-21 08:28:00 -0500
commit2465e4ba5926f3137bb10f1d17944a56425332a3 (patch)
treeea3c04a2463df2aa4a069934d4ca4dad1fc2e490 /README.md
parent5c89c77fcf7493778732c12e2b141b5e9fa1f4a3 (diff)
README updates and the start of the E8051 assembler.
Diffstat (limited to 'README.md')
-rw-r--r--README.md14
1 files changed, 13 insertions, 1 deletions
diff --git a/README.md b/README.md
index 3fa4e22..7603fca 100644
--- a/README.md
+++ b/README.md
@@ -23,14 +23,26 @@ Finally, a variety of devices connect to the iCEBreaker over I²C, including sev
The different components are in the following subdirectories:
- `case/` contains the [OpenSCAD] code for the case design.
+- `ch559/` contains the source code to the Forth implementation that runs on the CH559.
- `fpga/` contains the [Bluespec] code that runs on the iCEBreaker.
- `inkplate/` contains the code that runs on the Inkplate.
- `simhost/` contains Rust code that implements simulated peripherals for bluesim.
-- `usbkbd/` contains the C code that runs on the CH559.
[Bluespec]: https://github.com/B-Lang-org/bsc
[OpenSCAD]: https://openscad.org/
+## CH559 Code
+
+The CH559 is a microcontroller based on an enhanced [8051].
+It has two USB ports that can operate in device or host mode, which we will use to access USB keyboards.
+Programming the board is somewhat annoying -- it has [ICSP] support, but entering the programming mode requires unplugging the board's power.
+To circumvent this, and for general ease of development, the software for the board will be written in a custom Forth.
+The Forth implementation itself is in the `ch559/` directory.
+To reduce reliance on external tools, an assembly toolchain is implemented in Python, and the Forth is implemented in that.
+
+[8051]: https://en.wikipedia.org/wiki/8051
+[ICSP]: https://en.wikipedia.org/wiki/In-system_programming
+
## Inkplate
The Inkplate 6 provides 800x600 pixels with 3 bits of greyscale color depth.