Emulador

En la práctica, esto puede resultar realmente difícil, particularmente cuando el comportamiento exacto del sistema emulado no está documentado y debe ser deducido mediante ingeniería inversa.

Tanto el sistema de explotación como el programa deben ser interpretados por el emulador, como si estuviese ejecutándose en el equipo original.

En vez de una emulación completa del equipo, una compatibilidad superficial puede ser suficiente.

Esto es posible asignando una variable a cada registro y flag de la CPU emulada.

La lógica de la CPU simulada puede ser más o menos traducida directamente a algoritmos de software, creando una reimplementación del software que básicamente refleja la implementación original del hardware.

La mayoría de los emuladores, como dicho anteriormente, no emulan el sistema principal bus; cada dispositivo de entrada y salida es tratado a menudo como un caso especial, y no existe una interfaz constante para los periféricos virtuales.

Aún los emuladores que tratan cada dispositivo como un caso especial poseen una infraestructura básica en común para ello: Los emuladores arrancan imágenes ROM, o sea el contenido de los cartuchos, disquetes o cintas que se usaban con los sistemas antiguos.

Físicamente en las PC las ROM son archivos binarios que se pueden cargar en la memoria.

DOSBox , emulador que permite ejecutar una shell similar al sistema DOS .
NeoRAGEx, emulador a base de imágenes ROM .