ticalc.org
Basics Archives Community Services Programming
Hardware Help About Search Your Account
   Home :: Archives :: News :: Unity: TI-81 Assembly Program Loader

Unity: TI-81 Assembly Program Loader
Posted by Travis on 19 February 2010, 12:17 GMT

Back in August the seemingly impossible happened: A way to execute user-defined assembly code on the TI-81 was revealed to the world. Following up on this event, Benjamin Moody has put together a package of development tools and a program loader called Unity. The loader serves the same purpose as the assembly shells that were created for TI's early calculators—to provide an easier way to execute ASM programs on a calculator that was never intended to support them. It utilizes checksum verification to ensure that programs are typed in correctly before running them and activates an emergency key combination that can break out of a hung program. ASM subroutines can be created and called directly from anywhere in a TI-BASIC program.

PC-side development tools and some programming documentation are also included. Source code for the tools is provided so they can be compiled and used on different platforms.

Unity itself is believed to work on all TI-81 ROM versions. The development tools and example programs currently support ROM versions 1.6K, 1.8K, and 2.0V. Support for other ROM versions is likely to be possible by determining the memory locations of the ROM calls in those versions.

  Reply to this article


The comments below are written by ticalc.org visitors. Their views are not necessarily those of ticalc.org, and ticalc.org takes no responsibility for their content.


Re: Unity: TI-81 Assembly Program Loader
Travis Evans  Account Info

I think my favorite thing about this package (other than it being ASM on the TI-81, of course!) is the simplicity and platform-independence of it. Although the ZIP includes Windows executables for the development tools, it only took me a few seconds to run the makefiles and rebuild the executables for Linux, and then I was able to successfully build the example programs. Not to mention that the modifiable nature of FOSS is always a plus. :)

Reply to this comment    19 February 2010, 12:40 GMT

Re: Unity: TI-81 Assembly Program Loader
nyall Account Info
(Web Page)

Someone should make a lego robot that types in programs for you

Reply to this comment    19 February 2010, 15:17 GMT


Re: Re: Unity: TI-81 Assembly Program Loader
Travis Evans  Account Info

Haha, I was actually thinking a robot or machine like that would be kind of cool myself while typing stuff in to test it out. Kind of like how I remember reading about a Betamax automatic cassette changer back in the days that worked by literally mechanically pressing the buttons on the VCR.

Reply to this comment    19 February 2010, 17:02 GMT

Re: Unity: TI-81 Assembly Program Loader
DWedit  Account Info
(Web Page)

What good ASM games are small enough to fit on the TI81? I guess there's always IceClimb.

Reply to this comment    19 February 2010, 19:02 GMT


Re: Re: Unity: TI-81 Assembly Program Loader
Benjamin Moody  Account Info

I think it makes an interesting challenge. What's the most amazing thing you can do in ~1100 bytes of code?

(Actually, optimizing the loader to where it would fit in the available space was also quite exciting.)

Reply to this comment    21 February 2010, 02:35 GMT

Re: Unity: TI-81 Assembly Program Loader
Kevin Ouellet Account Info
(Web Page)

Nice to hear, I can't wait for ROM 1.1K support ^^

Reply to this comment    19 February 2010, 19:57 GMT


Re: Re: Unity: TI-81 Assembly Program Loader
Benjamin Moody  Account Info

I don't know anything, yet, about ROM 1.1K. More information is always welcome. :)

The trick, as Travis has pointed out, is finding the addresses of ROM routines. Obviously a complete ROM dump would be useful (both for testing programs and for the sake of knowing what's different about each version.) It's not necessarily required, though; the ROM versions are all similar enough that you could, in theory, write small assembly programs to automatically locate each of the ROM routines you're interested in.

I believe critor said that was going to try to get a complete dump of version 1.1K, but if you'd like to help, just send me an email.

Reply to this comment    21 February 2010, 05:22 GMT


Re: Re: Re: Unity: TI-81 Assembly Program Loader
Kevin Ouellet Account Info
(Web Page)

I was supposed to help, and attempted at trying Randy's method on my 81, but this one failed, and when it came time to try yours, I got sidetracked by life issues and pretty much forgot about a lot of stuff. Eventually Critor got a 81 1.1K and gave it a try. I don't exactly remember if he had any success, though, because I haven't visited TI-BANK in a long while. Unfortunately, I would be unable to help further than running programs other people make to try to crack my calc, because I do not know assembly.

Reply to this comment    21 February 2010, 09:05 GMT


Re: Re: Re: Re: Unity: TI-81 Assembly Program Loader
critor  Account Info
(Web Page)

The ROM dumper is working perfectly on the TI-81 1.1K.

I just have to find the time to make a good quality video capture.

Reply to this comment    21 February 2010, 20:41 GMT

Re: Unity: TI-81 Assembly Program Loader
schoolhacker hacker  Account Info
(Web Page)

This is actually really cool!
I remember that they did the same kind of thing with the TI-85 lol...

i used to love that thing when i didn't get my TI-84 yet... though it only had ram and no rom... so it only has a maximum of 25000 space and every time you reset it or something everything is lost... :(

p.s. I JUST UPLOADED A WHOLE BUNCH OF MY NEW TINYCARZ MAPS!!!

Reply to this comment    19 February 2010, 21:31 GMT


Re: Re: Unity: TI-81 Assembly Program Loader
Kevin Ouellet Account Info
(Web Page)

Yeah, the hard part with the 81, though, is that it has no link port, like the 85 had, so everything needs to be typed by hand, abusing the calc OS exploits. On the 85, someone just had to send an hacked backup file from his computer to the 85 and it was done.

As for Tinycarz maps, you remind me I haven't played this in a long while, I should give it another try with your maps

Reply to this comment    20 February 2010, 03:42 GMT


Re: Re: Re: Unity: TI-81 Assembly Program Loader
schoolhacker hacker  Account Info
(Web Page)

wow... no link port?
now that is amazing... though i dont think i would personally even bother adding programs on to it then... since it would be a hugh pain... and a reset or crash (made by a typing mistake for example) would kill everything!

p.s. i am glad that you are going to try my Tinycarz tracks! :D email me if you have any suggestions!

Reply to this comment    20 February 2010, 15:29 GMT


Re: Re: Re: Re: Unity: TI-81 Assembly Program Loader
Travis Evans  Account Info

That is by far what makes this so intriguing—the ASM programs can be typed in and triggered using *only* the keyboard, even though the calculator was never designed for ASM support! It's no wonder no one even bothered with the TI-81 for all these years. It just seemed to be a given that “hacked” ASM was impossible without a link port, plain and simple.

The fact that you have to type in the programs and go through a fairly complex installation procedure (not to mention having a mere 2400 bytes total of program storage) is the main thing that limits the practicality of this. Even so, though, nothing beats the sheer “coolness factor” of this due to its nature. :)

You do have to be very careful entering the code that initially installs Unity. But the beauty is that once you do that, it does a checksum test on all additional ASM programs you enter so if you make a typing error, it just gives you an error message and lets you go to the approximate location of the error (just like how TI-OS does with BASIC) instead of crashing.

Reply to this comment    20 February 2010, 16:49 GMT


Re: Re: Re: Re: Re: Unity: TI-81 Assembly Program Loader
schoolhacker hacker  Account Info
(Web Page)

hmm... well thats nice...
thats very nice...

the ability to program asm programs on the calculator is soo nice!

safety is the most important feature i would think for a calculator... other wise it will remain stock and boring... (really annoying if reset... :()

Reply to this comment    20 February 2010, 17:36 GMT

Re: Unity: TI-81 Assembly Program Loader
critor  Account Info
(Web Page)

Does anyone here still have a TI-81 with one of the unsupported ROM versions?

(except ROM 1.1K - I'm currently dumping it)

Other missing ROM vesions are to my knowledge:
* 1.0 (2 records: 04/1990 - 10/1990)
* 1.1 (1 record: 01/1991)
* 1.5K (1 record: 03/1991)
* 1.6V (1 record: 05/1991)

They are very rare, as they were only available for a few months, and only on the 1st TI-81 hardware (11 records: 04/1990 - 09/1991)

If you still have a TI-81 with one of those ROMs, it is very important to dump the ROM (as it may be the last one in the world), or to contact someone who can dump the ROM.

Else, those systems will be lost forever...

Thank you for helping us.

Reply to this comment    21 February 2010, 20:55 GMT


Re: Re: Unity: TI-81 Assembly Program Loader
Rick Skrbina Rick Skrbna  Account Info

How are you guys dumping the ROM? Do you display the data on screen, or do you actually pull out the chip and dump it with a device programmer?

Reply to this comment    26 February 2010, 01:25 GMT

Re: Re: Re: Unity: TI-81 Assembly Program Loader
Rick Skrbina Rick Skrbna  Account Info

By the way... I just checked my TI 81's ROM version. The screen said:

Enter self-test?
1.1

(Not 1.1K) Is this one of those rare ones you mentioned? I could probably dump the ROM with my EPROM programmer if it is.

Reply to this comment    26 February 2010, 01:32 GMT


Re: Re: Re: Re: Unity: TI-81 Assembly Program Loader
critor  Account Info
(Web Page)

Wonderfull!

Yes ROM 1.1 is on of the rare ROMs we're missing.
Wonderfull! :-)

For example, I've used en EPROM programmer to dump the TI-80 ROM (as no OS exploit has been found for that calculator).
The TI-80 calculator includes a Sharp LH5359 ROM chip.
Your TI-81 should include exactly the same chip.
There is no datasheet fo the LH5359, but it seems read-compatible with the AMD Am27C512. I could dump the ROM after selecting that chip.

If you prefer, a less "dangerous" way to dump the ROM does exist...
It's been developped by Benjamin.
You need to type a "long" assembly program without errors, and then there is some trick to run it.

Which way do you prefer?

Reply to this comment    26 February 2010, 19:26 GMT


Re: Re: Re: Unity: TI-81 Assembly Program Loader
critor  Account Info
(Web Page)

For the TI-81, we're displaying data on screen.

But the other way is possible too!
The Sharp LH5359 ROM chip can be dumped with an EPROM programmer, by selecting an AMD Am27C512 (or Am27C256).

Reply to this comment    26 February 2010, 19:48 GMT

Re: Unity: TI-81 Assembly Program Loader
Zeroko  Account Info
(Web Page)

This is awesome!

Regarding supporting other ROM versions: I was planning on making an automatic executable patcher that compared 2 ROMs using something like longest common subsequence modulo address renaming to automatically figure out where the routines were moved once each version was dumped, but I got distracted, & I guess it is unnecessary now.

Reply to this comment    23 February 2010, 23:18 GMT

  Copyright © 1996-2012, the ticalc.org project. All rights reserved. | Contact Us | Disclaimer