So there's a lot of TI-83 Plus hardware versions (over 30), and our best knowledge of where hardware configurations changed can be pretty fuzzy. Lots of quirks are known, but quirks aren't mapped against hardware revisions. I've embarked on a dark path: test every hardware version.
I have been working on a hybrid BASIC/Assembly project for some time that started out simply to see if certain behaviors mentioned on WikiTI panned out on real hardware, but has evolved into a reliable way to see what chips are in a calculator without opening it up. So far, I've observed:
So far, I've made the code run on TI-83, TI-83 Plus series, and TI-86, with support for TI-82 in the works and TI-73 on the backburner. I haven't publicly released any source code yet as I decide which tests I want to include and implement more ideas on what tests need to be done. I'm desperately looking for a way to differentiate the Inventec 6SI837 from the TI-REF 738X; so far, they seem pretty identical.
While writing this posf, I saw an article on Flash autoselect. That might be an interesting way to differentiate ASICs.
Emulators have provided rather... interesting results.
I have been working on a hybrid BASIC/Assembly project for some time that started out simply to see if certain behaviors mentioned on WikiTI panned out on real hardware, but has evolved into a reliable way to see what chips are in a calculator without opening it up. So far, I've observed:
- Bits 3 and 5 of the flags register can be (ab)used to differentiate Zilog Z84C00, Toshiba T84C00, and later Z80 IP cores. In particular, the T84C00 doesn't OR flags bit 5 with A when executing nop \ scf, while the Z84C00 does. TI's ASICs, like everything in the TI-84 series and the TI-REF 738X ASIC, keep flags bits 3 and 5 zero.
- Apparently, Z84C00 CPUs aren't subject to the interrupt-detection bug. Everything else I've tested is.
- Some TI-83s with hardware revision 'O' claim to contain Z180 CPUs, as labeled on the Zilog Z1A00106FSC ASIC that takes the place of the Z80-based Toshiba T6C79. I've never had the opportunity to verify this. I test every possible Z180 behavior in my code, and none of my calculators exhibit any Z180 results.
- Measuring LCD delay differentiates the T6A04(A), Novatek NT7564H, and whatever strange display driver Kinpo puts in their late-production calculators. Early TI-83 Pluses have easily measured LCD command delay, 2010-era TI-83 Pluses have practically zero command delay, and post-2018ish TI-83 Pluses have command delay but do not indicate when they are busy.
So far, I've made the code run on TI-83, TI-83 Plus series, and TI-86, with support for TI-82 in the works and TI-73 on the backburner. I haven't publicly released any source code yet as I decide which tests I want to include and implement more ideas on what tests need to be done. I'm desperately looking for a way to differentiate the Inventec 6SI837 from the TI-REF 738X; so far, they seem pretty identical.
While writing this posf, I saw an article on Flash autoselect. That might be an interesting way to differentiate ASICs.
Emulators have provided rather... interesting results.