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[1]:
File transfer between storages
With p7
, transfer files from and to storages on
fx-9860G compatible calculators, over USB and serial links!
Program backup
With CaS
, extract programs from all CASIO calculators since 1991,
over USB and serial links!
Text conversions
With cahute_convert_text()
, convert text between standard and
CASIO-specific text encodings!
Screenstreaming
With p7screen
, display screen captures and streaming from your
calculator on your host system!
ROM flashing
With p7os
, flash fx-9860G and compatible calculators!
Officially supported systems are the following:
Note
Support and distribution of other platforms is in progress or is awaiting volunteers:
The project is being worked on on Gitlab. It is maintained by Thomas Touhey. See Forums and other communities for the topics describing the projects in other communities.
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.
- Installation guides
- Build from source guides
- Contribution guides
- Command line user guides
- Developer guides
- Miscellaneous guides
Discussion topics¶
These sections discuss key topics and concepts at a fairly high level, and provide useful background information and explanation.
- Data formats
- Communication protocols
- Rationales behind the communication protocols
- Transport medium and protocols
- USB detection for CASIO calculators
- CASIOLINK protocols – Serial protocols used by pre fx-9860G calculators
- CAS40 protocol – Serial protocol used by pre-1996 calculators
- CAS50 protocol – Serial protocol used by calculators from 1996 to 2004
- CAS100 protocol – Serial protocol used by AFX / Graph 100
- CAS300 – Serial and USB protocol used by Classpad 300 / 330 (+)
- 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)
- Cahute features
- 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/config.h>
– Cahute configuration details<cahute/context.h>
– Context management 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/file.h>
– File related utilities for Cahute<cahute/link.h>
– Calculator link resource and methods for Cahute<cahute/logging.h>
– Logging control for Cahute<cahute/path.h>
– Path related utilities for Cahute<cahute/picture.h>
– Picture format related utilities for Cahute<cahute/text.h>
– Text encoding related utilities for Cahute
- CMake setting reference
Project management¶
These sections describe how the project is managed, and what works it is based on.