Programação com Applesoft BASIC
Programação com Applesoft BASIC
Um pouco da história do Applesoft BASIC
Quando Steve Wozniak escreveu Integer BASIC para o Apple II, ele não implementou suporte para matemática de ponto flutuante, porque estava interessado principalmente em escrever jogos, uma tarefa para a qual os inteiros sozinhos eram suficientes.
Em 1976, a Microsoft desenvolveu o Microsoft BASIC para a tecnologia MOS 6502, mas na época não havia nenhum computador de produção que o utilizasse. Ao saber que a Apple tinha uma máquina 6502, a Microsoft perguntou se a empresa estava interessada em licenciar o BASIC, mas Steve Jobs respondeu que a Apple já tinha uma versão.
O Apple II foi apresentado ao público na West Coast Computer Faire em abril de 1977 e ficou disponível para venda em junho. Uma das reclamações mais comuns dos clientes sobre o computador era a falta de matemática de ponto flutuante do BASIC.
Tornando as coisas mais problemáticas, o computador pessoal rival Commodore PET tinha um interpretador BASIC com capacidade de ponto flutuante desde o início. Como Wozniak - a única pessoa que entendia o Integer BASIC bem o suficiente para adicionar recursos de ponto flutuante - estava ocupado com a unidade e o controlador Disk II e com o DOS do Apple, a Apple recorreu à Microsoft.
A Apple supostamente obteve uma licença de oito anos para o Applesoft BASIC da Microsoft, por uma taxa fixa de US$ 31.000, renovando-a em 1985 por meio de um acordo que deu à Microsoft os direitos e o código-fonte para a versão Macintosh do BASIC da Apple.
O Applesoft foi projetado para ser compatível com Integer BASIC e usa o núcleo da implementação BASIC 6502 da Microsoft, que inclui o uso do comando GET para detectar pressionamentos de tecla e não exigir espaços nas linhas do programa.
Embora o Applesoft BASIC seja mais lento que o Integer BASIC, ele possui muitos recursos que o BASIC mais antigo não possui:
- Strings atômicas: Uma string não é mais um array de caracteres (como em Integer BASIC e C ); em vez disso, é um objeto coletado por lixo (como em Scheme e Java ). Isso permite arrays de strings; cria uma matriz de onze variáveis de string numeradas de 0 a 10. DIM A$(10);
- Arrays multidimensionais (números ou strings);
- Variáveis de ponto flutuante de precisão simples com um expoente de 8 bits e um significado de 31 bits e
recursos matemáticos aprimorados, incluindo trigonometria e funções logarítmicas;
- Comandos para gráficos de alta resolução;
- Instruções DATA, com comandos READ e RESTORE, para representar valores numéricos e de string em quantidade;
- Funções CHR$, STR$, e VAL para conversão entre tipos de string e numéricos (ambos os idiomas tinham a função ASC);
- Funções definidas pelo usuário: funções simples de uma linha escritas em BASIC, com um único parâmetro;
- Captura de erros: permitindo que programas BASIC lidem com erros inesperados por meio de sub-rotinas
escritas em BASIC.
Por outro lado, o Applesoft não possui o operador MOD (restante) do Integer BASIC.
Adaptar o BASIC para o Apple II foi um trabalho tedioso, pois a Apple recebeu uma listagem de fontes do Microsoft BASIC 6502 que provou ser bugada e também exigiu a adição de comandos Integer BASIC.
Como a Apple não tinha o montador 6502 disponível, a equipe de desenvolvimento foi forçada a enviar o código-fonte pelas linhas telefônicas para a Call Computer, uma empresa que oferecia serviços de compilador.
Este foi um processo extremamente tedioso e lento e depois que a Call Computer perdeu o código-fonte devido a um mau funcionamento do equipamento, um dos programadores, Cliff Huston, usou seu próprio computador IMSAI 8080 para montar o fonte do Applesoft BASIC.
Limitações
Em vários modelos iniciais do Apple II, o Applesoft BASIC não suportava o uso de letras minúsculas em programas, exceto em strings. PRINT é um comando válido, mas 'print' resulta Print em um erro de sintaxe.
O Applesoft não possui vários comandos e funções comuns à maioria dos interpretes Microsoft BASIC (não 6502), como:
- INSTR (procure por uma substring em uma string)
- PRINT USING (formatar números na saída impressa)
- INKEY$ (verifique se há um pressionamento de tecla sem interromper o programa; embora um PEEK para o local $C000
alcance essa ação)
- LPRINT (saída para uma impressora em vez da tela)
O Applesoft não possui comandos para manipulação de arquivos ou discos, exceto para salvar e carregar programas via fita cassete. O sistema operacional de disco Apple II, conhecido simplesmente como DOS, aumenta os comandos na linguagem para fornecer tais habilidades.
Apenas as duas primeiras letras dos nomes das variáveis são significativas. Por exemplo, "LOW" e "LOSS" são tratados como a mesma variável, e tentar atribuir um valor a "LOSS" substitui qualquer valor atribuído a "LOW".
Um programador também deve evitar letras consecutivas que são comandos ou operações do Applesoft. O nome "SCORE" para uma variável é interpretado como contendo o OR operador booleano, renderizado como SC OR E.
"BACKGROUND" contém GR, o comando para invocar o modo gráfico de baixa resolução e resulta em um erro de sintaxe.
Som e gráficos
O único suporte de som é a opção de um caractere de campainha PRINT ASCII, para soar o bipe de alerta do sistema e um comando que faz clicar no alto-falante.
A linguagem não é rápida o suficiente para produzir mais do que um zumbido de barítono a partir de cliques repetidos. Os programas podem, no entanto, armazenar uma rotina de linguagem de máquina a ser chamada para gerar tons musicais eletrônicos abrangendo várias oitavas.
O Applesoft suporta a exibição gráfica de baixa resolução (Lores), onde 40 pixels de cor horizontalmente e até 48 verticalmente, podem ser exibidos em 16 cores, e o modo de alta resolução (Hires) de 280 por 192 pontos.
Existem comandos para plotar pixels e desenhar linhas horizontais e verticais em Lores. Hires permite desenhar pixels e linhas através de comandos.
As tabelas de formas baseadas em vetores podem ser usadas para desenhar objetos apenas em modo Hires. Eles consistem em linhas horizontais e verticais, e formas inteiras podem ser dimensionadas para tamanhos maiores e giradas em qualquer ângulo.
Nenhuma disposição existe para misturar texto e gráficos, exceto as quatro linhas de texto do Apple na parte inferior de uma tela gráfica.
Já no Apple IIe, foram adicionadas duas novas resuloções chamadas de "dupla resolução", podendo ser duplo Lores (DGR) ou duplo Hires (DHGR). Ficou disponível em máquinas com 64Kb de memória e pelo menos 1Kb no slot de expansão Auxiliar.
Esse modo basicamente duplica a resolução original, e inclui todas as 16 cores da paleta de Lores. O Applesoft não oferece suporte direto para estes modos. Deve ser utilizada rotina em linguagem de máquina. Os modos específicos do Apple IIgs também não são suportados.