Bem-aventurados os que entendem Assembler, pois deles será o nerdgasmo ao ler isto.

Tom Moertel tinha uma missão: programar um jogo para o TRS-80 Color Computer 3. Esse micro, apesar de ter gráficos muito bons para a época, não tinha um processador de vídeo para facilitar a vida do programador, então nada de sprites, scroll por hardware, ou outras mordomias típicas dos privilegiados. O négocio era mover bytes no buffer de tela e dar-se por satisfeito.

A rotina em Assembler que Tom e o colega dele desenvolveram para mover sprites era muito lenta, e parecia não haver maneira de otimizá-la. Até que eles resolveram vender a alma a Cthulhu em troca de poderes de programação sobrenaturais.

O resultado você vê aqui. Definitivamente, não é coisa de Jesus.

(Ed S via G+)

Sobre Juan Castro

Juan Castro é uma das mentes em baixa resolução que compõem o Governo de Retrópolis – a única cujo Micro Formador não foi o MSX (e sim o TRS-80). Idealizador, arquiteto e voz do Repórter Retro. Com exceção do nome, que foi ideia do Cesar.

0 pensou em “Bem-aventurados os que entendem Assembler, pois deles será o nerdgasmo ao ler isto.

  1. Sensacional!!!

    PSHS e PULS são instruções deveras poderosas!

  2. Um pré-requisito para quem quer programar em assembler é esquecer todas as “frescuras” que aprendemos nas outras linguagens de programação, exceto uma! Comentar (em demasia) cada coisa que você está fazendo, pois de um dia pro outro é capaz de você já não lembrar direito o que aquilo faz — dependendo de onde está “ld (HL),A” pode escrever algo na tela ou fazer o sistema entrar em coma.

    1. …aí o cara vai e bota o comentário utilíssimo:

      LD (HL),A ; ARMAZENA O ACUMULADOR NA POSICAO
      ; DE MEMORIA APONTADA POR HL

      1. E aí você elogia a atividade profissional da digníssima progenitora do cara. Um exemplo (meu) da vida real:
        (...)
        ld (TABLO),HL
        ld A,(HL) ; Leio o endereço em TABLO
        and 0x03 ; 00XX0000
        rr A ; 000XX000
        rr A ; 0000XX00
        rr A ; 00000XX0
        rr A ; 000000XX
        ld C,A ; E armazeno em C
        (...)

        E mesmo assim já olhei trechos disto aqui e me perguntei sobre o que estava acontecendo.