5 releases
0.2.0 | Nov 23, 2022 |
---|---|
0.1.3 | Sep 22, 2022 |
0.1.2 | Sep 16, 2022 |
0.1.1 | Sep 15, 2022 |
0.1.0 | Sep 15, 2022 |
#1992 in Command line utilities
64KB
1.5K
SLoC
Matrix Mode Serial Communicator for MEGA65
matrix65
is a CLI tool, for communicating with the MEGA65
8-bit retro computer using a serial connection.
It has a mix of features from m65
, mega65_ftp
, and M65connect
and is written entirely in Rust.
Here is a short demonstration video.
Disclaimer: This tool is still under development; use it at your own risk.
Getting Started
Installing
The easiest way to get started is to install the Rust compiler, followed by:
cargo install matrix65
There are no other dependencies on MacOS and Windows.
On Linux, you may have to install libudev-dev
(Ubuntu) or systemd-devel
(Fedora).
To access the serial port, the Linux user may need to be added to the dialout
group.
Using
# transfer prg file and run it (url allowed)
matrix65 --port /dev/myserial prg plasma.prg --run
# text-user-interface (TUI) for the FileHost
matrix65 --port /dev/myserial filehost
# look for and select PRG file inside disk image (url allowed)
matrix65 --port /dev/myserial prg commando.d81 --run --reset
# type something on the mega65
matrix65 --port /dev/myserial type "dir\n"
# hexdump 16 bytes, starting at $C000
matrix65 --port /dev/myserial peek -@ 0xc000 -n 16
Features and current status
As of writing, the list of functionality is inferior to m65
, but
expect more features over time.
Should you be interested in testing or try some Rust programming,
your involvement is very welcome.
- World-class memory safety thanks to Rust
- Cross platform serial device detection
- Fancy CLI interface with subcommands
- Online Filehost access with TUI (experimental)
- Send and run PRG files
- Go C64/C65 dependent on detected load address
- Extract PRG from CBM disk images (.d81)
- Regular files and URL's are allowed
- Send sequence of key-presses
- Reset MEGA65
- Peek into memory; hexdump, binary file dump
- Poke into memory; single value or from file
- Logging with e.g.
export RUST_LOG=info
- REPL command interface (experimental)
- Disassembly (currently only 6502 opcodes)
- Transfer and mount disk images
- Load at arbitrary address and optionally start with
SYS
- Memory dumps in YAML format
- Bitstream transfer
- Transfer to SD card
Motivation
- Creative fun: I wanted to learn more about Rust and the MEGA65 hardware
- A Text User Interface (TUI) for the FileHost has an inherent retro-feel
- Rust
- is safe and free of undefined behavior
- compiles to lean, efficient binaries, similar to C
- has lot's of useful crates, e.g. for supporting CBM disk images
- has Cargo which makes dependency handling easy-peasy
- In my opinion, higher level language features in Rust are superior to raw C for tasks like HTTP requests, JSON parsing, and TUI handling (No offence meant, MEGA65 Team🖖).
Resources
- MEGA65 Book:
- Matrix Mode Monitor: section K-13, page 866
- https://github.com/MEGA65/mega65-user-guide/blob/master/appendix-monitor.tex
- mega65-tools:
src/monitor/monitor.a65
Dependencies
~17–33MB
~531K SLoC