¿Como funciona una "op_illegal" en el 68000?
Publicado: 20 Nov 2014, 07:29
Hace un tiempo comencé a programar un emulador de 68000 de motorola en Basic 100%, pero tenía muchos problemas, sobre todo por que usaba masivamente punteros (al estilo de "c") y no me convencía mucho como quedó, por lo que lo retome hace unos meses y lo he reescrito desde cero, mirando otros emuladores mas sencillos que solo usan punteros en unas pocas instrucciones en las que bien poca solución se puede aplicar, si no son punteros.
Ahora, el emulador lo vuelvo a tener funcional al 90% mas o menos, como tenía el anterior en ESTE HILO.
EL tema, es que hay una excepcion en el 68000 , que por mas que leo no entiendo, y quizás por eso, no consigo avanzar. Para comprobar que el emulador funciona, en lugar de tratar de emular un "Mac128k" como hice la vez anterior, lo estoy haciendo con un arcade llamado "FoodFight" de Atari y todo va bien, hasta que el juego genera instrucciones ilegales, del tipo "000E", y ahí me pierdo por que el juego se detiene y los monigotes no se actualizan (o sea, no se mueven).
Yo entiendo, que un OP_ILEGAL debería detener la CPU (HALT) y no continuar, pero entonces, ¿cómo es posible que el juego arcade exista en la vida real?
¿sabe alguien si un opcode ilegal se debe tratar como una excepción y saltar a alguna rutina concreta leyendo de la tabla de interrupciones del inicio de ROM?
Ahora, el emulador lo vuelvo a tener funcional al 90% mas o menos, como tenía el anterior en ESTE HILO.
EL tema, es que hay una excepcion en el 68000 , que por mas que leo no entiendo, y quizás por eso, no consigo avanzar. Para comprobar que el emulador funciona, en lugar de tratar de emular un "Mac128k" como hice la vez anterior, lo estoy haciendo con un arcade llamado "FoodFight" de Atari y todo va bien, hasta que el juego genera instrucciones ilegales, del tipo "000E", y ahí me pierdo por que el juego se detiene y los monigotes no se actualizan (o sea, no se mueven).
Yo entiendo, que un OP_ILEGAL debería detener la CPU (HALT) y no continuar, pero entonces, ¿cómo es posible que el juego arcade exista en la vida real?

¿sabe alguien si un opcode ilegal se debe tratar como una excepción y saltar a alguna rutina concreta leyendo de la tabla de interrupciones del inicio de ROM?
