Texas Instrument’s TI-84 Plus is a graphing calculator with a variety of features. It has built-in support for both fractions and complex numbers, can differentiate and integrate given functions and supports programming capabilities. The latter allows to directly manipulate the calculator’s monochrome display’s 5985 pixels (the screen has dimensions 95x63). TImg is a Python program (source code is listed below and can also be downloaded) which takes in an image and outputs TI-BASIC source code which, when run on the graphing calculator, will produce the given image — in potentially lower quality.

TI-84 Plus’ screen dimensions (bitmap).

PIL — the Python Imaging Library — is used to read in the image and further for processing. The supplied image may be rotated and resized to better fit the TI-84’s screen and any color or even grayscale information is reduced to an actual bitmap — every pixel only has two distinct values.
Direct pixel manipulation on the TI-84 is done via the Graph screen. To get remove any pixels the system draws on its own, the first three commands are ClrDraw, GridOff and AxesOff which should result in a completely blank screen — assuming that no functions are currently being drawn. All subsequent commands are in charge of drawing the previously computed bitmap. To turn certain pixels on, Pxl-On(Y,X is used where Y and X are the pixel’s coordinates.

A fractal (bitmap).

Since the TI-84 Plus only has 24 kilobytes of available RAM, the source code for a program which would turn on every single pixel individually does not fit. Luckily, though, a program which only individually turns on half of the screen’s pixels fits. To ensure that TImg’s output fits on the hardware it is designed to be used with, an image’s bitmap is inverted when the required code would otherwise exceed 3500 lines — a value slightly above the required code to draw half of the pixels.

A J-Blog screenshot (bitmap).

By default, the resulting code draws pixels starting at the screen’s top-left corner and ending at its bottom-right. A command line flag --shuffle can be set which changes this behavior to let pixels pseudo-randomly appear on the screen (pseudo-randomness is calculated in the Python script; the TI-BASIC source code is completely deterministic).
And — of course — one can feed the program an image of the calculator the BASIC code runs on; self-referential TIception.

TIception (input image).

# Python 2.7 code; Jonathan Frech; 5th, 6th of October 2017

Continue reading


Sierpinski TIrangle

Using the same method used in my previous Sierpinski Triangle program, which is written in Python, I wrote a fractal generator for my graphing calculator TI-84 Plus in BASIC.

Faintly visible Somewhat visible Strongly visible

"// TI-84 Plus BASIC Code"
"// Jonathan Frech 25th of April, 2016"
"//         edited 21st of May  , 2016"

Continue reading

TI-99/4A Primes

Being a fan of old hardware, I used the TI-99/4A (released in 1981) to calculate some primes.
The code is written in BASIC, the programming language found on most computers of this era.
Further information on the TI can be found in this Wikipedia article.

TI-99 4A Start ScreenPrime ProgramTI-99 4A

1   REM TI-99/4A BASIC Code
2   REM Jonathan Frech 20th of May, 2016

Continue reading