Robe_Inie escribió:Entiendo que el core de MiST es reimplemetación (por mucho que algunos digan que es emulación en algunos sitios...) , lo único que parte de un emulador en Java , eso sí es cierto, a través de ingeniería inversa. ¿Cuáles pueden ser las limitaciones de esto? ¿Qué diferencias puede aportar el core de McLeod respecto al de MiST ?
Pues no te puedo responder por varias razones:
- No conozco el core del MiST. Es más: ni siquiera tengo ese cacharrico.
- Mi core aún no está terminado. Le falta un montón, así que no tiene sentido todavía hablar de diferencias, y lo que aporta o lo que no, porque ni yo mismo lo sé.
Sí puedo decir lo siguiente: tanto un emulador como una descripción HDL (core) son eso, una descripción más o menos fidedigna de la máquina. Que lo sea más o menos depende de quien ha escrito el emulador o el core. Por ejemplo: tengo entendido que las descripciones de máquinas del MAME, aun siendo software, intentan parecerse a lo que sería conectar distintos "chips" en un sistema y configurarlos. Alguien que quiera hacer un core en FPGA de una máquina arcade partiendo de lo que puede leer en MAME probablemente le salga algo parecido a lo que haría otro alguien partiendo del esquemático de ese mismo arcade.
De mi core, lo único que puedo decir, es que me baso en ingeniería inversa de los chips que lo componen. En concreto, ingeniería inversa del gate array (ya que de los demás se tiene documentado su comportamiento al ser chips estándar de industria) usando analizador lógico. Hasta donde he podido comparar, el comportamiento de mi core de gate array es idéntico al del gate array original. Tanto, que ya estoy en fase de diseño de un módulo para reemplazar el gate array en los Amstrads que estén muertos esperando un recambio de este chip.
En la vista jerárquica de ficheros del core puedo ver que tengo un z80, el mencionado gate array, un MC6845, un i8255, y un YM2149 (clon del AY-3-8912). Me falta añadir un manejador de memoria que multiplexe accesos entre el GA y el Z80 usando las líneas de control del propio GA, y algo parecido a lo que tengo hecho para otros cores, que traduzca pulsaciones en un teclado PS/2 a una matriz como la del CPC, para que al conectar esta matriz al i8255 a través de los puertos del AY, pueda leer el teclado y el joystick. Con esto tendría ya algo con lo que experimentar y ver si se comporta como debe.