Ayer me puse a terminar mi emulador de 6502 en PIC, le agregue la parte de manejo de Flags y algunos detalles que no estaban definidos, y estoy en condiciones de afirmar que va a ser lento pero no tanto, mas o menos unos 50 ciclos de instruccion PIC (reloj / 4) por instruccion 6502, asi a 20Mhz / 4 / 50 = 100.000 instrucciones por segundo, el 6502 con una frecuencia de 1Mhz (el atari tiene mas o menos esta velocidad) los ciclos para instrucciones es reloj/2, y las instrucciones tardan en general 2 o 3 ciclos, asi que ponele 1Mhz/2/2.5 = 200.000 instrucciones por segundo. No es tanta diferencia, claro que todo sale del numero ese (50) que lo tire por tirar, tal vez eran 100 instrucciones de PIC por cada una emulada
lo tengo que revisar mejor.
Pero esta bueno hacerlo para entender mejor al 6502.
Como dice Pastbytes, habria que ponerle otro pic que maneje el timming de la comunicacion con el teclado PS2, asi el 6502 falso solo hace polling del valor que almacena esta PIC (olvidate de tener interrupciones en este micro emulado!!!)
Ariel: lo que pensas hacer me parece perfecto, lo simplificaria un poco:
Display LCD
RAM statica 64Kb
Pic16F877 que cree ser un 6502 (aunque cambiandole el firmware le podemos hacer creer otra cosa, incluso un micro nuevo manteniendo el mismo motherboard)
PIC16f877 o 873 o algun 18F con bastantes pines, conectado al bus, que lee teclado PS2, y con comunicacion SPI para manejar tarjeta SD. Este micro tambien maneja la pata de reset del micro principal y carga desde la SD el programa booteable dentro de la RAM y recien al terminar de hacer esto le da el control al 6502. Asi no usa ROM ni flash, mas facil de actualizar.
Lo de usar el PIC como micro independiente lo veo dificil, porque las instrucciones del 16F y las del 18F no son en bytes, sino que son 10 bits o cosas asi, y tiene un bus de datos y programa independiente (de distinto ancho) y el de datos es muy chico (7 bits el 16F? no me acuerdo) y el de programa tambien es chico, por eso usa todo ese bankswitching maldito
Crear instrucciones propias me parece mas practico, asi se pueden usar propiedades del PIC, como todos los registros que tiene, y adaptarlo a los flags del PIC, asi se necesita menos codigo para convertir cosas. Ademas como ya sabemos que no va a ser tan rapido, podemos ponerle instrucciones muy CISC que hagan muchas cosas, como division, manejo de bloques de memoria, operaciones de 16 bits y hasta flotantes, etc.
Saludos
MARCOS