Etc.

Entrevista | Ronivon Costa, autor do projeto MSXPi

Projeto MSXPi. Foto: divulgação | RetroBased
Foto: Divulgação

O MSXPi é um projeto de código aberto em constante desenvolvimento que compreende uma interface em forma de cartucho para o MSX. Essa interface possibilita a sua comunicação com o Raspberry Pi, permitindo, entre outros, a execução de jogos diretamente da internet.

RetroBased conversou com o autor do projeto, Ronivon Costa, que deu mais detalhes sobre as funcionalidades da interface e planos para o futuro.

RetroBased — Fale um pouco sobre projeto MSXPi. Essa interface em cartucho permite a comunicação do MSX com o Raspi, certo?

Ronivon Costa (RC) — Sim. Em 2007 eu estava em Portugal, descobri o FPGA e peguei uma paixão por isso. Sabe quando você encontra uma coisa que você não fazia ideia que existia? Foi fascinante para mim, porque como eu não tenho formação de eletrônica, eu não sei fazer circuitos eletrônicos, e com o FPGA você consegue fazer tudo, é como se fosse eletrônica digital. Sabendo eletrônica digital e aprendendo uma linguagem de programação, você consegue trabalhar com FPGAs. Meu projeto usa CPLD, que é como se fosse FPGA, mas de menor capacidade. Você grava, já fica gravado ali como se fosse uma flash RAM, e é um circuito mais simples. Você pega um CI, põe ele numa plaquinha, programa e ele fica gravado, fica com seu projeto configurado no CPLD como se fosse uma flash RAM, como se fosse uma memória não volátil que não perde a configuração que você fez. Uso um CPLD no projeto por causa disso.

Então comecei a mexer com FPGA em 2007, comecei a estudar, fiz um outro projeto, que é o Z80 SOC (System On Chip), publiquei no GitHub também, e lá para o ano de 2010 eu pensei “eu gostaria agora de fazer interface com o MSX”, brincar com o FPGA, fazer ele falar com o MSX de alguma forma, criar um cartucho etc., e comecei a mexer com isso. Então meu primeiro avanço foi conseguir fazer uma pequena interface em que eu conseguia dar um comando no MSX e acender um LED através do CPLD. Esse foi meu grande avanço tecnológico [risos].

RetroBased — Mas isso aí, conseguir acender o LED, é um feito que já deixa a gente muito feliz [risos].

RC — Pois é. Porque o princípio é que é importante. Aquela coisa do “cara, eu consegui”. Eu consegui fazer um OUT no BASIC do MSX, ele passou pela interface, pelo barramento, chegou numa placa, passou pelo CPLD e conseguiu acender um LED, e apagar também. Pronto! É um princípio básico que você reutiliza em outras partes do projeto. E foi o que eu fiz. Continuei o estudo e tentei angariar mais gente para fazer alguma coisa relacionada. E aí cheguei no Emiliano [Fraga] e no Luis Luca, que é o que faz o Zemmix aqui no Brasil. Então começamos a conversar, a trocar ideias, e cada um tinha uma ideia. A minha era a de fazer uma interface genérica de FPGA ser um periférico para o MSX, por exemplo, ser um cartão SD ligando na interface do MSX. Aí o Emiliano falou: “isso é legal, mas também acho que seria legal fazer uma aceleradora para o MSX”. E aí chegamos na ideia de que o Raspberry Pi, por ser muito barato, seria bom como aceleradora para microcomputadores. Nesse momento que surgiu a ideia do Pi no meio dos projetos. E o Luca entrou na jogada porque ele é um cara que entende de eletrônica, sabe fazer os projetos, então para mim era importante ter uma pessoa que entende de desenvolvimento e outra que entende de eletrônica, para que a gente conseguisse formar uma equipe para fazer o projeto. Chegamos a formar essa equipe, mas ela não foi pra frente porque o Luca estava ocupado com outros projetos de MSX e o Emil também estava com falta de tempo. Então me vi sozinho, mas toquei o projeto mesmo assim.

Comecei a fazer toda a parte de hardware, tinha que fazer o desenho da placa; o esquema eletrônico; a programação do CPLD em VHDL, que eu já conhecia; a interface com o MSX eu já havia aprendido por volta de 2010, aquela que fez acender o LED. E aí precisei programar em C no Raspberry e em Assembly no MSX. Programei minha vida inteira em Assembly, desde a época que tive meu primeiro MSX, e C eu já havia dado umas pinceladas, então fui desenvolvendo o projeto reaprendendo C para conseguir juntar tudo. É um projeto multidisciplinar, tem que saber um pouco de eletrônica, FPGA, circuito elétrico, programação, conhecer o hardware do Raspberry, então isso toma muito tempo. E foi assim o começo do projeto MSXPi, a ideia inicial de fazer uma interface com o Raspberry Pi partiu de nós três.

Projeto MSXPi. Foto: divulgação | RetroBased

Da esquerda para direita: primeiro protótipo / versão 0.7 distribuída (12 unidades) / novo protótipo de uma provável nova versão.

RetroBased — Qual modelo de Raspberry você usou na prototipagem? Tem alguma diferença para o projeto usar, por exemplo, um Pi 3 ou um Pi 1? O primeiro modelo já é suficiente para o projeto?

RC — Sim, o primeiro modelo é suficiente, até porque tem uma limitação no projeto, que eu aceitei como estratégia, que seria a de não tentar fazer nada de barebone no Raspberry Pi. Ou seja, tirar o Linux e programar direto para o hardware do Pi. É uma coisa que o [Victor] Trucco fez para aquela interface em HDMI que ele criou para o TK90-X. Porque quando você usa essa programação barebone você perde todos os drives de acesso ao Pi, e não quis fazer isso porque eu não domino o Pi, a programação de hardware, do ARM etc. Então decidi assumir uma limitação, que é usar o Linux do Pi, e uma vez que a gente passa a usar o Linux do Pi, você pode rodar isso em qualquer Pi, desde o modelo inicial até o Pi Zero. Mas se o modelo de Raspberry for mais rápido, você provavelmente vai ter uma performance melhor. Essa é a única diferença. Por exemplo, eu compilo os código no Pi 3, tiro o cartão SD, coloco no Pi Zero, dou boot e tudo funciona do mesmo jeito, nem preciso recompilar nada.

RetroBased — O que já é possível fazer através da interface?

RC — A versão 0.7, que é a versão estável e que eu publiquei no GitHub, tem acesso ao cartão SD. É possível fazer um CALL e o MSX carrega do próprio Pi o client que expande o MSX com novos recursos. Quando você faz esse CALL, ele faz o download da aplicação, carrega na memória e você tem um interpretador de comandos. Esses comandos têm acesso ao cartão SD do Pi, à internet e discos compartilhados por exemplo via Windows. Eu posso carregar ROMs diretamente, programas .bin, por exemplo. E implementei uma coisa bem legal que é configurar o Wi-Fi do Pi também por esse interpretador de comandos, que eu chamo de cliente. Então pelo cliente é possível acessar a internet, baixar programas já executando-os, programas .bin armazenados em sites, FTP etc. Ficou bem legal essa versão inicial. A versão que estou produzindo agora já dá suporte ao MSX-DOS 1. Ela dá boot no MSX-DOS, sendo que a imagem está no cartão do Pi. A partir daí, você pode usar os comandos para carregar os programas normalmente, como se fosse o MSX-DOS. Ela enxerga a imagem no Pi como se fosse um disquete. Na próxima versão será possível acessar uma partição em um pen drive. Então usuário vai ter um FD formatado com o DOS dentro. Essa versão terá também suporte ao Nextor e ao DOS 2.

RetroBased — Então é possível ver na tela do MSX o conteúdo de repositórios de arquivos online, como o MSX Archive?

RC — Sim. A versão atual tem comandos dentro do DOS que fazem isso. Posso dar, por exemplo, um DIR http:// e a URL, e ele me mostra o conteúdo. A versão anterior também carrega programas diretamente. Posso dar um LOAD http://qualquer-coisa/game.rom e ele carrega esse jogo remotamente. O mesmo serve para servidores locais compartilhados.

RetroBased — Isso eliminaria a necessidade de eu ter uma interface de rede no MSX para fazer download da internet, carregar programas remotamente.

RC — Sim. Você tendo a interface MSXPi conectada e com suporte ao MSX-DOS torna-se desnecessário uma outra interface de rede. Só tem uma questão: uma diferença básica é que o Pi não sendo uma interface de rede, ele não tem, por exemplo, um stack TCP/IP. O comando PING não vai saber que o MSXPi está disponível, ele não consegue falar com o MSXPi, porque os comandos que estão implementados no momento são, digamos, os comandos nativos. Então eu tenho um comando dentro do DOS que se chama PDIR. No lugar do comando DIR, que listaria os arquivos do drive do MSX, o PDIR ignora o disco do MSX, vai até o cartão SD, ou seja, no file system do Pi, e lista o conteúdo desse file system. Ele escapa daquele ambiente do MSX-DOS e do disco. Então tudo depende dos comandos que forem criados. Fui criando uma boa parte dos comandos com o meu tempo, mas é muita coisa para se fazer, desenvolvimento consome muito tempo. Mas com os comandos atuais já é possível fazer essas coisas, download de arquivos da internet, executar programas .rom e .bin. Para executar, criei um loader que não é o EXECROM, pois este só vê o conteúdo do disco do MSX, ele não vê, obviamente, o file system do Raspberry Pi. Então criei esse loader que enxerga não só internet, mas também o file system do Pi. Em compensação, ele não entende a quantidade de imagens que o EXECROM consegue entender. A não ser que alguém conseguisse portar o EXECROM para o MSX Pi. Preciso de desenvolvedores que aceitem esse desafio [risos].

RetroBased — Já é uma maravilha o simples fato de poder listar e carregar jogos online.

RC — Sim, o projeto do jeito que está possibilita carga de jogos, acesso a internet e outras coisas que ninguém explorou ainda porque não consegui equipe para fazer isso. Por exemplo, reprodução de música. Você pode reproduzir música no Pi e fazer a saída vir para o MSX ou sair pelo estéreo do próprio Pi enquanto os jogos estão rodando. Dá pra isso ser desenvolvido.

RetroBased — Que formatos de música você diz?

RC — Wave, MP3, qualquer tipo.

RetroBased — Então só seria preciso ter o player no Pi?

RC — Exatamente. Essa é a ideia. Porque já existe o player no Pi. A gente só tem que fazer a interface. O MSX manda comandos, o MSX diz: “Pi, eu quero que você toque essa música, depois aquela” e o Pi vai receber esses comandos, iniciar os players, receber os nomes das músicas e começar a tocar. A música pode ser executada tanto pela saída estéreo do Pi como pelo PSG do MSX, através da expressão SOUND IN. No caso do PSG, a qualidade não vai ser a mesma. Essa aplicação não existe ainda, e ela é até simples de se fazer, mas meu interesse foi mais na área de armazenamento, boot, portar os drivers etc.

Projeto MSXPi. Foto: divulgação | RetroBased

RetroBased — Quais são seus planos no futuro com a interface? Sabemos que você está ainda testando muita coisa e que o projeto é open source, mas você pretende comercializar uma versão fechada também? Deve ter muita gente que vai ficar interessada em comprar do que montar por conta própria.

RC — Liberei recentemente a versão inicial, a 0.7, e ela já está com os drivers de DOS 1. Já está no GitHub, inclusive com todos os fontes do hardware, do esquema, da aplicação servidora do Pi, dos clientes do MSX. Todos os fontes estão disponíveis. Se alguém tiver interesse em produzir, está tudo lá. Por enquanto a pessoa terá que se contentar com o que tem lá, pois é o que existe, foi o que eu consegui desenvolver. Agora, pro futuro, essa versão que nós temos agora irá ficar do jeito que está. Estou trabalhando numa versão que tem um CPLD [que faz toda a lógica da interface] que é maior. A ideia é melhorar para ter capacidade de ter também um mapper interno no cartucho do MSX Pi para poder rodar MSX-DOS 2, que precisa de 64k, ou o Nextor, que precisa de uma ROM de 128k. Então os planos são esses. A próxima versão vai sair com suporte ao Nextor. Fora isso, uma coisa mais interessante ainda: estou trabalhando em uma funcionalidade com o próprio Néstor Soriano [Konamiman, criador do Nextor], mas que ainda está bem no começo, que é você ter um programa residente no próprio DOS 2. Esse programa carrega um driver, e esse driver cria um disco virtual por onde você acessa o Raspberry Pi e o file system direto do DOS 2, sem a necessidade de uma alteraçãono Kernel do DOS ou do Nextor. Isso ainda vai demorar um pouquinho, porque o mecanismo de interceptação das chamadas dos DOS2 ainda está em desenvolvimento pelo Néstor, e o software para o MSXPi só ficará totalmente pronto quando este desenvolvimento estiver concluído. Mas outra boa notícia sobre esse novo projeto é que ele funcionará na MSXPi atual sem alterações na interface, e também nas versões futuras.

LINKS ASSOCIADOS AO PROJETO

Site Retro-CPU.run | http://retro-cpu.run
Grupo no Facebook | https://www.facebook.com/groups/retrocpu

Carioca, jornalista, empreendedor e nerd. Amante de games e de retrocomputação. Editor do site RetroBased e proprietário da loja virtual Retro Mall. No YouTube, faz resenhas de itens ligados a micros antigos, consoles clássicos e retrogames.
Comentários
T o p o