From 2465e4ba5926f3137bb10f1d17944a56425332a3 Mon Sep 17 00:00:00 2001 From: Nathan Ringo Date: Mon, 21 Oct 2024 08:28:00 -0500 Subject: README updates and the start of the E8051 assembler. --- README.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'README.md') 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. -- cgit v1.2.3