You can now enjoy your TI graphing calculator right from your iOS6 Device! jsTIfied, Cemetech's online TI-83 Plus and TI-84 Plus emulator, is now a fully-functional emulator for Apple iPad, iPhone, and iPod Touch devices. The key breakthrough to make this a reality is the ability to encode a ROM in JPEG image data. You can use jsTIfied on a computer to export your ROM as JPEG file, which you can then send to your iOS device over iCloud, email, DropBox or iTunes. Once completed, you can navigate over to jsTIfied and upload the image as if it were a normal ROM. The steps required to download the image are on the jsTIfied page under the "ROM" tab. Remember that sharing of ROMs is illegal, even in this JPEG state.

Some drawbacks to using jsTIfied on your mobile device are speed and the lack of repeated button pressing. For speed, if your ROM fails to load it's best advised to close all of the apps that are running in the background. If you're still struggling for speed restart your device. The iPhone/iPod will run significantly slower than the iPad and in turn, the iPad significantly slower than the computer. When using the mouse in Doors CS, iOS will select the HTML box that contains the on-screen calculator and ask you if you'd like to copy it rather than continue that key press which will make navigating slightly more difficult as well as games that require you press and hold buttons, perhaps even pressing them rapidly. As such, jsTIfied on your mobile device is recommended for actual class related calculations!



Thanks goes out to Runer112 & comicIDIOT for testing the process on their devices and benryves for providing valuable JavaScript pointers. As always, if you have bug reports feel free to submit them!
Great job on this article, comicIDIOT! For those interested in more details about how this works, it relies on a form of non-cryptographic steganography, similar to how QR codes work. Your ROM is first converted into a string of bytes. It is then passed through the LZW compression algorithm, which helps eliminate the large blank spaces in ROMs and works well on z80 machine code. Next, the compressed ROM is encoded in a JPEG, with each pixel taking on one of 4 possible shades to encode two bits per pixel. When you load the resulting JPEG back to jsTIfied, it decodes each pixel to turn it back into a pair of bits, constructs the full byte-stream it originally encoded, and uses LZW to decompress the result. Voila, your ROM!
Has anyone tested the Dropbox ROM-loading in pre-iOS6 devices? Are there any other features that would restrict the OS version?
elfprince13 wrote:
Has anyone tested the Dropbox ROM-loading in pre-iOS6 devices? Are there any other features that would restrict the OS version?
I think that Runer112 test it, but I could be wrong. Limitations: obviously you cannot send programs directly to jsTIfied on iOS devices, but you can use SourceCoder to transfer TI-BASIC programs, and you can embed archives Apps, programs, etc in your ROM.
elfprince13 wrote:
Has anyone tested the Dropbox ROM-loading in pre-iOS6 devices? Are there any other features that would restrict the OS version?


Sadly, the feature that makes this iOS6 specific is the ability to upload photos & videos within Safari to a webpage; it's hard to believe such functionality didn't exist natively in iOS until 2012. If you have an app in iOS5 that supports photo uploads to a web page then theoretically it will work.

Unless you are aware of that, then I'm not sure what functionality DropBox has that would allow it to upload files for the browser, specifically Safari, that you're thinking of.
oh, I assumed we just gave it the http link to our image on dropbox.
elfprince13 wrote:
oh, I assumed we just gave it the http link to our image on dropbox.
I believe there's an iOS Dropbox App that you can put on your iDevice, and use to grab the ROM JPEG onto your iDevice. That's what I understood from Runer112, anyway.
Then that would mean it would have to be publicly accessible thus open for others to download it and opening up a bunch of legal issues that could happen to whomever appropriate.
Unfortunately I have an old iPod Touch that won't work with new iOS releases. It would be nice if we had an option to load any image over HTTP. I'm pretty sure if I have a private (security through obscurity) Dropbox URL the legal burden is on me not to share the link and/or to delete the file from Dropbox once jsTIfied has put it in local storage.
comicIDIOT wrote:
Then that would mean it would have to be publicly accessible thus open for others to download it and opening up a bunch of legal issues that could happen to whomever appropriate.
No, Dropbox folders are private unless you explictly make the public. A private Dropbox that you use to store copyrighted data is legal, as long as you have permissions/a license for that copyrighted data.
KermMartian wrote:
comicIDIOT wrote:
Then that would mean it would have to be publicly accessible thus open for others to download it and opening up a bunch of legal issues that could happen to whomever appropriate.
No, Dropbox folders are private unless you explictly make the public. A private Dropbox that you use to store copyrighted data is legal, as long as you have permissions/a license for that copyrighted data.


I didn't realise you posted before me as your post wasn't there when I started. That was in response to elfprince,

elfprince wrote:
oh, I assumed we just gave it the http link to our image on dropbox.
Quote:
When using the mouse in Doors CS, iOS will select the HTML box that contains the on-screen calculator and ask you if you'd like to copy it rather than continue that key press which will make navigating slightly more difficult as well as games that require you press and hold buttons, perhaps even pressing them rapidly.


If I may, I have two suggestions to fix this. First, try using the ontouchstart and ontouchend events (rather than onclick/onmousedown/onmouseup) on the buttons to allow them to repeat. You may need to first detect if the user's browser supports those events, meaning they are on a mobile device with a touchscreen.

Second, you can use CSS on the buttons to prevent the menu from popping up:

Code:
-webkit-user-select: none;
-webkit-touch-callout: none;


I've had to deal with these issues myself when making iOS webapps. Hopefully you might be able to fix them with these tips.
Thanks, ajcord! Do you have an iOS device that you might be able to use to help test this? Thanks in advance if you do.
Thanks for the tips! I bet they will come in handy.
elfprince13 wrote:
Thanks for the tips! I bet they will come in handy.


Seconded!
A follow-up: I'm doing some Googling about the best way to detect if a device supports the onTouchStart and onTouchEnd events, and it looks somewhat inconsistent. Do you have any suggestions on best practices, ajcord? Cf, for example, this StackOverflow thread.
KermMartian wrote:
A follow-up: I'm doing some Googling about the best way to detect if a device supports the onTouchStart and onTouchEnd events, and it looks somewhat inconsistent. Do you have any suggestions on best practices, ajcord? Cf, for example, this StackOverflow thread.


This webpage has a good description of how to go about this. It's been a while since I designed a web app to be compatible with both computers and mobile devices, so I'm a little rusty on how to do it. That webpage seems like a good way to do it. It also has a test page that demonstrates detecting touch events.

EDIT: Although it's probably overkill just for this one use, Modernizr will also detect touch event support along with a slew of other features.

KermMartian wrote:
Do you have an iOS device that you might be able to use to help test this?

Yes, I have a 3rd gen jailbroken iPod touch, but it runs iOS 5 so I don't think it's compatible. I may be able to use an iOS 6 iPad if necessary.
Great, that's exactly what I needed to know! I'll get on that support later today. I'm also collecting information on the new TI-84+CSE hardware from internal discussions that may help create jsTIfied's TI-84+CSE support...
I can't wait for TI-84+CSE support. But it seems to me that it would probably be really slow to manually control 320x240=76,800 color pixels individually on an HTML5 canvas compared to just 96x64=6,144 pixels for the regular monochrome calculators.
ajcord wrote:
I can't wait for TI-84+CSE support. But it seems to me that it would probably be really slow to manually control 320x240=76,800 color pixels individually on an HTML5 canvas compared to just 96x64=6,144 pixels for the regular monochrome calculators.
Well, based on how the new calculator's LCD seems to work, it might not be THAT bad, but yes, it will be slow. Not to mention that some browsers may balk at storing a 4MB ROM in DOM Storage. An even bigger problem (from the aesthetics end) is that I'm not going to be able to make a "realistic" skin for the new calculator, since the LCD is way too big for that.

Edit: To make what I'm saying more concrete, can you guys think of a better solution than this?

  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 2
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement