en| ptbr

O criador e líder do projeto TinyCOBOL é Rildo Pragana.

Veja uma breve nota histórica escrita por ele sobre porque este compilador COBOL.

Este compilador foi primeiramente implementado para gerar programas TSR (Terminate and stay resident) sobre o DOS para a minha família de micro-terminais [1] conectados a um PC.

O código gerado não poderia ser C(naquele tempo), por não haver um compilador C livremente disponível para fazer a tradução da "segunda fase". Eu pretendia gerar linguagem assembler compatível com o assembler masm.

Ao compilador foi requerido também comunicar com um pequeno multi-tarefador, responsável para fazer o console do PC disponível para outras tarefas, enquanto fazia todo o processamento em segundo plano. Então o código tinha que ser completamente reentrante (vários terminais podiam ser executados ao mesmo tempo) com um stack separado e áreas de segmentos de dados variáveis, mas com uma área literal comum.

Eu tive que desmontar uma pilha de listas de 0,75 cm de altura para entender como fazer este trabalho dentro do DOS, então nenhuma operação(ou mesmo a tecla "pause") poderia fazer o sistema instável em segundo plano, ou os micro-terminais não funcionariam

O compilador era pequeno, e aceitava somente um subset do padrão COBOL 74, mas poderia facilmente ser expandido para compilação completa. Não havia os parâmetros "MOVE CORRESPONDING" ou "ALTER", como a maioria dos programadores COBOL(nossos clientes) não as requereram. Não havia funções de geração de relatórios também, por causa da limitação de tamanho. Nós suponhamos executá-lo somente com os primeiros 640KB de memória, (eu não poderia colocar nesse tempo interrupções de serviço além desse espaço) enquanto deixava espaço suficiente para rodar as aplicações em "primeiro plano".

Eu espero que todos entendam agora por que essa coisa "medonha" tinha tantas restrições. Agora, como nós estamos migrando para o linux, iremos fazer muito mais, como não há todas essas restrições mais.



1. MT100 e HandTerm. O primeiro (mais velho) foi implementado com um microprocessador Z80. O segundo foi um terminal de chip simples, com um FPGA Altera. Ele caracterizou uma linha de pontos múltiplos, (um par simples de linha-telefone) alcançando a velocidade de transferência de 250Kbps (toda feita pelo hardware). Meu trabalho principal era fazer o design do hardware, embora eu gaste a maioria do meu tempo escrevendo software. Quem disse que o software é assim tão "fácil"?