Embora não tenha sido divulgado na altura, existiu um emulador português em DOS.
O emulador / debugger começou a ser desenvolvido por volta de 1989-1990, nas horas mortas de quando o autor, Rui Ribeiro, trabalhava na Microdigital como software developer (e houve muitas devido a uma zanga de sócios, história antiga que não interessa para o caso - note-se que é MicroDigital em Portugal e não no Brasil).
Foi entregue como trabalho de uma cadeira de C no Instituto superior do Porto (1992), e alguns amigos do autor usaram-no para fazer debug em cadeiras de Z80 na FEUP. O autor usou o EMZ80 para fazer cross-desenvolvimento em DOS com o emz80 + TASM (Z80) desde inícios de 90, para fazer debugging ao kernel de emulação do WSpecem, e para fazer debugging a programas em Z80. Só recentemente em 2019, depois de escrever o QtSpecem+debugZ80, o autor deixou de o usar definitivamente.
Note-se que este emulador, embora seja um debugger de Z80, apenas implementa o ecrã do ZX Spectrum em monocromático, e não tem som nem teclado. Tem também bugs conhecidos no kernel Z80, que apenas foram corrigidos no QtSpecem, do mesmo autor.
O kernel C do emulador emz80 em DOS, foi desenhado para ser modular, e foi portado para Windows em 32 bits (WSpecem, 1995), e para Mac/Linux em 64 bits (QtSpecem, 2019).
O debugger emz80 lê ficheiros ROM e Z80 de Spectrum 48K. Tem também uma janela de debugging com comandos e teclas similares ao Turbo Debugger, e pode correr software, se para tal for instruído.
Fica aqui o LE-ME.TXT original para as instruções:
Emulador Z80 (c) 1990, 1992 Rui Fernando Ferreira Ribeiro
Este programa e uma emulação COMPLETA de um Z80 (incluindo instruções não
documentadas pela ZILOG -- para as ter imprimir o ficheiro z80iset.doc)
a 3,5469 MHz com interrupcões, 50 vezes por segundo que executa ficheiros
binários de Z80 (e obvio que tanto a velocidade como o tempo de interrupções
são em tempo virtual -- ou seja para o codigo maquina de Z80 isso e o que
acontece). Esta emulação também possui os todos os registos do Z80 (e ao con-
trário do que muita gente pensa, o contéudo do registo R definitivamente não
é aleatório -<o que não se poderá e prever o seu estado correndo um programa
de assembly ; no entanto com as interrupcões desligadas, inicializando-o com
um valor poder-se-a utiliza-lo numa rotina de encriptacao/desincriptação>).
Conjuntos teclas programa (validos apenas em modo 'trace'):
F2 - marca\desmarca breakpoint na instrução corrente na janela
F4 - pede endereço de memória para marcar breakpoint
F5 - retira as janelas presentes no ecra ate que se
carregue numa tecla
F9 - corre o programa ate ser executada uma instrução HALT com as
interrupcões desligadas, chegar a um breakpoint ou ser interrompido
com CTRL-BREAK (voltando então ao modo 'trace').
F10 - Permite visualizar posições de memória do Z80
Ctrl-F10 - Permite visualizar ports de memoria do Z80
Alt-X - sai do emulador
Qualquer outra tecla em modo 'trace' provoca a execução da proxíma
instrução apontada pelo 'Program Counter' (PC).
Esta versão do emulador necessita no minimo para correr de 190k livres de
memória RAM e da versão 2.0 de DOS.
Ficheiros Emulador Z80:
======================
emz80 .exe - Emulador de Z80
z80 .tab - Ficheiro usado pelo debugger interno de
EmZ80 para disassemblar as instruções.
z80iset.doc - Set de instruções completo do Z80
le-me .txt - Este ficheiro
Existe um erro factual nesta história. O código do kernel Z80 foi portado e o Wspecem escrito até Dezembro de 1994. Foi lançado ao mundo na Primavera de 1995 porque ficou a "dormir", e apenas restrito a umas poucas pessoas no Porto, à espera de ser entregue na cadeira de Projecto.
ResponderEliminarAndei também no verão de 1989 para o emz80 a fazer testes num 48k emprestado por um amigo. Um wrapper de assembly, escrito em papel e introduzido com pokes, para testar o comportamento de vários opcodes, porque para não variar, estava sem gravador. Isto escrito no meu PC1 da Olivetti. A primeira vez que fiz uma sessão de debugging de correcção de erros, poucos meses depois, do emulador em conjunto com a edição Portuguesa do Spectrum ROM disassembly, até conseguir ver o famoso (c) 1982, e pouco depois, o pheenix, foi num AT 286 no trabalho, com placa Hercules.
ResponderEliminarThanks. Fica esclarecido mais um pouco de história :)
Eliminar