Desenvolvimento cruzado no MC-1000

mc1000_abertura

Meu primeiro computador¹ foi um MC-1000, um equipamento curioso e de existência efêmera lançado pela CCE na primeira metade de 1985 e descontinuado cerca de 12 meses depois. Aliás meu modelo, comprado no final de 1986, foi justamente adquirido em uma queima de estoque pois era acompanhado de 26 fitas cassete contendo jogos, pequenos aplicativos, curso de BASIC e 50 programas de exemplo.

(¹) Pois é, o MSX foi meu segundo computador, mais precisamente um HB-8000 v1.2 (o tal do “HOTBIT preto”) que ganhei na semana santa de 1988.

Continuar lendo

Telas do speccy no MSX – parte 3

tbzscmcb-3_abertura

Depois do hiato da semana passada segue continuação da série sobre a construção de um visualizador de telas do ZX Spectrum para MSX-DOS. Só para recordar a primeira parte tratou da organização da memória de vídeo do speccy, das diferenças dela com a do MSX e de como compensar as tonalidade das cores. Na segunda parte foi sobre como reorganizar os dados do arquivo SCR para apresentá-los na VRAM do MSX e, claro, como fazer a carga dele usando diretamente as rotinas da BDOS.

Há também uma parte complementar com um pequeno programa em Python que converte telas do ZX para dumps da VRAM em arquivos binários do MSX.

Nesta parte, conforme foi prometido, é a recuperação e tratamento dos argumentos passados pela linha de comando do MSX-DOS e como o assunto é meio chato tentarei ser breve — eu juro 😀

Continuar lendo

Telas do speccy no MSX – parte 2

tbzscmcb-2_abertura

Na parte anterior cuidou das diferenças no vídeo entre os dois computadores, ou seja, o modo como são dispostos os padrões e atributos que compõe a imagem na tela, assim como os tipos de atributos disponíveis, as cores geradas pelos respectivos circuitos de vídeo e também o “truque” usado para simular a relação de luminância das cores do ZX Spectrum no MSX.

Agora é a vez do arquivo que armazena a tela de vídeo do speccy, um programa para visualizá-lo em MSX-BASIC e, o mais importante de todos, uma rotina em assembly para carregar arquivos do disco para a memória.

Continuar lendo

Telas do speccy no MSX – parte 1

tbzscmcb-1_abertura.png

Há algum tempo, lá pelo  final de 2014 para ser mais preciso, resolvi converter telas do ZX Spectrum (ou speccy) para o MSX. Então estudei sobre como era a organização da memória de vídeo deles, como eram codificadas as cores, criei uma rotina de visualização e aí me empolguei e baixei algumas telas do ZX-Art para fazer algo “legal”.

Mas meu algo “legal” ficou tão complicado de implementar que a inspiração acabou antes de conseguir concluí-lo, daí deixei tudo de lado por um tempo e recentemente resolvi mexer no código para pegar uma rotina e aproveitei para, finalmente, fazer algo prático com ela — mas nada de “legal” desta vez. 🙂

Esta primeira parte não tem código, é apenas um resumo sobre como é a organização das memórias de vídeo nos dois computadores, a diferença nas paletas de cores e qual minha solução para compatibilizá-las.

Continuar lendo

Orientação a “objetos” em assembly Z80

oop_z80-abertura

Esta ideia surgiu enquanto pensava em formas de implementar o “herói” e as demais “caixas” (ou inimigos) no Survive sem transformar o programa em uma “maçaroca” de código. Mas seria possível utilizar o tal paradigma de orientação a objetos diretamente em assembly E, caso possível, seria prático, funcional ou uma mera curiosidade?

A primeira pergunta foi fácil de responder, me lembrava vagamente de um livro¹ sobre o assunto e numa busca rápida encontrei um artigo da Dr. Dobbs de março de 1990 que me ajudou a visualizar como poderia ser feito e uma (re)leitura da documentação do Pasmo indicou como fazê-lo.

Quanto a funcionalidade, vejamos se consigo ser convincente… 🙂

(¹) Em tempo, o Object-Oriented Assembly Language escrito por Len Dorfman e publicado pela Windcrest em 1990. Foi publicado no Brasil pela Makron Books sob o título de Linguagem Assembler Orientada para Objetos no ano de 1992.

Continuar lendo

Truques com o VDP

vdp1-checks

Um efeito muito bacana que pode ser produzido em um MSX1 com algumas poucas linha de código (em assembly), reorganização da VRAM e a troca do valor de um registrador do VDP. Esta ideia surgiu a partir de uma publicação no grupo TRS-80/Color Computer do Facebook sobre como implementar um efeito semelhante em um CoCo3 alterando a paleta de cores — thanks Simon Jonassen for the inspiration!

Isto me chamou a atenção pois poderia ser replicado em um MSX2 mas seria possível fazer em um MSX1? Bem, após pensar um pouco sobre como fazê-lo, eis aqui o resultado…

Continuar lendo