Martypc est un émulateur multiplateforme des premiers PC écrits en rouille. Il prend en charge Windows, Linux et MacOS. MARTYPC émule plusieurs systèmes basés sur 8088, y compris IBM PC, XT, PCJR et TANDY 1000.
Cliquez ici pour accéder au guide de l'utilisateur MARTYPC
Les constructions sont disponibles grâce à des versions périodiques. Des builds plus récents et automatiques sont disponibles via l'onglet Actions sous les artefacts pour chaque exécution de workflow. (Vous devrez être connecté à GitHub pour télécharger des artefacts).
Martypc a commencé comme un projet de passe-temps pour voir si je pouvais écrire un émulateur à partir de zéro tout en apprenant le langage de programmation de rouille. Mes objectifs originaux pour Martypc étaient modestes, mais il a atteint un niveau de fonctionnalité que je n'aurais jamais pu imaginer.
Le créneau prévu de Martypc dans le monde de l'émulation est un assistant pour le développement des PC rétro. Il regorge d'outils de débogage et d'installations de journalisation, avec beaucoup d'autres planifiés. Il n'est peut-être pas aussi convivial pour la configuration que d'autres émulateurs, mais si vous connaissez les fichiers de configuration EDting, vous ne devriez pas avoir de problèmes majeurs. Les programmeurs d'écriture du logiciel pour l'Intel 8088 peuvent voir et mesurer l'exécution exacte du cycle par cycle de leur code.
Le développement de Martypc a commencé en avril 2022. J'ai commencé à travailler sur la précision du cycle d'émulation de MARTYPC 8088 CPU en novembre 2022. Pour ce faire, j'ai validé le fonctionnement du CPU contre un véritable CPU 8088 connecté à un méga-microcontrôleur Arduino. Voir mon projet Arduino8088 pour plus de détails. Cela permet à une instruction d'être exécutée simultanément sur l'émulateur et un CPU réel et les résultats d'exécution comparés, cycle par cycle. Plus d'informations sur ce processus sont décrites sur mon blog.
En juin 2024, j'ai à nouveau mis à jour la suite de tests 8088 pour soutenir l'exercice de la file d'attente préfet de 8088. De nombreuses autres inexactitudes de cycle ont été trouvées et corrigées. MARTYPC passe la suite de tests 8088 V2 avec une précision du cycle de 99,9997%.
Des recherches matérielles approfondies ont également été effectuées pour améliorer également l'émulation périphérique de Martypc, notamment en étudiant la puce de minuterie 8253 avec un Arduino, en étudiant les calendriers DMA avec un oscilloscope et, finalement, en construisant un renifleur de bus à l'aide d'un analyseur logique.
En avril 2023, Martypc est devenu suffisamment précis pour exécuter la tristement célèbre démo PC, 8088 MPH.
En mai 2023, MartyPC est devenu le premier émulateur PC capable d'émuler tous les effets dans la zone de démo PC 5150. (Voir vidéo ici: https://www.youtube.com/watch?v=zadelm9g0zg)
La version WebAssembly de Martypc peut exécuter à la fois 8088 mph et la zone 5150 dans votre navigateur Web!
Actuellement, MARTYPC peut imiter un PC IBM 5150, 5160 XT d'origine ou une machine à clone générique.
La prise en charge préliminaire de l'IBM PCJR et Tandy 1000 est présente à 0,2.1. Ces machines peuvent être buggy et instables.
Martypc émule les appareils suivants:
MARTYPC prend en charge les configurations de machines personnalisées via des profils de configuration de la machine de base plus des extensions facultatives appelées «superpositions», anagous pour installer des cartes d'extension ou d'autres mises à niveau.
MARTYPC possède une GUI de débogage étendue avec plusieurs écrans utiles, y compris le démontage d'instructions, l'état du CPU, la visionneuse de mémoire et divers états périphériques. Le code et les points d'arrêt de la mémoire sont pris en charge. MARTYPC prend également en charge les instructions et la journalisation basée sur le cycle.
Exécutez deux cartes vidéo dans des fenêtres séparées, ou la même carte vidéo dans des vues «précises» et «débogage» - ou avec différents shaders!
Un shader CRT de base et configurable est inclus avec plus à venir (le support Librashader est prévu)
Pour en savoir plus, consultez la section Galerie de capture d'écran du wiki!
J'ai une longue liste de personnes à remercier (voir la boîte à propos!) Mais je voudrais particulièrement mentionner les contributions faites par Reenigne. Sans son travail inversé le microcode 8088, cet émulateur n'aurait jamais été possible. Je voudrais également remercier Ken Shirriff et son excellent blog, couvrant une grande partie de la logique du silicium du 8086 (et 8088 par extension).