Nemesis Lonestar – 8080-Z80 ASM

A cada ano centenas, milhares ou até milhões de páginas na internet são criadas, removidas, atualizadas ou abandonadas até que sejam naturalmente esquecidas, dependendo apenas dos snapshots providenciados pela Wayback Machine da Internet Archive.

Com isso muito material é agregado ao ecossistema da web e também muitos deles são perdidos para sempre, que para mim é um ciclo natural na rede.

Entretanto muita informação jamais deveria desaparecer da internet, principalmente aquelas sobre tecnologias antigas que na maioria das vezes nos mostram a criatividade e as técnicas utilizadas no passado pelos pioneiros da tecnologia.

Infelizmente o site MSX Info Pages do Hans Otten, fechou as portas no dia 02 de abril de 2019 e com isso perdemos muito material importante não só para a comunidade de MSX, bem como para a comunidade de retrocomputação em geral, uma vez que o mesmo continha muita informação técnica agregada em uma única fonte.

É nesse contexto que apresento àqueles que não conheciam, o site Nemesis Lonestar que costumava estar nesse link aqui, mas que agora infelizmente está quebrado desde o dia 16 de janeiro de 2019, segundo o último snapshot gerado pelo Internet Archive.

O Nemesis Lonestar tinha muita informação técnica principalmente sobre programação Z80, dentre as quais uma tabela muito bem feita contendo todo o Instruction Set dos processadores 8080-Z80, muito bem organizado em colunas e que podia ser encontrado aqui nesse link que também deve estar quebrado.

Toda vez que eu programava em ASM e procurava por uma referência rápida do Z80, eu consultava essa página que está nos meus favoritos até agora, apesar de não mais existir no endereço original.

Felizmente temos a WayBack Machine, que pode ser sempre consultada para se obter o último snapshot dessa página que contém essa tabela de mnemônicos do Z80, entretanto apesar da Internet Archive manter esse snapshot, tomei a liberdade de baixá-lo (apenas dessa tabela de mnemônicos do Z80) e criar uma seção em meu blog para futuras consultas a quem interessar e também para agregar, gradativamente, ao material de referência de ASM e Z80 no blog.

Apesar de todas as mensagens de Copyright (c) do autor original da página e principalmente do mesmo citar que é expressamente proibida a reprodução de qualquer material do Nemesis Lonestar, acredito que a essa altura do campeonato ele não irá reclamar essa página, ou se reclamar no futuro, aí conversamos e tentamos resolver, mas no momento eu quero é ajudar na manutenção desse conteúdo.

Por isso deixo abaixo o endereço dessa tabela do instruction set do 8080-Z80, que costumava estar no site do Nemesis Lonestar mas que agora pode ser consultado aqui no meu blog nos endereços abaixo:

HTML version
http://popolony2k.com.br/xtras/programming/asm/nemesis-lonestar/8080-z80-instruction-set.html

Text version
http://popolony2k.com.br/xtras/programming/asm/nemesis-lonestar/opcodes.txt

[]’s
PopolonY2k


Revista MSX Brasil Oficial – No 2

MSX Brasil Oficial No 2

Após o lançamento da edição número 1 da fanzine MSX Brasil Oficial, em dezembro de 2018, liberamos o número 2 da fanzine que conta com muito mais conteúdo e “polêmicas” pertinentes ao universo MSX nos últimos tempos.

A periodicidade da fanzine ainda está sendo pensada mas deve ficar entre 3 ou 6 meses, dependendo do “calor” do momento na comunidade MSX mundial e também do número de contribuidores para o projeto.

Nessa edição, mostramos algumas novidades e lançamentos, nacionais e internacionais, que aconteceram na comunidade MSX nos últimos meses, além do bate-papo com o pai do MSX, Kazuhiko Nishi.

Vale ressaltar o artigo Pop!Code, com as opiniões técnicas e talvez “polêmicas” de membros proficientes da comunidade MSX mundial, sobre uma tecnologia muito utilizada pelos desenvolvedores de hardware atualmente, o FPGA. Nesse artigo falaram conosco, Fabio Belavenuto, contribuidor do Zemmix Neo (KdL) e Paulo Peccin, autor do renomado emulador online, WebMSX.

Daniel Ravazzi também nos brindou com um excelente artigo que relatou sobre MSX SAMPA 2018, que aconteceu em dezembro de 2018, onde tivemos a participação de diversos nomes relacionados ao universo MSX nacional e internacional através de palestras disponíveis online simultâneamente ao acontecimento do evento.

Em nome do time da MSX Brasil Oficial fanzine agradeço a todos os envolvidos por terem dedicado seu tempo e contribuição nessa edição da fanzine.

Esperamos que gostem, contribuam e façam suas sugestões na comunidade MSX Brasil Oficial no FaceBook, Vk, ou G+.

O download da Revista MSX Brasil Oficial – No 2 pode ser ser feito nesse link aqui.

Enjoy
PopolonY2k

Revista MSX Brasil Oficial – No 1

Revista MSX Brasil Oficial – No 1

Em meados de 2017 Erwin Brasil entrou em contato comigo para que considerássemos escrever uma fanzine, com uma certa periodicidade com o nome da comunidade MSX Brasil Oficial, que criamos e administramos desde 2010, inicialmente no extinto Orkut e posteriormente no FaceBook em 2011 onde é uma das maiores comunidades, senão a maior, de MSX dessa rede social.

O desafio foi aceito e desde então estivemos trabalhando nessa publicação que de fato já estava pronta há um certo tempo mas como faltava tempo para organizar a publicação e principalmente revisá-la, a fanzine ficou de molho desde então, mas com o segundo número já sendo pensado e desenvolvido, finalmente a primeira edição saiu do forno.

O formato da fanzine está e sempre estará em desenvolvimento e em constante mudança, bem como seu conteúdo estará cada vez mais robusto e com muitas variedades relacionadas ao mundo MSX em diversas áreas, desde análise de jogos, entrevistas com personalidades do universo MSX, novos lançamentos de software e hardware e até assuntos mais técnicos como programação de aplicativos, utilitários e jogos.

Esperamos que gostem, contribuam e façam suas sugestões na comunidade MSX Brasil Oficial no FaceBook, Vk, ou G+.

O download da Revista MSX Brasil Oficial – No 1 pode ser ser feito nesse link aqui.

Enjoy
PopolonY2k

Featured project – Aleste Gaiden – Part II (Box)

Já é de conhecimento de grande parte da comunidade MSX nacional e internacional, que recentemente foi desenvolvido no Brasil um port para cartucho do jogo Aleste Gaiden, feito pela comunidade brasileira através da MSX Brasil Oficial no FaceBook, jogo esse originalmente apenas disponível em disquete.

Eu já havia descrito aqui mesmo no blog através desse outro artigo aqui, os detalhes de como o projeto fora desenvolvido e as dificuldades enfrentadas no decorrer de seu desenvolvimento, entretanto antes da finalização da confecção dos cartuchos os participantes iniciaram uma conversação paralela visando a confecção de uma caixa personalizada para os cartuchos, deixando assim o projeto ainda mais “glamouroso”.

Ao contrário de 30 anos atrás, quando eramos apenas a geração de adolescentes que iria mandar no mundo, hoje somos programadores, artistas, empresários, designers, diagramadores, professores, já experientes que formam essa comunidade heterogênea que realmente faz a diferença.

Propaganda da Gradiente (1985) – A geração que vai mandar

Um dos caras que está mandando e está mandando muito bem 🙂 é o Ricardo Wilmers da RWS Print Solutions, também um dos membros bem atuantes da comunidade MSX, Apple II e de retrocomputação em geral.

Ele foi o responsável pela criação das caixas do cartucho Aleste Gaiden, cujo resultado ficou excelente, conforme pode ser visto nas imagens abaixo:

Como todos sabemos, a comunidade tem trabalhado para disponibilizar novos lançamentos, adaptações e relançamentos de software e hardware da forma mais barata e acessível a todos da comunidade, então a maioria desses trabalhos são feitos pelo prazer em sua grande maioria.

Entretanto de alguma forma esses trabalhos dão um retorno imediato ou até mesmo futuro seja por um trabalho contratado por algum membro da própria comunidade, para um outro fim profissional ou até mesmo pessoal, então deixo aqui os dados profissionais do Ricardo Wilmers, que recebi com o box e o cartão de sua empresa, a RWS Print Solutions, que conforme descrito no em seu cartão é especializada em Impressão Off-Set, Impressão Digital, Editoração Eletrônica, cópias preto e branco e coloridas, encadernações e tudo mais relacionado a essa área de impressão.

RWS Print Solutions
Rua Catolândia, 143 – 02839-000 – Freguesia do Ó – SP – Tel (11) 98182-4614
rwsgraph@gmail.com
Ricardo Wilmers Siqueira

Para finalizar deixo registrado aqui que, assim como feito anteriormente, o Marcelo Zoffy e o Júlio Lemos que foram imprescindíveis para a conclusão desse projeto e que já haviam sido presenteados com 1 cartucho cada um, também receberam esse Box feito pela RWS print solutions.

Que venham outros projetos.

[]’s
PopolonY2k

Chronicle Queue – A microsecond messaging framework

É chover no molhado citar que o mundo da computação se reinventa, avança e expande para novos modelos e tecnologias a cada ano, entretanto, para aqueles um pouco mais “experientes” na área de TI, é perceptível que nos últimos 10 anos um mercado, antes adormecido, tem ressurgido de uma forma que talvez se assemelhe ao boom causado com o surgimento da microinformática em meados dos anos 70.

Estou me referindo a computação de alta performance, onde tudo era desenvolvido de tal forma a se extrair a capacidade máxima das tecnologias existentes da época, uma vez que a própria tecnologia avançava de maneira mais lenta devido às limitações da própria época, obrigando os programadores a pensar em como economizar ciclos e estados de máquina.

A grande limitação, naqueles dias, estava relacionada à memórias de maneira geral, sejam voláteis (RAM) ou não voláteis (ROM, hard disks, Flash memories), sendo esses dispositivos caríssimos, até pouco tempo. Só para se ter uma ideia, em 1980 nos EUA, um hard disk de 26MB custava em média U$5.000 e 64KB de memória RAM custava em média U$405,00.

Memória RAM versus Hard disks

Historicamente as memórias RAM sempre estiveram muito a frente dos hard disks na questão de velocidade de E/S, mas por outro lado o custo por megabyte dos hard disks e a grande capacidade desses dispositivos sempre o colocaram à frente das memórias RAM no quesito capacidade de armazenamento.

Com o avanço e barateamento das tecnologias de armazenamento voláteis e não voláteis, aliado ao aumento gradativo do poder dos processadores, esse cenário mudou fazendo com que novas indústrias de tecnologia surgissem e despontassem para o mundo em pouquíssimo tempo.

Algumas delas tem seu “negócio” fortemente embasado no processamento em memória RAM, como é o caso de empresas desenvolvedoras de engines para jogos, já outras nem precisam de performance extrema sendo seu foco mesmo a venda de sua capacidade de armazenamento não volátil, como o DropBox por exemplo.

Entretanto existem aquelas empresas que necessitam de capacidade e performance extremas nos dispositivos voláteis (RAM) e nos não voláteis (hard disks), como por exemplo redes sociais, sites de busca, sites de comparação de preços, dentre outras que trabalham com informações dinâmicas e em grande quantidade.

Nesse cenário de alta capacidade de armazenamento e performance, aliado ao uso de tecnologias disponíveis nos diversos sistemas operacionais modernos, surgem tecnologias que utilizam as mais variadas técnicas computacionais já conhecidas dos pioneiros da alta performance de décadas passadas.

Chronicle Queue

Chronicle Queue é um componente de IPC (inter-process communication), open source, escrito em Java, que possibilita a transferência de grandes quantidades de dados em alta performance, entre threads, processos e máquinas, com persistência de dados em disco. Segundo a página do projeto no GitHub o Chronicle Queue é definido como “Micro second messaging that stores everything to disk“.

O grande segredo da performance do Chronicle Queue é que ele trabalha justamente utilizando estruturas simples porém rápidas tal qual as utilizadas por diversas aplicações nos primórdios da computação, que necessitavam armazenar e recuperar dados com uma performance aceitável e o faziam utilizando índices otimizados que apontam direto para o dado real no arquivo de dados em disco, entretanto ao contrário das antigas tecnologias, agora os arquivos de dados podem ser manipulados utilizando mecanismos de memory-mapping existente nos sistemas operacionais modernos, otimizando assim a performance das operações de E/S em disco.

Arquitetura e modos de operação

A interface básica de funcionamento da arquitetura do Chronicle Queue é bem simplista, com algumas poucas variações do modo de funcionamento, sendo restrito a um componente de escrita na fila, denominado Appender (producer) e um outro de leitura, denominado Tailer (consumer).

Dentro desse modelo, que é basicamente o tradicional pattern producer-consumer, o Chronicle Queue pode operar em modo sequencial (FIFO) ou aleatório, quando operando como Tailer e apenas em modo sequencial quando em modo Appender.

Modelo tradicional do Chronicle Queue (producer-consumer)

O Chronicle Queue, além do suporte à filas diretamente acessadas via os arquivos físicos da mesma, também possui outros modos de operação interessantes, dentre eles um modo de fila acessado via TCP/IP, ou seja, diversos Tailers conectados a uma fila via um Appender TCP, o que de fato diminui a performance de processamento das filas mas que por outro lado permite toda a facilidade de inter-process communication do Chronicle Queue, expandindo-a, uma vez que abre possibilidade de comunicação entre máquinas diferentes.

Outra característica do Chronicle Queue é que, diferente das estruturas IPC presentes nos sistemas operacionais modernos, todos os dados trafegados pela fila são persistidos em disco e com isso é possível utilizar a própria fila Chronicle como um sistema de journaling, podendo ser usado para recuperação do sistema em caso de uma eventual queda (crash).

Source Code

A simplicidade de uso e operação do Chronicle, por parte do programador é uma de suas principais características, conforme verificado no exemplo abaixo:

try (ChronicleQueue queue = ChronicleQueueBuilder.single("queue-dir").build()) {
    // Obtain an ExcerptAppender
    ExcerptAppender appender = queue.acquireAppender();

    // write - {msg: TestMessage}
    appender.writeDocument(w -> w.write(() -> "msg").text("TestMessage"));

    // write - TestMessage
    appender.writeText("TestMessage");

    ExcerptTailer tailer = queue.createTailer();

    tailer.readDocument(w -> System.out.println("msg: " + w.read(()->"msg").text()));

    assertEquals("TestMessage", tailer.readText());
}

O código acima demonstra 1 Appender escrevendo e 1 Tailer consumindo na mesma Thread, para fins de demonstração, entretanto a disposição desses producers-consumers pode estar da forma como melhor se adequar ao modelo da aplicação que está sendo desenvolvida, podendo o producer estar em um processo e o consumer em outro, em Threads separadas ou até em máquinas separadas.

Por ser um projeto enxuto, bem estruturado e que utiliza muito bem os recursos computacionais sejam do sistema operacional ou de estruturas de dados internas do projeto, o Chronicle Queue garante uma boa performance e confiabilidade, além de uma vasta comunidade trabalhando em atualizações e melhorias do projeto.

Ainda assim, é possível ter um suporte “enterprise” por parte do grupo que o desenvolve, o que o torna um projeto de vida longa no mercado e comunidade, além da segurança de continuidade e suporte necessário ao ambiente corporativo.

Conclusão

Apesar de bastante resumido, esse artigo visa demonstrar a importância desse retorno às origens da computação, principalmente considerando o atual momento onde vivemos a febre de computação distribuída, vide BlockChain e da necessidade de processamento de dados em grande escala, vide BigData.

Entretanto, para que esses conceitos se tornem realidade, muitas tecnologias de base e que muitas vezes sequer aparecem no desenvolvimento desses conceitos, precisam ser muito bem desenvolvidas, otimizadas e principalmente que sejam confiáveis, portanto vale a pena investir um tempo utilizando tecnologias abertas como o Chronicle Queue.

[]’s
PopolonY2k