sábado, 26 de dezembro de 2009

DBase, Foxbase, CLIPPER

Após um curso de programação em linguagem BASIC {1990} me surgiu a oportunidade de fazer DBASE III Plus {1993} programado! Assim comecei a ter as primeiras noções de banco de dados - era o que havia na época. Uma "coisa" meio sem graça desafio. Era possível criar campos - dos tipos: character, numeric, date, logical ou memo - em uma estrutura que ao ser salva gerava uma arquivo .DBF. O nome deste arquivo era o nome da tabela. Nessas alturas o BASIC era bem mais interessante que marcar registros para deleção e Zap e Pack.



Foi quando ganhei um incrível PC/XT Itautec IS30 plus com monitor EGA capaz de representar 16 tons de cinza!! Um avanço significativo para quem estava acostumado com o preto e verde do Apple IIe ou com o preto e branco do TK-85. Sem falar no incrível Sistema Operacional SISNE Plus 3.30, que nada mais era que um MS-DOS com nome diferente. Ao mesmo tempo fui agraciado com o Foxbase e um livro sobre ele. Tudo voltou a ser divertido. O Foxbase era uma DBase que permitia programação. Depois de ter lido o tal livro uma dezena de vezes, comecei a colocar o XT para funcionar. Infelizmente perderam perdi meus fontes bem como meus códigos em BASIC...



Algum tempo depois e dois cursos de Clipper {1994} na bagagem, comecei a transformar a diversão em dinheiro. Não foi muita coisa mas pude completar minha coleção de CDs do Nirvana e do Alice in Chains. ,\,,/


Gerenciador de Programas

Nesta época - 386, 486, MS-DOS, nada de Windows - o Banco do Brasil contava com dezenas de softwares diferentes, cada um deles instalado em um local diferente e sem padronização para o nome dos executáveis. Este pequeno programinha foi uma mão na roda para os funcionários.





Gerenciador de Bens

Criado inicialmente para uso pessoal, e não totalmente finalizado, permitia o gerenciamento do conteúdo de disquetes. Foi feito na época em que tive acesso a meu primeiro HD - 40 MB se não me engano. Assim, todos os softwares estavam armazenados em disquete. Era fácil se perder...





Controle de Recebimento de Crédito

Era necessário fazer acompanhamento de clientes devedores e não havia nenhum software disponível para esta funcionalidade. Devido a simplicidade de fazê-lo e aproveitando que eu já estava com a "mão na massa", foi criado esse cadastrinho simples com seu relatório "mão na roda"...







Sobre as cores, veja bem! Fui traumatizado com monitores monocromáticos e com os de tons de cinza por muitos anos! Quando finalmente tive acesso a um monitor colorido, o que é que você esperava que eu fizesse?!? ;)

quinta-feira, 24 de dezembro de 2009

Revista INPUT

Eu era uma criança normal do interior do Paraná. Andava de bicicleta (BMX Pantera Negra), caçava passarinho com estilingue, subia em árvores, pulava muros para comer frutas e até jogava futebol! Tudo isso até ser apresentado a um Apple II {1991}.



Dai em diante minha vida ficou em preto e verde:





Nada mais me interessava a não ser aquele tecladinho, os sons emitidos pelos Unitrons, o ruído dos disquetes sendo acessados e, é claro, do monitor de fósforo verde. Microinformática virou minha religião. Eu consumia tudo o que podia encontrar sobre o assunto. Amava minhas aulas de BASIC bem como as revistas Micro Sistemas - que traziam códigos "avançados" que eu lia e relia. Mas minha religião não estava completa até ter acesso à bíblia: Revista INPUT.



Esta fantástica compilação de conhecimentos traz, além de muita teoria, códigos fonte em BASIC e em Linguagem de Máquina para diversos computadores da época: Apple, MSX, TRS-80, TK-85, ZX Spectrum, entre outros; Apresenta informações sobre manipulação de periféricos e códigos completos de jogos, bem como técnicas para criá-los. A revista era veiculada em fascículos que posteriormente podiam ser encadernados, transformando estas deliciosas revistinhas em uma enciclopédia de 5 volumes:



Esta coleção dos sonhos embasou toda uma geração de programadores. Confesso que até recentemente não possuia uma versão encadernada. Não por falta de vontade, mas por não haver opção. A última compilação completa que tinha notícia era a de um amigo que a conseguiu no Mercado Livre por um valor enorme. Eu consegui a minha comprando volumes encadernados de vendedores diversos na Estante Virtual {2009}. Mas como uma alento, para todos aqueles que ainda não têm sua coleção, fomos agraciados por uma alma bondosa e dedicada que escaneou cada fascículo e disponibilizou em pdf neste site:


O Data Cassete é um site fantástico que pode ser considerado uma biblioteca antiga, um museu. Nele também encontrei algumas coleções de livros a que tive acesso naquela época, manuais de computadores antigos, assim como algumas das excelentes revistas Micro Sistemas.

terça-feira, 22 de dezembro de 2009

Código Universitário



Já faz algum tempo que concluí a graduação {2003} e mesmo assim consigo me lembrar dos primeiros dias {1998}. Foi um excelente período de aprendizado, ainda que um pouco prejudicado pelas greves. De qualquer forma aprendi muito nesses poucos anos, e me arrependo de não ter me dedicado mais. Mas o principal ensinamento que ficou foi: humildade. Entrei na Universidade após já ter codificado alguns sistemas e com isso acreditava já dominar a arte da programação. Grande engano! Além de não se tratar apenas de programação, existem muitos assuntos relacionados que são fundamentais para o entendimento desta arte. Mesmo depois de ter concluído esta fase tão boa, e após tantos cursos extras e especializações, percebo que ainda há muito o que aprender!

Durante este período produzi pequenos códigos que foram muito prazerosos de codificar. Infelizmente alguns deles foram perdidos - como os de openGL e alguns de Inteligência Artificial. Selecionei alguns dos que se salvaram e vou compartilhá-los com vocês. Não há nada de fantástico nestes códigos! São apenas alguns que me concederam nota máxima ou que de alguma maneira deixaram sua marca:


Programa para Cálculo de Funções Estatísticas

Não era necessário para concluir a disciplina de estatística, mas quem quisesse poderia codificar as diversas funções apresentadas em sala e utilizá-las na prova.



Sistema de Comparação entre Métodos de Ordenação

Código para comparação de eficiência entre os algoritmos QuickSort e InsertSort. A medida é feita em relação ao número de comparações executadas por cada algoritmo.



Benchmark para Funções de Pesquisa e Ordenação

Sistema para estimar o custo dos algoritmos: Bubble Sort, Insert Sort, Heap Sort, Select Sort, Shell Sort, Quick Sort, Binary Search e Linear Search, através do número de comparações e troca entre elementos de um vetor gerado aleatoriamente. Além dos algoritmos que eram o foco da atividade, foram desenvolvidas as rotinas para desenho de janelas e menus.



Banco de Dados baseado em tabela Hash com controle de fragmentação

Este software funciona como um mini banco de dados, utilizando tabela hash, com rotinas para controle de fragmentação, desfragmentação, controle de índices e tudo mais o que solicitava a especificação. Consumiu um carnaval inteiro para ser construído e recebeu um sarcástico A+ ao ser confrontado com um outro que recebeu um A. Este, inseria apenas 1 registro sem dar erro, consultava sempre o mesmo registro e a interface era um amontoado de textos. Ainda estou tentando entender o critério de avaliação...





Algoritmo de Árvore B (recursivo e elegante)

Este foi, sem sombra de dúvida, o algoritmo mais marcante de todos os que tive que produzir no período acadêmico. Não que existisse algo de tão fantástico assim em se construir uma árvore b. O que realmente fez a tarefa ficar divertida foi o: recursivo e elegante (gente), como adorava dizer nossa professora de Algoritmos III.

Provavelmente muitos destes executáveis não funcionarão diretamente no seu Windows 64 bits. Um Windows XP 32 bits em máquina virtual ou um DOSBox resolvem o problema.

domingo, 20 de dezembro de 2009

Assembly Demo

Em uma época em que havia pouca variação no hardware dos computadores, o que tornava um software "melhor" que outro era a habilidade do programador - ou com uma técnica melhor ou com um melhor aproveitamento dos recursos disponíveis. Nessa época surgiram competições em que estes programadores podiam expor suas habilidades: artistica, musical e principalmente de codificação. Estes programadores normalmente se organizavam em grupos para realizar suas produções.



Os eventos cresceram tanto que foram criadas categorias para as disputas. As mais comuns eram as DEMO (que não possuiam limite de tamanho) e as INTRO (que possuiam a limitação) e estavam divididas em 4 KB e 64 KB. Um dos maiores festivais desse tipo é o Assembly.


Assembly'94

Muitos destes grupos também criavam CRACK para aplicativos e jogos e normalmente embutiam uma INTRO como forma de divulgação do grupo.



Future Crew foi um dos grupos de maior importância. Eles participaram da organização da primeira Assembly Party - a de 1992. Foram eles que produziram o editor de MOD (Scream Tracker). Softwares como 3DMark e o jogo Max Payne foram feitos por membros da Future Crew que fundaram as empresas que os fabrica! Mas talvez sua maior contribuição tenha sido com a DEMO que pode ser considerada a melhor já produzida até hoje: Second Reality.



Campeão da categoria PC demo do Assembly'93


Você percebeu a duração da demo? Reparou na a trilha sonora!? Vozes?!?! Eu mencionei o tamanho? Por ser uma demo ela não tinha limitação e assim ocupava monstruosos 1.44 MB. Isso mesmo! Um Floppy Disk de 3 1/2". Eu cheguei a comentar que isso rodava em um 386 DX/25 ??

Em meados de 1995, um 486 DX2/66 era considerado uma super máquina para estas produções. Todo o trabalho era feito via linha de código, ou como dizíamos: NA UNHA!! Veja o que era possível fazer com míseros 64 KB:



Campeão da categoria PC intro 64K do Assembly'95

Todas as demos, intro, músicas e gráficos produzidos por estes grupos estão bem divididos e categorizados neste ftp. Para algumas delas você vai precisar de um emulador de MS-DOS. Para quem usa Windows, recomendo o DOSBox com o frontend DBGL (DOSBox Game Launcher).



Segundo colocado na categoria PC demo do Assembly'95

sábado, 19 de dezembro de 2009

Reforma Ortográfica no Office 2007




Não é mais novidade mas muita gente ainda não fez. Já existe a atualização para que o Microsoft Office 2007 trabalhe com as novas regras do último acordo ortográfico. Apesar deste só se tornar obrigatório em 01/01/2013 é bom ir se acostumando.

Para atualizar é simples. Acesse este link do site da Microsoft para baixar o atualizador. Na página que carregar basta clicar em "Fazer Download" e mandar instalar. Concorde com as mensagens e perguntas que o programa fizer e pronto!

Se receber uma mensagem diferente de "A instalação foi concluída", ou seu Office 2007 não está em português (o que vai precisar de uma nova instalação do Office) ou o Service Pack 2 do Office não está instalado. Para este segundo caso, você precisa executar o Windows Update (Iniciar > Todos os programas > Windows Update). Procure a opção "Restaurar atualizações ocultas". Isto abrirá uma tela com a lista de atualizações que não foram instaladas. Procure nesta lista por "Service Pack 2 (SP2) do Microsoft Office 2007". Este item tem 271 MB!! Se estiver na lista, marque-o e clique em restaurar. Em seguida, na tela do Windows Update vá em "Verificar Atualizações". Encontre este mesmo item, selecione-o e inicie o download da atualização. Com o SP2 instalado, basta repetir o procedimento da reforma ortográfica e pronto.

Para saber o que mudou com esta reforma confira aqui.



(clique para ampliar)

sexta-feira, 18 de dezembro de 2009

Troféu Tetudo

Ambiente corporativo também pode ser criativo e eventualmente produzir pérolas. Neste caso foi criado um prêmio que é concedido àqueles que externam seus conhecimentos nerd/geek de formas extremas, ultrapassando o limite do suportável para os que o cercam.

Sua origem é pouco conhecida. Dizem que o filósofo - Boro - classificava como "tetudos" os garotos com pouco ou nenhum contato social e que passavam seus dias enclausurados lidando com computadores e jogos. Devido à falta de envolvimento com esforços físicos estes acabavam desenvolvendo um porte físico mais arredondado com mamilos avantajados.


Troféu Tetudo

Além do troféu, como merecimento por seu feito, todo tetudo recebe os seguintes dizeres:

"Parabéns! Você foi contemplado com o TROFÉU TETUDO!!!
Este prêmio permanecerá contigo até que alguém o mereça mais que você.
Também será sua responsabilidade repassar este troféu ao novo merecedor."

Em alguns ambientes o troféu adquire grande rotatividade!

Estas façanhas também costumam ser reunidas em um quadro, chamado de Ranking Tetudo, para eternizar o momento! Confira algumas:

  • Utilizou a pronúncia de magias em alfabeto rúnico para nomear seus pendrivers;
  • Por achar que é viadagem tomar chá, rotulou a garrafa de chá com $FF00FF (código hexa) da cor fucsia;
  • Por comemorar o Dia do Pi todo dia 03/14 às 15 horas (padrão americano de data MM/DD);

As datas e nomes dos responsáveis foram omitidos como forma de preservar a integridade física do escritor. ;)

quinta-feira, 17 de dezembro de 2009

edit config.sys autoexec.bat

Não faz tanto tempo assim...


Floppy Disk 5 1/4" DD - 360 KB


Floppy Disk 3 1/2" HD - 1.44 MB

... e estas eram as opções de tecnologia disponíveis para transportar dados entre computadores. Por serem mídias magnéticas havia muitas maneiras de perder o conteúdo armazenado, o que acontecia com frequência. Empiricamente, 1 a cada 10 disquetes dava problema!

Como alguns softwares ocupavam muito mais espaço do que os 1.44 MB, a solução era utilizar um compactador. O melhor deles naquela época era o famoso ARJ (Archived by Robert Jung). Aquele dos intermináveis parâmetros:

ARJ A -R -VVA -I2 -JM1 -JT1 A:DOOM.ARJ *.*

E lá ia você, disquete após disquete: doom.arj, doom.a01, doom.a02, ..., doom.a97. ;)  Isso tudo porque a porcaria do PKZip não mantinha compatíbilidade entre suas próprias versões. Sem falar que era toda uma família de executáveis: PKZip, PKUnzip, PKSFX, ... e todos sofriam do mesmo mal.


A informática era mais divertida naqueles dias! Além de ter que dominar todos os comandos do sistema operacional MS-DOS, que eu gostava tanto, eram necessários outros conhecimentos para que ele funcionasse adequadamente. Não havia a moleza das atuais placas Plug N' Play. A grande maioria era para barramento ISA e tinha que ser jumpeada corretamente para que não houvesse conflito. Para este trabalho era necessário que se conhecesse sobre IRQ e DMA, pois além de utilizá-los nas placas, os softwares também tinham que ser configurados com estes valores. Quem teve seu 486 DX4/100, 486 DX2/66, 386 e afins certamente se lembra.



A diversão não termina ai. Os computadores normalmente eram montados com 4 MB de memória EDO ou FPM, alguns com 8 MB e outros poucos com 16 MB, como era meu caso. Mas isso não era suficiente para que os aplicativos e jogos rodassem. A grande dificuldade morava nos malditos 640 KB que Bill Gates disse serem suficientes para qualquer um.


Devido à arquitetura dos primeiros PCs só era possível endereçar 1024 KB (1 MB) de memória. Com esta limitação convencionou-se que os primeiros 640 KB (memória convencional) seriam para RAM e os outros 384 KB (Upper Memory Area - UMA) ficariam reservados para hardwares (ROM BIOS, video RAM, portas de E/S). Estes 640 KB eram compartilhados pelo DOS e seus aplicativos que, com o passar do tempo, ficaram mais complexos e maiores.



Mais memória era necessária e nem toda a que havia sido reservada para hardware estava sendo utilizada. Estes espaços não utilizados (Upper Memory Blocks - UMB) foram pegos para complementar a RAM. Eventualmente, mesmo alguns espaços reservados eram utilizados! A soma destes espaços foi batizada de memória expandida (Expanded Memory Specification - EMS) que, para ser acessada, dependia de um software (EMM386.EXE).



Além disso, por um detalhe na forma de endereçamento e com o driver (HIMEM.SYS), era possível acessar diretamente mais 46 KB (High Memory Area - HMA) além dos 1024 KB. Isto permitia carregar pedaços do sistema operacional para a EMS e para a HMA, liberando boa parte da memória convencional para os aplicativos. Esta área acima de 1 MB era chamada de memória estendida (eXtended Memory Specification - XMS) e não podia ser acessada diretamente, em modo real, a não ser a pequena HMA.



A tarefa de liberar espaço nos 640 KB não era simples. Mesmo com o surgimento do MEMMAKER da Microsoft e do QEMM da Quarterdeck, que faziam otimização da memória, muita coisa tinha que ser feita manualmente. O maior desafio que encontrei na época era fazer rodar, com som, o Ultima VII: The Black Gate da Origin Systems. Ele precisava de no mínimo 548 KB da memória convencional, e já devia estar em memória o driver de mouse e o de som. Ah, sem usar EMM386!



Para ter esta configuração especial para o Ultima VII, mais uma para jogos normais e outra ainda para rodar aplicativos, eu utilizava o recurso de menu de boot, o qual permitia criar várias combinações de carregamento de sistema nos arquivos CONFIG.SYS e AUTOEXEC.BAT {1995}. O backup mais recente dos dois arquivos que encontrei foi o que está abaixo. Infelizmente acredito ter perdido a versão mais atualizada deles. De qualquer forma vai ser divertido relembrar aquele tempo...
Se você não sabia, o comando do título do post funciona! Ele coloca o CONFIG.SYS em edição. Ao terminar basta dar close que o AUTOEXEC.BAT entra em edição. ;)

terça-feira, 15 de dezembro de 2009

Jordan Mechner



A marca estava presente na maioria dos utilitários e jogos a que tinhamos acesso na época do Apple II. Títulos como Print Shop, Karateka, Prince of Persia, Lode Runner, Drol, Choplifter, Captain Goodnight, ... Mesmo mais tarde, nos softwares para PC, excelentes produtos continuavam a ser lançados: Print Master, Stunts, MystCarmen Sandiego, SimCity, Space Racer, ...








Sempre tive admiração pelo trabalho desse pessoal. Não é para menos. Passei boa parte da minha infância em frente à telinha charmosa de fósforo verde do Apple II, utilizando softwares feitos pela Brøderbund Software. Nos meus TOP 3 jogos daquela época estavam Lode Runner, Karateka e Prince of Persia.





Até muito recentemente - antes da Revista OLD!Gamer #1 - eu não atentava para o nome que aparecia na abertura de dois dos meus jogos preferidos: Jordan Mechner. Foi então que descobri que estes dois jogos fantásticos: Karateka e Prince of Persia, são de autoria deste grande artista:



Um amigo me passou um arquivo que vale a pena conferir. É a especificação técnica do Prince of Persia. Para quem gosta de programação, é um achado! Além disso, existe o blog do mestre Mechner que conta mais detalhes sobre estes e outros jogos que ele criou - pena não ter tido a opotunidade de jogá-los pois li que são igualmente bons. Outro link interessante é o de um site com emulador de Apple II, feito em java, que permite jogar Karateka no browser!

Se você acha um pouco demais chamar o cara de mestre, assista o trailer do filme Prince of Persia: The Sands of Time. Além de ter rascunhado o script ele acompanha cada detalhe da produção do filme. TEM QUE assitir.