JavaScript Abacus
Android Abacus
Java Abacus
X Abacus (and Windows too)

JavaScript Abacus

Configurations JS
Chinese Abacus *
Chinese Abacus with trial TEACH mode
Korean Abacus *
(Jupan, AKA Japanese
Soroban pre-WWII)
Korean Abacus
Japanese Abacus *
(Soroban post-WWII)
Japanese Abacus
Roman Hand Abacus *
right most column twelfths and
Ancient Roman Numerals in display
Roman Hand Abacus
Roman Hand Abacus *
right most column eighths and
Modern Roman Numerals on abacus
Roman Hand Abacus (8)
Russian Abacus *
Russian Abacus
Old Russian Abacus *
(Schoty w/ 1/4 Kopek)
Old Russian Abacus
Georgian Abacus *
(Russian base 20, for warmer climate
(no shoes), do not take seriously)
Georgian Abacus
Danish School Abacus * Danish Abacus
Medieval Counter * Medieval Counter
Mesoamerican Abacus
similar to Japanese base 20)
Mesoamerican Abacus
Babylonian Watch
(proposed by author)
Babylonian Watch Proposal
Base 16 Japanese Abacus * Base 16 Abacus
System * (base 12)
Early Chinese Numbering
Base 16
(using normal abacus)
Chinese Base 16 Abacus
US Currency
US Currency
European Currency
European Currency
British Currency
British Currency
Japanese Currency
Japanese Currency
South Korean Currency
South Korean Currency
Russian Currency
Russian Currency
Lee's Abacus Hack
Principal Chinese with a Noneven
Distributed 7 Rail Auxiliary
Lee Abacus Noneven CN
Lee's Abacus Hack
Principal Korean with a Noneven
Distributed 7 Rail Auxiliary
Lee Abacus Noneven KO
Lee's Abacus Hack
Principal Chinese with a Even
Distributed 9 Rail Auxiliary
Lee Abacus Even CN
New Those with a "*" above have a "Teach" mode for addition. (Multiplicaton, etc are available in below Java and C versions.)

Let me know of any bugs... (yes, the Lee's Abacii has some alignment issues). Also, if there is a abacus design not featured that you want to see, let me know. The Java below has more features (and no alignment issues), but can no longer run in your browser ... sigh.

See project notes for todo list and history.

Android Abacus

App Source Code Executable
Abacus.zip Abacus.apk

Unzip somewhere and then put in Eclipse like File->Project->Android Project from Existing Code. Then build, install, and run as usual. Any trouble building and getting on your Android, let me know so I can make fixes or better instructions.

See project notes for todo list and history.

Java Abacus

java -jar AbacusApp.jar -lee=1
Screenshot shown here running as: "java -jar AbacusApp.jar -lee=1"

There are two modes in menu that will help you learn how to use the abacus:

the "demo" mode: here some static lessons are given for the different types of abacus. The lessons include counting, adding, subtracting, and multiplying. The original lessons were taken from work by Luis Fernandes.

the "teach" mode: here you learn at your own pace by entering your own calculation like "A+B", "A-B", "A*B", or "A/B" (where A>0 and result non-negitive). Pressing the enter key, will give you a step by step explanation and show proper moves on the abacus. According to the books below, you are supposed to start on left side, when adding or subtracting multi-digit numbers. (There is a menu option "rightToLeftAdd", if you think this is inefficient (similar one for multiplication "rightToLeftMult")). Lee's Abacus is more suitable if you are learning multiplication and division, as there are extra places to store operands.

SQRT operation is a feature that that solves perfect squares (0 - 104080804 tested with internal tester) in teach mode and also handles floating point numbers. For non-perfect squares it gives approximations. Move the decimal point slider to the left before starting to increase precision. For example, try it out with "10201v" in teach mode on a "Lee's Abacus". Unlike the other operations, sqrt reduces to an answer from which you must divide by 2. (You can try that out like "202/2", once sqrt operation gives you its "doubled" answer of "202"). This follows closely the work of Lee Kai-chen from his book "How to Learn Lee's Abacus". Let me know of any problems. Now if you can just input negatives... the solution would involve turning the abacus sideways. ;)

CBRT operation is a feature that solves perfect cubes (0 - 1003003001 tested with internal tester). For example, try it out with "1030301u" in teach mode on a "Lee's Abacus". Here cbrt reduces to an answer from which you must divide by 3. (You can try that out like "303/3", once cbrt operation gives its "tripled" answer of "303".) This again follows closely the work of Lee Kai-chen.

You can download the jar file (preserve the .jar extension), and then it can be run as an application like "java -jar AbacusApp.jar -rails=15" or "java -jar AbacusApp.jar -lee=1 -leftAuxRails=9 -rightAuxRails=9". The X Manual Page is written for the X version but may be useful to understanding the Java program.

App Source Code X Manual Page Jar File
abacus.zip xabacus AbacusApp.jar

See project notes for todo list and history. Please let me know if I left out anything.

There is a feature for teachers to test students on the use the abacus. This would give the ability to create your own tests. Results would go into a results directory. Sample tests are given in zip file (there is only the one test so far, in demo below). The idea is to move the beads to the correct position and then record the answer by a certain time.

X Abacus (and Windows too)

Sourceforge Screen shots
Manual for xabacus
See xabacus.README and xabacus.lsm.

C/C++ Source Code for X and Windows (xabacus 8.2.7, xz'd file)
xabacus at sillycycle.com
xabacus at ibiblio.org

C/C++ Source Code and Binary for Windows (wabacus zip'd file, same source as above compiled with MinGW).
wabacus (Windows abacus)


ABACUS Guide Book
Books by Takashi Kojima
The Japanese Abacus, Its Use and Theory
Advanced Abacus Japanese Theory and Practice
The Abacus
Salamis Tablet
TOMOE Soroban
Short story by Isaac Asimov The Feeling of Power
Rhymes with Orange Cartoon 2011-08-22

Send comments/suggestions to:
Abacus maintainer

Maintainer's Home Page
Last Revised: 18 June 2020