Thanks for the tips.
I've checked the status register after an erase and program, both return 0xC0 (11000000), which indicates success, as well as WP bit set to 1 (not write protected) and not busy. This, BTW, was on a "bad" sector. To make sure this was really indicating status, I plugged in a Juiceware cart and got 0X41 after a read and erase (not successful and write protected) so looks like status is working. So even though programing a sector with data does not change the bits, I still get a successful ERASE and PROGRAM from the NAND. As I continue playing with this, it looks like after I successfully erase, write and read an area of the nand once, all additional attempts fail - one erase/program cycle and I kill it :(.
Some things I've noticed (these may be obvious, but I wanted to mention for others trying this) - the "NAND Flash 101" tutorial is really good, but apparently some sections are specific for Micron memory. When using READ ID, my Olympus card ID's as manufactured by Matrix (I thought I read either Toshiba or Samsung made the NAND for these, but I guess not??). The READ ID command only returns 3 bytes of info like unix_guy's code shows, not 4 according to the tutorial. My page size is 512 bytes as in the source code, not 2048 as in the tutorial. And the status register bits 0, 6, and 7 are the only ones that relay any info, not like that shown in the tutorial. The essential commands, however, are the same (READ1, ERASE, READ ID, READ STATUS, PROGRAM) as the tutorial. This has really been fun learning how NAND flash works!
I guess I need to follow your advice and try again, this time using an xD socket. Any tips on where to pick up somne cheap sockets with good (read as BIG) pins to solder to??
Thanks!
-David