ultimate64

Rust library for interfacing with Ultimate-64 and Ultimate-II+

https://github.com/mlund/ultimate64

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.1%) to scientific vocabulary

Keywords

8bit commodore-64 rest-api retrocomputing rust
Last synced: 4 months ago · JSON representation ·

Repository

Rust library for interfacing with Ultimate-64 and Ultimate-II+

Basic Info
  • Host: GitHub
  • Owner: mlund
  • License: apache-2.0
  • Language: Rust
  • Default Branch: main
  • Homepage:
  • Size: 84 KB
Statistics
  • Stars: 22
  • Watchers: 5
  • Forks: 1
  • Open Issues: 0
  • Releases: 0
Topics
8bit commodore-64 rest-api retrocomputing rust
Created almost 2 years ago · Last pushed 5 months ago
Metadata Files
Readme License Code of conduct Citation

README.md

Crates.io Rust rust-clippy analyze .github/workflows/release.yml docs.rs

Ultimate64

Rust library and command line interface for communicating with Ultimate-64 and Ultimate-II+ devices using the REST API. The library is used in the Ultimate Manager GUI application.

Installation

Works with Linux, macOS, Windows. Either download a pre-compiled binary, or compile and install using cargo, provided that you have a working Rust installation:

~~~ bash cargo install ultimate64 ~~~

Usage

~~~ bash ru64 HOST COMMAND ~~~

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. ULTIMATE_PASSWORD may be used to specify a network password for your Ultimate device.

Examples

~~~ bash ru64 --help # show available commands ru64 info # Show device info (type, core version etc.) ru64 run skateordie.prg # load and run external PRG file ru64 mount desertdream.d64 --run # mount external image and run ru64 play yiearkungfu.sid -n 2 # play SID tune ru64 play enigma.mod # play Amiga MOD tune ru64 load sprites.dat --address 0x2000 # load data to memory ru64 peek 0xA7AE --dasm -n 32 # disassemble memory ru64 poke 0xd020 3 # write single byte ru64 poke 4096 --xor 0b0000_1100 # bitwise manipulation ru64 poke 0x0400 0x20 --fill 1000 # fill memory ru64 type $'print "hello"\n' # Emulate keyboard typing ru64 pause # pause machine ru64 reset # reset machine ru64 screenshot -o screen.png # take screenshot via VIC stream ~~~

Addresses can be hexadecimal (0x1000) or decimal (4096).

Experimental GUI

An experimental, cross-platform GUI is available with cargo run --release --example egui. Requires a Rust installation, see above. Currently only a VIC stream viewer is implemented.

Features

  • [x] Compiled, small, and cross platform with no external dependencies
  • [x] Mount and run external disk images
  • [x] Play SID and MOD files
  • [x] Remote screenshots to disk or, if support by terminal, the console
  • [x] Emulate keyboard typing w. unicode to PETSCII conversion
  • [x] Convenient decimal, hexadecimal, and binary input
  • [x] Bitwise operations for memory manipulation
  • [x] 6502 disassembly
  • [x] Load address detection
  • [x] Network password support
  • [x] First class memory safety due to Rust
  • [x] Modern CLI with subcommands
  • [x] Excellent error handling; error messages; and input validation
  • [x] Can be used either as a CLI tool or as a library
  • [x] Precompiled binaries for Linux and Windows (mac users should use cargo, see above)

Todo

  • [ ] Disk image manipulation
  • [ ] Memory bank switching for RAM access
  • [ ] Ultimate configuration handling

Owner

  • Name: Mikael Lund
  • Login: mlund
  • Kind: user
  • Location: Lund, Sweden
  • Company: Lund University

Citation (CITATION.cff)

# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!

cff-version: 1.2.0
title: >-
  Ultimate64 - Rust library and CLI for communicating with
  Ultimate-64 and Ultimate-II+ devices
message: >-
  This software can be cited as below.
type: software
authors:
  - given-names: Mikael
    family-names: Lund
    orcid: 'https://orcid.org/0000-0001-8178-8175'
repository-code: 'https://github.com/mlund/ultimate64'
keywords:
  - commodore-64
  - rust
  - 8-bit
license: Apache-2.0
version: 0.4.0

GitHub Events

Total
  • Create event: 3
  • Issues event: 2
  • Release event: 5
  • Watch event: 6
  • Delete event: 1
  • Member event: 1
  • Issue comment event: 3
  • Push event: 16
  • Pull request event: 1
Last Year
  • Create event: 3
  • Issues event: 2
  • Release event: 5
  • Watch event: 6
  • Delete event: 1
  • Member event: 1
  • Issue comment event: 3
  • Push event: 16
  • Pull request event: 1

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 75
  • Total Committers: 3
  • Avg Commits per committer: 25.0
  • Development Distribution Score (DDS): 0.253
Past Year
  • Commits: 26
  • Committers: 2
  • Avg Commits per committer: 13.0
  • Development Distribution Score (DDS): 0.308
Top Committers
Name Email Commits
Mikael Lund M****d@m****m 56
mlund m****d@l****t 18
Andreas Neukoetter a****s@o****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 5 months ago

Packages

  • Total packages: 1
  • Total downloads:
    • cargo 4,901 total
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 7
  • Total maintainers: 1
crates.io: ultimate64

Rust library and command line interface for networking with Ultimate-64 and Ultimate-II+ devices using the REST API

  • Versions: 7
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 4,901 Total
Rankings
Dependent repos count: 30.0%
Dependent packages count: 35.3%
Average: 53.9%
Downloads: 96.5%
Maintainers (1)
Last synced: 5 months ago

Dependencies

.github/workflows/release.yml actions
  • actions/checkout master composite
  • rust-build/rust-build.action v1.4.4 composite
.github/workflows/rust-clippy.yml actions
  • actions-rs/toolchain 16499b5e05bf2e26879000db0c1d13f7e13fa3af composite
  • actions/checkout v2 composite
  • github/codeql-action/upload-sarif v1 composite
.github/workflows/rust.yml actions
  • actions/checkout v3 composite
Cargo.toml cargo