83Plus:History of TI-8x hardware

From WikiTI
Jump to: navigation, search

TI's first graphing calculator was the TI-81, released in 1990. The TI-81 was also TI's first Z80-based graphing calculator. It provided full scientific calculator functionality, equation graphing, matrix math, basic statistics, and user programs. (The latter functionality recalls the pocket computers that had proliferated in the 80s.) Interestingly, the backup battery feature was not present until February 1992, but mold design indicates the feature was planned.

In 1993, TI introduced the TI-82, bringing some features from the TI-85 into the TI-81 market. It introduced some new statistics functions, allows 10 function/polar graphs instead of the TI-81's four, and updates the TI-BASIC implementation to include most functions seen in the TI-83 series. It also added a link port, and was the first calculator compatible with the TI CBL (which would not be announced for another ten months). The first two months of production (May and June 1993) saw 9 different ROM versions, and at least one bug noticeable to the user was fixed during that period. Assembly programming was a challenge on the TI-82, and it was not until 1997 that a shell was released.

The immediate predecessor to the TI-83 Plus was the TI-83, released in 1996. The TI-83 featured complex numbers, graphing of both equations and data, custom number lists, improved matrix operations, an even more sophisticated statistics package, and a slightly-updated BASIC. TI also updated the LCD to a higher contrast display, with black pixels on a white background instead of the TI-82's blue pixels on a green background. Perhaps most importantly, TI officially supported assembly programming with the TI-83, releasing an include file for assemblers and documentation on the TI-83's internal functionality.

In 1999, the TI-83 Plus came. It featured all of the same math functionality, but added support for operating system upgrades, persistent installable applications, and nonvolatile long-term user data storage (the archive); the assembly programming implementation was updated to support 'squished' programs, greatly reducing the binary sizes.

The TI-83 Plus originally was based around five main integrated circuit (IC) chips: A CMOS Z80 CPU, a 32 KB SRAM chip, a 512 KB flash chip, an LCD driver with embedded VRAM, and a glue-logic ASIC (Application-Specific Integrated Circuit) that shuttles data between the other chips as well as interfacing with the keyboard and serial port (called the DBUS). TI calls the ASIC the "gate array". All logic was 5.0 V TTL logic.

The TI-83 Plus caught on in time. The TI-83 Ion shell was ported, and games targeting both models were common for many years. TI sold an SDK (which is now free) for applications for many years, hoping to make money off an app store with pay-apps like CellSheet (an Excel-like spreadsheet app). The payment system was enforced through the calculator's certificate system. When a user started buying apps, the user would be issued a cryptographically-signed certificate update (often embedded into the app itself) containing one or more keys unique to that user, allowing the user to install apps signed for that user and that user only. In turn, pay apps would be signed differently than free apps.

Not long after the TI-83 Plus came out, TI started working on the next calculator, the TI-83 Plus Silver Edition, released in 2001. It integrated the CPU into the gate array, and added some significant functionality to the gate array. TI also switched over to 3.3 V CMOS logic, yet failed to lower the voltage specification to 3.3 V. (Indeed, if you remove the OS's battery level checks, you can run the calculator without issue with 3 AAAs instead of 4.) The functionality added to the advanced gate array includes support for 32-256 K of RAM, support for 1-4 MB of flash, more precise and sophisticated write and execution permissions, variable CPU speed, a hardware DBUS assist so bits need not be bit-banged, support for more precise battery level measurement, support for a 32768 Hz quartz crystal oscillator used for both interrupts and timing, MD5 hardware-assist, and support for wait-states on the LCD, RAM, and flash.

The TI-83 Plus SE was a sort of beta version of the TI-84 Plus series, with limited production intended from the start. Throughout its run, the TI-83 Plus also continued to be produced. The actual production units all feature 128 K of RAM and 2 MB of flash. For unknown reasons, the boot code (even in the TI-84 Plus C SE) never sets the correct RAM size, making every other RAM page executable. TI initially thought the TI-83 Plus SE could be operated at up to 25 MHz, and included 6, 15, 20, and 25 MHz CPU speed options, but production units were capped at 15 MHz. Modern overclocking tests show instability above 22 MHz, so it seems likely that TI capped the CPU speed at 15 MHz just to be safe. The TI-83 Plus SE also came bundled with many if not all of TI's official pay-apps.

In time, some apps using the extra hardware, RAM, and faster CPU of the TI-83 Plus SE were produced, but most programmers were unwilling to limit themselves to the TI-83 Plus SE only, and so such software remained rare. Michael Vincent probably produced the most notable programs: Omnicalc's RAM restore feature, which stored a backup of RAM into the extra RAM after every power-off; and Emu8x, which could emulate other Z80 models, including the TI-86 (with less RAM), TI-83, and TI-82.

In the early 2000s, Michael Vincent discovered a flaw in the TI-83 Plus SE boot code that allowed bypassing the OS cryptographic signature check. He started making an operating system, and TI shut him down. Future models would fix that particular flaw. In time, however, additional flaws in the OS and boot code would be discovered, allowing user programs to write and erase flash at will. Many of these flaws remain unfixed, and Brandon Wilson wrote a program that allows arbitrary unsigned OSes to be loaded.

In 2004, TI discontinued the TI-83 Plus SE, and introduced the TI-84 Plus and TI-84 Plus SE, based on the TI-83 Plus SE hardware. The two new models introduced a USB port, a real-time clock, and eight GPIO (General Purpose Input/Output) pins. All hardware in the TI-84 Plus and TI-84 Plus SE is completely identical, except for the flash chip; the boot sector in the flash chip initializes the flash chip size port differently. After that, the boot code and OS use that port to differentiate the models. (It's possible to query the flash chip itself for its size using autoselect commands, but TI doesn't do this. Instead, the boot sector is hard-coded to emit the correct value for a particular chip size.)

Work on the TI-84 Plus USB produced some interesting USB demos, but overall USB never caught on. Similar to the TI-83 Plus SE, programmers were reluctant to produce TI-84 Plus-only software.

For a few years, TI bought below-spec LCD drivers for the TI-84 Plus series. These drivers operated far slower than the specs said they should, and calculators containing them could not run many games unless users ran a program to configure the correct wait-state count.

Sometime in 2006ish, TI silently issued a revision of the TI-83 Plus hardware, moving it to 3.3 V logic and integrating the RAM and CPU into the gate array.

TI also issued a revision to the TI-84 Plus series hardware, in which they reduced the RAM from 128 K to 48 K, breaking any TI-83 Plus SE software that used the extra RAM. TI's own software only used one of the extra six RAM pages, so their software was not broken.

In 2009, Benjamin Moody realized that PC hardware had advanced to the point that 512-bit RSA keys could be factored in just a few weeks, and proceeded to do so. This generated some controversy, as it was the first time cryptographic keys had been factored, instead of reverse-engineered through weaknesses in implementation. Eventually, TI responded by upgrading the TI-84 Plus OS key to 2048-bit RSA without comment. The new signature check now takes over seven minutes (compared to less than thirty seconds for the 512-bit check) in part due to an inefficient implementation. The new RSA check prompted a new round of reverse-engineering of the TI-83/84 Plus series hardware. It was long known that the flash chips TI uses can lock certain sectors so they cannot be modified or erased, and the community long assumed that the boot sector was so protected. It turns out, however, that the TI-83 Plus SE and TI-84 Plus series never used that ability, and the new 3.3 V logic TI-83 Pluses don't either. Instead, the gate array uses the flash chip size port to determine what sectors to lock. Therefore, by changing the flash chip size port, the boot sectors could be unlocked and modified. (The TI-83 Plus is exempted from this hack because it lacks a flash chip size port.)

The TI-84 Plus series went without major updates for many years, until OS 2.5x in 2010. This update added MathPrint. MathPrint heavily modified many screen-related BCALLs, making their behavior completely incompatible with existing 3rd party software unless the software disabled MathPrint.

In spring of 2013, TI slapped a new color LCD driver onto the old 128 K TI-84 Plus gate array, and called the new model the TI-84 Plus C SE. They upgraded the flash chip to 4 MB, because using 8 MB chips would require 9-bit page numbers. The model also got a lithium-ion rechargable battery, because the color LCD would eat AAAs far too quickly. Meanwhile, the CPU speed remained unchanged. The new color LCD has too many pixels, and the 15 MHz CPU unpipelined CPU is too slow to write to all of them quickly, so overall the new model feels very sluggish. Even worse, TI did not very well optimize their screen routines.

Thus far, the TI-84 Plus C SE community has failed to produce the breadth of software the TI-83 Plus has. Some interesting games exist, but neat utilities like Symbolic and Omnicalc remain absent.