ckormanyos/ti84-ref_app
creates a fully functioning reference application
for the TI-84 Plus monochrome graphics calculator. It runs in the
open Asm(prgm)
interface provided in the calculator's CATALOG
menu.
It uses the TI-84's on-board Z80 processor.
The reference application implements parallel blinky and hello-world text sequences. It boots through a small startup code and subsequently initializes a skinny microcontroller abstraction layer (MCAL). Control is then passed to a minimalistic cooperative multitasking scheduler. The application task (managed by the scheduler) directs the presentations of its associated ASCII-text messages.
The text sequences ON/OFF and hello/world are presented in
cyclic, alternating fashion(s) on the calculator screen.
Text is used since there is no actual LED present on the calculator-target system.
This is intended to simulate an LED-blinky by toggling between ON and OFF.
To make the program a little more interesting, an independent hello-world-task
is supported as well. The ON/OFF messages are printed every
The cooperative multitasking timebase is derived from a 0x45
-0x48
,
where the lower byte at port 0x45
is used.
This timer is only available on the TI-84, not the TI-83.
The blinky ON/OFF and hello/world text messages are printed
at rows
A skinny main()
subroutine in the soruce file
app_main.c
controls the program flow.
After starting the multitasking scheduler with
os_schedule()
,
it services the two alternating tasks
app_led_task()
and
app_hello_task()
based on their cycle times.
The application is written in the C language using the C23 standard. There is minimal use of assembly for startup and to interface with TI-83 Plus System Routines.
Programming the calculator:
- After build, locate
bin/refapp.8xp
. - Drag
refapp.8xp
onto the calculator using the standard method with TI Connect version 4. Important: Use version 4 for the TI-84 Plus. - The on-calculator name of the program is
REFAPP
.
To start the program, use the usual Asm(prgm)
option found in the CATALOG
menu and select the REFAPP
program. The explicit keystrokes are listed below.
Let's execute the program on the calculator using keystrokes:
- Hit
$2^{nd}$ -CATALOG
. - Use the arrows to navigate down to the
Asm(
entry. - Hit the
ENTER
-key. - Then hit the
PRGM
-key. - Select
REFAPP
and hit theENTER
-key. - The calculator screen should now show
Asm(prgmREFAPP
. - Hit the
ENTER
-key and the program should start to run. - To exit the blinky ON/OFF and hello/world show, press the
ENTER
-key. - Clear the screen (if desired) with the
CLEAR
-key.
The running programm in the display-state ON/hello is shown in the image below.
A fully-built ref_app
can be found in the bin
directory.
This pre-built program can be used to trouble-shoot the environment.
This application uses the free
sdcc
toolchain.
C-runtime initialization (i.e., static initialization prior to the call of main()
)
is supported with the file crt0.s in the startup
directory.
The build system:
- The build system uses GNUmake with a straighforward
Makefile
. - The build system is supported on both
Win*
and*nix
. - The
Win*
-build requires a small selection of ported*nix
tools. These are included in thewbin
directory. - The on-calculator image is packed by BinPac8x v1.2.
- Build results including HEX-File and the on-calculator image
refapp.8xp
are placed in thebin
-directory.
Prerequisites:
- Install
sdcc
version 4.4 or higher. - Install python.
Then build in the command shell with:
cd ti84-ref_app\build
make all
Prerequisites:
- Install
sdcc
version 4.4 or higher.
Then build in the bash shell with:
cd ti84-ref_app/build
make all
Testing has been performed on the target system, which is a fully-functioning TI-84 Plus calculator purchased years ago from a commercial retailer.
Continuous integration is performed on GHA using a ubuntu-latest
and macos-latest runners.
The workflow run
builds the application and verifies the presence of bin/refapp.8xp
.
- This project has been inspired by and influenced by numerous previous works, including (but not limited to) the azertyfun/LibTI project.
- The aforementioned project was ground-breaking and excellent.
Please do, however, use this project at your own discretion and observe also the license details. This project is not in any way affiliated with Texas Instruments Inc, or any of its subsidiaries, including the educational products division.
Some of this software has been reverse engineered
from other projects or terse technical notes.
In addition, the software actively writes to calculator
ports, such as port 0x40
and port 0x41
.
Personally, I do not consider this to be a
Empirical evidence does, nonetheless, show a working, and fully/properly initialized C-language, non-trivial application. It provides a basis that seems to adhere to the established, common rules of modern C. Larger projects could potentially be built upon or modelled from this one.
- TI-83 Plus System Routines, Third Release (Jan. 25, 2002), located here
- SDCC Compiler User Guide, SDCC 4.4.1, Revision 14549 (at the time of writing this doc, Jan. 29, 2024), located here
- The source code written for this repo (in the
src
) directory is licensed under The Unlicense. Win*
-ported*nix
tools inwbin
originate from UnxTools and include their own distribution statements.- The
Win*
-ported GNUmake is taken fromckormanyos/make-4.2.1-msvc-build
.