The operating system of the NumWorks graphing calculator is called Epsilon. It is made out of five bricks: Ion, Kandinsky, Poincaré, Escher, and Apps.

Epsilon's architecture

Ion Hardware abstraction layer

Ion is the underlying library that abstracts all the hardware operations. It performs tasks such as setting the backlight intensity, configuring the LED or setting pixel colors on the screen. It also answers to questions such as "tell me which keys are pressed" and "what is the battery voltage?".

Kandinsky Graphics engine

That library is in charge of doing all the drawing. It performs functions such as "draw that text at this location" or "fill that rectangle in blue".

Poincaré Mathematics engine

Poincare is in charge of parsing, laying out and evaluating mathematical expressions. You feed it some text such as "sin(root(2/3,3))" and it will draw the expression as in a text book and tell you that this expression is approximatively equal to 0.01524.

Escher GUI toolkit

Escher is our GUI toolkit. It provides functionalities such as "draw a button" or "place three tabs named Foo, Bar and Baz". It asks Ion for events and uses Kandinsky to do draw the actual user interface.

Apps Applications

Last but not least, each app makes heavy use of both Escher and Poincare to display a nice user interface and to perform mathematical computation.

Now that you've discovered its architecture, you should browse Epsilon's source code.