TI-84 Plus Emulation: Difference between revisions

From Hackspire
Jump to navigation Jump to search
(Moved MirageOS and usb8x)
(Added section on Z80 emulation and links)
Line 13: Line 13:


==Hardware emulation==
==Hardware emulation==
===Z80===
The emulated Z80 has several [[Special Z80 Instructions|special opcodes]], which control functions such as linking, Flash reading and writing, and lock/unlock the TI-84+ keypad.
===USB===
===USB===
The USB ports are not emulated, events on the USB bus are not propagated to the memory-mapped port according to CalcSys and usb8x's USBTools and portmon. The TI-84 Plus (and Titanium) USB controller has a quite complicated port interface, and the TI-Nspire probably uses a different controller. Texas Instruments has probably preferred to integrate a DBUS to the snap-in TI-84 Plus Keypad and emulate it rather than to waste time on USB emulation.
The USB ports are not emulated, events on the USB bus are not propagated to the memory-mapped port according to CalcSys and usb8x's USBTools and portmon. The TI-84 Plus (and Titanium) USB controller has a quite complicated port interface, and the TI-Nspire probably uses a different controller. Texas Instruments has probably preferred to integrate a DBUS to the snap-in TI-84 Plus Keypad and emulate it rather than to waste time on USB emulation.
Line 23: Line 25:
The Flash protection through port 14h works as it does in a real TI-84 Plus Silver Edition. However, there were some changes to communicating with the Flash chip.
The Flash protection through port 14h works as it does in a real TI-84 Plus Silver Edition. However, there were some changes to communicating with the Flash chip.


Instead of emulating the odd method of communicating with the Flash chip through memory-mapped commands, these commands have been replaced with invalid instructions, which the emulator will catch and intercept (0EDh, 0EEh for sector erasing, 0EDh, 0EFh for programming). When it comes across one of these instructions, it will check the destination Flash page and will IGNORE writes/erases if it does not fall within the user archive (pages 08h-69h).
Instead of emulating the odd method of communicating with the Flash chip through memory-mapped commands, these commands have been replaced with [[Special Z80 Instructions|invalid instructions]], which the emulator will catch and intercept (0EDh, 0EEh for sector erasing, 0EDh, 0EFh for programming). When it comes across one of these instructions, it will check the destination Flash page and will IGNORE writes/erases if it does not fall within the user archive (pages 08h-69h).


Writes to the user archive will be stored in the Nspire file system and preserved if the keypad is removed. However, if you do manage to write to OS space, writes here are NOT preserved and are restored to the original OS contents when re-inserting the keypad.
Writes to the user archive will be stored in the Nspire file system and preserved if the keypad is removed. However, if you do manage to write to OS space, writes here are NOT preserved and are restored to the original OS contents when re-inserting the keypad.

Revision as of 01:14, 25 November 2007

TI-84 Plus OS

Image file

The archive memory of the TI-84 Plus is integrated to the TI-NSpire OS as 64kb files in a PK-Zip file (see the OS upgrade file format). The OS code is encrypted and perhaps compressed with the rest of the TI-Nspire OS code in certificate field 8070. Fortunately a ROM image of the emulated TI-84 Plus can be dumped through the DBUS with standard tools such as TiLP.

OS emulation

Do not expect the emulated TI-84 Plus to offer more features than the real one. The speed is roughly the same, and the RAM and archive memory have equivalent sizes (the whole memory of the TI-Nspire is not visible from the emulated TI-84 Plus).

Version 2.42 of TI-84 Plus OS is used while the latest version available for the real TI-84 Plus is 2.41. The two versions have exactly the same size (TODO: confirm). The version of the boot code is 1.02 as the latest TI-84 Plus boot version, according to 0x400F of ROM page 7F (see WikiTI).

Some features are disabled in v2.42: the key combo for the self-test doesn't work, and the TI-84 Plus OS can't be upgraded (an error is returned by the computer link software).

The TI-84 Plus ROM archive memory is set up with preinstalled flash applications, but they can be deleted from the current memory image.

Hardware emulation

Z80

The emulated Z80 has several special opcodes, which control functions such as linking, Flash reading and writing, and lock/unlock the TI-84+ keypad.

USB

The USB ports are not emulated, events on the USB bus are not propagated to the memory-mapped port according to CalcSys and usb8x's USBTools and portmon. The TI-84 Plus (and Titanium) USB controller has a quite complicated port interface, and the TI-Nspire probably uses a different controller. Texas Instruments has probably preferred to integrate a DBUS to the snap-in TI-84 Plus Keypad and emulate it rather than to waste time on USB emulation.

When connected to a computer linking software such as TI-Connect or TiLP, a TI-89 Titanium is strangely advertised by the USB descriptors. Commands can be sent by the computer to this fake Titanium through the OUT endpoint, but the TI-Nspire never responses. Forcing TI-84 Plus as device type in TiLP doesn't change anything. Since the USB descriptors of the TI-84 Plus ROM image in the TI-Nspire OS have not been changed, the USB attachment is entirely handled by the TI-Nspire, and not by the emulated TI-84 Plus which never sees the USB events as described above.

Connecting a USB optical mouse with an adapter in TI-84 Plus mode make the mouse flicker as in the TI-Nspire standard mode, but much slower (~1 second instead of ~0,2s).

Flash writing

The Flash protection through port 14h works as it does in a real TI-84 Plus Silver Edition. However, there were some changes to communicating with the Flash chip.

Instead of emulating the odd method of communicating with the Flash chip through memory-mapped commands, these commands have been replaced with invalid instructions, which the emulator will catch and intercept (0EDh, 0EEh for sector erasing, 0EDh, 0EFh for programming). When it comes across one of these instructions, it will check the destination Flash page and will IGNORE writes/erases if it does not fall within the user archive (pages 08h-69h).

Writes to the user archive will be stored in the Nspire file system and preserved if the keypad is removed. However, if you do manage to write to OS space, writes here are NOT preserved and are restored to the original OS contents when re-inserting the keypad.

If the certificate sector is erased and then the calculator is fully reset, the certificate is rebuilt using the same calculator ID and validation number. It is unknown whether this is stored somewhere or calculated, perhaps based on the Nspire's unique ID.

Working and non-working programs

Please mention any TI-84 Plus programs which do not work with the TI-Nspire integrated emulator, with enough details for the authors or other hackers to fix them. Mention only noteworthy programs when they work, which wouldn't obviously be compatible for example because of special use of the TI-84 Plus hardware.

Working

  • Noshell : Should be thoroughly tested
  • MirageOS: Brandon Wilson has released a Patch for MirageOS 1.2. Without it the TI-Nspire reboots when run with at least one assembly program in memory.

Not working

?

We don't know

Programs we would like you to try and comment:

We need your help

  • Try as many assembly programs and flash applications for TI-84 Plus as possible on the TI-Nspire to find which ones do not work. We will try to make them compatible with the TI-Nspire, and may be TI-Nspire hackers may use the underlying emulation flaw. You may also try the non-tested and noteworthy programs mentionned above.
  • Calculate the difference between the CPU and the DBUS speed of the emulated TI-84 Plus and a real one
  • Test intenstly and in details the accuracy of the emulation (CPU, memory mapping, ports, ...) and report your tests.