O Martypc é um emulador de plataforma cruzada dos primeiros PCs escritos em Rust. Ele suporta Windows, Linux e MacOS. A MartyPC emula vários sistemas baseados em 8088, incluindo o IBM PC, XT, PCJR e Tandy 1000.
Clique aqui para acessar o Guia do Usuário do Martypc
As construções estão disponíveis por meio de lançamentos periódicos. Construções automáticas mais recentes estão disponíveis na guia Ações sob os artefatos para cada fluxo de trabalho. (Você precisará estar conectado ao Github para baixar artefatos).
A Martypc começou como um projeto de hobby para ver se eu poderia escrever um emulador do zero enquanto aprendia a linguagem de programação de ferrugem. Meus objetivos originais para o MartypC foram modestos, mas atingiu um nível de funcionalidade que eu nunca poderia ter imaginado.
O nicho pretendido da MartyPC no mundo da emulação é um assessor para o desenvolvimento de PCs retro. Está repleto de ferramentas de depuração e instalações de madeira, com muito mais planejado. Pode não ser tão fácil de usar como outros emuladores, mas se você estiver familiarizado com os arquivos de configuração de edições, não terá nenhum problema importante. Os programadores que escrevem software para o Intel 8088 podem ver e medir a execução exata do ciclo por ciclo de seu código.
O desenvolvimento do MartypC começou em abril de 2022. Comecei a trabalhar para fazer com que o ciclo de emulação da CPU 8088 da MartyPC seja preciso em novembro de 2022. Para isso, validei a operação da CPU contra uma CPU 8088 real conectada a um mega microcontrolador Arduino. Veja meu projeto Arduino8088 para obter mais detalhes. Isso permite que uma instrução seja executada simultaneamente no emulador e uma CPU real e os resultados da execução comparados, ciclo por ciclo. Mais informações sobre esse processo são descritas no meu blog.
Em junho de 2024, atualizei a suíte de teste 8088 mais uma vez para apoiar o exercício da fila de pré -busca do 8088. Muitas outras imprecisões de ciclo foram encontradas e corrigidas. A MartypC passa o conjunto de testes 8088 V2 com precisão de ciclo de 99,9997%.
A extensa pesquisa de hardware também foi realizada para melhorar a emulação periférica da MartypC, incluindo a investigação do chip 8253 Timer com um Arduino, investigando os horários de DMA com um osciloscópio e, finalmente, construindo um sniffer de ônibus usando um analisador lógico.
Em abril de 2023, o Martypc tornou -se preciso o suficiente para executar a famosa demonstração de PC, 8088 mph.
Em maio de 2023, o MartypC se tornou o primeiro emulador de PC capaz de imitar todos os efeitos na área de demonstração do PC 5150. (Consulte o vídeo aqui: https://www.youtube.com/watch?v=zadelm9g0zg)
A criação de WebAssembly do MartypC pode executar 8088 mph e a área 5150 no seu navegador da web!
Atualmente, o MartyPC pode emular um IBM 5150 PC original, 5160 XT ou uma máquina de clone XT genérico.
O suporte preliminar para o IBM PCJR e Tandy 1000 está presente a partir de 0.2.1. Essas máquinas podem ser buggy e instáveis.
Martypc emula os seguintes dispositivos:
O MartyPC suporta configurações de máquina personalizadas por meio de perfis de configuração da máquina básica, além de extensões opcionais chamadas 'sobreposições', angulares à instalação de cartões de extensão ou outras atualizações.
A MartypC possui uma extensa GUI de depuração com várias exibições úteis, incluindo desmontagem de instruções, estado da CPU, visualizador de memória e vários estados periféricos. Os pontos de interrupção de código e memória são suportados. A MartypC também suporta instruções e registro baseado em ciclo.
Execute duas placas de vídeo em janelas separadas ou na mesma placa de vídeo em visualizações 'precisa' e 'depuração' - ou com shaders diferentes!
Um shader básico e configurável do CRT está incluído com mais por vir (o suporte do Librashader está planejado)
Para saber mais, confira a seção da galeria de captura de tela do wiki!
Eu tenho uma longa lista de pessoas para agradecer (veja a caixa sobre a caixa!), Mas gostaria de mencionar especialmente as contribuições feitas por Reenigne. Sem seu trabalho, engenharia reversa do microcódigo 8088, esse emulador nunca seria possível. Eu também gostaria de agradecer a Ken Shirriff e seu excelente blog, cobrindo grande parte da lógica de silício do 8086 (e 8088 por extensão).