Version 2
---------
Changes are listed chronologically, from farthest in the past to closest to the present, though no dates are given:

ToTxt can now correctly handle files written by TI Connect, ignoring the 'folder.' in the filename.

Can be compiled on linux, and probably on other unixlike OSes. (I was using Linux at the time, but only ToTxt was compiled and tested on linux, and it was quite a while ago - everything below here was done in Windows XP, though I kept the code for linux support and even included linux support with the new code, though it hasn't been tested in linux [Ed: It's been tested in Cygwin now, which is close])

Wrote FromTxt, on Windows XP, but it should work without modification on other Windows OSes as well. It converts .txt files to .89t files. The 89t files it produces are named the same way TI Connect names them, i.e. FromTxt makes foo.bar.89t from foo/bar.txt. (It searches subfolders of the folder it is run from for the files to convert, and places the created .89t files in the folder it is run from)

However, that wasn't automated enough for my taste, so I whipped up update.py, which is a python script to detect what needs converting and do it. You just drop it (and sync89t (read on)) in the folder where you put the .89t files you're working on, and run it and it will do stuff and tell you what it has done. (If you wanted to, you could instead put them in the system folder or /etc/bin or wherever - but if you do so, make sure that when you run them, the present/current working directory is the folder holding your .89t files.)

After making update.py, I made Sync89t, which is used by update.py. Sync89t just reads a list of filenames (with file type specified with one character before each filename) and does conversions on the specified files.

Then I tested them all, and such, and fiddled a bit until it was working nice and good. And then I used them myself for a week or two to make sure they wouldn't horribly screw up any files.

There are a few parts of the FromTxt routines (also used in Sync89t) which I wasn't sure about, which is one reason for not releasing this right away. I needed to know if the TI-89 was going to freak out over any of the generated 89t files, since there were two bytes I didn't figure out the meaning of. It turned out that they were the cursor position, and the value I was setting them to every time (which was the value I saw in most files) meant the very beginning of the file, which is always valid.

The code got a bit of moving around and such as well - There's a shared.cpp and shared.hpp which contain common code used by FromTxt, ToTxt, and Sync89t, including HandleTxtFile, HandleSrcFile, and ReadLine (used on directory and file lists).

And the readme files have been updated, and there's now a usage.html which talks about how to use the update script and such, and a warning.txt file, etc. Spent a while editing those.

I've build an update.exe for people who don't want to install Python, but IMHO it's more inconvenient than installing python would be, heh (Since it's 6 files and several hundred KB zipped instead of 2 files and not even 6 KB unzipped). The EXE package would be distributed separately from the normal package because of its size.

Also updated some the 89tformat.txt (with the source folder) and added support for the special line types (printobj, command, page break), and edited the readme and usage files after looking up the URL of the info about the file formats and stuff, and after finding out what the two bytes at 0x58 of 89t files were (cursor position).

And I've managed to test, fix, debug, and verify* the Linux code (by using g++ in Cygwin, which is as close as I'll be able to get to Linux for the time being). By "verify," I don't mean mathematically. I mean I ran the linux 89tfromtxt on the same txt files as I ran the windows FromTxt, in two different folders, and compared the two folders' contents using WinMerge, and verified that all *.89t files were identical and that none existed in only one and not the other. I tested ToTxt as well, and was moderately intrigued to notice that it was writing DOS/Windows endlines to txt files in 'wt' mode, probably because cygwin was using the host-OS's endline standard, or something. Since it IS 'rt' and 'wt' though, it SHOULD work just fine on Linux as on Windows, and should also work for doing anything weird like running 89ttotxt on Linux and then FromTxt on Windows on the txt files 89ttotxt made. I think.

I've tested sync89t and update script for Linux too now (again in Cygwin), and it works correctly, which I expected, since the control code for sync89t (and update.py) is identical on linux and windows, unlike the control code for FromTxt and ToTxt, which has different code for directory listing and such on linux and windows. And I had already verified that the methods (functions) which handle converting 89t->txt and 89t<-txt work properly, since I had tested FromTxt and ToTxt in Cygwin, and sync89t uses the same methods.

And imagine my surprise when the file-listing code for Linux actually *showed directories*, unlike the original Windows code. And I'd already figured out the options I had to pass to ls to make it work like dir /ad /b, in anticipation of having to write a similar hack for Linux! Heh! Good thing I tried the non-hackish code instead of just erasing it and writing a hack. :P

And... I think I'm finally done. I was planning to release this about a week ago, but wanted to test it first, and then I wanted to check what the bytes at 0x58 were, and updated the docs after finding out, and then I wanted to try to make an update.exe with py2exe, and then I wanted to look at the online docs on the TI-89 text variable format a bit more, and noticed that commands, printobj, etc, would cause bad conversions, so I coded support for them and updated the docs again, and then I wanted to test and debug the Linux code, and after I had, I updated the docs again (removing all the "The linux code is untested!!!" stuff)... It got pushed back a bit, but of course I never mentioned a release date or even that I was actually doing this, so there isn't anyone to complain. Besides, those were important things.

Tested command/printobj/pagebreak support, and debugged them until they actually worked correctly. [Okay, so I wasn't completely done after all. NOW I am. Once I edit the rest of the docs again to remove any "command/printobj/etc are untested!!!" stuff, that is.] [Okay. Finally. Done.]
