Arquivo da tag: Assembly

Programação assembly… “like a boss”

like a boss

Estava fazendo uns testes de código em MSX-DOS e experimentando como chamar a BIOS a partir do ambiente e… opa! Melhor explicar uma coisa importante antes.

No MSX, quando estamos no BASIC a memória tem o seguinte leiaute:

0x0000 - 0x7FFF : BIOS e MSX-BASIC
0x8000 - 0xFFFF : RAM (32Kib)

Ou seja uns 32KiB de ROM estão lá ocupando 50% do espaço de endereçamento que o Z80 entende e chama de “mundo”.

Mas quando estamos no MSX-DOS a memória fica assim:

0x0000-0xFFFF : RAM (64Kib)

Mas como se faz para acessar a BIOS já que ela “desapareceu” da vista do Z80?

Continue lendo Programação assembly… “like a boss”

Fractal para quem precisa de fractal

À guisa de (falei bonito agora, hein?) continuação do post sobre cartões SMS em mainframes, Ken Shirriff ficou sabendo que havia um IBM 1401 funcional no Computer History Museum e lá foi-se ele pra brincar com a criança. Brincar do que? Ora, de fazer um programa para imprimir o Conjunto de Mandelbrot. Em que linguagem? Assembler em cartões perfurados, claro, porque linguagem de alto nível, monitor e teclado são para os fracos.

mandelbrot-1401-and-printer

Mas calma que a história não acaba por aí…
Continue lendo Fractal para quem precisa de fractal

Programando no C64, 25 anos depois

O argentino Ricardo Quesada resolveu fazer um comparativo sobre o que se usava para programar em um C64 no final da década de 1980 (e começo da de 1990) com aquilo que está disponível (ferramentas, informação e até as facilidades de se ter uma TV PAL/NTSC) ao “programador médio” hoje em dia. Leitura bem interessante pra quem quer programar em máquinas clássicas e também perder os preconceitos sobre a compilação cruzada.

Char PadDe passagem, ele menciona um ecossistema piratohouse portenho que me parece intrigantemente similar ao de outro país, não sei qual…

Programação em Assembler: Quem te viu, quem te vê.

Terminator 6502Se você, assim como eu, programou em Assembler na era clássica, provavelmente já se sentiu assim:

Meu modelo mental de CPUs ficou parado nos anos 80: basicamente, caixas que fazem aritmética, lógica, manipulação de bits, e carregam e colocam coisas na memória. Tenho uma vaga consciência de vários progressos, como instruções vetoriais (SIMD) e a ideia das CPUs terem suporte a virtualização (mas não faço ideia do que isso significa na prática).

Que avanços legais eu perdi? O que as CPUs de hoje podem fazer que as do ano passado não podiam? Ou do retrasado, ou de 5, 10 anos atrás? O que mais me interessa são capacidades que o programador tem que aproveitar manualmente (ou que precisam de reprojeto dos ambientes de programação) para poderem ser utilizadas, e portanto podem não estar sendo utilizadas no momento. Acho que isso não inclui coisas como SMT/Hyper-threading, mas honestamente não tenho certeza. Também me interesso em coisas que as CPUs atuais não podem fazer, mas as do futuro próximo poderão.

Foi essa a pergunta que David Albert fez, e Dan Luu resolveu respondê-la. Leitura obrigatória para qualquer assembleiro que se preze. Leia aqui.

Toda a ROM do C64 desmontada e comentada!

O pessoal do blog  pagetable tem sempre algo coisa interessante sendo postado. Desta vez é a versão comentada da BIOS e BASIC (o KERNAL) do C64! Pelo que comentam, eles já haviam comentado a BIOS do C64 e usando como referência a versão comentada da listagem do Applesoft BASIC do Bob Sander (não se esqueçam que ambos são versões do Microsoft BASIC para 6502) puderam concluir o trabalho e, claro, disponibilizá-lo no GitHub!

Imagem do dia: TODO o código do Pac-Man para Atari 2600

Em todos seus gloriosos 4 KB de opcodes assembler 6502, transformados em poster e adornando a parede de Blake Patterson (como se a casa dele já não fosse f**ástica o suficiente). As linhas curvas são os jumps (condicionais ou não) e a parte que representa gráficos está em laranja. Clique para ampliar.
Continue lendo Imagem do dia: TODO o código do Pac-Man para Atari 2600

Dissecando o Flappy Bird, parte 2

E aqui voltamos para a segunda parte da dissecção do passarinho retardado que decidiu dar uma revoada por algum mundo perdido onde mora aquele encanador italiano daquela empresa japonesa. Nesta parte temos o desenho do pássaro, e a coisa mais importante em um jogo, a temporização.

capa dissecção

Não custa lembrar que o código fonte do jogo está disponível no GitHub, e sendo assim não irei replicá-lo, apenas citá-lo aqui.

Continue lendo Dissecando o Flappy Bird, parte 2