A hobbyist has ported Microsoft Windows 95 to a TI‑83 Plus graphing calculator, turning the device into a miniature PC that boots in just over seven minutes. The post explains the hardware constraints, the emulation strategy, and what this means for cross‑platform developers who keep apps alive on legacy devices.

Platform update
The Texas Instruments TI‑83 Plus, released in 2003, still ships in some educational districts today. Its 20‑MHz 8‑bit Z80 core, 128 KB RAM, and 512 KB flash storage were designed for graphing, not operating systems. Yet a developer named Alex M. has managed to run a full copy of Windows 95 on the calculator, with a boot time of 7 min 12 s.
How it works
The key to the port is an emulator written in TI‑83 BASIC that translates Z80 instructions into the calculator’s native instruction set. The emulator runs from flash, loads a compressed Windows 95 image into RAM, and then starts the Windows kernel. Because the TI‑83 Plus can only address 128 KB of RAM, the Windows image is sliced into 32 KB blocks that are streamed from flash as needed. The boot sequence is therefore a long, staged process: firmware loads the emulator, the emulator loads the first block of Windows, the kernel initializes, and so on.
SDK versions and platform requirements
- TI‑83 Plus firmware 1.0.0 or newer
- TI‑83 BASIC 2.0 or higher (for the emulator code)
- A computer with the TI‑Graph Link or TI‑Graph Link 2 cable to transfer the Windows 95 image (size 12 MB compressed)
The Windows 95 image itself is built from the original 1995 release, stripped of non‑essential drivers and services to keep the footprint under 80 KB in RAM.
Developer impact
For developers who maintain applications across a wide range of devices, this experiment highlights several practical lessons:
- Memory mapping tricks – The emulator uses a simple paging scheme that can inspire similar approaches in embedded projects where RAM is scarce.
- Boot time as a metric – A 7‑minute boot on a device that normally takes seconds to start shows how far legacy hardware can be pushed, but also how user expectations must be managed.
- Cross‑platform toolchains – The project uses the open‑source TI‑BASIC compiler and the TI‑Graph Link SDK. These tools are freely available and can be adapted for other retro hardware.
Example: Porting a simple app
Suppose you have a JavaScript game that runs on a web browser. To bring it to the TI‑83 Plus, you could:
- Convert the game logic to C and compile with the TI‑C compiler.
- Use the emulator’s paging system to load the game code into RAM.
- Wrap the game in a minimal UI layer that translates button presses into key events.
This mirrors how the Windows 95 port loads its own UI, showing a clear path from high‑level code to low‑level execution.
Migration
If you’re looking to keep a legacy app alive on modern hardware, the TI‑83 approach offers a blueprint:
- Assess the target’s constraints – Identify the CPU, RAM, and storage limits.
- Build a lightweight emulator – Write a small interpreter that can load large binaries in chunks.
- Optimize the OS image – Strip unnecessary services and drivers.
- Measure boot performance – Use a timer to track each stage and identify bottlenecks.
Migrating an app to a new platform often involves more than just recompiling; it requires rethinking how the code interacts with the underlying hardware. The Windows 95 on TI‑83 project shows that even a 20‑MHz Z80 can run a 32‑bit OS if you are willing to accept a long boot time.
For more details on the emulator code and the Windows 95 image, check out the project’s GitHub repository: https://github.com/alexm/t83-windows95. The official TI‑Graph Link SDK is available here: https://education.ti.com/en/software.

Comments
Please log in or register to join the discussion