O quinto volume das tiras de Modesty Blaise contém apenas três histórias, mas a qualidade da impressão é melhor que o volume anterior. Algumas tiras ainda são bastante escuras e em uma ou outra página a impressão tem falhas, mas dá para apreciar bem a qualidade do traço de Jim Holdaway.
sábado, dezembro 31, 2011
sexta-feira, dezembro 30, 2011
Álbum do Mês: The SMiLE Sessions
Idealizado em 1966 por Brian Wilson e abandonado em 1967, SMiLE foi considerado por muitos como o "mais famoso álbum não lançado". Em 2011, mais de quatro décadas depois, o material gravado para o álbum foi finalmente lançado. O material foi disponibilizado como um sofisticado (e caro) box, como um LP duplo, como um CD duplo e, pelo menos aqui na Terra Brasilis, como um CD simples. É este CD que eu comprei e comento aqui.
quinta-feira, dezembro 29, 2011
Display Gráfico Nokia 5110 - Parte 1
Muitos projetos com microcontrolador requerem algum tipo de display. O display Nokia 5110 é uma opção bastante flexível, fácil de interfacear e com um custo atraente.
terça-feira, dezembro 27, 2011
iTunes Store - Primeiras Impressões
Com oito (!) anos de atraso, a loja do iTunes foi finalmente aberta de forma oficial aos brasileiros. Uma vez que não me interessei pelas formas não oficiais de uso, tive nos últimos dias os meus primeiros contatos com a loja.
sexta-feira, dezembro 09, 2011
A Queda do Vôo Air France 447
Um livro que, de certa forma, me marcou foi "Airframe" de Michael Crichton. A principal lembrança é que um acidente aéreo é sempre causado por uma sequência de eventos. Um pequeno desvio e a sequência não se completa e o acidente é evitado. E um fator sempre presente nestas sequências é o erro humano.
A revista Popular Mechanics publicou um artigo relatando os últimos minutos do vôo 447 da Air France (tomando como base o registro das caixa pretas, em particular a conversa na cabina). E o relato está totalmente de acordo com a visão do livro.
Uma sequência de pequenos erros monta o palco para um co-piloto (inexperiente e sem um treinamento específico para a situação) derrubar no oceano um avião sem nenhum problema mecânico ou elétrico (talvez você tenha ouvido falar de um congelamento dos pitots, mas eles voltaram a funcionar bem antes da queda graças ao sistema anticongelamento). É uma descrição bastante trágica, que dá vontade de poder romper a "quarta parede", arrancar o copiloto do assento e salvar o avião.
O artigo pode ser lido em
http://www.popularmechanics.com/print-this/what-really-happened-aboard-air-france-447-6611877?page=all
Encontrado via The Register.
A revista Popular Mechanics publicou um artigo relatando os últimos minutos do vôo 447 da Air France (tomando como base o registro das caixa pretas, em particular a conversa na cabina). E o relato está totalmente de acordo com a visão do livro.
Uma sequência de pequenos erros monta o palco para um co-piloto (inexperiente e sem um treinamento específico para a situação) derrubar no oceano um avião sem nenhum problema mecânico ou elétrico (talvez você tenha ouvido falar de um congelamento dos pitots, mas eles voltaram a funcionar bem antes da queda graças ao sistema anticongelamento). É uma descrição bastante trágica, que dá vontade de poder romper a "quarta parede", arrancar o copiloto do assento e salvar o avião.
O artigo pode ser lido em
http://www.popularmechanics.com/print-this/what-really-happened-aboard-air-france-447-6611877?page=all
Encontrado via The Register.
quinta-feira, dezembro 08, 2011
Promoções de Natal do GOG.com
Já mencionei antes o site GOG.com, que vende jogos antigos por preço baixo e sem DRM. Começam hoje as suas promoções de Natal.
Balanço Anual do Blog: 2011
No começo do mês o DQSoft completou seis anos de vida. É hora do tradicional balanço anual.
quinta-feira, dezembro 01, 2011
Co0L Ed2 no Próximo Domingo
No próximo domingo, 4/12, teremos a segunda edição da "Conferência O Outro Lado" (Co0L). Se você se interessa por segurança da informação (ou simplesmente que trocar informações e conhecer o Garoa Hacker Clube enquanto saboreia um Churrascker), participe! A inscrição é gratis.
Mais detalhes: http://garoa.net.br/wiki/O_Outro_Lado_ed_2
Mais detalhes: http://garoa.net.br/wiki/O_Outro_Lado_ed_2
Palestra "Crimes Eletrônicos e Privacidade" da Primeira Edição do Co0L |
quinta-feira, novembro 24, 2011
Um Bug Curioso Com Mais de 20 Anos de Idade
Uma das coisas mais úteis na minha "caixa de ferramentas" é um conjunto de rotinas para manipulação de B-trees. Venho usando este código, com alterações mínimas, desde que ele foi publicado na revista Dr Dobb's em 1990. Imaginem a minha surpresa ao descobrirmos um bug no código que, em um equipamento específico, simplesmente travava a execução!
terça-feira, novembro 22, 2011
"O Maravilhoso Mundo dos Microcontroladores"
No dia 12 de novembro ("véspera de feriado"), o Garoa Hacker Clube teve um pequeno espaço na conferência Silver Bullet. No começo da tarde eu apresentei "O Maravilhoso Mundo dos Microcontroladores" - uma foma lúdica de despertar o interesse por microcontroladores.
Categorias:
Eletrônica,
Embarcados,
PIC,
Processadores
domingo, novembro 20, 2011
DVD: O Desafio das Águias - Crítica
Um dos livros mais gastos na minha estante é "O Desafio das Águias", de Alistair MacLean. É um livro da minha mãe que eu tomei posse quando criança e já reli incontáveis vezes. A contra capa avisa; "Richard Burton é o 'astro' da versão cinematográfica ... breve em todos os cinemas do Brasil". Dias desses, olhando a pilha de ofertas da Americanas (antiga Blockbuster) encontrei este filme em DVD. Segue a minha crítica.
sábado, novembro 19, 2011
Música: Carl Perkins
Carl Perkins é conhecido com o "Rei do Rockabilly". Rockabilly é um dos primeiros estilos do rock and roll, com fortes influências do country. Suas músicas são mais conhecidas pelas regravações feitas por outros artistas, como Elvis e os Beatles, apesar da sua voz e estilo na guitarra serem marcantes. Neste post listo algumas das suas músicas disponíveis no You Tube.
quinta-feira, novembro 17, 2011
Passo a Passo: Usando o Arduino UNO para Gravar o Bootloader do Arduino em um ATMega328
Como já mostrei sucintamente, um Arduino pode ser usado como gravador de microcontroladores AVR. Neste post, vamos ver passo a passo como usa uma Arduino UNO para gravar o bootloader do Arduino em um microcontrolador ATMega328 (em uma espécie de reprodução assexuada).
quinta-feira, outubro 06, 2011
Ruminações sobre o Tablet da Amazon
No começo de setembro eu publiquei aqui um relato da Techcrunch sobre o (então) futuro lançamento do tablet da Amazon. Agora que o gato está fora do saco, é hora de rever o que foi dito.
segunda-feira, outubro 03, 2011
Usando um Arduino como Programador AVR
Como já vimos, um programador AVR precisa controlar os sinais Reset, SCK, MISO e MOSI do AVR sob o controle do PC. O Arduino é um hardware bastante apropriado para isto, possuindo uma interface serial com o PC (normalmente via USB) e várias portas de E/S digital. Basta fazer um software apropriado - e este software já foi feito e é distribuído junto da IDE do Arduino. Veremos aqui como utilizá-lo.
terça-feira, setembro 27, 2011
O Auto-Reset do Arduino
Enquanto não consigo colocar para funcionar o USBtinyISP, fiz algumas experiências no uso do Arduino como um programador de microcontroladores AVR. A principal dificuldades encontrada está em contornar a característica de "auto-reset" do Arduino, o apresento aqui.
quarta-feira, setembro 21, 2011
Links Comentados #14
Você sabe que foi Keith Tantlinger? Quer uma boa resposta para quando alguém lhe disser que jogos de computador é pura perda de tempo? Será que a segurança do MacOS está decaindo? Veja as respostas nos links abaixo.
terça-feira, setembro 20, 2011
Controlando a Porta Paralela do PC
Um dos motivos da falta de posts sobre a programação de microcontroladores AVR foi uma série de problemas com as montagens anteriores. No caso do programador serial eu tinha feito um programa de teste para exercitá-lo, faltava um programa de teste para o programador paralelo.
domingo, setembro 18, 2011
Legião dos Super Heróis - Parte 1: A Longa (e confusa) História da Legião
Não sei bem porque eu fiquei fã da Legião na minha infância, mas continuo até hoje e acabo de retomar o contato através de duas publicações bem diferentes.
O início de tudo |
quarta-feira, setembro 14, 2011
Competição de Lógica Digital
A Dangerous Prototipes está organizando uma competição de circuitos eletrônicos utilizando circuitos integrados de lógica digital, como as famílias 74xxx e 40xx. O anúncio está em
http://dangerousprototypes.com/open-7400-logic-competition/
A Wikipedia tem uma lista (provavelmente incompleta) dos circuitos da família 74xxx.
http://dangerousprototypes.com/open-7400-logic-competition/
A Wikipedia tem uma lista (provavelmente incompleta) dos circuitos da família 74xxx.
domingo, setembro 11, 2011
DVD: Hornblower - The Complete Collection
Horatio Hornblower é o personagem principal de uma série de livros escritos por C. S. Forester. Ele é um oficial da marinha inglesa durante as Guerras Revolucionárias Francesas e as Guerras Napoleônicas. Esta coleção de DVDs reúne os oito episódios de uma sofisticada série de TV inglesa, baseada nos livros, contando o início da carreira de Hornblower.
Desta vez vou quebrar uma "regra" das minhas críticas de DVD: até onde sei estes DVDs não estão disponíveis no Brasil. Isto significa que para assisti-los, além dos problemas de importação, você terá que driblar o sistema de regiões. E terá apenas o som original (em inglês), com a opção de legendas para deficientes auditivos.
Desta vez vou quebrar uma "regra" das minhas críticas de DVD: até onde sei estes DVDs não estão disponíveis no Brasil. Isto significa que para assisti-los, além dos problemas de importação, você terá que driblar o sistema de regiões. E terá apenas o som original (em inglês), com a opção de legendas para deficientes auditivos.
sábado, setembro 10, 2011
Resenha: The Mummy Case
Já resenhei por aqui outros livros da coleção Hardy Boys. Este é o primeiro volume que eu leio no Kindle. É o livro número 63 da coleção, lembrando que os primeiros 57 volumes são considerados a "série clássica". A partir do volume 58 os livros passaram a ser publicados por outra editora, em formato paperback (brochura), com o nome de "Hard Boys Digests". Mais recentemente, estes volumes foram republicados em capa dura (hardcover), no mesmo formato que os primeiros 57 (cuja capa aparece abaixo).
quarta-feira, setembro 07, 2011
O Tablet da Amazon
Os boatos estão cada vez mais fortes e tudo indica que o tablet da Amazon sairá a tempo para as compras de Natal (nos EUA, é claro). Apareceu agora um relato de alguém que teve um aparelho em mãos: http://techcrunch.com/2011/09/02/amazon-kindle-tablet/.
Como com todo relato do gênero, muita cautela é necessária. O produto final pode ser muito diferente do que é descrito. Mesmo assim, vou me arriscar a comentar sobre as características descritas.
Como com todo relato do gênero, muita cautela é necessária. O produto final pode ser muito diferente do que é descrito. Mesmo assim, vou me arriscar a comentar sobre as características descritas.
quinta-feira, agosto 25, 2011
Novo Round de Samsung x Apple
Ocultada pelo anúncio da renúncia de Steve Jobs à presidência da Apple, ontem tivemos mais uma decisão em corte europeia sobre a briga da Apple com a Samsung. Uma decisão onde os dois lados tem motivos para comemorar e se preocupar.
terça-feira, agosto 23, 2011
AVR: Colocando um Programador para Trabalhar
Embora ainda não tenha concluído o meu estudo dos programadores, surgiu uma oportunidade de colocar um deles para trabalhar que vale a pena registrar aqui.
Lá no Garoa Hacker Clube nós temos alguns Tautinos. O microcontrolador (no caso um ATmega8) de um deles foi utilizado para montagem de um protótipo e teve o bootloader sobrescrito. Veremos aqui como fiz para regravá-lo.
Lá no Garoa Hacker Clube nós temos alguns Tautinos. O microcontrolador (no caso um ATmega8) de um deles foi utilizado para montagem de um protótipo e teve o bootloader sobrescrito. Veremos aqui como fiz para regravá-lo.
Categorias:
Arduino,
AVR,
Eletrônica,
Processadores
terça-feira, agosto 16, 2011
AVR: Programador USBtinyISP, parte 1
Os programadores que vimos até agora, embora de baixo custo e complexidade, utilizavam as interfaces paralela e serial do PC, que estão em franca extinção. Neste post e no seguinte vamos ver um programador que se conecta a uma porta USB, um projeto da ladyada.net.
Um outro ponto importante no USBtinyISP é que a geração dos sinais para programação passa ser feita dentro do programador, o que potencialmente é mais confiável que gerá-los no PC (onde sabe-se lá o que mais está rodando).
Embora seja um pouco mais complexo, este projeto também está ao alcance do hobista.
Um outro ponto importante no USBtinyISP é que a geração dos sinais para programação passa ser feita dentro do programador, o que potencialmente é mais confiável que gerá-los no PC (onde sabe-se lá o que mais está rodando).
Embora seja um pouco mais complexo, este projeto também está ao alcance do hobista.
terça-feira, agosto 09, 2011
Seminário Linux Embarcado
No sábado passado, dia 6 de agosto, participei do Seminário Linux Embarcado organizado pela Tempo Real Eventos com conteúdo técnico de responsabilidade dos meus amigos do Portal Embarcados. Segue um curto relato.
sexta-feira, agosto 05, 2011
Links Comentados #13: (In)segurança no Mac, Ajude a Microsoft e Bugs no Java 7
Retomando esta série, alguns links interessantes sobre a (in)segurança do MacOS, um concurso da Microsoft e sobre bugs sérios (?) no Java 7.
quarta-feira, agosto 03, 2011
AVR: Programador PonySer
Os programadores que vimos até agora se conectam à porta paralela do PC. Isto é um problema, já que este tipo de porta não está presente na maioria dos computadores fabricados nos últimos anos, particularmente nos notebooks. O programador que vamos ver hoje se conecta à porta serial que, apesar de também estar caindo em desuso, ainda se encontra em muitos PCs e conversores USB serial são bem mais comuns que conversores para porta paralela.
Categorias:
Arduino,
AVR,
Eletrônica,
Processadores
segunda-feira, agosto 01, 2011
AVR: Programador STK-200
Os programadores que nos vimos nos posts anteriores são extremamente simples. Veremos agora um programador também para conexão à porta paralela de um PC, porém com um circuito mais sofisticado.
Categorias:
Arduino,
AVR,
Eletrônica,
Processadores
quarta-feira, julho 27, 2011
AVR: Programador BSD
Veremos neste post uma variação do programador apresentado no post anterior, novamente utilizando os sinais da porta paralela do PC para gerar os sinais necessários para a programação dos microcontroladores AVR .
Categorias:
Arduino,
AVR,
Eletrônica,
Processadores
terça-feira, julho 26, 2011
AVR: Programador DAPA
Neste post vamos examinar um programador minimalista, o DAPA (Direct AVR Parallel Access), que requer apenas 3 resistores e os conectores.
Categorias:
Arduino,
AVR,
Eletrônica,
Processadores
segunda-feira, julho 25, 2011
AVR: Preparando para Testar Programadores
Estou finalmente chegando próximo da montagem e teste de alguns programadores para microcontroladores AVR. Neste post descrevo alguns preparativos.
sexta-feira, julho 22, 2011
Microcontrolador Atmel ATmega328 - Configurações
Os microcontroladores AVR (como outras famílias) possuem um conjunto de configurações que são programadas no chip, os chamados fuses ("fusíveis"). Apresento aqui um resumo das configurações no ATmega328 (para maiores detalhes consulte o manual da Atmel).
Categorias:
Arduino,
AVR,
Eletrônica,
Processadores
quarta-feira, julho 20, 2011
AVRDUDE
AVRDUDE é uma aplicação de código aberto para gravar programas na Flash de processadores AVR (como os utilizados na plataforma Arduino). A própria IDE do Arduino utiliza o AVRDUDE para fazer a carga dos sketches. Vamos ver aqui um resumo do seu uso.
segunda-feira, julho 18, 2011
Arduino: O Bootloader
No meu primeiro post sobre o Arduino eu mencionei a necessidade de ter um software chamado bootloader gravado no microcontrolador; no post anterior eu falei um pouco sobre a memória Flash onde precisa estar gravado o código executável. Vamos agora juntar estas duas informações e ver em mais detalhes o que é e como funciona o Bootloader.
Categorias:
Arduino,
AVR,
Eletrônica,
Processadores,
Programação
quarta-feira, julho 13, 2011
Microcontrolador Atmel ATmega328 - Parte 4
Todo código a ser executado pelo ATmega328 precisa residir na memória Flash. Embora o usuário casual do Arduino não perceba, esta memória possui diversas excentricidades, que veremos neste post.
Categorias:
Arduino,
AVR,
Eletrônica,
Processadores
segunda-feira, julho 11, 2011
Microcontrolador Atmel ATmega328 - Parte 3
Como todo microcontrolador que se preze, o ATmega328 possui uma boa coleção de periféricos internos. A plataforma Arduino se aproveita disto e disponibiliza quase todos os pinos do ATmega para os shields, como mostram as figuras abaixo (clique para ampliar).
Categorias:
Arduino,
AVR,
Eletrônica,
Processadores
domingo, julho 10, 2011
Livro do Mês: Tales of Old Earth
Tales of Old Earth é uma coletânea de histórias curtas de Michael Swanwick, um premiado autor de ficção científica e fantasia.
quarta-feira, julho 06, 2011
Microcontrolador Atmel ATmega328 - Parte 2
O coração (ou o cérebro?) de um microcontrolador é a sua CPU. No caso do ATmega328, temos uma CPU AVR do tipo "enhanced core". Vejamos algumas de suas características.
Categorias:
Arduino,
AVR,
Eletrônica,
Processadores
segunda-feira, julho 04, 2011
Microcontrolador Atmel ATmega328 - Parte 1
O microcontrolador ATmega328 da Atmel é utilizado nos Arduinos mais recentes. É um microcontrolador de 8 bits, com arquitetura Harvard modificada. Neste post e nos próximos veremos algumas de suas características.
Categorias:
Arduino,
AVR,
Eletrônica,
Processadores
domingo, julho 03, 2011
DVD: New Police Story (A Hora do Acerto)
Em 2004 Jackie Chan participou de um reboot de uma das suas melhores séries, Police Story (cujo primeiro filme já comentei aqui). O resultado foi "New Police Story" (chamado aqui no brasil de "A Hora do Acerto").
quarta-feira, junho 29, 2011
Arduino - Escolhendo o Seu
Você gostou do que viu e leu sobre o Arduino e resolveu colocar a mão na massa. Mas qual modelo comprar? Afinal, existem muitas opções, algumas muito diferentes e outras muito parecidas. Veja a minha opinião neste post.
terça-feira, junho 28, 2011
Arduino - Afinal, o que é isto?
Você certamente já ouviu falar algo sobre Arduino. Eu já tinha ouvido falar bastante e acabei mergulhando de cabeça ao assumir a responsabilidade pela "Noite do Arduino" do Garoa Hackerclube. Existe muito material a respeito, a começar pelo site oficial. Aqui no blog vou tentar falar de assuntos menos comentados e mais profundos. O que parece conflitar com o título deste post - "o que é Arduino" é algo básico, certo?
domingo, junho 19, 2011
Ebook (Grátis) de Junho: Tarzan The Terrible
Tarzan The Terrible (Tarzan o Terrível) é o oitavo livro de Tarzan e faz parte da sequência considerado por muitos como o auge da imaginação de Edgar Rice Burroughs.
sexta-feira, junho 17, 2011
Projeto 'Epoch' - Parte4 - Software (cont)
Na parte anterior vimos a interface com o módulo de relógio DS1302. Veremos hoje o resto do software.
quarta-feira, junho 15, 2011
Projeto 'Epoch' - Parte3 - Software
Vamos começar a examinar o software pelas rotinas de interface do microcontrolador PIC com o módulo de relógio DS1302.
Será que vem aí uma mini Era do Gelo?
Numa época em que todos falam no Aquecimento Global, alguns cientistas vem sinais de uma possível mini Era do Gelo, já na próxima década.
segunda-feira, junho 13, 2011
Projeto 'Epoch' - Parte2 - Hardware
Veremos neste post o hardware que utilizei para apresentar a contagem de segundos no display de pinball que apresentei na primeira parte.
A ideia básica foi usar um microcontrolador para acionar o display. Uma conexão RS232 com um micro é usada para programar o valor inicial e um relógio com bateria é usado para manter atualizada a data e hora quando o microcontrolador estiver desligado.
A ideia básica foi usar um microcontrolador para acionar o display. Uma conexão RS232 com um micro é usada para programar o valor inicial e um relógio com bateria é usado para manter atualizada a data e hora quando o microcontrolador estiver desligado.
domingo, junho 12, 2011
Resenha: The Black Pearl (Modesty Blaise vol 4)
O quarto volume das tiras de Modesty Blaise contém quatro histórias e traz algumas novidades nos roteiros. Infelizmente a qualidade da impressão deixa muito a desejar, com traços escuros, falhados e/ou borrados (clique para ampliar as imagens).
quinta-feira, junho 09, 2011
Projeto 'Epoch' - Parte1 - Display
Uma das várias "nerdices" do Garoa Hacker Clube é registrar datas usando o número de segundos desde a fundação (o "Epoch 0"). Por outro lado, temos no GHC um monte de material disponível para projetos, entre eles alguns displays de máquinas de pinball.
A junção destas duas coisas me pareceu óbvia. Surgiu assim o meu projeto 'Epoch', um contador de segundos desde a fundação do Garoa:
A junção destas duas coisas me pareceu óbvia. Surgiu assim o meu projeto 'Epoch', um contador de segundos desde a fundação do Garoa:
terça-feira, junho 07, 2011
Kit de Capacímetro da Sparkfun
Um dos vários serviços prestados pelo Laboratório de Garagem é revender produtos da Sparkfun. Os preços nem sempre são maravilhosos (e certamente isto não é culpa deles), mas o serviço é de primeira e o prazo de entrega bem razoável. E os lucros revertem para as inciativas de apoio aos garagistas.
Garimpando itens interessantes, achei um kit para construção de um capacímetro digital. Além de ser um instrumento útil (já que a marcação dos capacitores não costuma ser das mais claras e as tolerâncias são bem ruins) é uma bela aplicação de microcontrolador e o preço acabou sendo bem convidativo.
Garimpando itens interessantes, achei um kit para construção de um capacímetro digital. Além de ser um instrumento útil (já que a marcação dos capacitores não costuma ser das mais claras e as tolerâncias são bem ruins) é uma bela aplicação de microcontrolador e o preço acabou sendo bem convidativo.
segunda-feira, junho 06, 2011
Reciclada no Visual
O blog agora está com novo visual, espero que não tenha estragado nada com as mudanças.
domingo, junho 05, 2011
Livro de Maio: iWoz
Embora o grande público associe o nome Apple a Steve Jobs, para engenheiros e geeks o Steve da Apple é Steve Wozniak. iWoz é a sua auto-biografia escrita, segundo ele, para corrigir informações erradas sobre ele.
terça-feira, maio 31, 2011
Personalizando a Tela de Repouso do Kindle
Uma das coisas que chamam a atenção no Kindle são as imagens apresentadas quando ele entra em standby (que muitos consideram como "desligado"). A tela do tipo eInk praticamente não consome bateria para manter uma imagem estática, portanto ao invés de ficar com a tela apagada a Amazon optou por apresentar figuras. Embora o conjunto de imagens seja bom, após algum tempo dá ficar cansado delas.
Entretanto, a Amazon não permite mudar as imagens (afinal, existe nos EUA uma versão mais barata com imagens patrocinadas). É, portanto, necessário um pouco de hacking.
Entretanto, a Amazon não permite mudar as imagens (afinal, existe nos EUA uma versão mais barata com imagens patrocinadas). É, portanto, necessário um pouco de hacking.
quarta-feira, maio 18, 2011
Google Code Jam 2011: QR_D - GoroSort
O problema final da rodada da qualificação foi o mais difícil. Além disso, veio recheado de malvadezas, da descrição cheia de detalhes desnecessários ("Goro has 4 arms." - e daí?) a uma saída com seis casas decimais ("Answers with an absolute or relative error of at most 10-6 will be considered correct") para uma resultado que é sempre inteiro.
quarta-feira, maio 11, 2011
Google Code Jam 2011: QR_C - Candy Splitting
No terceiro problema da rodada de qualificação a coisa esquenta. Parece ser um problema de maximização que requer uma solução a base de programação dinâmica - mas será isto mesmo?
Quando eu finalmente enxerguei a solução soltei um palavrão em voz alta...
Quando eu finalmente enxerguei a solução soltei um palavrão em voz alta...
Google Code Jam 2011: QR_B - Magicka
O segundo problema da rodada de qualificação foi um pouco mais difícil que o primeiro, principalmente se você tentar fazer uma solução mais sofisticada e cometer erros primários (o meu caso).
terça-feira, maio 10, 2011
Google Code Jam 2011: QR_A - Bot Trust
O primeiro problema da rodada de qualificação não foi difícil, para resolvê-lo bastou fazer uma simulação seguindo a descrição do problema.
segunda-feira, maio 09, 2011
Google Code Jam 2011: Qualification Round
Na sexta/sábado passado tivemos a rodada de qualificação do Code Jam 2011. Para quem não conhece esta competição e o seu formato, sugiro ver os meus posts anteriores.
Esta rodada foi um pouco diferente para mim. Eu não estava muito motivado, pensei até em não participar; acabei entrando no site somente no final da manhã de sábado. Ao contrário dos anos anteriores, foram quatro problemas. Uma primeira olhada rápida indicaram que os dois primeiros eram relativamente simples, o terceiro complicado e o quarto muito complicado.
Esta rodada foi um pouco diferente para mim. Eu não estava muito motivado, pensei até em não participar; acabei entrando no site somente no final da manhã de sábado. Ao contrário dos anos anteriores, foram quatro problemas. Uma primeira olhada rápida indicaram que os dois primeiros eram relativamente simples, o terceiro complicado e o quarto muito complicado.
domingo, maio 01, 2011
Resenha: Top Traitor (Modesty Blaise vol 3)
Continuando as histórias de Modesty Blaise, chego ao terceiro volume. Neste ponto Modesty já é uma HQ consagrada, com personagem e estilo bem definidos. Mesmo assim as três histórias deste volume trazem algumas surpresas.
sábado, abril 30, 2011
Jogo do Mês: Neighbours from Hell
Você já sentiu a vontade de aprontar com algum vizinho? Você pode satisfazê-la com o jogo "Neighbours from Hell", que está em promoção no GOG.com.
sexta-feira, abril 29, 2011
Pequenos Imãs e Micro Controladores - Parte 10
Chegamos finalmente ao final da série de posts, vendo agora como adaptar o meu conta-giros para usar um sensor de efeito Hall com saída analógica. Como já vimos, este sensor apresenta na saída uma tensão proporcional à intensidade do campo magnético.
Categorias:
Eletrônica,
PIC,
Programação,
Sensores
quinta-feira, abril 28, 2011
Pequenos Imãs e Micro Controladores - Parte 9
Vejamos agora como adaptar o meu conta-giros para usar um reed switch. Como já vimos, o reed switch é uma chave acionada por um imã.
Categorias:
Eletrônica,
PIC,
Programação,
Sensores
segunda-feira, abril 25, 2011
Pequenos Imãs e Micro Controladores - Parte 8
Neste post vamos ver a adaptação do software do nosso circuito de teste para apresentar a velocidade em RPM (rotações por minuto).
Categorias:
Eletrônica,
PIC,
Programação,
Sensores
domingo, abril 24, 2011
Ebook Grátis: Space Platform de Murray Leinster
Após o prazer de ler Med Ship, resolvi ler um outro ebook de Murray Leinster: Space Platform, que encontra-se disponível no Projeto Gutenberg e no ManyBooks.
sexta-feira, abril 22, 2011
Saiu o Resultado do Concurso de Projetos com o 555
No começo de fevereiro noticiei um concurso internacional de projetos com o timer 555. Na quarta (20/4) à noite foram anunciados os vencedores no site oficial. Várias participações foram incríveis, entre os vencedores temos uma "somadora" decimal (feita com pouco mais de uma centena de 555) e um rádio AM (usando um único 555).
O site Evil Mad Scientist fez um post destacando alguns projetos.
O site Evil Mad Scientist fez um post destacando alguns projetos.
quinta-feira, abril 21, 2011
Pequenos Imãs e Micro Controladores - Parte 7
Vamos completar o nosso contador de giros vendo o software para o circuito apresentado no post anterior.
Categorias:
Eletrônica,
PIC,
Programação,
Sensores
terça-feira, abril 19, 2011
Pequenos Imãs e Micro Controladores - Parte 6
Neste post vou fazer um pequeno desvio do assunto imãs e sensores magnéticos e falar sobre conexão de display de 7 segmentos, para construir um contador de giros.
sexta-feira, abril 15, 2011
Pequenos Imãs e Micro Controladores - Parte 5
Neste post vamos começar a ver como conectar os sensores magnéticos a um microcontrolador, no caso um PIC.
Categorias:
Eletrônica,
PIC,
Programação,
Sensores
segunda-feira, abril 11, 2011
Google Code Jam 2011: Inscrições abertas
As inscrições para o Google Code Jam de 2011 já estão com as inscrições abertas no site oficial. Se você não sabe do que estou falando, veja a minha cobertura dos anos anteriores.
As incrições vão até 7 de maio, ao témino da rodada de qualificação iniciada no dia anterior (com duração de 24 horas). Em seguida teremos três rodadas eliminatórias on-line, culminando com a final presencial no Japão. Além da fama, os 1000 melhores colocados na rodada 2 receberão uma camiseta e os 25 participantes da final ganharão prêmios em dinheiro variando de US$10.000 a US$100.
As incrições vão até 7 de maio, ao témino da rodada de qualificação iniciada no dia anterior (com duração de 24 horas). Em seguida teremos três rodadas eliminatórias on-line, culminando com a final presencial no Japão. Além da fama, os 1000 melhores colocados na rodada 2 receberão uma camiseta e os 25 participantes da final ganharão prêmios em dinheiro variando de US$10.000 a US$100.
segunda-feira, abril 04, 2011
Pequenos Imãs e Micro Controladores - Parte 4
Na parte anterior vimos um sensor de efeito Hall que fornece como saída um voltagem proporcional ao campo magnético. A Sparkfun (e o Laboratório de Garagem) fornecem um sensor Hall que funciona de forma diferente, o US1881.
sábado, abril 02, 2011
Rescaldo do Primeiro de Abril de 2011
Ontem foi uma data tradicional no mundo Geek: Primeiro de Abril, o Dia dos Tolos. Como de costume, tivemos muitas notícias falsas, algumas divertidas e outras nem tanto.
sexta-feira, abril 01, 2011
Capas para o Kindle na DealExtreme
Uma das coisas que eu sentia falta no meu Kindle era uma capa protetora. A Amazon possui alguns modelos, mas todos bastante caros. Quando recebi a dica que a DealExtreme tinha opções de baixo custo eu não resisti e comprei dois modelos (uma para mim e outro para o meu pai).
quinta-feira, março 31, 2011
Pequenos Imãs e Micro Controladores - Parte 3
Uma opção mais sofisticada de detectar um imã é usando um sensor de Efeito Hall.
O Efeito Hall consiste na produção de uma diferença de voltagem em um condutor quando este é submetido a um campo elétrico. Hoje vamos ver um componente, o Allegro A1321, que possui internamente um elemento Hall e o circuito necessário para produzir uma tensão de saída proporcional ao campo magnético.
O Efeito Hall consiste na produção de uma diferença de voltagem em um condutor quando este é submetido a um campo elétrico. Hoje vamos ver um componente, o Allegro A1321, que possui internamente um elemento Hall e o circuito necessário para produzir uma tensão de saída proporcional ao campo magnético.
terça-feira, março 29, 2011
Corujando: Equipe Poli de Baja
Neste domingo passado (27/3) estive em Piracicaba (a terra da pamonha?) para acompanhar o final da competição Baja SAE Brasil 2011 e torcer pela Equipe Poli de Baja, da qual o meu filho é integrante.
O Baja SAE é uma competição estudantil promovida pela Sociedade de Engenheiros Automotivos, onde estudantes de engenharia projetam e constroem um pequeno veículo off-road. A competição envolve não somente provas práticas mas também apresentações do projeto.
No domingo foi a prova de enduro, onde os veículos correm por quatro horas em uma pista de terra cheia de lombadas e curvas complicadas. Na hora que os pilotos estão se acostumando com o gosto da poeira, entra um caminhão tanque na pista e transforma o pó em lama, principalmente nas curvas.
Foi uma prova de resistência não somente para os veículos e pilotos, mas também para os torcedores que precisaram suportar as quatro horas sob sol escaldante (das 10 às 14) e mais uma hora e meia até a divulgação do resultado.
No final os dois carros da FEI ficaram com os dois primeiros lugares (mantendo uma longa hegemonia na categoria), os dois da Poli com o terceiro e quarto e em quinto o carro Manguejaba 2 da Universidade Federal de Pernambuco. Festa para as três universidades, que com o resultado vão representar o Brasil na competição mundial que será nos EUA.
A prova teve até cobertura da imprensa; veja as matérias da Revista Auto Esporte:
Baja: Paulistas dominam pódio
Bajeiros tem torcida fiel
Competição de Bajas: FEI vence enduro
Terra neles!
Que Formula 1, nada!
Atualização 12:30 - Mais uma reportagem, com muitas fotos:
Equipes da FEI vencem a Baja SAE Brasil-Petrobras
Fotos
O Baja SAE é uma competição estudantil promovida pela Sociedade de Engenheiros Automotivos, onde estudantes de engenharia projetam e constroem um pequeno veículo off-road. A competição envolve não somente provas práticas mas também apresentações do projeto.
No domingo foi a prova de enduro, onde os veículos correm por quatro horas em uma pista de terra cheia de lombadas e curvas complicadas. Na hora que os pilotos estão se acostumando com o gosto da poeira, entra um caminhão tanque na pista e transforma o pó em lama, principalmente nas curvas.
Foi uma prova de resistência não somente para os veículos e pilotos, mas também para os torcedores que precisaram suportar as quatro horas sob sol escaldante (das 10 às 14) e mais uma hora e meia até a divulgação do resultado.
No final os dois carros da FEI ficaram com os dois primeiros lugares (mantendo uma longa hegemonia na categoria), os dois da Poli com o terceiro e quarto e em quinto o carro Manguejaba 2 da Universidade Federal de Pernambuco. Festa para as três universidades, que com o resultado vão representar o Brasil na competição mundial que será nos EUA.
A prova teve até cobertura da imprensa; veja as matérias da Revista Auto Esporte:
Baja: Paulistas dominam pódio
Bajeiros tem torcida fiel
Competição de Bajas: FEI vence enduro
Terra neles!
Que Formula 1, nada!
Atualização 12:30 - Mais uma reportagem, com muitas fotos:
Equipes da FEI vencem a Baja SAE Brasil-Petrobras
Fotos
domingo, março 20, 2011
HQ do Mês: The Phantom 1937-1939
O segundo volume de "The Phantom - the complete newspaper dailies" prossegue com a definição do personagem. A arte de Ray Moore se encaixa perfeitamente; os bandidos parecem terríveis, as mulheres são lindas e o Fantasma oscila entre o misterioso, o ameaçador e, algumas vezes o divertido. Um bom subtítulo seria "Encontros e Desencontros" - o Fantasma e Diana passam grande parte das histórias um tentando encontrar o outro.
sexta-feira, março 18, 2011
Minhas Aventuras com "Parsing": LR Parser (parte 2)
Continuando a minha descrição do LR parser, vejamos a sua arquitetura e o algorítimo básico. Um LR Parser é normalmente implementado como um autômato descendente (ou autômato com pilha), que é (digamos) uma máquina de estados "turbinada" com uma pilha, movido por duas tabelas.
quinta-feira, março 17, 2011
Pequenos Imãs e Micro Controladores - Parte 2
Uma das opções mais simples de detectar um imã é através de um Reed Switch.
Um reed switch é uma chave montada na forma de dois (ou mais) contatos montados em uma ampola de vidro. Ao ser exposta a uma campo magnético suficientemente forte, um (ou ambos) os contatos se movem.
Um reed switch é uma chave montada na forma de dois (ou mais) contatos montados em uma ampola de vidro. Ao ser exposta a uma campo magnético suficientemente forte, um (ou ambos) os contatos se movem.
quarta-feira, março 16, 2011
Minhas Aventuras com "Parsing": LR Parser (parte 1)
Embora o Earley Parser seja capaz de analisar uma gama bastante grande de gramáticas, o seu desempenho pode deixar a desejar. Minha próxima opção é o LR Parser.
Este algorítimo é bastante usado em compiladores reais, com o auxílio de pequenos truques devido às excentricidades das linguagens de programação reais.
Este algorítimo é bastante usado em compiladores reais, com o auxílio de pequenos truques devido às excentricidades das linguagens de programação reais.
terça-feira, março 15, 2011
Pequenos Imãs e Micro Controladores - Parte 1
Imãs são uma daquelas coisas que nos encantam desde a infância, quando parecem nos conceder poderes mágicos de atuar à distância. Entre as suas infinitas aplicações, imãs podem ser usados para disparar sensores.
Já mostrei aqui um exemplo disso, o Spoke-o-dometer.
Infelizmente, não parece ser fácil encontrar imãs de qualidade à venda aqui nesta terra onde canta o sabiá. Felizmente, graças à loja do Laboratório de Garagem, consegui comprar alguns imãs muito pequenos na Sparkfun. Os imã tem o formato de cubo, com aresta de 0,125 polegada. Fica mais fácil entender este tamanho colocando o imã sobre uma moeda de 10 centavos:
O tamanho diminuto não significa que o imã é fraco. Trata-se de um imã de Neodymium, o tipo de imã permanente mais forte que se conhece atualmente. Os dez imãs que comprei vieram grudados na forma de uma barra; é tão difícil destacar um deles que a primeira impressão é que é uma barra contínua e não cubos isolados.
Nos próximos posts vamos ver que tipo de sensores podemos acionar com estes imãs e, mais adiante, como conectar estes sensores a microcontroladores.
Já mostrei aqui um exemplo disso, o Spoke-o-dometer.
Infelizmente, não parece ser fácil encontrar imãs de qualidade à venda aqui nesta terra onde canta o sabiá. Felizmente, graças à loja do Laboratório de Garagem, consegui comprar alguns imãs muito pequenos na Sparkfun. Os imã tem o formato de cubo, com aresta de 0,125 polegada. Fica mais fácil entender este tamanho colocando o imã sobre uma moeda de 10 centavos:
O tamanho diminuto não significa que o imã é fraco. Trata-se de um imã de Neodymium, o tipo de imã permanente mais forte que se conhece atualmente. Os dez imãs que comprei vieram grudados na forma de uma barra; é tão difícil destacar um deles que a primeira impressão é que é uma barra contínua e não cubos isolados.
Nos próximos posts vamos ver que tipo de sensores podemos acionar com estes imãs e, mais adiante, como conectar estes sensores a microcontroladores.
segunda-feira, março 14, 2011
Minhas Aventuras com "Parsing": Implementando o Earley Parser
Passada a "Semana ZX81", é hora de retomar esta série de posts, apresentando uma implementação em C do algorítimo Earley Parser.
O programa apresentado supõe entrada e saída no formato do problema "ET Phone Home". O arquivo de teste original pode ser baixado de http://www.ime.usp.br/~cef/Xmaratona/problems/io/. Entretanto, o código apresentado aqui não é uma solução adequada, por ser muito lento.
O programa apresentado supõe entrada e saída no formato do problema "ET Phone Home". O arquivo de teste original pode ser baixado de http://www.ime.usp.br/~cef/Xmaratona/problems/io/. Entretanto, o código apresentado aqui não é uma solução adequada, por ser muito lento.
domingo, março 13, 2011
EBook (Grátis) do Mês: Tarzan The Untamed
Continuando com a minha releitura dos livros de Tarzan, cheguei ao sétimo deles: Tarzan The Untamed (literalmente "Tarzan o Indomado", que eu traduziria para "Tarzan o Selvagem" mas que ganhou nestas terras a tradução "Tarzan o Destemido").
sexta-feira, março 11, 2011
ZX81/TK82C: Emuladores
Espero que vocês tenham se divertido com esta sequência de posts em comemoração aos 30 anos do ZX81. Embora não tenha como proporcionar para vocês a experiência que foi comprar um computador pessoal (em uma época em que isto era um artigo raro aqui no Brasil) e conectá-lo a uma TV e gravador K7, os mais aventureiros podem experimentar um pouco o gostinho de programar o ZX81, através de emuladores.
Você nem precisa instalar no seu micro, pode rodar dentro do browser o emulador em Java que está em http://www.vavasour.ca/jeff/ts1000/. Atenção que ele segue fielmente o layout do teclado do ZX81 (por exemplo, você precisa digitar Shift L para obter =).
Se você prefere baixar um emulador para rodar localmente, a página http://www.zx81.nl/ tem várias opções.
O TS1000 é um emulador bem simples e compacto, para executar sob DOS (roda em tela cheia no WIndows XP). Usa um mapeamento fiel.
O ZX81 é outro emulador DOS, mas não roda diretamente sob o XP (use o DosBox). Suporta algumas teclas do PC como backspace, igual e setas.
O Xtender é um emulador DOS mais sofisticado e roda em tela cheia sob o XP. Se você gostar do XTender, a página oficial (http://www.delhez.demon.nl/) permite você comprar (por US$20) a versão registrada que inclui 240 programas e um aplicativo para puxar as suas fitas K7 para o PC.
EightyOne é um emulador para Windows, cheio de recursos. Uma versão mais nova (e os fontes) pode ser baixada de http://www.aptanet.org/eightyone/.
Você nem precisa instalar no seu micro, pode rodar dentro do browser o emulador em Java que está em http://www.vavasour.ca/jeff/ts1000/. Atenção que ele segue fielmente o layout do teclado do ZX81 (por exemplo, você precisa digitar Shift L para obter =).
Se você prefere baixar um emulador para rodar localmente, a página http://www.zx81.nl/ tem várias opções.
O TS1000 é um emulador bem simples e compacto, para executar sob DOS (roda em tela cheia no WIndows XP). Usa um mapeamento fiel.
O ZX81 é outro emulador DOS, mas não roda diretamente sob o XP (use o DosBox). Suporta algumas teclas do PC como backspace, igual e setas.
O Xtender é um emulador DOS mais sofisticado e roda em tela cheia sob o XP. Se você gostar do XTender, a página oficial (http://www.delhez.demon.nl/) permite você comprar (por US$20) a versão registrada que inclui 240 programas e um aplicativo para puxar as suas fitas K7 para o PC.
EightyOne é um emulador para Windows, cheio de recursos. Uma versão mais nova (e os fontes) pode ser baixada de http://www.aptanet.org/eightyone/.
quinta-feira, março 10, 2011
ZX81/TK82C: Literatura
O ZX81 foi um dos primeiros microcomputadores realmente acessíveis e teve inegável sucesso tanto na Inglaterra (seu país de origem) como nos EUA (onde foi licenciado com o nome de Timex 1000 e Timex 1500) e em vários outros países (na forma de clones não autorizados). Não é surpresa que esta popularidade tenha gerado um bom mercado para publicações.
O livro abaixo tinha por objetivo ajudar novatos na programação BASIC e não acrescentava muito ao manual, porém continha uma grande quantidade de exemplos bem comentados.
A revista americana Sync se dedicava exclusivamente ao ZX81 e era composta principalmente por anúncios, mas publicava programas suficientes para preencher um livro de quase 200 páginas.
Para quem queria programar algo um pouco mais sério (como jogos...) a pedida era o livro "Mastering Machine Code on Your ZX81". Impresso de forma semi-artesanal, partia da numeração hexadecimal e ia até um programa para jogar damas.
Aqui no Brasil tivemos várias revistas. A melhor delas era a Micro Sistemas (citada várias vezes nestes posts). Embora não fosse exclusiva para o TK82C (e demais clones nacionais do ZX81, pois eram vários), ela publicou artigos clássicos, notadamente os de Renato Degiovani. A Microdigital, fabricante do TK82C, publicou a revista Microhobby que se especializava em programas pequenos. A revista Microbits começou como uma fanzine e chegou a ter alguns números impressos de forma profissional e comercializados em bancas.
O livro abaixo tinha por objetivo ajudar novatos na programação BASIC e não acrescentava muito ao manual, porém continha uma grande quantidade de exemplos bem comentados.
A revista americana Sync se dedicava exclusivamente ao ZX81 e era composta principalmente por anúncios, mas publicava programas suficientes para preencher um livro de quase 200 páginas.
Para quem queria programar algo um pouco mais sério (como jogos...) a pedida era o livro "Mastering Machine Code on Your ZX81". Impresso de forma semi-artesanal, partia da numeração hexadecimal e ia até um programa para jogar damas.
Aqui no Brasil tivemos várias revistas. A melhor delas era a Micro Sistemas (citada várias vezes nestes posts). Embora não fosse exclusiva para o TK82C (e demais clones nacionais do ZX81, pois eram vários), ela publicou artigos clássicos, notadamente os de Renato Degiovani. A Microdigital, fabricante do TK82C, publicou a revista Microhobby que se especializava em programas pequenos. A revista Microbits começou como uma fanzine e chegou a ter alguns números impressos de forma profissional e comercializados em bancas.
Quem Não Ama um Falso Positivo do Anti-Virus?
Pois é, quarta feira de cinzas, ligar o micro no começo da tarde... e o AVG reclama que o Acrobat Reader 10.1 é um Trojan (Generic21.ALDP)! Todo cheiro de um falso positivo - confirmado no final da tarde ao baixar uma atualização das definições do AVG e o aviso sumir.
Uma busca no Google mostra que não fui o único a ser brindado com isto. Será que a AVG não pensou em testar as definições com a versão atual do Acrobat Reader (em inglês)?
Uma busca no Google mostra que não fui o único a ser brindado com isto. Será que a AVG não pensou em testar as definições com a versão atual do Acrobat Reader (em inglês)?
quarta-feira, março 09, 2011
ZX81/TK82C: Programando em Linguagem de Máquina
Embora o BASIC do ZX81 fosse suficiente para diversas aplicações, ele não tinha o desempenho necessário para jogos de ação. Para isto era necessário programar em linguagem de máquina; um pouco de código Z80 era suficiente para obter um bom desempenho, mesmo no modo SLOW.
O BASIC possui três instruções para interagir com código de máquina: PEEK, POKE e USR. A primeira possibilitava ler o conteúdo de qualquer posição de memória; a segunda permitia alterar este conteúdo; a terceira chamava uma rotina em linguagem de máquina.
Os princípios da programação em linguagem de máquina eram divulgados nas revistas e livros (mais detalhes na próxima parte). Uma vantagem que possuía era a experiência em programação com o 8080, tanto na escola como no trabalho. Conhecendo o processador Z80, alguns detalhes básicos da organização da memória do ZX81 e o endereço de algumas rotinas do seu firmware, você estava pronto para sair programando... no papel.
Escrito um programa em linguagem assembly, era preciso convertê-lo no código de máquina. Embora eu eventualmente tenha conseguido obter um Assembler que executava no próprio TK82C, no início eu me valia do MACRO-80 rodando em um dos micros CP/M-80 do trabalho.
Uma pergunta importante que não deve ter vindo a você é onde o código de máquina era colocado? Os comandos SAVE e LOAD salvavam e restauravam em fita K7 programas BASIC, portanto era preciso colocar o código dento de um programa BASIC. O lugar preferido era um comentário (REM), normalmente no início do código (cujo endereço era conhecido).
Surge daí uma convenção que os leitores das revistas especializadas devem lembrar até hoje. Num primeiro passo se digitava uma linha de comentário com um determinado tamanho e um programa simples (o LOADER ou MONITOR) para colocar o código no comentário. Em seguida se apagava o MONITOR (tá pensando que tem memória sobrando?) e se digitava a parte em BASIC do programa. Depois era salvar em fita e rodar, torcendo para não ter digitado algo errado (alguns Monitores mais sofisticados usavam um checksum para detectar erros de digitação).
O exemplo abaixo é um dos meus primeiros programas em assembler para o TK82C (clique para ampliar). Não foi nenhuma ideia muito original - alguém tinha publicado na revista Micro Sistemas um programa simples inspirado no Frogger e eu achei que conseguia fazer algo melhor. O resultado foi devidamente rejeitado pela Micro Sistema, por já ter publicado recentemente um programa semelhante. Avenida II acabou sendo acolhido pela MicroBits, uma revista de circulação mais modesta movida ao espírito hobbista.
O BASIC possui três instruções para interagir com código de máquina: PEEK, POKE e USR. A primeira possibilitava ler o conteúdo de qualquer posição de memória; a segunda permitia alterar este conteúdo; a terceira chamava uma rotina em linguagem de máquina.
Os princípios da programação em linguagem de máquina eram divulgados nas revistas e livros (mais detalhes na próxima parte). Uma vantagem que possuía era a experiência em programação com o 8080, tanto na escola como no trabalho. Conhecendo o processador Z80, alguns detalhes básicos da organização da memória do ZX81 e o endereço de algumas rotinas do seu firmware, você estava pronto para sair programando... no papel.
Escrito um programa em linguagem assembly, era preciso convertê-lo no código de máquina. Embora eu eventualmente tenha conseguido obter um Assembler que executava no próprio TK82C, no início eu me valia do MACRO-80 rodando em um dos micros CP/M-80 do trabalho.
Uma pergunta importante que não deve ter vindo a você é onde o código de máquina era colocado? Os comandos SAVE e LOAD salvavam e restauravam em fita K7 programas BASIC, portanto era preciso colocar o código dento de um programa BASIC. O lugar preferido era um comentário (REM), normalmente no início do código (cujo endereço era conhecido).
Surge daí uma convenção que os leitores das revistas especializadas devem lembrar até hoje. Num primeiro passo se digitava uma linha de comentário com um determinado tamanho e um programa simples (o LOADER ou MONITOR) para colocar o código no comentário. Em seguida se apagava o MONITOR (tá pensando que tem memória sobrando?) e se digitava a parte em BASIC do programa. Depois era salvar em fita e rodar, torcendo para não ter digitado algo errado (alguns Monitores mais sofisticados usavam um checksum para detectar erros de digitação).
O exemplo abaixo é um dos meus primeiros programas em assembler para o TK82C (clique para ampliar). Não foi nenhuma ideia muito original - alguém tinha publicado na revista Micro Sistemas um programa simples inspirado no Frogger e eu achei que conseguia fazer algo melhor. O resultado foi devidamente rejeitado pela Micro Sistema, por já ter publicado recentemente um programa semelhante. Avenida II acabou sendo acolhido pela MicroBits, uma revista de circulação mais modesta movida ao espírito hobbista.
"Engrish" sem Norte nem Sul
Engrish é uma forma depreciativa de se referir a textos malversados em inglês, tipicamente produzidos no oriente. Considerando-se a imensa penetração dos produtos chineses no mundo ocidental, é incrível a total falta de cuidado nos textos que os acompanham.
A imagem abaixo é do verso da embalagem de uma bussola comprada em uma loja da rede multicoisas e mais se assemelha a uma coleção aleatória de palavras; clique para se confundir:
A imagem abaixo é do verso da embalagem de uma bussola comprada em uma loja da rede multicoisas e mais se assemelha a uma coleção aleatória de palavras; clique para se confundir:
terça-feira, março 08, 2011
ZX81/TK82C: Programando em BASIC
Para quem programa nos dias de hoje, a programação em BASIC no ZX81 deve parecer um pesadelo. O dialeto de BASIC utilizado (o Sinclair BASIC) possui várias esquisitices, a começar pela forma de digitação.
Como comentei antes, as palavras reservadas não devem ser digitadas letra a letra; existe uma combinação especial de teclas para cada uma delas. Algumas combinações são mnemônicas, como pressionar P para digitar o comando PRINT, mas outras são menos óbvias, como digitar Shift 3 para obter THEN.
As linhas do programa devem ser numeradas; não existe um processo automático de numeração ou re-numeração e os recursos de edição são grosseiros. Nas atribuições, o comando LET é obrigatório. O comando IF não dispõe da clausula ELSE.
Existem dois tipos de variáveis: numéricas (ponto flutuante) e alfanuméricas (strings). Não existe declaração de variáveis, exceto pelas matrizes. As variáveis numéricas podem ter nomes de qualquer comprimento, começando por uma letra, exceto as usados em FOR-NEXT (que devem ter nomes de apenas uma letra). As variáveis do tipo string devem ter o nome composto por uma única letra seguida de $. É possível ter matrizes de múltiplas dimensões tanto numéricas como de strings. Os tamanhos de uma matriz não precisam ser fixos, podem ser definidos por uma variável.
As imagens abaixo mostram o começo de uma aplicação de análise de circuitos elétricos que eu adaptei de um exercício da faculdade e que foi publicado na revista Micro Sistemas nos idos de 1984 (clique para ampliar).
Como comentei antes, as palavras reservadas não devem ser digitadas letra a letra; existe uma combinação especial de teclas para cada uma delas. Algumas combinações são mnemônicas, como pressionar P para digitar o comando PRINT, mas outras são menos óbvias, como digitar Shift 3 para obter THEN.
As linhas do programa devem ser numeradas; não existe um processo automático de numeração ou re-numeração e os recursos de edição são grosseiros. Nas atribuições, o comando LET é obrigatório. O comando IF não dispõe da clausula ELSE.
Existem dois tipos de variáveis: numéricas (ponto flutuante) e alfanuméricas (strings). Não existe declaração de variáveis, exceto pelas matrizes. As variáveis numéricas podem ter nomes de qualquer comprimento, começando por uma letra, exceto as usados em FOR-NEXT (que devem ter nomes de apenas uma letra). As variáveis do tipo string devem ter o nome composto por uma única letra seguida de $. É possível ter matrizes de múltiplas dimensões tanto numéricas como de strings. Os tamanhos de uma matriz não precisam ser fixos, podem ser definidos por uma variável.
As imagens abaixo mostram o começo de uma aplicação de análise de circuitos elétricos que eu adaptei de um exercício da faculdade e que foi publicado na revista Micro Sistemas nos idos de 1984 (clique para ampliar).
segunda-feira, março 07, 2011
ZX81/TK82C: Características
O microcomputador ZX81 foi projetado especificamente para ser barato. Daí ter especificações baixas mesmo para a época:
A memória de 1K era insuficiente até mesmo para apresentar uma tela inteira, daí a expansão de 16K ser um acessório praticamente essencial (o que não impediu que um jogo de xadrez fosse feito para rodar nos 1K).
O teclado segue a disposição QWERTY, mas provavelmente isto é a única coisa boa a falar sobre ele. A sua construção não fornece nenhum feedback táctil - a sensação de apertar uma tecla é igual a apertar uma superfície dura. Cada tecla pode ter até cinco funções, dependendo do contexto e do uso do Shift e Function. Além de reduzir o número de teclas, isto elimina a necessidade do BASIC fazer análise léxica - ao invés de você escrever STOP digitando a letras S, T, O e P, você deve usar a tecla onde está a letra A, quando o BASIC está esperando um comando (o que é indicado por um cursor na forma de um K em reverso).
As teclas 5, 6, 7 e 8 correspondem às setas durante a edição do programa. Por este motivo, são usadas para movimentação na maioria dos jogos. O TK82C tinha um conector DIN na lateral que permitia ligar um joystick adaptado do Atari 2600 em paralelo com as teclas.
O vídeo é gerado diretamente pelo processador; o Z80 precisa comandar cada ponto a ser apresentado. Obviamente isto demanda processamento e os tempos são pouco flexíveis (o feixe de elétrons do tubo da TV não vai ficar parado esperando!). No ZX80 a imagem era gerada somente quando o computador estava esperando uma tecla, durante o processamento o vídeo apresentava ruído. No ZX81 foi acrescentado o modo SLOW, onde a interrupção NMI é usada para garantir que o vídeo será gerado durante o processamento. Entretanto, são tantas interrupções que sobra pouco tempo para processar (basicamente os retraços horizontais e verticais).
A rotina de vídeo decodifica cada um dos 256 valores possíveis em cada posição do vídeo em uma matriz de pontos fixa. Além dos caracteres comuns, são suportadas as 16 combinações produzidas dividindo cada caracter em quatro células; isto permite simular um modo gráfico de 48x64 posições. A decodificação dos caracteres usa uma tabela na ROM, Embora o firmware permita apontar para uma tabela em outro local, não existe memória neste endereço. Um hack de hardware interessante é colocar uma Ram adicional nesta faixa de endereço. Isto permite alterar por software os caracteres disponíveis.
Sobre a interface K7 podemos dizer que funcionava - a maior parte do tempo. Ocasionalmente eram necessárias algumas "mandingas"; circuitos que prometiam melhorar a gravação e leitura apareciam com frequência nas revistas especializadas. Existiam até gravadores especializados para o uso com o ZX81 e outros computadores. O mais chato é que os programas úteis costumavam demorar mais de 5 minutos para carregar - e você só descobria se teve sucesso no final.
- Processador Z80 trotando a 3.25MHz
- 1K bytes de Ram (2K no TK82C)
- Teclado de membrana de 40 teclas
- Modulador RF interno, para conexão a uma TV b&p pelos terminais de antena
- Vídeo organizado em 24 linhas de 32 caracteres
- Interface para gravador K7, com capacidade de ler e escrever a 300 bps
A memória de 1K era insuficiente até mesmo para apresentar uma tela inteira, daí a expansão de 16K ser um acessório praticamente essencial (o que não impediu que um jogo de xadrez fosse feito para rodar nos 1K).
O teclado segue a disposição QWERTY, mas provavelmente isto é a única coisa boa a falar sobre ele. A sua construção não fornece nenhum feedback táctil - a sensação de apertar uma tecla é igual a apertar uma superfície dura. Cada tecla pode ter até cinco funções, dependendo do contexto e do uso do Shift e Function. Além de reduzir o número de teclas, isto elimina a necessidade do BASIC fazer análise léxica - ao invés de você escrever STOP digitando a letras S, T, O e P, você deve usar a tecla onde está a letra A, quando o BASIC está esperando um comando (o que é indicado por um cursor na forma de um K em reverso).
As teclas 5, 6, 7 e 8 correspondem às setas durante a edição do programa. Por este motivo, são usadas para movimentação na maioria dos jogos. O TK82C tinha um conector DIN na lateral que permitia ligar um joystick adaptado do Atari 2600 em paralelo com as teclas.
O vídeo é gerado diretamente pelo processador; o Z80 precisa comandar cada ponto a ser apresentado. Obviamente isto demanda processamento e os tempos são pouco flexíveis (o feixe de elétrons do tubo da TV não vai ficar parado esperando!). No ZX80 a imagem era gerada somente quando o computador estava esperando uma tecla, durante o processamento o vídeo apresentava ruído. No ZX81 foi acrescentado o modo SLOW, onde a interrupção NMI é usada para garantir que o vídeo será gerado durante o processamento. Entretanto, são tantas interrupções que sobra pouco tempo para processar (basicamente os retraços horizontais e verticais).
A rotina de vídeo decodifica cada um dos 256 valores possíveis em cada posição do vídeo em uma matriz de pontos fixa. Além dos caracteres comuns, são suportadas as 16 combinações produzidas dividindo cada caracter em quatro células; isto permite simular um modo gráfico de 48x64 posições. A decodificação dos caracteres usa uma tabela na ROM, Embora o firmware permita apontar para uma tabela em outro local, não existe memória neste endereço. Um hack de hardware interessante é colocar uma Ram adicional nesta faixa de endereço. Isto permite alterar por software os caracteres disponíveis.
Sobre a interface K7 podemos dizer que funcionava - a maior parte do tempo. Ocasionalmente eram necessárias algumas "mandingas"; circuitos que prometiam melhorar a gravação e leitura apareciam com frequência nas revistas especializadas. Existiam até gravadores especializados para o uso com o ZX81 e outros computadores. O mais chato é que os programas úteis costumavam demorar mais de 5 minutos para carregar - e você só descobria se teve sucesso no final.
Assinar:
Postagens (Atom)