I have developed a mental calculation training program called Aritm. It's based on a program I developed in C for MS-DOS in 1992 but more directly on my TI-BASIC-version from 2010. This version is for CASIO fx-9860GII but might work on other models such as fx-9750GII.
You can download the program ARITM.G1M here: http://www.df.lth.se/~mikaelb/casio/fx-9860gii/mob-i-l/
. Aritm for Casio and TI and some other systems is free open source software (FOSS) with the well known license GPLv3+. You run ARITM but the file also contains some subprograms beginning with ZA that also are necessary.
The Texas Instruments TI-82/TI-82 STATS/TI-83/TI-83 Plus/TI-84 Plus-version is here and it has documentation but the program is rather self-explanatory: http://www.df.lth.se/~mikaelb/ticalc.html#aritm
I developed the program in the Casio-BASIC programming language in the editor in the communication program FA-124 2.00 and on the graphing calculator CASIO fx-9860GII with OS 02.01.0200. The program uses the command Menu and the function RanInt# and it stores its data in a list that can be up to 590 floating point elements long. I know the the program could be more optimized but I struggled with the editor in FA-124 and I didn't want to use strings since that would make porting to older models more difficult. The editor in FA-124 2.00 seems to introduce strange bugs, e.g. RanInt# is converted to RanBin# in the editor if you import code and list indices (e.g. [J]) sometimes becomes tokenized on the calculator and produces errors when you run the code. This only occurs if you edit the code in FA-124. If you just import it and then transfer it there should be no problems provided you use the latest versions of FA-124 and Casio OS 2.
Aritm could be ported to other models such as Algebra FX 2.0 Plus and fx-9750G. I don't have a link-cable for Casio and have to transfer the program through the fx-9860GII to the other calculator models and so far I've only succeeded in transferring it to fx-9750G and not to Algebra FX 2.0 Plus, CFX-9800G or fx-7700GE. Aritm cannot run on the fx-9750G as it is now.
If someone wants to help convert Aritm to other calculator models and distribute the program according to GPLv3+ that would be great. If one cannot use lists of length 590 one might use matrices and the technique I use in the TI-82-version (since lists on TI-82 can only be 99 elements long).
There are some hacks you can do to the program, e.g. introduce new exercises such as multiplication with the 11 and 12 tables, and additive pairs of ten (though this is already part of subtraction).