4 releases (breaking)
0.4.0 | Jan 19, 2024 |
---|---|
0.3.0 | Jan 18, 2024 |
0.2.0 | Jan 16, 2024 |
0.1.0 | Jan 15, 2024 |
#1570 in Command line utilities
27KB
491 lines
Ultimate64
Rust library and command line interface for communicating with Ultimate-64 and Ultimate-II+ devices using the REST API.
Installation
Either download a pre-compiled binary,
or compile and install using cargo
, provided that you have a working
Rust installation:
cargo install ultimate64
Usage
ultimate64 HOST COMMAND <OPTIONS>
Where HOST
is the IP address or hostname of the Ultimate device on your local network.
Alternatively specify this in the environmental variable ULTIMATE_HOST
as
assumed in the following examples.
Examples
ultimate64 --help # show available commands
ultimate64 pause # pause machine
ultimate64 run skate_or_die.prg # load and run PRG file
ultimate64 load sprites.dat --address 0x2000 # load data to memory
ultimate65 peek 0x1000 --dasm -n 32 # disassemble memory
ultimate65 poke 0xd020 3 # write single byte
ultimate65 poke 4096 --xor 0b0000_1100 # bitwise manipulation
ultimate65 poke 0x0400 0x20 --fill 1000 # fill memory
ultimate64 sidplay yie_ar_kung_fu.sid -n 2 # play SID tune
ultimate64 modplay enigma.mod # play Amiga MOD tune
Addresses can be hexadecimal (0x1000
) or decimal (4096
).
Features
- Compiled, small, and cross platform with no external dependencies
- Can be used either as a CLI tool or as a library
- Modern CLI with subcommands
- First class memory safety due to Rust
- Excellent error handling; error messages; and input validation
- Convenient decimal, hexadecimal, and binary input
- Bitwise operations for memory manipulation
- 6502 disassembly
- Load address detection
- Precompiled binaries for MacOS, Linux, and Windows
Todo
- Disk image and file manipulation
- Memory bank switching for RAM access
- Ultimate configuration handling
Dependencies
~7–20MB
~305K SLoC