MartyPC es un emulador multiplataforma de las PC tempranas escritas en Rust. Admite Windows, Linux y MacOS. Martypc emula varios sistemas basados en 8088, incluidos IBM PC, XT, PCJR y Tandy 1000.
Haga clic aquí para acceder a la Guía del usuario de MARTYPC
Las construcciones están disponibles a través de lanzamientos periódicos. Las compilaciones automáticas más nuevas están disponibles a través de la pestaña Acciones en los artefactos para cada ejecución de flujo de trabajo. (Deberá registrarse en GitHub para descargar artefactos).
Martypc comenzó como un proyecto de pasatiempo para ver si podía escribir un emulador desde cero mientras aprendía el lenguaje de programación de óxido. Mis objetivos originales para Martypc eran modestos, pero ha alcanzado un nivel de funcionalidad que nunca podría haber imaginado.
El nicho previsto de Martypc en el mundo de la emulación es un ayudante para el desarrollo de PC retro. Está lleno de herramientas de depuración e instalaciones de registro, con muchas más planificadas. Puede que no sea tan fácil de usar configurar como otros emuladores, pero si está familiarizado con los archivos de configuración de edición, no debería tener ningún problema importante. Los programadores que escriben software para el Intel 8088 pueden ver y medir la ejecución exacta del ciclo por ciclo de su código.
El desarrollo de Martypc comenzó en abril de 2022. Comencé a trabajar en hacer el ciclo de emulación de CPU 8088 de Martypc preciso en noviembre de 2022. Para hacerlo, validé la operación de la CPU contra una CPU 8088 real conectada a un microcontrolador Mega Arduino. Vea mi proyecto Arduino8088 para obtener más detalles. Esto permite que una instrucción se ejecute simultáneamente en el emulador y una CPU real y los resultados de ejecución comparados, ciclo por ciclo. Se describe más información sobre este proceso en mi blog.
En junio de 2024, actualicé la suite de prueba 8088 una vez más para apoyar el ejercicio de la cola preventiva del 8088. Se encontraron y corregieron muchas más inexactitudes de ciclo. Martypc pasa la suite de prueba 8088 V2 con una precisión del ciclo del 99.9997%.
También se ha realizado una extensa investigación de hardware para mejorar la emulación periférica de MartyPC, incluida la investigación del timbre 8253 con un Arduino, investigando los horarios de DMA con un osciloscopio y, en última instancia, construyendo un bus de autobuses utilizando un analizador lógico.
En abril de 2023, Martypc se volvió lo suficientemente preciso como para ejecutar la infame demostración de PC, 8088 mph.
En mayo de 2023, MartyPC se convirtió en el primer emulador de PC capaz de emular todos los efectos en el área de demostración de PC 5150. (Vea el video aquí: https://www.youtube.com/watch?v=zadelm9g0zg)
¡La construcción de WebAssembly de MartyPC puede ejecutar 8088 mph y área 5150 en su navegador web!
Actualmente, MartyPC puede emular una PC IBM 5150 original, 5160 XT o una máquina Generic XT Clone.
El soporte preliminar para el IBM PCJR y Tandy 1000 está presente a partir de 0.2.1. Estas máquinas pueden ser erróneas e inestables.
Martypc emula los siguientes dispositivos:
MARTYPC admite configuraciones de máquina personalizadas a través de perfiles de configuración de máquina base más extensiones opcionales llamadas 'superposiciones', análoga a la instalación de tarjetas de extensión u otras actualizaciones.
Martypc tiene una extensa GUI de depuración con varias pantallas útiles que incluyen desmontaje de instrucciones, estado de la CPU, visor de memoria y varios estados periféricos. Se admiten puntos de interrupción de código y memoria. Martypc también admite instrucción y registro basado en ciclo.
Ejecute dos tarjetas de video en ventanas separadas, o la misma tarjeta de video en vistas 'precisas' y 'depurar', ¡o con diferentes sombreadores!
Se incluye un sombreador CRT básico y configurable con más por venir (se planifica el soporte de Librashader)
¡Para obtener más información, consulte la sección Galería de capturas de pantalla del wiki!
Tengo una larga lista de personas que agradecer (¡ver la caja Acerca de!), Pero especialmente me gustaría mencionar las contribuciones hechas por Reenigne. Sin su trabajo de ingeniería inversa en el microcódigo 8088, este emulador nunca hubiera sido posible. También me gustaría agradecer a Ken Shirriff y su excelente blog, que cubre gran parte de la lógica de silicio del 8086 (y 8088 por extensión).