Cahute 0.6

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]:

feat-transfer

File transfer between storages

With p7, transfer files from and to storages on fx-9860G compatible calculators, over USB and serial links!

feat-program

Program backup

With CaS, extract programs from all CASIO calculators since 1992, over USB and serial links!

feat-text

Text conversions

With cahute_convert_text(), convert text between standard and CASIO-specific text encodings!

feat-ohp

Screenstreaming

With p7screen, display screen captures and streaming from your calculator on your host system!

feat-flash

ROM flashing

With p7os, flash fx-9860G and compatible calculators!

Installing or building Cahute is officially supported on the following systems:

Install Cahute…

Build Cahute from source…

Note

Support and distribution of other systems is in progress or is awaiting volunteers:

Build Cahute from source…

Build Cahute from source…

Build Cahute from source…

Install Cahute…

Build Cahute from source…

Install Cahute…

No installation guide available for this system.

Build Cahute from source…

No build guide available for this system.

Install Cahute…

No installation guide available for this system.

Build Cahute from source…

No build guide available for this system.

Install Cahute…

No installation guide available for this system.

Build Cahute from source…

No build guide available for this system.

Install Cahute…

No installation guide available for this system.

Build Cahute from source…

No build guide available for this system.

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.

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.

Discussion topics

These sections discuss key topics and concepts at a fairly high level, and provide useful background information and explanation.

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.

Glossary

The following are definitions for words and expressions used in this documentation.

3-pin

Serial connector available on all CASIO calculators from 1991 to today, used for both PC-to-calculator and calculator-to-calculator communications.

See 3-pin port for more information.

Add-in

Additional application for calculators.

While the system applications are embedded in the calculator’s system, some calculators allow for additional applications to be placed in the storage memory, and can be executed from the main menu; these are named “add-ins”.

Addin

See Add-in.

CAS40

Communication protocol used by pre-1996 CASIO calculators.

See CAS40 protocol – Serial protocol used by pre-1996 calculators for more information.

CAS50

Communication protocol used by CASIO calculators from 1996 to 2004.

See CAS50 protocol – Serial protocol used by calculators from 1996 to 2004 for more information.

CAS100

Communication protocol used by CASIO AFX / Graph 100(+) calculators.

See CAS100 protocol – Serial protocol used by AFX / Graph 100 for more information.

CAS300

Communication protocol used by CASIO ClassPad 300/330(+) calculators.

See CAS300 – Serial and USB protocol used by Classpad 300 / 330 (+) for more information.

Connector

Physical connector present on a host or a calculator, on which a corresponding cable can be plugged.

Context

Collection of system and library resources used to accomplish tasks using Cahute.

See Contexts for more information.

Link with no protocol, providing access to the underlying transport for sending and receiving data using a custom protocol.

See Generic links for more information.

Link established with a calculator or host using a protocol over a transport, within a context.

See Links for more information.

Main memory

Small filesystem present on all calculators used to store most files used by various system applications, such as programs. Usually 64 KiB or less, and stored in RAM.

See Main memory data for more information.

Main memory data

Data represented as a file on the main memory, bearing a type and type-specific data.

See Main memory data for more information.

OHP

Overhead projector; see Screenstreaming.

PXH-A16

Calculator-side connector available on the Classpad 300.

See PXH-A16 port for more information.

Port

See Connector.

Program

main memory data representing a CASIO BASIC program which can be created, edited, deleted, and executed by a system application on any CASIO calculator, usually PRGM.

See Programs for more information.

Protocol

Communication protocol used over a transport to fulfill one or more purposes, in the context of a link.

See Purposes for the communication protocols for more information.

Protocol 7.00

Communication protocol used over both serial and USB starting from the fx-9860G (2004) calculators.

See Protocol 7.00 – Serial and USB protocol used by post fx-9860G calculators for more information.

SB-62

Official 3-pin to 3-pin cable by CASIO, used for calculator to calculator communication.

See SB-62 cable for more information.

SB-87

Official serial (DB-9) to 3-pin cable by CASIO.

See SB-87 / SB-125 / SB-150 / SB-155 cable for more information.

SB-88

Official USB Type-A to 3-pin cable by CASIO.

See SB-88 cable for more information.

SB-88(A)

Official variation of the SB-88 cable by CASIO.

See SB-88 cable for more information.

SB-300

Official USB Type-A to PXH-A16 cable by CASIO.

See SB-300 cable for more information.

SB-305

Official serial (DB-99) to 3-pin cable by CASIO.

See SB-305 cable for more information.

Screenstreaming

Communications use case where the calculator shares the contents of its screen to a host over serial or USB.

This can be used to project the screen contents onto a bigger screen or wall using a projector, or record the screen contents on the host.

Storage memory

Filesystem larger than the main memory, than can contain main memory archives, add-ins and more.

Used for larger files with fewer changes during the calculator’s lifetime. Pricier calculators use a multi-MiB section on the flash memory to provide a storage memory, and some calculators have a secondary storage memory in the form of an SD card slot.

Transport

Transport underlying a link, composed of a physical transport (connector and cable set) as well as the system or hardware interface (system interface, driver) used to access it.

USB Mass Storage

Used in this documentation to refer to both UMS as transport and UMS as protocol.

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.

  • Thanks to Massena for their work on the Cahute cover image, on the top of every page.

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!