BTW, just to let everybody know, I've discovered a bug during long term testing: As I was doing some long term testing (filling the card to capacity) I noticed it stopped functioning at sector 0x8000. I've discovered the problem to be the set_sector routine, it uses div_t which is only capable of handling ints. Since sector is a long in this function, it sets the wrong cylinder:head:sector combination for sectors above 0x8000. The solution is to use ldiv_t, however I've having troubling getting the code to find when invoking that routine. I will keep everybody updated on my progress. For the moment the project works fine until it tries to work past about 16MB of file, after that it stalls! :( By the way, if anyone can make any suggestions on reducing code size PLEASE let me know! Thanks. http://repatch.dyndns.org:8383/pic_stuff/ -- http://www.piclist.com hint: The PICList is archived three different ways. See http://www.piclist.com/#archives for details.