Cahute 0.5¶
Cahute is a library and set of command-line utilities to handle serial and USB communication protocols and file formats related to CASIO calculators, dating from the 1990s to today. It provides the following features:
Transferring storage files from and to fx-9860G compatible calculators, over USB and serial links;
Receiving programs from all CASIO calculators since 1991, over USB and serial links;
Converting between character encodings;
Screenstreaming from fx-9860G, fx-CG and compatible calculators, over USB links;
Flashing fx-9860G and compatible using the fxRemote method.
Officially supported OSes are Archlinux-based, macOS and AmigaOS 3.2 and above.
Note
For support for other platforms, see the following issues:
The project is being worked on on Gitlab. It is maintained by Thomas Touhey.
It is also talked about in the following places:
Planète Casio (in French);
TI-Planet (in French);
The project’s code and documentation contents are licensed under CeCILL version 2.1 as distributed by the CEA, CNRS and Inria on cecill.info.
This documentation is organized using Diátaxis’ structure.
Acknowledgements¶
There have been many projects over the years about reversing and reimplementing CASIO’s shenannigans for using their calculators from alternative OSes, or simply for fun or out of curiosity. Cahute couldn’t have been made without their research, implementations and in some cases, documentation. This page is a little tribute to these works.
Thanks to Tom Wheeley and Tom Lynn for their work on CaS and Caspro and the Casio Graphical Calculator Encyclopaedia.
Thanks to the (now defunct) Graph100.com wiki, saved here for historical purposes.
Thanks to the team behind Casetta for their documentation on legacy protocols and file formats, which helped me navigate the subtleties more easily.
Thanks to Simon Lothar and Andreas Bertheussen for their work on Protocol 7.00 and derivatives through fxReverse and xfer9860, and to Teamfx for their additions.
Thanks to the Cemetech community for their Prizm Wiki, especially gbl08ma, BrandonWilson and amazonka.
Thanks to Nessotrin for their work on UsbConnector, which prompted me to work on a better version in the first place.
There are obviously plenty more people working on other connected aspects (hardware, low-level system stuff), administering or moderating forums and websites, maintaining communication with CASIO and other partners. Quoting you all would take a substantial time, and I’d likely miss quite a lot of you, but thank you all for your efforts!
How-to guides¶
These sections provide guides, i.e. recipes, targeted towards various actors. They guide you through the steps involved in addressing key problems and use-cases.
- General guides
- Command line user guides
- Developer guides
Discussion topics¶
These sections discuss key topics and concepts at a fairly high level, and provide useful background information and explanation.
- Discussion topics
- Number formats
- Picture formats
- Text encodings
- File formats
- Communication protocols
- Rationales behind the communication protocols
- CASIOLINK protocol – Serial protocols used by pre fx-9860G calculators
- Protocol 7.00 – Serial and USB protocol used by post fx-9860G calculators
- Protocol 7.00 Screenstreaming – fx-9860G and fx-CG screenstreaming
- USB Mass Storage (UMS) and proprietary extensions for fx-CG calculators
- Main memory data
- USB detection for CASIO calculators
- Logging facilities with Cahute
- Cahute internals
References¶
These sections provide technical reference for APIs and other aspects of Cahute’s machinery. They go into detail, and therefore, assume you have a basic understanding of key concepts.
- Command line reference
- Header reference
<cahute.h>
– Main header for Cahute<cahute/cdefs.h>
– Basic definitions for Cahute<cahute/data.h>
– Calculator data resource and methods for Cahute<cahute/detection.h>
– Device detection for Cahute<cahute/error.h>
– Error definitions for Cahute<cahute/link.h>
– Calculator link resource and methods for Cahute<cahute/logging.h>
– Logging control for Cahute<cahute/picture.h>
– Picture format related utilities for Cahute<cahute/text.h>
– Text encoding related utilities for Cahute
Project management¶
These sections describe how the project is managed, and what works it is based on.