docs.rs failed to build mos-hardware-0.1.8
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build:
mos-hardware-0.4.0
MOS-Hardware
This crate contains hardware register tables and support functions for
8-bit retro computers like the Commodore 64, Commander X16, MEGA65 and others.
Please check the examples
directory to see how Rust can be used to generate simple demo effects.
Aims
- Excellent support for Rust programming on CBM (inspired) 8-bit computers
- Labelled registers for expressive hardware programming
- Intuitive bitflags with type checks where possible
- Minimum resource impact
Examples
Read and write to labelled hardware registers
use ;
let old_border_color = .border_color.read;
.border_color.write;
.potentiometer_x.write; // error: read-only register
Use bitflags to safely control hardware
...for example where the VIC-II chip accesses screen memory and character sets:
let bank = AT_2C00.bits | AT_2000.bits;
.screen_and_charset_bank.write;
Convenience functions to perform hardware-specific tasks
...for example to generate random numbers using noise from the C64's SID chip:
.start_random_generator;
let random_number : u8 = rand8!;
Getting started
The project requires rust-mos and is setup to build for C64 by default. A docker image of rust-mos is available if you do not fancy compiling LLVM.
Docker and Visual Studio Code
The easiest way is to use the provided .devcontainer.json configuration for vscode:
- Configure Visual Studio Code with the Remote - Containers extension
- Open the project inside devcontainer when asked
- In the vscode terminal do:
# build for the MEGA65:
Status
The hardware registers are currently incomplete and the library may be subject to significant changes.
- Commodore 64:
-
sid -
vic2 -
cia(partially) -
c64memory map (particlly)
-
- Commander X16
-
vera -
via(partially) -
cx16Memory map (partially) - Support functions
-
- MEAG65:
- partial support for vic3, vic4 and other hardware registers.
- mega65-libc bindings
- Examples:
- Plasma effect (c64, mega65)
- Raster IRQ (c64)
- Sprites (c64)