Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

System overview

This wiki documents how TI-84 Plus OS 2.55MP uses the Z80, banked memory, calculator hardware, and its internal software subsystems. It keeps direct ROM evidence, emulator observations, public hardware behavior, and unresolved inferences distinct.

The target is a validated 1 MiB Flash image whose OS identifies itself as 2.55MP. Conventions and methodology defines the address notation and confidence flags used throughout the book.

Machine and OS

The TI-84 Plus is a Z80 machine that can only see 64 KiB at once. The target has 1 MiB of Flash and eight RAM selector values. Community hardware reports assign eight independent 16 KiB RAM blocks to early units. They assign 48 KiB to later units, with selectors 8287 sharing one block. No physical result is recorded for the calculator used by this project. A four-slot paging scheme and a system-call (bcall) mechanism expose code and data beyond the current address space. The OS is a single-tasking monitor. Its boot/kernel core occupies Flash page 0, other OS routines span banked Flash pages, and fixed RAM windows hold system state. See RAM pages for the revision evidence.

Four mechanisms connect most user-facing OS behavior:

MechanismRole
Paging and bcallsReach code and data outside the current 64 KiB address space.
Floating-point engineStore real and complex values in the OP1OP6 registers and perform arithmetic.
Variable Allocation Table (VAT)Catalog named reals, lists, matrices, strings, programs, and AppVars.
Tokenizer and parserStore TI-BASIC as one- and two-byte tokens and execute the resulting token stream.

Around those sit the I/O subsystems: the Flash command path and boot write APIs; the IM1 interrupt dispatcher (interrupts.md); the standard timers, RTC, and low-power state machine (clock-timers-power.md); the MD5 round accelerator; the LCD driver; the keypad scanner; and the link port.

Subsystem index

Each row maps a documentation page to the subsystem it covers.

PageSubsystem
Memory mapAddress space, ports, and RAM layout
Flash memoryFlash geometry, protection, command sequences, boot write APIs, archive traces, and emulator differences
PagingPaired and independent Flash/RAM mapping, extended selectors, boot transition, and forced overlays
Bus timing and wait statesCPU-speed-selected Flash, RAM, LCD, and timer wait-state registers
ASIC status, identity, protection, and GPIOASIC status and identity, battery comparison, protection mode, and GPIO
The bcall mechanismrst 28h system calls and the jump table
InterruptsIM1 entry, USB and legacy routing, masks, status, acknowledgement, priority, and wake
Clock, timers, and powerClock domains, programmable timer API, RTC, APD cadence, and power-off
MD5 accelerator and boot APIMD5-assist ports, boot digest API, round descriptors, and Rabin hash transformation
Variables and the VATVariable Allocation Table and object types
Floating-point engineBCD floating-point format and OP registers
Tokenizer and TI-BASIC tokensToken tables, parser, and interpreter
Display and LCDLCD ports and screen buffers
Keyboard and link portKeyboard and link overview
Keypad and ON-key hardwareMatrix electrical behavior, scan timing, debounce, repeat, ON interrupts, and wake
Subsystem mapBcall API surface and the system through-line
Boot, contexts, and errorsBoot, the context system, _JError, and onSP
Memory managementRAM heap, VAT, userMem, Flash archive, and garbage collection
Flash page mapContents of each of the 64 Flash pages
RAM pagesRAM page selectors, page 83, and restore rules
Open questions and roadmapPrioritized future work

The sidebar groups subsystem deep dives beneath their parent pages. The Glossary defines TI-specific terms, and the bcall index is the alphabetical system-call reference.