Ano 1 · Ano 2 · Ano 3 · Ano 4 · Ano 5 · Ano 6 · Ano 7 · Ano 8 · Ano 9
Tópicos › Primeiro ano › Emulação de computadores no MAME
O MAME foi a principal ferramenta de emulação do grupo. Werner conseguiu compilar o emulador no Windows, discutiu com Felipe o driver do CP-500 e decidiu tentar emular o G-10, um computador microprogramado. Felipe documentou as teclas extras do CP-400 Color II no driver, mostrou drivers como o do ZAP e divulgou as novas versões do MAME, apontando contribuições de brasileiros.
Primeiro ano: novembro de 2017 a outubro de 2018
Werner tentou compilar o MAME numa VM Kali Linux, que acabou perdida, e depois conseguiu no Windows reinstalando o MinGW. Felipe explicou o build parcial com SUBTARGET e SOURCES e os critérios para aceitar dumps de ROM.
Werner tentou um build parcial do MAME com o driver trs80, para o CP-500. Apareceram vários erros: GL/gl.h ausente (resolvido instalando mesa-common-dev), um conflito de dependências entre SDL2 e systemd, e emu.h não encontrado. Felipe indicou o comando make com SUBTARGET, SOURCES, REGENIE e clean. A VM travou durante uma atualização do gcc e foi perdida. Seguiu-se uma discussão sobre dual boot, Linux versus Windows e distribuições mais estáveis.
Werner conseguiu compilar o MAME no Windows depois de reinstalar o MinGW do zero. Sobre as ROMs do CP-500 de um site, Felipe explicou que as ROMs do MAME foram extraídas por ele da própria placa e que as outras precisam ser verificadas antes de entrar no catálogo. O MAME registra cada chip como um arquivo separado. Dumps feitos por software no próprio aparelho podem sair alterados por hardware mapeado nos mesmos endereços, por isso o melhor é ler a EPROM fora da placa.
Werner e Felipe discutiram o mapeamento do teclado, a falta de suporte a imagens JV3/DMK e variantes de ROM, como o CP-500/M80. Investigaram também uma falha esporádica na tela de boot, que Felipe não conseguiu reproduzir.
Werner conseguiu compilar o MAME no Windows depois de reinstalar o MinGW do zero. Sobre as ROMs do CP-500 de um site, Felipe explicou que as ROMs do MAME foram extraídas por ele da própria placa e que as outras precisam ser verificadas antes de entrar no catálogo. O MAME registra cada chip como um arquivo separado. Dumps feitos por software no próprio aparelho podem sair alterados por hardware mapeado nos mesmos endereços, por isso o melhor é ler a EPROM fora da placa.
Werner notou diferenças nas teclas do driver do CP-500 e propôs mapear o teclado de forma empírica, com a ajuda de fotos. Felipe apontou que os drivers do TRS-80 Model III e derivados não leem imagens de disco JV3/DMK. Sugeriu também classificar as ROMs que circulam na web e testar variantes como o CP-500/M80. Para essas variantes, explicou como declarar um driver derivado ou BIOS alternativas, usando replicator.cpp como exemplo.
Werner viu que, de vez em quando, o driver cp500 mostra uma tela errada no lugar da tela de boot. Os dois investigaram o flip-flop A11 (cp500_a11_flipflop_toggle, em machine/trs80.cpp) e o reset, mas Felipe não conseguiu reproduzir a falha. Felipe contou que Cuavas considera que o driver trs80 precisa ser reescrito.
Com informações de Manoel Lemos, Felipe documentou no driver do MAME as quatro teclas extras do CP-400 Color II. Werner propôs ainda um CP-400 portátil com LCD de vídeo composto.
Com informações de Manoel Lemos, Felipe documentou no driver do MAME as quatro teclas extras do CP-400 Color II (CTRL, PA1, PA2 e PA3), cujo uso ainda é desconhecido. Werner mostrou seu CP-400 Color completo e com os manuais. Manoel registrou os códigos das teclas com um programa em BASIC e explicou que extraiu a ROM usando um cabo FTDI com um inversor a transistor. Uma hipótese levantada no Fiozera é que as teclas serviriam para emular um terminal IBM 3270. As fotos de Werner confirmaram que o Color II usa a mesma carcaça do CP-400.
Werner propôs transformar o CP-400 num portátil, com carcaça nova, LCD de vídeo composto e o teclado original, e analisou as tensões de +12, -12 e -5 V da fonte. Felipe sugeriu redesenhar uma placa compacta no KiCad, e Manoel propôs refazer o projeto com componentes modernos. Werner citou a placa Multicore de Victor Trucco, que usa FPGA, e comprou um display de 5" com duas entradas de vídeo composto.
Partindo da tese de Edit Grassiani (1975), Werner decidiu emular o G-10 tomando como base o driver do Patinho Feio. Felipe explicou a diferença entre CPU microprogramada e hardwired e propôs depurar no MAME tanto no nível de micro-instrução quanto no de instrução.
Relendo o livro sobre a história do LSD e do PCS, Felipe lembrou dos computadores G-10, G-11 e Cobra 530 e de que precisa conversar com o professor Stephan Kovacs. Ele mostrou a bibliografia e a descrição do conjunto de instruções do G-10 que aparecem na tese "Procedimentos Microprogramados num Minicomputador", de Edit Grassiani (1975), disponível no Internet Archive. Werner procurou as referências 22 a 24 da tese e pediu a Felipe os scans das páginas do livro que citam o G-10.
Werner decidiu tentar emular o G-10, usando como base o driver do Patinho Feio. Felipe explicou a diferença entre CPU microprogramada (caso do G-10) e unidade de controle hardwired (caso do Patinho Feio e do Zezinho). Ele propôs criar no MAME uma forma de depurar tanto no nível de micro-instrução quanto no de instrução. Também apontou que o MAME não permite escolher, de forma combinada, a versão da ROM de microcódigo e a da ROM de boot. Werner mencionou e Felipe indicou a tese de Wilson Ruggiero sobre um processador microprogramado; nenhum dos dois sabia ao certo se ela trata do G-10.
Felipe mostrou o driver do ZAP, cuja ROM digitou a partir do livro de Steve Ciarcia, e o da impressora 3D Replicator, limitado pelos timers incompletos do AVR8. Outras conversas trataram dos livros da Letron, da ideia de emular uma máquina de café, do emulador de qmusica e da falta de emulador para as estações Silicon Graphics.
Felipe explicou que o driver da impressora 3D Replicator inicia e mostra texto no LCD. Porém, a emulação dos timers do AVR8 está incompleta, o que, segundo ele, impede a música e o teclado de funcionar. Com os timers corrigidos, ele gostaria de mostrar modelos 3D se movendo conforme os comandos do firmware.
Werner compartilhou PDFs de livros da Letron que teve na adolescência: "Construa Seu Computador", "Circuitos de Micros" e a folha avulsa com o esquema Z-80 do micro "Micro-Galena", montado em placa de madeira com wire wrap. Os PDFs vieram do site cp500.com.br. As listagens em BASIC trazem marcações para adaptar o código a cada micro nacional.
Felipe mostrou o driver zapcomputer.cpp, baseado no livro de Steve Ciarcia sobre como construir um microcomputador Z80. A ROM foi digitada por ele a partir da listagem do livro. Werner conseguiu rodar o driver. Para entender as teclas, Felipe indicou os comentários no código-fonte e o menu "Input (this machine)", e disse que o driver ainda precisa de melhorias. Segundo Werner, na edição brasileira do livro o micro se chamava PAZ.
Felipe perguntou se alguém teria acesso a uma máquina de café com ficha e display LCD, para extrair a ROM e emulá-la no MAME. Y K informou que há uma no IME da USP, mas Felipe supôs que ela não estaria acessível para ser aberta.
Ismael Luceno pergunta se o código do emulador de qmusica será submetido ao MAME. Felipe responde que acha que já enviou e que é possível submeter.
Ronaldo fala de suas estações Indy e O2. O Irix não tem emulador e o driver de Indy no MAME, que não funciona, apenas executa a PROM. As máquinas foram usadas em efeitos especiais, no SDK do Nintendo 64 e em tomógrafos. O grupo comenta preços no Mercado Livre e na OLX e máquinas Sun Blade à venda.
O grupo acompanhou as versões 0.192 a 0.202. O 0.192 trouxe o Gran Trak 10 em TTL, marcado como não funcional, e o 0.194, uma contribuição do grupo marcada como NOT_WORKING. Felipe citou contribuições recentes do brasileiro Wellington Uemura, e o 0.202 trouxe trabalho do brasileiro Leonard Oliveira.
Felipe compartilhou o lançamento do MAME 0.192. A lista de novidades inclui o Codimex e o Gran Trak 10 em TTL, este marcado como não funcional. Felipe explicou que os drivers do Sagitta e do Zezinho ainda estão em pull requests pendentes, que o Lepus 200 tem só um rascunho de driver e que o Patinho Feio não teve mudanças no mês.
Alexandre Villares compartilha uma análise de arqueologia de software do Spacewar!. Felipe anuncia o MAME 0.193, que inclui uma contribuição sua, e menciona contribuições recentes de outro brasileiro, Wellington Uemura.
Felipe anuncia o MAME 0.194, que inclui uma contribuição do grupo marcada como NOT_WORKING. O vídeo e a interface serial já funcionam, mas falta emular o teclado.
Felipe compartilhou os anúncios do MAME 0.196, 0.197 e 0.198 e depois o texto do 0.199. Essa versão adiciona El Fin Del Tiempo, o hack Titan e bootlegs como Come-Cocos e Gran Rally, e melhora a emulação de drives de disquete, entre outras mudanças.
Felipe anuncia o MAME 0.202 e destaca que a versão traz trabalho do brasileiro Leonard Oliveira, de Brasília.