Arquivo da tag: programação

MSXPad Revived… And fixed.

Há pouco mais de 2 anos atrás, eu falei sobre o MSXPad, ambiente de desenvolvimento feito pelo Slotman para programar em Pascal para MSX no PC, e dos acertos que foram feitos para que ele funcionasse no Windows 8 e 10. Está tudo aqui, nesse post.

Acontece que o Pedro Tagwato, nosso leitor e ouvinte, encontrou alguns bugs e enviou-nos um comentário, explicando como corrigí-los. Como a explicação dele é muito útil, decidi colocar num post para torná-la mais permanente.

Continue lendo MSXPad Revived… And fixed.

Crônica de uma morte anunciada: o Coprocessador Numérico x87

Assim como quem não quer nada, resolvi começar a ler sobre programação Assembly para processadores Intel do seu PC velho… mas a versão muderna, cheia de zilhões de instruções, registradores a dar com pau, mil maneiras de fazer operações paralelas e o escambau. Por que alguém faria algo tão insano? Ora raios…

Pois bem, ao longo dos mais de 40 anos que a arquitetura sobreviveu, níveis e mais níveis de funcionalidade foram sendo adicionados uns por cima dos outros, mantendo sempre todas as estruturas anteriores presentes:

16 bits modo real16 bits modo protegido32 bitsMMX64 bitsSSEAVX … e contando.

Correndo por fora, existiu, lá nos primórdios, um bicho chamado 8087 – o Coprocessador Matemático. Se seu PC tivesse esse chip, ele adicionava instruções para fazer operações matemáticas com números reais, não apenas inteiros, e também operações como seno, cosseno, logaritmos… a partir do 486, ele passou a ser incorporado ao processador principal, mas todas as velhas instruções como FMUL, FDIV, FCOS etc estavam lá, e usá-las sempre foi a melhor maneira de fazer contas. A alternativa era usar bibliotecas de ponto flutuante, lentas e nem sempre dentro do padrão (é o que os nossos retromicros clássicos usam).

Mas aí que tá… os novos conjuntos de instruções SSEn e AVX, planejados para realizar várias operações ao mesmo tempo num conjunto grande de números, também fazem operações de ponto flutuante. Aí, no capítulo sobre otimização deste livro, leio o seguinte:

Os seguintes critérios devem ser observados ao escrever código em Assembly que realize aritmética de ponto flutuante:
* (…)
* Em código novo, use as funções escalares das arquiteturas SSE ou AVX, em vez da FPU x87.

Pois é, a utilidade do velho chip, amigão dos estudantes de engenharia (e de tantas outras áreas) nos anos 80, chegou ao fim. Mais um dinossauro se dirigindo lentamente ao poço de piche. É provável que daqui a alguns anos, os quatro primeiros itens da cadeia de setas acima sejam abandonados e os novos processadores sejam puramente 64 bits.

[UPDATE] Montando um ambiente de desenvolvimento cruzado para MSX (ou tentando)…

Continuamos confinados aos nossos domicílios, em quarentena. A pandemia do coronavírus está atingindo seu auge no Brasil e para encher o tempo, vamos fudebar. Afinal, fudebar é preciso. Então, eu comecei a reaprender Pascal, escrever código (recomecei do início, fazendo programas banais) e a tocar um projetinho simples que eu tenho… No futuro, espero trazer pra vocês maiores novidades.

Mas não é pra falar das minhas desventuras que eu vi aqui, mas sim pra trazer uma atualização importante no esquema que eu falei na semana passada.

Continue lendo [UPDATE] Montando um ambiente de desenvolvimento cruzado para MSX (ou tentando)…

Montando um ambiente de desenvolvimento cruzado para MSX (ou tentando)…

Sim, o prometido artigo saiu. Agradeçam ao vírus aí do lado por isso. A desculpa acabou, aqui está o texto que estou devendo há anos. Finalmente, a solução que eu desenvolvi está disponível, encerrei o artigo, revisei, fiz um pacote zip, subi pra um canto (não, eu não consigo me entender com o git e o github) e documentei o que faltava. Espero que vocês usem, comentem, e me ajudem a incrementar essa solução.

Continue lendo Montando um ambiente de desenvolvimento cruzado para MSX (ou tentando)…

BASIC clássico na Web.


Assim como nós, é provável que você tenha começado no louco mundo da programação rabiscando código em BASIC. Seja em Spectrum, CoCo, MSX ou Apple II, o BASIC foi a porta de entrada de muita gente. Alguns ainda continuam por lá, mas vários começaram pelo 10 PRINT "Oi Mundo" mesmo.

Então, o grande G lançou um projeto (no Github, claro) para você poder programar em BASIC na Web. É o WWWBasic, e pelo que entendemos, ele converte o código BASIC para Javascript e executa. Dá para importar como um módulo do Node.js também, e caso você tenha interesse, tem vários exemplos de código fonte para brincar.

Se você quiser uma abordagem mais tradicional, tem o QB64, o QuickBasic de 64 bits. Se você quiser experimentar algo mais MS-DOS… O js-dos resolve seu problema.

Fonte: Hackaday.

Aprenda programação Assembly de Z80… Com vampiros!

Perambulando pela Net, topei com esse link aqui, onde o programador ChibiAkuma (lembra que falamos dele, do jogo que ele estava fazendo?) está trazendo um curso multiplataforma de Assembly de Z80, com códigos-fonte disponíveis, vídeo e ferramentas de desenvolvimento. No momento em que escrevemos essas linhas, ele está na lição 6. Para quem quer aprender Asm, taí uma excelente oportunidade.

Como quem não quer nada…

Passei aqui só para apontar esse usuário no GitHub aí em cima, o mvac7. O que tem de bom? Bem, várias bibliotecas C para usar no SDCC e assim explorar recursos dos microcomputadores MSX. Por exemplo, tem inclusive como você gerar arquivos .ROM a partir de código escrito em C e compilado no SDCC. Vale a olhada.

Programação em C… Por onde começar?

Então, você quer começar a programar em C para o seu micro clássico favorito mas não sabe por onde começar. Existem alguns tutoriais no Github do rby90 que traz tutoriais baseados em projetos para quem quer aprender a programar em C. Se este é o impulso que faltava para você começar a rabiscar código no SDCC, compilando-o para seu micro clássico… Considere-se empurrado.

Quinta do Pitaco: Querendo programar em C para MSX mas não sabe por onde começar?

Um belo dia resolvi mudar
E fazer tudo o que eu queria fazer
Me libertei daquela vida vulgar
Que eu levava estando junto a você

Ops, é mais ou menos isso… Digamos que você cansou de ouvir bla-bla-bla sobre um monte de coisas nas comunidades retro, e resolveu fazer algo. Digamos que você viu o povo portar o Prince of Persia até pro Beeb, aí olha pro lado e vê gente na comunidade MSXzeira falando de carregar programas de fita cassete (em 2018!) e de viagens na maionese estelar, sobre o que os outros poderiam fazer para eles. Mais especificamente, você resolveu programar em C, e para MSX. E não sabe como começar. Bem…

De cara te recomendo a visita a essa wiki aqui. A HI-TECH C Compiler for CP/M fan WIKI tem bastante material para programação em C, usando o compilador HI-TECH C para CP/M. A empresa responsável por ele inclusive abriu o código-fonte outro dia, e está… Aonde? Adivinhe? Sim, no Github. Mas se você não quiser o código-fonte, pode dar um pulo no z80.eu pegar o compilador e o manual. Além, tem o script SpliceMSX, que faz o serviço sujo procê e instala o HI-TECH C Compiler for CP/M e configura tudo no seu Windows. Aí é sentar e usar.

Mas… Voltando à wiki, eu já te indico uma biblioteca apenas que faz valer a pena a olhada, a ESGFXLIB V9990. Sim, uma biblioteca (em desenvolvimento) para fazer uso do chip V9990. Assim dá para escrever código em C que use a GFX9000/Powergraph/Powergraph Light, que tal?

E se você quiser um exemplo, uma das mentes em baixa resolução que cometem esse podcast fez esse post no blog dele, falando sobre o port do aclock para o MSX, usando C. Enquanto ele não escreve algo aqui a respeito… Vão lá e dêem um pouco de pageviews para ele!

Falando nisso, alguém tem interesse em fazer uma iniciativa semelhante com Pascal? Se sim, largue um alô aí nos comentários. Estou com ideias… Voltarei a falar delas numa próxima quinta.

BASIC 10 Liner Contest: Os resultados.

Não tivemos tempo de noticiar o BASIC 10 Liner Contest (imagem linda a propósito, não?), então vamos explicar rapidinho. Como o nome já ajuda a entender, esse é um concurso para quem quiser fazer um programa em BASIC que pode conter até 10 linhas apenas. Qualquer plataforma retro poderia concorrer, e quase todos os dialetos de BASIC poderiam participar, em três categorias (havia uma restrição na categoria PUR-80). Os programadores poderiam submeter seu trabalho até o dia 24 de março (sábado), e a cerimônia de premiação ocorreria no dia 7 de abril (sábado também).  Mas tem um fato muito interessante a ser comentado… Continuem a leitura para saber.

Continue lendo BASIC 10 Liner Contest: Os resultados.