Arquivo da tag: 10 PRINT

O 10 PRINT mais rápido do Oeste

8-Bit Show and Tell apresenta o Benchmark BASIC, um programinha em linguagem de máquina que permite medir o tempo de execução de programas em BASIC do Commodore 64. É um trabalho em progresso, por enquanto ele interrompe o programa quando ele preenche a tela. Detalhes no vídeo abaixo, no qual ele testa várias versões do famoso 10 PRINT com sucessivas otimizações.

No processo, ele mostra um monte de dicas pra melhorar a performance de programas em Commodore BASIC — algumas das quais se aplicam a quase todos os BASICs clássicos. (O que obviamente não inclui a gambiarra que faz variáveis inteiras serem mais lentas (!!!) do que as de ponto flutuante. Ah, Commodore…

Em tempo: TI/TI$ no Commodore equivale a TIMER no TRS-80 Color e TIME no MSX. Se alguém se lembrar como era no Apple II e outros, por favor comente abaixo.

Gloriosas inutilidades: gerando um labirinto em 10 (sim, DEZ) bytes!

Um tempo atrás, rolou nas interwebs um belíssimo programa BASIC de uma linha para C64, que gera um labirinto aleatório com duas míseras instruções, um PRINT e um GOTO. O negócio fez tanto sucesso que chegou a virar livro.

Pois bem, me chega um cavalheiro chamado Jim Leonard, hacker casca-grossa também conhecido como Trixter, e lança o desafio: fazer o mesmo programa em assembler 8088, para PC*, com o mínimo de bytes possível.

Aí os recordes vão se sucedendo: 25 bytes, 15,13, 12. 11… dez! A essa altura o povo já estava apelando para truques que não são coisa de Jesus, tais como instruções não-documentadas que só funcionam em CPUs Intel, presumir estado dos registradores na entrada, entre outras ignomínias.

Segue o código assembler vencedor. Tirem as crianças da sala:

init:   scasb
        salc
        and al,''-'/'
        add al,'/'
        int 29h
        jmp init

* PCs clássicos, por favor, tipo XT original ou Tandy 1000. Seu PC, não. Seu PC é velho. Mas há os que crêem que PCs podem ser clássicos. Esse assunto vai dar pano pra manga…

10 PRINT CHR$(205.5+RND(1)); : GOTO 10

O título não é só um one-liner em BASIC do Commodore 64, mas o título de um livro escrito de forma colaborativa por nada menos do que 10 pessoas: Nick Montfort, Patsy Baudoin, John Bell, Ian Bogost Jeremy Douglass, Mark C. Marino, Michael Mateas Casey Reas, Mark Sample e Noah Vawter. O livro foi escrito numa wiki, de forma colaborativa. Mas a wiki não foi aberta ao público.

O livro 10 PRINT (para simplificar) começa pegando uma linha de código – a que faz o titulo – e a usa como uma lente para explorar o fenômeno da computação criativa e como os programas de computador estão inseridos na cultura.

O livro é bem interessante, e o melhor: além de estar disponível na Amazon inglesa, pode ser baixado em PDF, de forma gratuita. Vale lembrar que toda a renda arrecadada com a venda do livro será doada à organização sem fins lucrativos PLAYPOWER. A PLAYPOWER usa um computador que pode ser ligado numa TV e baseado no processador 6502 como uma plataforma para ensinar sobre jogos em países em desenvolvimento. Imperdível.

E para entrar no clima do livro, uma pequena contribuição… uma versão do mesmo programa de C64 em MSX-BASIC para vocês se divertirem e destrincharem:

10 K%=-(PEEK(-849)=0)*2048-2048*(PEEK(-3152)>40):FORI%=0TO9:IFI%<8
THENJ%=(2^(I%))*-(I%>0ANDI%<7):VPOKEK%+1024+I%,J%:VPOKEK%+1039-I%,
J%:NEXTELSEJ%=2*RND(1):PRINTCHR$(128+J%);:I%=7:NEXT