Arqueologia Digital

Ano 1 · Ano 2 · Ano 3 · Ano 4 · Ano 5 · Ano 6 · Ano 7 · Ano 8 · Ano 9

Tópicos › Sexto ano › Emulação do Technics KN5000

Emulação do Technics KN5000

Felipe "Juca" Sanches dedicou boa parte do ano a emular no MAME o teclado musical Technics KN5000. Primeiro começou um disassembler da CPU TLCS-900 e estudou o firmware. Depois começou a preparar o pull request do driver, corrigiu o tratamento de interrupções e reuniu versões do firmware. No teclado físico, trocou a placa do painel e procurou formas de fazer o dump das ROMs sem sobrescrevê-las.

Sexto ano: novembro de 2022 a outubro de 2023

Disassembler de TLCS-900 e estudo do firmware

Felipe começou, com base no ExecTrace, um disassembler da CPU Toshiba TLCS-900/H e documentou as jump tables do firmware. RicBit sugeriu melhorias no código e Leonardo Roman compartilhou o manual da CPU. Felipe também encontrou símbolos de depuração no binário e comprou um Neo Geo Pocket Color, que usa a mesma CPU.

Teclados Technics (KN5000, KN7000 e outros): todos os anos ›

23 jan 2023 Início de um disassembler TLCS-900 para o firmware do Technics KN5000 ★★★

Felipe "Juca" Sanches começou um disassembler da CPU Toshiba TLCS-900/H, usada no teclado Technics KN5000 e no Neo Geo Pocket, com base no ExecTrace, depois de uma tentativa anterior com o GNU binutils. Ele propôs rotinas para detectar cartuchos de Neo Geo Pocket e vetores de boot. Na primeira etapa, desmontou 184 instruções em sequência a partir do ponto de entrada do firmware. O próximo passo é marcar as instruções de desvio. Quando L. perguntou sobre suporte a MIDI no MAME para o teclado emulado, ele respondeu que já existe.

Participantes: Felipe "Juca" Sanches, L.

Ir para o início da conversa · mensagens-chave: #25327 · #25335 · #25389

27 jan 2023 Jump tables no firmware do KN5000 e publicação do TLCS900_ExecTrace ★★★

Felipe "Juca" Sanches explicou como documenta as jump tables do firmware do KN5000 (por exemplo, a de 4 ponteiros em 0xFCB6F9, declarada com read_jump_table) para que o disassembler encontre mais rotinas. Ele também encontrou tabelas de 192 ponteiros e procura falhas de verificação de índice que permitam executar código para depurar seu descompressor. Ao publicar o código, RicBit identificou um trecho acidentalmente quadrático e sugeriu usar set() e match case, e Leonardo Roman compartilhou o manual do TLCS-900 de 1994 para resolver instruções desconhecidas. Felipe ainda citou a mesa Sony PVE-500, que usa CPUs TLCS-Z80 e tem driver no MAME.

Participantes: Felipe "Juca" Sanches, L., RicBit, Pedro de Medeiros 👾, Leonardo Roman

Ir para o início da conversa · mensagens-chave: #25557 · #25615 · #25630

30 jan 2023 Compra de um Neo Geo Pocket Color, com a mesma CPU do KN5000 ★

Felipe "Juca" Sanches comprou no eBay um Neo Geo Pocket Color, que usa a mesma CPU do KN5000, e discutiu o que fazer com ele, como portar a VM do Another World, que esbarra na resolução da tela. Erin Pinheiro contou como trouxe um teclado musical do Reino Unido como bagagem despachada.

Participantes: Felipe "Juca" Sanches, Pablo Vasques Bravo-Villalba, L., Erin Pinheiro 🐿

Ir para o início da conversa · mensagens-chave: #25675 · #25679 · #25684

2 fev 2023 Símbolos de depuração no firmware do KN5000 ★★

Felipe descobriu que o binário do firmware do teclado Technics KN5000 contém símbolos de depuração e escreveu uma função para ler as strings e os ponteiros, embora os nomes ainda não se encaixassem. Ele separou o código de estudo do KN5000 do disassembler genérico da CPU TLCS900H e citou como próximo passo detectar e interpretar o cabeçalho de cartuchos de Neo Geo Pocket Color.

Participantes: Felipe "Juca" Sanches

Ir para o início da conversa · mensagens-chave: #25698 · #25709 · #25710

Driver do KN5000 no MAME

Felipe começou a reorganizar o branch local para enviar ao MAME um pull request com o esboço do driver, cujo primeiro commit adiciona suporte à variante TMP94C241 do TLCS900. Depois corrigiu a execução das rotinas de interrupção, e com isso o firmware passou de um laço de espera, mas a tela continuou preta. Ele também fez uma transmissão ao vivo sobre o trabalho.

Teclados Technics (KN5000, KN7000 e outros): todos os anos ›

20 fev 2023 Driver do KN5000 no MAME: preparação do pull request e documento ★★★

Felipe começou a reorganizar seu branch local do MAME com o esboço de driver do Technics KN5000 para enviar um pull request, que ainda não dá sinal de vida. O primeiro commit adiciona suporte à variante TMP94C241 do TLCS900. Ele também abriu um documento público para registrar o código de boot e a inicialização do hardware.

Participantes: Felipe "Juca" Sanches

Ir para o início da conversa · mensagens-chave: #26098 · #26105

6 mar 2023 KN5000 no MAME: tratamento de interrupções do TLCS900 ★★

Felipe corrigiu a execução das rotinas de interrupção no emulador do TLCS900 usado pelo KN5000 no MAME. Com isso o firmware passou de um laço de espera que, segundo ele, aguarda uma variável atualizada por uma interrupção de timer, mas a tela VGA continua preta. Como próximo passo, ele propôs registrar a comunicação serial com o painel de botões e implementar emulação de alto nível (HLE) dos microcontroladores do painel, cujo código não foi extraído. Também notou que a Technics fabricou pianos digitais com a mesma arquitetura.

Participantes: Felipe "Juca" Sanches, Augusto Almeida

Ir para o início da conversa · mensagens-chave: #26391 · #26401 · #26402

9 mar 2023 Live sobre o KN5000 e a placa do painel danificada ★★

Felipe fez uma transmissão ao vivo no YouTube sobre a emulação do KN5000 no MAME. Depois mostrou a PCB do painel de controle danificada e o microcontrolador do painel. Disse que já comprou uma placa nova e que pretende usar a danificada com um Arduino para decodificar o protocolo. Pelo que entendeu, o chip contém uma mask ROM, e o dump exigiria decapping.

Participantes: Felipe "Juca" Sanches, Hugo (Agaelebê), Pablo Vasques Bravo-Villalba, Ismael Luceno

Ir para o início da conversa · mensagens-chave: #26415 · #26416 · #26430

Documento de pesquisa sobre a emulação

Felipe registrou o código de boot e a inicialização do hardware num documento público, que chegou a 22 páginas e depois a 45. Ele pediu leitura e comentários e cogitou publicar um livro sobre o processo, se o emulador funcionar.

Teclados Technics (KN5000, KN7000 e outros): todos os anos ›

25 fev 2023 Documento de emulação do KN5000 chega a 22 páginas ★★

Felipe mostrou um HD de 1 GB com mais de 20 anos e sem dados, comprado por ser um item especial. Contou que o documento sobre a emulação do KN5000 já tinha 22 páginas e que escrever o documento ajuda o próprio desenvolvimento do emulador, e pediu leitura e comentários.

Participantes: Felipe "Juca" Sanches, Robson França, Augusto Almeida

Ir para o início da conversa · mensagens-chave: #26196 · #26200 · #26201

17 mar 2023 Documento do KN5000 cresce para 45 páginas ★★

Felipe indicou mensagens antigas do grupo e o documento do KN5000, que passou de 35 para 45 páginas numa noite. Ele planejou traduzir para o inglês a técnica de dump pela rotina de backup das configurações do usuário e cogitou publicar um livro sobre o processo, se o emulador funcionar.

Participantes: Felipe "Juca" Sanches, Flávio Amieiro, Ismael Luceno

Ir para o início da conversa · mensagens-chave: #26537 · #26542 · #26543

Versões do firmware e estratégias de dump

Felipe recebeu do dono finlandês de um site antigo as versões 7 e 8 dos discos de atualização do firmware e publicou um pacote com os discos no Internet Archive; depois recebeu também a versão 6 e o software HD-TechManager5000. Ele identificou as versões instaladas no seu teclado, ainda sem dump. Como possível vetor de injeção de código para extrair a ROM principal sem alterá-la, avaliou a atualização da flash da placa de disco rígido.

Teclados Technics (KN5000, KN7000 e outros): todos os anos ›

26 fev 2023 Discos de atualização do firmware do KN5000 no Internet Archive ★★★

Felipe pediu ao dono finlandês de um site de cerca de 20 anos os discos de atualização do firmware do KN5000 com links quebrados e recebeu as versões 7 e 8; a versão 6 ainda faltava. Ele listou as datas das versões 7 a 10 e explicou que versões antigas permitem comparar binários e procurar bugs exploráveis, e que ainda busca uma forma de fazer o dump a partir de um firmware não modificado. L. e Felipe notaram que o Wayback Machine guardou páginas 404 no lugar de alguns desses arquivos. Felipe publicou um pacote com os discos no Internet Archive.

Participantes: Felipe "Juca" Sanches, L.

Ir para o início da conversa · mensagens-chave: #26240 · #26249 · #26287

2 mar 2023 Placa de disco rígido do KN5000 e o HD-TechManager5000 ★★★

Ao extrair o disquete de instalação do disco rígido opcional do KN5000, Felipe viu que a atualização da flash da controladora não é comprimida. Isso a torna candidata a vetor de injeção de código para fazer o dump da ROM principal sem alterá-la. Ele confirmou que um chip dessoldado por Ronaldo foi lido corretamente, verificando os bytes checados pelo autoteste. O dono finlandês do site lhe enviou a versão 6 do firmware e o software HD-TechManager5000, de 1998.

Participantes: Felipe "Juca" Sanches, Ronaldo Verardo, L., Robson França

Ir para o início da conversa · mensagens-chave: #26313 · #26321 · #26338

15 mar 2023 KN5000: troca da placa do painel e versões de firmware instaladas ★★★

Felipe substituiu a placa danificada do painel por uma nova e verificou as versões de firmware: o teclado veio de fábrica com a versão 4 ("Main Program 1284"), ainda sem dump. A placa de disco rígido instalada tem firmware 2.06i, também sem dump, o que impede regravar qualquer uma das ROMs antes de extraí-las. Ele considerou projetar uma placa de extensão só com uma ROM ou comprar uma segunda placa-mãe, e sugeriu criar um substituto do binxelview para GNU/Linux.

Participantes: Felipe "Juca" Sanches

Ir para o início da conversa · mensagens-chave: #26494 · #26518 · #26522

Painel, disquetes e o teclado físico

Felipe trocou a placa danificada do painel e pretende usar a antiga com um Arduino para decodificar o protocolo. Nos experimentos com disquetes, encontrou nomes de pinos errados no esquemático do manual de serviço e um tutorial de modificação do Gotek com um erro de alimentação. Leonardo Roman sugeriu o FlashFloppy, e Felipe passou a estudar o código desse firmware.

Teclados Technics (KN5000, KN7000 e outros): todos os anos ›

9 mar 2023 Live sobre o KN5000 e a placa do painel danificada ★★

Felipe fez uma transmissão ao vivo no YouTube sobre a emulação do KN5000 no MAME. Depois mostrou a PCB do painel de controle danificada e o microcontrolador do painel. Disse que já comprou uma placa nova e que pretende usar a danificada com um Arduino para decodificar o protocolo. Pelo que entendeu, o chip contém uma mask ROM, e o dump exigiria decapping.

Participantes: Felipe "Juca" Sanches, Hugo (Agaelebê), Pablo Vasques Bravo-Villalba, Ismael Luceno

Ir para o início da conversa · mensagens-chave: #26415 · #26416 · #26430

15 mar 2023 KN5000: troca da placa do painel e versões de firmware instaladas ★★★

Felipe substituiu a placa danificada do painel por uma nova e verificou as versões de firmware: o teclado veio de fábrica com a versão 4 ("Main Program 1284"), ainda sem dump. A placa de disco rígido instalada tem firmware 2.06i, também sem dump, o que impede regravar qualquer uma das ROMs antes de extraí-las. Ele considerou projetar uma placa de extensão só com uma ROM ou comprar uma segunda placa-mãe, e sugeriu criar um substituto do binxelview para GNU/Linux.

Participantes: Felipe "Juca" Sanches

Ir para o início da conversa · mensagens-chave: #26494 · #26518 · #26522

19 mar 2023 Drive de disquete do KN5000 e erros no esquemático ★★

Com o painel consertado, Felipe começou os experimentos com disquetes, mas o drive do KN5000 riscou um disquete novo. Ao estudar o circuito no manual de serviço, encontrou nomes de pinos errados no controlador de disco. Erin atribuiu os erros a artefatos de escaneamento, como os de copiadoras Xerox que trocam caracteres.

Participantes: Felipe "Juca" Sanches, Erin Pinheiro 🐿

Ir para o início da conversa · mensagens-chave: #26564 · #26571

21 mar 2023 Gotek, FlashFloppy e o funcionamento de drives de disquete ★★

O novo drive de disquete funcionou no KN5000, mas o drive USB do laptop danificou o disco. Felipe encontrou um tutorial de modificação do Gotek para o KN5000 com um erro de alimentação, e Leonardo sugeriu o firmware FlashFloppy. Felipe passou a ler o código-fonte do FlashFloppy para entender drives de disquete a fundo, e foram citados o Glasgow e o Greaseweazle.

Participantes: Felipe "Juca" Sanches, Leonardo Roman, L., FTMaciel

Ir para o início da conversa · mensagens-chave: #26603 · #26612