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
, mega65ftp
, and M65connect
and is written entirely in Rust.
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 Rust, followed by:
~~~ bash
cargo install matrix65
~~~
Using
~~~ bash
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.
- [x] World-class memory safety thanks to Rust
- [x] Cross platform serial device detection
- [x] Fancy CLI interface with subcommands
- [x] Online Filehost access with TUI (experimental)
- [x] Send and run PRG files
- [x] Go C64/C65 dependent on detected load address
- [x] Extract PRG from CBM disk images (.d81)
- [x] Regular files and URL's are allowed
- [x] Send sequence of key-presses
- [x] Reset MEGA65
- [x] Peek into memory; hexdump, binary file dump
- [x] Logging with e.g.
export RUST_LOG=info
- [ ] 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
- I wanted to learn more about Rust and the MEGA65 hardware
- A Text User Inferface (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, a higher level language is more suitable than C for tasks like
HTTP requests, JSON parsing, and TUI handling.
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