- Mess based TI8x Emulator
- 16 May 2014 01:05:35 pm
- Last edited by TheStorm on 30 May 2014 12:44:20 pm; edited 1 time in total
For the past week or so I have been working on improving the Mess/Mame support for the TI73/83p series calculators.
For those who don't know what Mess is see here
One of the best things about Mess is it is an extremely portable and versatile emulator running on everything from desktops to phones to even web browsers. Yes I said web browsers, to see some examples of this in action see JSMESS[url], [url=https://archive.org/details/consolelivingroom]The Internet Archives Console Living Room section or Benryves GameGear FireTrack Port
There was very basic VTI level support for the ti83p and the ti83pse was totally broken.
There was no support for the flash chip at all, the ti83pse was just treated as a TI85 with more rom, aka not at all.
Hardware status
Where to get it/try it out
My current patches are at http://jonimoose.net/calcstuff/ti83pse.diff
Note the ti83p is slightly broken with the current patch due to me mostly testing on the ti83pse as any ti83pse changes will be backported to the ti83p driver
JSMESS Based
This will be third party OS's + freeboot only since I don't have a way to upload roms yet, I'll have to talk to Kerm on how he did it.
Future Goals
For those who don't know what Mess is see here
One of the best things about Mess is it is an extremely portable and versatile emulator running on everything from desktops to phones to even web browsers. Yes I said web browsers, to see some examples of this in action see JSMESS[url], [url=https://archive.org/details/consolelivingroom]The Internet Archives Console Living Room section or Benryves GameGear FireTrack Port
There was very basic VTI level support for the ti83p and the ti83pse was totally broken.
There was no support for the flash chip at all, the ti83pse was just treated as a TI85 with more rom, aka not at all.
Hardware status
- CPU
Mess already has a very robust z80 core, with an awesome debugger to boot.
- Flash chip (erase and autoselect)
Mess also already has great support for intel and AMD style flash devices such as the flash chip used in the calculators so it was just a matter of adding the 3 specific model chips used in the calcs, and support for the top boot sector which I implemented as a generic chip option in case other devices have other sized chips with the same features.
- LCD
There was already a very basic T6A04 driver written for the ti calcs but I plan to reimplement it based on the PTI LCD code in the future once I have the ports mapped more robustly.
- Memory Mapping
The mode 1 and mode 0 memory mapping works and is implemented but I still need to fix things so I can boot with 0x7f in the $0000 bank rather than booting as Tilem does which puts the calc in memory mapping mode 1 and puts the 0x7E in $4000 and 0x7F in $8000
Port 26 and 27 are completely unimplemented at this time.
I plan to reimplement the memory mapping by overriding the mess automatic memory mapping control with me manually handling reads. This way I can check PC on memory read and implement the no execute memory and boot with 0x7f in the $0000 bank like the real thing.
Update: The memory mapping has been redone to use MESS's generic bankdev driver for handling memory banks though this has made flash locking harder to implement short term it has simplified the code greatly. Still need to change things such that I can emulate flash locking as well as Port 26 and 27 but as they are rarely used this shouldn't be a huge issue for now.
- Linking and sound output
Sending of data/files is not implemented and I'm not sure yet how to go about doing so, Perhaps treat the files as games or parameters which can be passed to the mess command line?
Sound will be easily doable and may already work as mess already has a two wire to stereo sound driver to do the heavy lifting and I think I have the ports hooked up to it.
- Flash Locking
Flash can be locked and unlocked but the protected port output sequence is not required as of yet, this will require the memory read overrides mentioned above.
Update: No longer working due to Memory banking handling changes above, doing this properly will require me to create some sort of wrapper for the default memory handling which I haven't dug into how to properly do yet.
- Interrupts
Interrupts are emulated at a fixed speed which I haven't checked for correctness yet. Adjusting the timing via ports does nothing currently.
- Crystal Timers
Lol nope, nothing there yet
Update:Seem to mostly be working, at least enough to get the TI84+SE to boot and be happy about it!
- Ports supported or at least partially supported
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x20
- Saving
If you turn off the calculator before closing mess ram is restored just like on a real calc.
Flash is saved but not back to the original rom file and I'm not sure if it is restored before loading the original rom file or afterwards so it isn't clear which takes precedence.
- Input
I've also gotten a clickable layout setup based on the same ti83pse PNG used by jsTIfied and wabbitemu thanks to Kerm and Buckeye but I don't have that uploaded to share as of yet.
- RTC hardware
Not implemented yet.
Where to get it/try it out
My current patches are at http://jonimoose.net/calcstuff/ti83pse.diff
Note the ti83p is slightly broken with the current patch due to me mostly testing on the ti83pse as any ti83pse changes will be backported to the ti83p driver
JSMESS Based
This will be third party OS's + freeboot only since I don't have a way to upload roms yet, I'll have to talk to Kerm on how he did it.
- PongOS ti83p (Updated with Newer Build)
- Knight OS on a 83+
- Knight OS on a 83+SE
- If you want to try another Third Party OS let me know or if you want a build you can try with your own rom let me know and I'll help you get it setup.
Future Goals
- TI84pCSE support
Mostly LCD and adding the Flash chip equates. Flash is easy LCD is hard, the extra ports and GPIO stuff is all battery related so hardly worth the effort unless we want to emulate low battery condition properly.
- USB support, how crazy can we go with libusb? Or at least let them talk to other Mess instances.
- Custom debugger UI though the mess frontend frame work. The Mess debugger is pretty powerful but the layout could be a bit better and doesn't interface with include files or similar to handle linking with your code like the Flash Debugger can.
- Port some changes over to the TI m68k calc driver, though that seems fairly complete last I checked but I haven't looked closely.