BASICODE - BASICODE
BASICODE era um projeto de computador com o objetivo de criar um padrão unificado para a linguagem de programação BASIC . O BASIC estava disponível em muitos computadores domésticos populares , mas havia inúmeras variantes que eram incompatíveis entre si. O projeto foi iniciado em 1980 por Hobbyscoop, um programa de rádio da organização de radiodifusão holandesa Nederlandse Omroep Stichting (NOS).
A implementação básica foram aplicativos utilitários específicos de arquitetura que executaram chamadas de sub-rotinas de texto, áudio e som definidas no padrão de linguagem BASICODE de acordo com as habilidades do computador em questão. Esses aplicativos, chamados de Bascoders , também permitiam o compartilhamento de dados e programas em diferentes plataformas de computador, definindo um formato de dados para os cassetes compactos que eram usados regularmente como mídia de armazenamento na década de 1980. Um programa BASICODE armazenado em cassete pode ser carregado e executado em qualquer computador que suporte o idioma. BASICODE era freqüentemente chamado de " Esperanto para computadores" por esse motivo.
BASICODE
A situação no início da década de 1980
Do final dos anos 1970 ao final dos anos 1980, os computadores domésticos baseados em processadores de 8 bits eram muito populares. Entre os modelos mais conhecidos estavam o TRS-80 da Tandy , o PET 2001 , VIC-20 , C64 , C128 e o Plus / 4 da Commodore , o Atari 400/800 (XL / XE) , os computadores Sinclair Research ( ZX80 , ZX81 , ZX Spectrum ) e a família KC85, popular na República Democrática Alemã . Todos esses computadores tinham uma CPU do tipo MOS Technology 6502 ou Zilog Z80 , 16 a 64 kilobytes de RAM , conectores para uma unidade de cassete ou embutida para armazenamento de dados e, finalmente, um interpretador BASIC que geralmente era armazenado em ROM . A curva de aprendizado plana do BASIC, que foi projetado para os novatos em programação, e a disponibilidade instantânea da linguagem em todos esses computadores levaram muitos usuários a escrever e compartilhar seus próprios programas.
Um problema era que compartilhar programas e dados entre computadores de diferentes fabricantes era difícil porque os vários dialetos BASIC eram totalmente incompatíveis em algumas áreas. Eles usaram comandos BASIC diferentes para fazer a mesma ação (como limpar a tela, desenhar um pixel ou reproduzir um som), de forma que um programa BASIC escrito para o C64 não funcionasse em um Atari XL sem modificação e vice-versa. Outra dificuldade era o fato de que, embora esses computadores fossem semelhantes, eles ainda diferiam em aspectos importantes do hardware, como resolução da tela, paleta de cores disponível ou recursos de áudio. Finalmente, os formatos de dados usados para armazenar dados no cassete também eram incompatíveis.
O primeiro padrão
Por volta de 1980, a emissora holandesa NOS começou a transmitir programas de computador por rádio. Como os programas e dados eram armazenados como áudio em fitas compactas, era possível gravar tal transmissão em fita e carregá-la posteriormente no computador. No entanto, por causa dos problemas mencionados anteriormente, o programa teve que ser adaptado para quase todos os tipos populares de computadores e também transmitido várias vezes. Como o cassete compacto tem uma densidade de dados muito baixa em comparação com a mídia de armazenamento atual, a gravação dos programas demorava muito e apenas um número limitado de programas podia ser transmitido por show. Portanto, a transmissão adicional de diferentes versões dos mesmos programas era um grande inconveniente.
Em 1982, os executivos da NOS decidiram desenvolver um formato de dados unificado. Um aplicativo específico para cada modelo de computador, denominado Bascoder , gerenciava a recuperação e o armazenamento de programas e dados nesse formato unificado a partir de fita. Os Bascoders também foram transmitidos pela NOS, mas também podiam ser comprados na NOS em cassete e partilhados entre amigos e conhecidos. O formato, que era muito bem protegido contra interferências, podia ser lido e escrito por todos os hardwares de computadores domésticos populares. A robustez do formato também possibilitou a transmissão via rádio de ondas médias , o que aumentou o alcance e, por sua vez, o número de potenciais usuários. Por exemplo, dados transmitidos pela estação de rádio holandesa Hilversum podem ser recebidos em grande parte da República Democrática Alemã .
BASICODE 2
O padrão resolveu um dos problemas mencionados, os formatos de dados incompatíveis. No entanto, os programas ainda precisavam ser adaptados ao dialeto BASIC de cada computador e às capacidades de hardware. Limitar os programas para usar apenas instruções comuns em todos os dialetos significava grandes limitações em termos de funcionalidade, por exemplo, abster-se completamente de usar gráficos e sons e apenas métodos desconfortáveis para inserir dados usando o teclado e para controlar a saída de caracteres na tela. Por esta razão, em 1984, o padrão aprimorado BASICODE 2 foi criado. Bascoders usando este padrão não continham apenas rotinas para entrada e saída de dados para fita. Além de um conjunto de cerca de 50 comandos, funções e operadores BASIC que eram comuns a todos os dialetos BASIC, o padrão de linguagem do BASICODE 2 definia uma biblioteca de sub-rotinas que emulavam os mesmos recursos em todos os computadores suportados.
Para conseguir isso, todas as linhas de programa abaixo de 1000 foram reservadas para o Bascoder, e os programas BASICODE só podiam começar na linha de número 1000. As sub-rotinas do Bascoder nas linhas abaixo de 1000 foram chamadas com um comando GOSUB . Argumentos necessários foram passados para o Bascoder usando variáveis predefinidas especiais que foram reservadas para uso pelo Bascoder. O padrão continha uma série de regras adicionais que se tornaram necessárias devido às limitações de alguns modelos de computador. Por exemplo, no ZX-81, uma linha de código poderia conter apenas um único comando BASIC, um comportamento que quase nenhum outro computador compartilhava. Em um computador da série KC, uma linha de código não pode ter mais de 60 caracteres. Essas limitações tiveram que ser aplicadas a todos os programas BASICODE para garantir a independência da plataforma, porque o Bascoder foi interpretado pelo mesmo interpretador BASIC específico do computador que o próprio programa BASICODE.
Assim, os Bascoders foram carregados em vários computadores como programas normais e forneceram as rotinas adicionais para o padrão comum e E / S de cassete posteriormente. Os programas escritos em BASICODE só podiam ser usados depois que o Bascoder fosse carregado e iniciado. No entanto, em alguns computadores, os programas BASICODE podem ser combinados com as rotinas dos Bascoders e salvos no formato de dados nativo. O programa resultante não era mais independente de plataforma, mas devido à maior densidade de dados da maioria dos formatos nativos, ele podia ser carregado muito mais rápido do que o mesmo programa no formato BASICODE. Além disso, como não foi necessário carregar o Bascoder completo para executar o programa, mais RAM permaneceu disponível em tempo de execução.
Havia BASICODE 2 Bascoders para Exidy Sorcerer , Color Genie , Commodore PET , VIC-20 , C64 , Amiga , Sinclair ZX81 , ZX Spectrum , QL , Acorn Atom , BBC Micro , Electron , Tandy TRS-80 , MSX , Oric Atmos , P2000T , Grundy NewBrain , Amstrad CPC , IBM PC , Apple II , Texas Instruments TI-99 / 4A , Mattel Aquarius e outros. Além disso, os usuários avançados puderam escrever seu próprio Bascoder para o sistema de sua escolha, uma vez que o padrão de linguagem e o formato de dados eram abertos e bem documentados. O padrão BASICODE 2 possibilitou o desenvolvimento de programas independentes de plataforma com recursos avançados (para a época). Além disso, o BASICODE era usado para transmitir e compartilhar informações, como notícias da cena do computador, via rádio, na forma dos chamados "jornais". Um tutorial de codificação BASICODE e outras documentações também foram transmitidos dessa maneira.
BASICODE 3 / 3C
Em 1986, o novo padrão BASICODE 3 foi desenvolvido. As adições mais importantes foram rotinas para gráficos monocromáticos simples , leitura e gravação de dados de programas e saída de som. O BASICODE 3 tornou o BASICODE popular no cenário de informática da RDA e, a partir de 1989, os programas do BASICODE foram transmitidos por rádio em toda a RDA. Além disso, foi publicado um livro que incluía um disco de vinil com Bascoders para todos os computadores comuns na RDA. A última revisão do BASICODE, que apresentava gráficos coloridos, foi lançado como BASICODE 3C em 1991.
O fim do BASICODE
De cerca de 1990 em diante, a popularidade do BASICODE declinou rapidamente devido ao surgimento de computadores de 16 e 32 bits, especialmente variantes IBM-PC e sistemas compatíveis. Embora existissem Bascoders para essas máquinas, o BASICODE era muito limitado para fazer uso dos recursos que aquela geração de computadores fornecia. Além disso, por causa das arquiteturas muito menos comuns na era de 16 e 32 bits, o principal motivo para o desenvolvimento e uso do BASICODE tornou-se discutível. Conforme o hardware e o software dos novos sistemas se tornavam cada vez mais complexos, a maioria dos usuários se tornava incapaz ou relutante em escrever programas. A ascensão das interfaces gráficas do usuário contribuiu para o declínio da popularidade dos computadores de 8 bits e, conseqüentemente, do BASICODE também.
O sucessor da emissora estatal da RDA, a Deutschlandsender Kultur (que mais tarde se tornou parte da nova Deutschlandradio ), continuou a transmitir programas em BASICODE até cerca de 1992. Um padrão planejado chamado BASICODE 4 nunca se tornou realidade, porque a NOS parou de apoiar o projeto logo depois de BASICODE 3C foi lançado. BASICODE ainda é usado por entusiastas, em particular fãs de computador de 8 bits, por um valor nostálgico, mas não tem nenhuma relevância prática.
Significado histórico
BASICODE foi uma das primeiras tentativas de criar um padrão para a troca de programas e dados em arquiteturas de computadores domésticos mutuamente incompatíveis. É mais ou menos contemporâneo ao padrão MSX desenvolvido pela Microsoft , que especificava uma plataforma de hardware compartilhada além de um dialeto BASIC comum. Esses computadores foram vendidos por várias empresas e competiam diretamente com outros computadores domésticos populares. MSX teve sucesso principalmente nos mercados domésticos dos fabricantes, por exemplo , Japão , Coréia do Sul , Holanda e Brasil . Ao contrário do MSX, o BASICODE não definiu nenhum hardware, mas um padrão de linguagem para a linguagem de programação BASIC, que era quase onipresente em computadores domésticos, além de um formato de dados para Compact Cassettes que podiam ser lidos e escritos em todos os computadores para os quais BASICODE estava disponível. Como resultado, a implementação do BASICODE dependia exclusivamente de software adicional e, portanto, não se limitava a computadores de fabricantes específicos. A base instalada do BASICODE é difícil de estimar, porque tanto os Basicoders quanto os programas escritos em BASICODE estavam disponíveis gratuitamente. Havia um Bascoder para quase todos os computadores domésticos vendidos durante essa época. Comercialmente, o BASICODE não tinha importância porque era sempre compartilhado gratuitamente.
Deve ser declarado que BASICODE foi, por design, incapaz de usar os recursos dos computadores host em toda a sua extensão. O padrão de linguagem definido por BASICODE foi o menor denominador comum de todos os sistemas de computador relevantes. Este conceito foi parcialmente abandonado apenas com BASICODE3 / 3C, já que alguns computadores ou variantes de computador como o ZX80 / ZX81 e o KC87 não eram capazes de gráficos e cores e as novas seções do BASICODE usando esses recursos não eram utilizáveis neles. Especialmente para aplicativos que dependiam de tempo e gráficos ou som, por exemplo, videogames , BASICODE era claramente inferior a programas escritos em BASIC "nativo" ou código de máquina . Os pontos fortes do BASICODE estavam nas áreas de design de aplicativos, software educacional e compartilhamento de dados. O formato BASICODE também foi usado para programas Pascal . Pascal era uma linguagem muito mais consistente entre os sistemas, mas os compiladores estavam disponíveis apenas para poucos tipos de computadores domésticos.
O conceito subjacente de BASICODE, que é a definição de um padrão de linguagem para desenvolvimento de software independente de plataforma e a implementação desse padrão como tempos de execução específicos do sistema (Bascoder), foi posteriormente revisitado na linguagem de programação Java , na forma de sistema operacional Java Virtual Machines específicas que executam programas Java. Além disso, a distribuição de dados e informações no formato de dados BASICODE é uma reminiscência dos atuais tipos de documentos independentes de plataforma, como o Portable Document Format (PDF) e os aplicativos de leitura de PDF necessários.
O formato de dados BASICODE
No formato BASICODE, a gravação de programas é análoga à gravação de dados. Portanto, ao gravar programas, os comandos não são lidos e escritos na forma de unidades de byte único ( tokens ), mas caractere por caractere.
Um bloco de dados começa com o caractere 02 (STX, início do texto) e termina com o caractere 03 (ETX, final do texto). Após o ETX, é transmitido um byte de verificação composto pelos bytes anteriores, incluindo STX e ETX por adição binária (XOR). Um caractere 0D (decimal 13) marca o fim de uma linha durante a transmissão. Os arquivos de dados criados por programas podem usar todos os caracteres como dados e não devem conter caracteres de controle. Eles são lidos e gravados em blocos de 1024 bytes.
Cada byte é transmitido na sequência "1 bits de início - 8 bits de dados - 2 bits de parada". Os bits de dados são enviados com o bit menos significativo primeiro. O bit mais significativo é transmitido invertido e é sempre 0 (transmitido como 1) porque BASICODE usa apenas caracteres ASCII . Portanto, outra maneira de descrever a sequência de transmissão é "1 bit de início - 7 bits de dados - 3 bits de parada". A redundância resultante visa maximizar a compatibilidade com diferentes computadores.
Para os sinais de áudio, são utilizadas ondas quadradas na forma de uma onda de 1200 Hz para um bit "0" e duas ondas de 2400 Hz para um bit "1", resultando em um tempo de 1/1200 segundos para cada bit. Uma pausa de mais de 1/1800 segundos entre as ondas marca o início de um byte, tornando a onda seguinte o bit inicial. Após o bit de início e antes dos oito bits de dados, há outra pausa de pelo menos 1/1800 segundos. Um sinal de 2400 Hz com duração de cinco segundos marca o início de uma transmissão e é usado para a sincronização do programa de leitura. No final da transmissão, um sinal de 2400 Hz com duração de um segundo é enviado.
A taxa de dados teórica deste formato é de 1200 bits por segundo. Considerando a transmissão de três bits adicionais por byte de dados e as pausas antes e depois do bit de início, isso resulta em uma taxa de dados utilizável de 102 bytes por segundo e cerca de 6 kilobytes por minuto.
Decodificando Cassetes de Áudio
Em um computador moderno, os cassetes de áudio Basicode podem ser decodificados usando o minimodem , um software modem disponível gratuitamente. Se o cassete foi convertido em um arquivo wav chamado basicode.wav , o comando a seguir irá decodificá-lo em seus bytes de dados correspondentes em um arquivo chamado basicode.txt .
minimodem --rx 1200 -S 1200 -M 2400 --startbits 1 -7 --stopbits 3 -f basicode.wav >basicode.txt
Veja também
- Camada de abstração de hardware
- Biblioteca (ciência da computação)
- Máquina virtual
- Padrão de Kansas City
Leitura adicional
- (em alemão) Michael Wiegand, Manfred Fillinger: BASICODE. Mit Programmkassette. Ravensburger Buchverlag, Ravensburg 1986, ISBN 3-473-44010-8
- (em holandês) Hermine Bakker, Jaques Haubrich (autores), Stichting BASICODE (editor): Het BASICODE-3 boek. 3. Auflage. Kluwer Technische Boeken BV, Deventer / Antwerpen 1988, ISBN 90-201-2111-1
- (em alemão) Horst Völz: Basicode mit Programmen auf Schallplatte für Heimcomputer. Verlag Technik, Berlin 1990, ISBN 3-341-00895-0
links externos
- (em holandês) Site oficial do Hobbyscoop em holandês , o grupo de desenvolvimento original do BASICODE
- BASICODE: um exemplo do folclore da informática holandês - Informações históricas
- (em alemão) BasiCode - Software für alle - Informações sobre história e programação
- BASICODE: ainda ativo em um e-group do Yahoo
- downloads de imagens de fita para download são feitos com permissão da Hobbyscoop
- Uma coleção de programas BASICODE por vários autores Vários programas BASICODE