Installation: Compile the source using ./compile.sh in the source folder, then copy the binaries it produces whereever you like so that you can run them. You should end up with 89ttotext, 89tfromtxt, sync89t, and you'll also have update.py. Sync89t shouldn't be used directly, use update.py instead - usage.html explains using it.
ToTxt Usage: Change to the folder with your .89t files, and type '89ttotext' without the quotes.
It will convert every .89t file (and untokenized .89p files)
in the current folder to .txt files. It does not delete
or modify any .89t or .89p files when it does this, though if a .txt file already exists for a particular .89t or .89p, the old
.txt will be overwritten. The same goes if you have a .txt file with the same name (sans extension) as a .89t or .89p file,
it will be overwritten. Only the text body of the .89t or .89p is extracted, the header and footer are ignored.
The .txt files will be placed in folders the same as they were in on your TI-89. I.E. if you have a folder
on your TI-89 named "current" and a folder named "math" and you get all the .89t files from those folders,
and the graphlink puts them all in one folder (Both the old graphlink software and Ti-Connect do so, although Ti-Connect names them 'foldername.filename.89t'),
you can run the ToTxt.exe (Windows) or 89ttotxt (linux)
from that folder, and it will make a folder named "current" (If one does not already exist) and a folder named "math,"
and it will place the .txt files into whichever folder they're supposed to be in.
FromTxt Usage: Change to the folder with your .89t files, and type '89tfromtext' without the quotes.. It will convert every .txt file in the subfolders to a .89t file, unless an .89p file exists with the same name,
in which case it will ignore that particular .txt file. It does not delete
or modify any .txt files when it does this, though if a .89t file already exists for a particular .txt, the old
.89t will be overwritten. The same goes if you have a .89t file with the same name (sans extension) as a .txt file,
it will be overwritten. If you want to convert .89t files to .txt files, you should use 89ttotext instead.
The .89t files will be placed in the folder the program is run from, and will be named like Ti-Connect names them,
'foldername.filename.89t'.
FAQ
- I'm curious about the file format of .89t files. Do you have any documentation on that?
- Yes, I made some while I was figuring it out in preparation for making the 89t-from-txt converter. It's
named '89tformat.txt' and is included with the source. You can also find some more detailed TI-89 file format information
(and more, such as link protocols, tokenized characters, etc) online here, which I looked at after mostly figuring out the format
myself - I was nowhere near an Internet connection when I was figuring it out, or I would have searched before trying to figure it out myself, though I thought it would be harder to figure out than it was - There were only two things I hadn't figured out when I did check that page. First, what the two bytes starting at position 0x58 were for, and second, how to calculate the checksum
(the two bytes at the end of the file). Of course, I didn't know what all the constant stuff meant, like the two bytes at 0x08, or the 6 bytes at 0x3a, or the 0x0B at 0x48, or the 8 bytes at 0x4e, etc, but those didn't differ in any of my .89t files. The two at 0x58 were often 00 01 - but not always. 89t-from-txt just writes 00 01 all the time, which works fine. If you're curious, it turned out to be the cursor position, and 01 00 is the start of the file, which is why that always works fine.
- Is it doing anything? It exits immediately after I start it!
- Yes, it finished. It's wicked fast. If running the To-Txt program,
check to see if it made some folders named after the folders on your TI-89,
and placed your .txt files in them. If running the From-Txt program, it should have
made .89t files if they don't already exist, or replaced the existing ones if they did already exist.
Check the timestamp on those .89t files to see that they've changed. The update script, on the other hand, DOES print output - it shows a list of files that had changed since the last run and got their other file rebuilt (I mean that when you change a txt file and then run update, update will build an 89t from it and report that that txt file had been changed and its 89t file rebuilt).
- If it can't write to or create files, it will
give an error in a message box print an error message to standard output (On Windows, it uses a message box, but not on Linux).
- If it crashes, let me know.
- Why is the .txt->.89t converter named 'FromTxt' instead of 'To89t'? And why are they 89ttotxt and 89ttfromtxt on Linux?
- Which sounds better to you? I think FromTxt sounds better.
- They're named thus on Linux because I thought some other program might already be named 'FromTxt' or 'ToTxt', or some other program created in the future, etc, and since binaries are usually installed to be globally accessable, they needed a unique name. Tacking '89t' on the front works and communicates their purpose.
- Why does this make files with .txt on the end of them? We don't need that!
- Because I LIKE my text files to have a .txt extension. Stuff it (or edit the source and recompile. You're using Linux, this should be easy for you :P).
- Why in Linus Torvalds' name is there a WINDOWS version of this program?
- Because windows is what I originally coded it for.
If you look at the source, you can see it's littered with #defines to deal with the differences
between linux and windows. (Although sync89t actually has the same code for windows and linux, since it doesn't look in directories for files, update.py does that for it)
- Why didn't you set it up so we can do ./configure;make;make install?
- Because I found automake and/or autoconf and/or the rest of that to be a major pain in the ass.
- Look at the size of the compile.sh. It's TINY.
Besides, I don't have a clue how to tell what platform it's building on normally, and I simply
used an #ifdef WINDOWS and set the windows compile.bat to define WINDOWS...
- Anyhow, just run compile.sh, and if you have g++ installed, it should compile it for you and make executable files named '89ttotxt' '89tfromtxt' and 'sync89t'.
- Hey, why is this in source form only for Linux - why aren't there any pre-built binaries?
- Primarily, I don't have a Linux box to compile it on, and because I'd probably need an install of most of the standard distros in order to make binaries for each, and I really don't want to waste HD space on half a dozen different OSes when I only use one regularly. (If I had one, it would be Gentoo, and if you've tried Gentoo, you know it's source-based to begin with)
- Most linux installations have development tools and Python installed on them to begin with, making compiling this even easier than on Windows.
- Personally, I like Gentoo best of all the free OSes I've tried, but am actually using Windows XP at the moment, mostly because most of the programs I use simply don't work in anything other than Windows. And because I'm using C# and don't know how far along .gnu or mono.net are (and I don't want to have to worry about whether a bug is in the implementation of .NET or in my code, so I use MS's .NET 1.1). And because WINE doesn't work on pretty much anything I use.
- Why was this written?
- Because I write ideas, documentations, c++ code, notes, keep lists of bugs, and such,
on my TI-89 calculator, and when I'm coding on the computer, it's useful to have access to those as a regular
text file I can have open in my text-editor along with other things, which I can copy and paste, etc.
- Why was this released?
- Because I didn't see anything similar on ticalc.org,
and it's useful to me, so it might be useful to others. And judging by the fact that people keep downloading it,
it must be useful or at least interesting to somebody! When I was preparing to write FromTxt, I first did a cursory search to see if anyone had written anything to convert .txt files back to .89t files in
the year or so since I originally posted the To-Txt program & source, but all I found was a post on some forum
(on ti-89.org, if I remember?) wherein a person asked about such a thing, and if I read the date correctly, it was
posted only two months ago, which would tend to imply that that problem still hadn't been solved. Mind you, I don't
hang usually around in TI-89 forums or IRC rooms or wherever else everyone else gathers, so I wouldn't have a clue if
something was released unless it was on ticalc.org or if I had stumbled onto it while googling.
- Why did your previous readme's FAQ say "Why this was released?"
- Good question. Every time I read it, I saw "Why was this released," not what it ACTUALLY said. Heh.
- Why is the source included?
- In case anyone just learning c++ (or python) wanted to take a look at a small yet useful program (or three or four).
In case anyone wanted to extend/modify this to make a program to convert .txt to .89t (This is being updated because I just did so myself, having finally gotten sick of having to fiddle with the old graph-link program.)
- For the curious to read and play with, if they want.
- The source is not that complicated, any IMHO any decent c or c++ programmer could have written it, but not
everybody is a c or c++ programmer (Or a programmer at all), so... (Of course, now you'd need to be a python programmer too to have written this, since the update script is in python)
- If anyone's curious, the c++ source files have a total of 699 lines in them, and update.py has 137 lines, not counting the lines for the license, at the beginning of each of those files. Those files are, all total, 24.9 KB in size (again, not counting the license) - Not very big. (With the license, 811 lines, 150 lines, and 38.2 KB, respectively)
- And because (of course) you'll need the source to compile this on Linux (or anywhere else other than Windows).
- Why don't you use a PDA?
- The TI-89's batteries last several months, even with frequent use (Using the text editor, NOT playing assembly games! Well, other than ztetris (occasionally).).
- The TI-89 has an actual keyboard. Yes, I know you can get a folding keyboard for PDAs, but what fun is that? And I can type pretty fast on my TI-89.
- It can do math stuff too, i.e. I can test out code, do statistical analysis, etc, to see how something I'm planning will turn out and whether I need to adjust it to be more balanced, etc.
- Why does the ToTxt program ignore the header, and why do you call the couple of bytes at the end of the file a 'footer?'
- All I needed was the foldername and filename and the actual
text contents of the file, and since there's an obvious ending mark, and the text starts at the same position
in every .89t, I could safely ignore the header and the last few bytes.
- FromTxt doesn't ignore the header, by the way, since it has to generate it (and the 'footer' too), heh heh. ToTxt still ignores it though.
- Why doesn't the program have a GUI?
- Do you really think it NEEDS one? I don't!
- Why does ToTxt convert spaces at the beginnings of lines to tabs?
- Because I use spaces at the beginnings of lines on the 89 where I would use tabs on the computers, particularly
in code I'm writing.
- Why wasn't there a FromTxt program in the previous release(s)?
- I didn't need it to for my own use at the time, and I primarily wrote this for my own use (and posted it on the internet in case anyone else wanted something like this).
- I didn't know what the stuff in the headers and footers were for, and wasn't inclined to try to figure them out until I needed that functionality (I eventually did).
- Why isn't there a TI-92 version?
- I don't have a TI-92. Theoretically, the file format should be the same. In practice, it probably has a few minor differences. You could modify the source to make it also convert TI-92 text files as well, or make a script which renames all your .92t files to .89t prior to running ToTxt, and try it if you want. (For some odd reason, the old TI-89 graphlink program writes "**TI92P*" instead of "**TI89**" in the beginning of text files you create within the graphlink program - Perhaps that means TI-92 portable?)
- What symbols does ToTxt change, and what does it change them to?
- The small - (the one which means 'negative' instead of 'minus') is changed to "-"
- The Pi symbol is changed to "PI"
- The Not Equal To symbol (= with a / through it) is changed to "!="
- The Store symbol (a right-pointing arrow) is changed to "->"
- The Less Than Or Equal symbol is changed to "<="
- The Greater Than Or Equal symbol is changed to ">="
- The Square Root symbol is changed to "sqrt"
- These changes are primarily done since I occasionally write code (c++ for instance) on my TI-89.
- FromTxt does not change those specific strings back into the characters they used to be. It *could*, but it would be slower if it did (and it'd take more time to code that). I'd consider doing it, and/or adding options to disable the conversions ToTxt does, if requested (But if nobody wants that I'm not going to waste time implementing it).
- Does sync89t need 89tfromtxt or 89ttotxt to work?
- No, it doesn't. sync89t already contains the same functions which 89tfromtxt and 89ttotxt use to do their work.
- But I should remind you again that you don't run sync89t directly, you run update.py ('python update.py').
- What happens if I run sync89t directly?
- If the update script hasn't been run previously, it will tell you to run update instead.
- If you've run the update script previously, then sync89t will exit without saying anything, unless it crashed the last time, in which case it will try to do what it was supposed to do last time, which means it will probably crash again. It *hasn't* crashed during my testing, and *shouldn't*, but that doesn't mean it *won't*. Of course, if it does, I'd appreciate being informed so I could fix the problem (or at least make it display a proper error message).
- It knows if it's been run before, and what to do, by looking for 'files.lst', which is created by the update script and basically contains instructions for sync89t. Sync89t clears that file (but leaves the empty file there) after doing everything files.lst says to do.
- Hey, wow, this is really useful! I think it might be worth paying for - why aren't you selling it? Why are you giving it away for free?
- If I sold it instead of giving it away for free, then it would be useful to less people simply because less people would be willing to (or able to) pay for it. Personally, *I* wouldn't pay for programs that convert 89t files to and from txt files, but then that's from the standpoint of a person who can and has made such programs himself. But most people don't have the knowledge and/or skills needed to make something like this, and arguably it could be useful enough that it might be worth some amount of money. But even if it is, I still wouldn't want to restrict access to it and limit the number of people who can benefit from it, which is what charging for it would do.
- If you really do think it is worth paying for, and want to send me money, I do have a paypal account, and you can throw money at me there. All told, from 2004 until August 31, 2008, this has been downloaded 8446 times from ticalc.org, and I've received a whopping one donation for $2.00.
If you have comments or suggestions, you can email me at shadowlord13 AT users.sourceforge.net (or dig my email address out of the paypal button form and email me there).