xum1541
A native Rust implementation of the xum1541 (ZoomFloppy) protocol for communicating with Commodore disk drives.
Overview
This project reimplements OpenCBM's xum1541 plugin natively in Rust, offering several key improvements:
- Native Rust implementation for better integration with Rust applications
- Consistent, ergonomic API design with proper error handling
- Enhanced stability compared to OpenCBM's C implementation, particularly on Linux systems
- Type-safe interfaces and modern Rust idioms
Features
- Direct communication with Commodore disk drives via xum1541/ZoomFloppy devices
- Native Rust error handling and type safety
- Clean API design following Rust best practices
- Improved stability and reliability over C FFI implementations
- Safe resource management through RAII - USB device resources are automatically closed when objects go out of scope
- Thread-safe design supporting concurrent access and async/futures through standard Rust concurrency primitives (Arc<Mutex<>>)
Note, this is not a drop-in replacement for the OpenCBM plugin - it will not work with the OpenCBM library and applications.
Installation
Usage
use ;
Requirements
- Rust 1.70 or higher
- USB device access permissions (Linux systems may need udev rules)
- Compatible xum1541/ZoomFloppy hardware
Building from Source
- Clone the repository:
- Build the project:
Testing
Run the test suite:
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
GPLv3
Acknowledgments
- Original OpenCBM project and xum1541 plugin developers
- ZoomFloppy hardware developers
- Commodore community
Project Status
This project is under active development. Please report any issues or feature requests through GitHub issues.