Interface Web para o Java MSX

Mensagem original: http://groups.yahoo.com/neo/groups/msx-rb/conversations/topics/3037

Olá, pessoal.

É meu primeiro post na lista, apesar de já estar cadastrado a mais de um ano.

Meu nome é Paulo, mas a muito tempo adotei o nick 'Arkanon'. Por quê? Longa história, mas tem a ver com o Arkanoid ;-)

Bom. Sou um apaixonado por MSX, mais devido a uma ROM específica que por qualquer outra coisa.

Usei MSX de 1988 a 1991 no colégio, da 8ª série ao 3º ano, por isso meu contato com ele foi quase exclusivamente educacional. Quase, pois sempre dávamos uma jogadinha de H.E.R.O ou Road Fighter quando os professores não estavam por perto :-p. Mas, basicamente, eu só usava o HotLogo. Facilmente me tornei um aficcionado pela filosofia dessa linguagem educacional de programação.

Quando entrei para a universidade (1992), não se usava MSX, e desde então, desesperadamente, testei literalmente dezenas de versões de Logo, para DOS, Windows 3.11, Windows 95, Linux (modo texto e gráfico); mas nada me satisfez. Ou não tinha uma tartaruga propriamente dita (tinha um triângulo), ou a entrada de comandos era isolada da tela de saída, ou era em inglês, ou isso, ou aquilo. O fato é que, para mim, o HotLogo ainda não encontrou substituto.

Não é meu desejo discutir isso, contudo. Gostaria apenas de relatar como, em 1998, quando descobri os emuladores, voltei a poder usufruir um pouco do antigo prazer de usar (ainda que em raros momentos de nostalgia) a linguagem de programação que me conduziu ao mundo da informática.

Redescobri os velhos disquetes guardados a mais de 7 anos, boa parte no formato 5¼ ainda. Consegui reanimar um drive correspondente, rodei novamente o Graphos, o Aquarela, e muito mais, encontrado pela Internet ou recuperado de floppies.

As ROM's foram outra fonte de prazer. No meu colégio tínhamos muito poucos cartuchos; a maioria do software era executado a partir de disquetes. Imaginem, então, minha ânsia em encontrar, em algum dos inúmeros sites sobre MSX da Internet, uma ROM com o HotLogo, ou mesmo uma versão do dito, em disquete ou o que fosse (desde 1991, ficava imaginando se e como seria possível copiar o conteúdo do cartucho do HotLogo). Troquei algumas poucas mensagens com gurus do MSX, mas a dúvida perdurou. Estranhamente, até o momento (1998), ninguém parecia ter tido algum interesse em copiar aquele cartucho.

Por mais um ano essa vontade permaneceu insatisfeita. Então, em 1999 encontrei uma versão:

http://www.msxarchive.nl/pub/msx/misc/msx-logo.rom

Um MSX Logo em alemão (ou outra língua similar que não identifiquei) que, excetuando a forma como os comandos estavam escritos, era em tudo idêntico ao HotLogo. Aí tive certeza: se aquele Logo estava num arquivo ROM, ou o HotLogo também já estaria, ainda que perdido em algum site remoto, ou *tinha* que ser possível colocá-lo. Só por curiosidade, resolvi editar o arquivo ROM num editor de binários e ver a cara do conteúdo...

Talvez encontrar o Logo em alemão(?) me tenha feito pirar, mas ver os três primeiros caracteres da ROM quase me levou a um infarte :-p

ABC

ABC! E depois uma sequência de caracteres com significado ininteligível para mim, mas sem importância no caso. A grande revelação foram os três primeiros. Numa fração de segundo lembrei de uma das diversões que eu e meus colegas tínhamos na nossa época: observar o conteúdo da memória do MSX, em Logo, com o comando .examine, do byte 0 ao 65535 :-) O retorno do comando era o código ASCII do caractere, que facilmente convertíamos para o caractere correspondente e lançávamos na tela, numa estranha sequência descendente, ao melhor estilo Matrix, hehe. E ficávamos olhando, na expectativa de, quem sabe, entender o significado da vida ou os segredos do universo :-p

Mas, afinal, o que tinha lá? Até 16383 (16K) estava gravado o Basic (acho, me corrijam por favor, eu gosto de MSX mas nunca fui um hacker :-). Os bytes 16384 a 49151 (32K) continham o programa gravado na ROM do cartucho do HotLogo. Acima disso, até 65535 (últimos 16K), era a RAM disponível para os programas em Logo. E adivinhem: quais eram os bytes 16384, 16385 e 16386? Hein?

EXATO!

Quase derrubando tudo pelo caminho, corri como um desesperado para o local onde estavam guardados os antigos HotBit e Expert. "Bootei" o Logo e, após oito anos de hibernação, fiz o último programa em HotLogo da minha vida: ".examinei" os bytes de 16384 a 49151, lançando o código ASCII para dentro do corpo de um procedimento "container" (algo altamente sofisticado, considerando o uso mediano que a maioria faz do Logo :-p) e, periodicamente (devido a exteeeeeeeensa memória de 16K disponível para os programas em Logo :-), ia gravando a área de trabalho num arquivo sequencial, em disquete. Apagava o conteúdo do procedimento "container" gerado, e continuava do ponto interrompido. Levou a noite toda, mas, pela manhã, eu tinha uma sequência de arquivos texto (no formato do Logo), cada um com uma sequência de números mágicos, entre 0 e 255 >:-)

Daí pra fazer um script em shell que convertesse a codificação dos arquivos sequenciais da forma do MSX para a do Unix, outro que concatenasse apenas os códigos ASCII num único arquivo e um em Perl que convertesse cada código ASCII no caractere correspondente foi um pulo. Em segundos eu tinha um arquivo chamado hotlogo.rom, que, sem causar muita surpresa, mas me fazendo tremer de emoção, bootou de primeira no brMSX :-)))

Isso aconteceu em fins de agosto de 1999. Os programas em Logo, Perl e BASh, assim como os arquivos gerados pelo dump, ainda existem:

http://github.com/arkanon/svl/tree/gh-pages/logodump/

A poucos dias encontrei no site MSX Pro um arquivo para download disponibilizado pelo Vanderlei Gregolim vgregolin@terra.com.br, com uma versão da ROM do HotLogo e uma ROM de um tal de Logo BR, do qual nunca tinha ouvido falar antes. Fico muito curioso em saber como ele fez o dump, se foi seguindo o mesmo raciocínio ou usando alguma técnica mais geral de dump de cartuchos, uma vez que a descoberta por mim é inutilizável para jogos (imagino). Como disse, meu conhecimento em MSX e técnicas relacionadas é bastante restrito. Resume-se quase que unicamente à linguagem Logo na versão do HotLogo.

• • •

A longa introdução acima não é uma mera apresentação ou uma história sentimental. Ela justifica porque fui levado, tendo descoberto o JavaMSX uma semana atrás, a me interessar em desenvolver uma modesta interface web para ele:

http://arkanon.github.io/svl/jmsx/

Como alguns devem saber, o JavaMSX é um emulador bastante simplificado, sem suporte a floppy e outras coisas interessantes, mas o principal ele faz: emula som e carrega ROM's :-) Sua grande característica, IMHO, é que roda em qualquer browser com um plug-in Java.

Podem imaginar, portanto, a minha decepção quando, dentre todas as ROM's que eu testei, uma não rodou: hotlogo.rom. O que é bastante estranho, considerando que até agora ela rodou nos principais emuladores de MSX1: {Blue,Red,BR,f,No$,Para,Open}MSX, tanto em ambiente Windows quanto DOS e Linux. As ROM's do MSX Logo e do Logo BR (HotLogo 1.2) também não rodam.

Testei também o jMSX http://www.hwado.net/javamsx/ originalmente do Arnon Gonçalves Cardoso arnon@cardoso.com mas, apesar de ser muito mais rápido para as ROM's que funcionam, também não rodou nenhum dos *logo.rom... :-(, sem contar que aparentemente não emula som (problema secundário, no meu caso).

Outra ROM que não roda é a do jogo Theseus. Diferente do Logo, o emulador entra no Basic ao invés de ficar travado na tela inicial de boot.

Por isso estou enviando essa mensagem. Eventualmente, alguém com um conhecimento mais profundo que o meu em emuladores (o que não é _nada_ difícil :-) pode se interessar pelo caso e dar uma olhada. Talvez descubram o motivo do Logo não bootar. Também enviei um pedido de ajuda para o autor do JavaMSX, Zerjillo http://www.zerjio.com/JavaMSX/. Vamos ver se ele pensa no caso. Ainda não recebi nenhuma resposta. Tampouco tenho o código fonte dos .class ou o achei explicitamente disponível no site original. Sequer sei a versão do programa ou de quando ela data.

Agradeço qualquer tipo de ajuda sobre o assunto.

E valeu, se tiveram paciência para ler até aqui :-)

[]'s

------------------------ __o arkanon@lsd.org.br -.------------
Arkanon _`\<, arkanon.github.com \
-=---=---==---=---=- (_)/(_) `----------
Lajeado - RS - Brasil --------- ICQ 34 789 30 - LinuxUser 102.514
---------------------------------------------------------------------