String corrupts the heap and crashes

This is directly related to the problem with free, as discussed at some length in this thread:

http://arduino.cc/forum/index.php/topic,95914

Reported as a bug here:

http://code.google.com/p/arduino/issues/detail?id=857

Still has status of "open"

Adding the "free fix" to your code, fat16lib, it runs to completion without crashing:

0, 0, 0, 1707
1, 20, 30, 1704
2, 40, 60, 1704
3, 60, 90, 1704
4, 80, 120, 1703
5, 100, 150, 1701
6, 120, 180, 1701
7, 140, 210, 1701
8, 160, 240, 1701
9, 180, 270, 1701
10, 200, 300, 1698
...
88, 1760, 2640, 1695
89, 1780, 2670, 1695
90, 1800, 2700, 1695
91, 1820, 2730, 1695
92, 1840, 2760, 1695
93, 1860, 2790, 1695
94, 1880, 2820, 1695
95, 1900, 2850, 1695
96, 1920, 2880, 1695
97, 1940, 2910, 1695
98, 1960, 2940, 1695
99, 1980, 2970, 1695
100, 2000, 3000, 1692
Done