Yo no maneje todavia tarjetas SD pero si use memorias flash serie que funcionan a 3.3V y usan SPI, tambien tienen acceso por bloques asi que no me extrañaria que sean exactamente iguales a las SD en el manejo.En este caso quedo el manejo de SPI por hard, pero es minimo el cambio para pasarlo a controlar por software, es una sola funcion que envia y recibe a la vez, generas 8 ciclos de reloj y en cada ciclo envias el bit que tenes que enviar (si no tenes que enviar nada, mandas todo 1) y lees el bit que envia el esclavo (si solo estas enviando y no leyendo, una vez leido ignoras el byte), es muy simple. El Pic por hard lo hace mucho mas rapido, porque anda a la misma velocidad que el ciclo de ejecucion (ahora que me acuerdo no, lo hice andar a 1Mhz igual que el SD64, en vez de 3mhz tendria que ver por que). Es trivial implementarlo en la C64 por ejemplo.
Entonces vas a usar la C64 como maquina de desarrollo? Imagino que vas a probar desactivando la ROM desde el puerto de expansion y cargando la ROM tuya desde la SD a la RAM de la C64.Tenia la idea de hacer una expansion con una SD para la C64, con un PIC una RAM de 32 o 64KB mapeada como expansion de cartucho y un lector SD. El cartucho al bootear levanta siempre el mismo BIN, ponele BOOT.BIN y lo tira en la RAM y luego le da el control a la C64. En el BIN o en otro archivo tambien habria una descripcion de como se va a mapear la memoria y si la C64 va a poder hablar con el PIC o no va a estar mapeado y si la RAM es escribible o emula una ROM.
La C64 va a bootear ese cartucho, y si tiene acceso al PIC habilitado la ROM que levante podria ser una interfase para cargar datos desde la tarjeta SD, enviando datos a travez de SPI por intermedio del PIC.
Resumiendo, el PIC sabe de la SD y la FAT lo minimo para cargar el BOOT.BIN y le da acceso SPI completo a la C64. El BOOT.BIN que corre en la C64 (codigo 6510) implementa de forma completa el formato FAT16 y FAT32 y toda la forma de cargar programas. De esta forma no habria que tocar mucho codigo en el PIC, sino modificar el archivo de la SD.
Si, me olvidaba que te acoplas al bus para cargar la ROM, como yo todavia no pense en esa alternativa, pensaba mas en utilizar el PIC como manejador de E/S. Igual creo que lo mas importante son los puertos serie por hard en el PIC, podrias hacer las rutinas para agregar un buffer de emision y recepcion en el PIC para liberar al 6502, y tal vez hacer un conversor D/A utilizando la salida PWM del PIC, ademas de los A/D que trae. Son funciones que justifican el precio del PIC en el proyecto y usan muy pocos pines.Acerca de usar el PIC para otra cosa ademas de mapear la RAM, pensa que para que el PIC controle una RAM de 64KB necesitas 16 I/O para el bus de direcciones, 8 para el de datos, 1 para R/W , 1 para Chip select y 3 para el SPI de la SD, da 29 patas solo para esto, asi que salvo que metas mas integrados de buffers, multiplexolres, lactes etc, te vas a quedar corto de patas para manejar muchos chirimbolos.
Marcos, fabulosos che, me enganche tarde con este tema, pero por el asunto de los 3,3v podes ponerle tres diodos 1n4004 en serie con la fuente asi sumando las caidas de tension por diodo 0.8v tenes una caida de tension del orden de los 2.4v y obtenes del otro lado unos 3,5v pero sin perdida de corriente, yo asi alimente la sd2iec dentro de la c64 tomando alimentacion de los 5vcc, espero te sirva.
Yo no maneje todavia tarjetas SD pero si use memorias flash serie que funcionan a 3.3V y usan SPI, tambien tienen acceso por bloques asi que no me extrañaria que sean exactamente iguales a las SD en el manejo.
Tengo algunas memorias flashs PLCC y DIP, que saque de mothers y que compre en GM (a precios astronomicos comparados con CIKA) pero mas que nada para hacer alguna prueba, pero mas que nada me interesa usar tarjetas SD porque no necesits grabador, aunque un grabador de flash es mas bien trivial, es un paso mas que complica, me tira mas hacer un cartucho de C64 con RAM + SD, en el atari al no tener lineas de control para detener al micro, si o si hay que usar una RAM statica con bateria que se cargue desde la SD antes de encender el atari.Entonces vas a usar la C64 como maquina de desarrollo? Imagino que vas a probar desactivando la ROM desde el puerto de expansion y cargando la ROM tuya desde la SD a la RAM de la C64.
En cuanto al soporte de FAT32 me referia justamente a implementarlo en el 6502, no en el PIC, si llegara a hacer lo mismo que vos lo haria de igual manera, pero como dije todavia no me convence lo de cargar la ROM desde SD. Tengo por ahi varias memorias flash de 512K de acceso paralelo, de 5V, que compre en Cika, pensaba usar alguna pero el problema es que las patas tienen un paso muy chico, en una placa como la que usaste, caen 5 pines en cada isla. La memoria es AM29F400BB, Cika te pide comprar un minimo asi que si queres alguna en el futuro decime y vemos como te la mando. La memoria ademas anda en 8 o 16 bits de datos, con Pablo la ibamos a usar para hacer cartuchos multiples para C64, y tambien para actualizar la ROM de la Amiga.