BBC BASIC - BBC BASIC

BBC BASIC
BBC micro assembly listagem.jpg
Apareceu pela primeira vez 1981 ; 40 anos atras ( 1981 )
Versão estável
5,90b
SO BBC Micro
MOS Technology 6502
RISC OS
ZX Spectrum
CP / M
DOS
Microsoft Windows
TI-83 Plus e TI-84 Plus
Licença Apache 2.0 (RISC OS)
Proprietário (Windows)
Local na rede Internet www .riscosopen .org (RISC OS)
www .bbcbasic .org (Windows)
Influenciado por
BASIC , Atom BASIC , BCPL

BBC BASIC é uma versão da linguagem de programação BASIC lançada em 1981 como a linguagem de programação nativa para o computador doméstico / pessoal BBC Micro , fornecendo uma linguagem padronizada para um projeto de alfabetização informática do Reino Unido da BBC . Foi escrito principalmente por Sophie Wilson .

O BBC BASIC, baseado no antigo Atom BASIC para o Acorn Atom , estendeu os BASICs de microcomputadores contemporâneos com nomes DEF PROC/ DEF FNprocedimentos e funções, REPEAT UNTILloops e IF THEN ELSEestruturas inspiradas em COMAL . O intérprete também incluiu instruções para controlar a saída de som de quatro canais da BBC Micro e seu display gráfico de oito modos de baixa / alta resolução.

Devido a uma série de otimizações, o BBC BASIC executou programas muito mais rápido do que o Microsoft BASIC em máquinas semelhantes. As otimizações incluíram o uso de várias listas vinculadas para pesquisa de variáveis ​​em vez de uma única lista longa, pré-definindo a localização de variáveis ​​inteiras e tendo rotinas matemáticas de inteiros separadas. A velocidade foi melhorada ainda mais na máquina da BBC por meio do uso de RAM rápida , que permitiu que o processador MOS Technology 6502 e o driver de vídeo Motorola 6845 compartilhassem a memória sem pausar para acessar. Como resultado desses recursos de design, o BBC BASIC executou o Creative Computing Benchmark de David Ahl em 21 segundos, superando até mesmo o IBM Personal Computer e ultrapassando de longe a maioria das outras plataformas de 8 bits. Os únicos computadores comerciais BASIC de 8 bits tão rápidos quanto o BBC Micro foram o ABC 80 e o ABC 800 suecos . O BASIC 4 aprimorado no BBC Master executa o mesmo benchmark em cerca de sete segundos.

Um dos recursos exclusivos do BBC BASIC era o montador embutido , permitindo aos usuários escrever programas em linguagem assembly para o 6502 e, posteriormente, o Zilog Z80 , NS32016 e ARM . O montador estava totalmente integrado ao interpretador BASIC e compartilhava variáveis ​​com ele, que podiam ser incluídas entre os caracteres [e], salvas via * SAVE e * LOAD, e chamadas via comandos CALL ou USR. Isso permitiu aos desenvolvedores escrever não apenas código em linguagem assembly, mas também código BASIC para emitir linguagem assembly, tornando possível usar técnicas de geração de código e até mesmo escrever compiladores simples em BASIC.

História

Em 1978, Hermann Hauser e Chris Curry fundaram a Acorn Computers . Muito do código foi desenvolvido na Universidade de Cambridge por Sophie Wilson e seus colegas.

Plataformas e versões

BBC Micro

Prompt do BASIC no BBC Micro após ligar ou reiniciar o hardware

A lista completa de versões está disponível aqui:

BASIC I, a versão original, foi lançado nos primeiros BBC Micros .

BASIC II foi usado no Acorn Electron e BBC Micros enviados depois de 1982, incluindo o Modelo B. Ele adicionou as palavras OPENUP- OSCLIchave e , junto com a montagem de offset e correções de bugs.

BASIC III, foi produzido em uma versão do Reino Unido e uma versão de mercado dos Estados Unidos para a tentativa abortada da Acorn de entrar no mercado de computadores transatlântico. Além de algumas correções de bugs, a única mudança em relação ao BASIC II era que o COLOURcomando também podia ser escrito COLOR: independentemente de qual era a entrada, a versão do Reino Unido sempre o listava como COLOUR, a versão dos EUA como COLOR. O local principal em que o BASIC III pode ser encontrado é na versão HI-BASIC para o segundo processador externo.

BASIC IV, também conhecido como CMOS BASIC, disponível nas BBC mestre máquinas, foi alterado para usar as novas instruções disponíveis no processador 65SC12, reduzindo o tamanho do código e, portanto, permitindo a inclusão de LIST IF, EXT#como uma declaração, EDIT, TIME$, ON PROC, | em VDUdeclarações e ponto flutuante mais rápido. Correções de bugs foram incluídos novamente.

BASIC IV (1986) foi um aprimoramento adicional do BASIC IV e foi incluído na máquina Master Compact. A versão do BASIC on the Compact incluiu rotinas matemáticas recodificadas, que fornecem um aumento de 30% na velocidade em relação à versão incluída no resto da série Master.

HI-BASIC: estava disponível em duas versões, a primeira baseada em BASIC III e a segunda baseada em BASIC IV. Ambos foram construídos para rodar a partir de um endereço superior (& B800) no segundo processador, ao invés do endereço & 8000 usual na BBC B. Isso permitiu que mais espaço de programa estivesse disponível nos segundos processadores internos ou externos 6502. Uma versão foi introduzida para oferecer suporte a um segundo processador Zilog Z80.

Outra versão do BBC BASIC, chamada BAS128, foi fornecida em fita e disco com o BBC Master e Master Compact; ele carregava na RAM principal e usava 64 kB de RAM lateral para programas do usuário. Isso forneceu suporte para programas muito maiores ao custo de ser muito mais lento do que a versão normal baseada em ROM.

O intérprete pode lidar com BASIC e linguagem assembly 6502, que pode ser incluída entre os caracteres [e]. Isso contribuiu para a popularidade do sistema entre engenheiros industriais e de pesquisa.

Mais detalhes / Determinando a versão BASIC

Como o BBC MOS e o RISC OS eram geralmente fornecidos em ROM, pode-se presumir que uma versão específica do sistema operacional continha uma versão específica do BASIC. Como tal, não há uma maneira simples de determinar qual versão do BASIC está realmente em execução, a não ser questionando a identidade do sistema operacional e, portanto, fazendo uma suposição.

Observe que todos os elétrons, e os microcomputadores BBC posteriores, têm BASIC2: os microcomputadores BBC anteriores têm BASIC1. Se você não tiver certeza de qual versão do BASIC está em sua máquina, digitar RELATÓRIO após a inicialização do BASIC (após um BREAK ou * BASIC), irá imprimir a mensagem de copyright. Se a data for 1981, BASIC1 é instalado; se for 1982, você tem BASIC2. Máquinas americanas, ou aquelas com um segundo processador, podem ter US BASIC ou HIBASIC: as rotinas de ROM não estarão no mesmo lugar para estas ROMS.
- GUIA DO USUÁRIO DA ROM BÁSICA
Osbyte & 00 (0)

Identifique a versão do sistema operacional (consulte OSBYTE e 81 para obter mais informações sobre a identificação do sistema operacional)

Parâmetros de entrada:
X = 0 Execute BRK com uma mensagem fornecendo a versão do sistema operacional
X <> 0 RTS com a versão do sistema operacional retornada em X

Na saída:
X = 0, sistema operacional 1.00 ou sistema operacional eletrônico 1.00
X = 1, sistema operacional 1.20 ou sistema operacional americano


Osbyte & 81 (129)
Parâmetros de entrada:
X = 0
Y = & FF

Na saída:
X = 0 BBC OS 0.1
X = 1 Elétron OS 1.00
X = & FF BBC OS 1.00 ou OS 1.20
X = & FE US BBC OS 1.20



Exemplos de comando INKEY (-256) , para evitar que o comando * SHADOW perturbe um Electron ou modelo BBC padrão B, enquanto o executa em um B + ou Master / Compact, você pode usar
IF INKEY (-256)> 1 THEN * SHADOW1

Valores retornados :
0 = BBC B com antigo 0.10 OS (obsoleto!)
-1 = BBC B com novo 1.00+ OS (incluindo 1.20)
1 = Electron
251 = BBC B + 64/128
253 = Master 128
245 = Compact
160 = Archimedes Arthur OS ( obsoleto)
161 = RISC OS 2.00
162 = RISC OS 2.01

etc.
- Guia do usuário avançado do Acorn Electron

Veja também a entrada BeebWiki para INKEY.

Na família BBC, é possível executar o BASIC padrão e um HIBASIC aprimorado no segundo processador 6502. Pode-se determinar se o programa está rodando no segundo processador examinando o valor inicial de PAGE, será & 800 se estiver usando o segundo processador. Para distinguir entre BASIC e HIBASIC, deve-se examinar o valor inicial de HIMEM. Será & 8000 para BASIC rodando no segundo processador e & B800 para HIBASIC no segundo processador.

Uma situação semelhante existe no sistema operacional RISC, onde pode haver o BASIC normal ou o BASIC64 (que oferece matemática de maior precisão). BASIC normal se identifica como "BASIC V" e BASIC64 se identifica como "BASIC VI", portanto, o seguinte (usado antes que qualquer erro tenha ocorrido) irá distinguir um do outro:

IF INSTR(REPORT$,"VI") THEN PRINT "BASIC64" ELSE PRINT "BASIC"

Existem maneiras melhores de fazer isso, consulte o BeebWiki . Em quase todos os casos, você não precisa testar em qual BASIC ou plataforma seu programa está rodando, apenas faça a chamada e leia todos os dados retornados e trate disso.

Acorn Archimedes (RISC OS)

Com a mudança para a CPU ARM de 32 bits e a remoção do limite de 16 KB no tamanho do código BASIC, muitos novos recursos foram adicionados. O BASIC V versão 1.04 tinha 61 KB de comprimento. As versões atuais do RISC OS ainda contêm um intérprete BBC BASIC V. O código-fonte da versão RISC OS 5 do BBC BASIC V foi lançado sob a licença Apache 2.0 da RISC OS Open . Em 2011, a TBA Software lançou versões de teste de um BASIC atualizado que inclui suporte para VFP / NEON do assembler .

Entre os novos comandos e recursos suportados estão:

  • WHILE-ENDWHILE
  • IF-THEN-ELSE-ENDIF
  • CASE-OF-WHEN-OTHERWISE-ENDCASE,
  • RETURN parâmetros em procedimentos,
  • matrizes locais,
  • bibliotecas de procedimentos ( LIBRARY, INSTALLe OVERLAY),
  • LOCAL DATAe LOCAL ERRORmanipuladores,
  • um parente RESTORE,
  • operações de array ,
  • novos operadores,
  • STEP TRACE,
  • Comandos para o novo sistema de som, mouse, gráficos.

Os comandos gráficos eram totalmente compatíveis com as versões anteriores, o som nem tanto; por exemplo, a ENVELOPEpalavra-chave do BASIC V em diante é um comando que usa quatorze parâmetros numéricos e efetivamente não faz nada - como em versões anteriores, ele chama OS_Word 8, mas isso não faz nada no RISC OS. O montador 6502 em linha foi substituído por um montador ARM . BASIC V foi dito, por Acorn, ser "certamente o BASIC mais rápido interpretado no mundo" e "provavelmente o BASIC mais poderoso encontrado em qualquer computador".

BASIC VI é uma versão do BASIC V que suporta números reais no formato IEEE 754 de 8 bytes, em oposição ao formato padrão de 5 bytes introduzido no BASIC I.

BBC BASIC V e VI foram entregues como padrão no Acorn Archimedes e no RiscPC . Uma versão do BBC BASIC V também estava disponível para rodar no segundo processador ARM para o BBC Micro.

Um compilador para BBC BASIC V foi produzido por Paul Fellows, líder da equipe de desenvolvimento do Arthur OS, chamado Archimedes BASIC Compiler e publicado inicialmente pela DABS Press. ABC foi capaz de implementar quase toda a linguagem, com a exceção óbvia da função EVAL, que inevitavelmente exigia interpretação programática em tempo de execução. Como evidência de sua integridade, ele era capaz de oferecer suporte à sintaxe do montador embutido. O compilador foi escrito em BBC BASIC V. O compilador (rodando sob o interpretador nos estágios iniciais de desenvolvimento) foi capaz de compilar a si mesmo, e as versões que foram distribuídas eram código-objeto auto-compilado. Muitos aplicativos inicialmente escritos para rodar sob o intérprete se beneficiaram do aumento de desempenho que isso proporcionou, colocando o BBC BASIC V no mesmo nível de outras linguagens para o desenvolvimento sério de aplicativos.

Outras plataformas

BBC BASIC também foi portado para muitas outras plataformas.

Uma versão NS32016 do BBC BASIC foi fornecida com o coprocessador Acorn 32016 e Acorn ABC.

Além da versão do BBC BASIC fornecida com o segundo processador Zilog Z80 da BBC Micro , uma versão baseada em Z80 do BBC BASIC também existe para sistemas baseados em CP / M. Até recentemente, nenhuma versão existia para o Sinclair ZX Spectrum ; no entanto, devido aos esforços de J. G. Harston (também responsável por uma versão PDP-11 ), o BBC BASIC for the Spectrum foi lançado em janeiro de 2002, com muitas melhorias feitas em versões subsequentes.

Uma versão Zilog Z80 do BBC BASIC também foi usada no computador de mesa Tiki 100 , Cambridge Z88 portátil e nos computadores Amstrad NC100 Notepad e Amstrad NC200 Notebook. Esta versão foi implementada nas calculadoras gráficas das séries TI-83 Plus e TI-84 Plus .

Para sistemas baseados em PC , BBC BASIC também foi implementado para DOS como BBCBASIC (86) , que visava a compatibilidade máxima com o BBC Micro, e BBasic , que se concentrava na linguagem BASIC, com seus próprios aprimoramentos baseados em BASIC II.

Uma versão do BBC BASIC integrada com a interface gráfica do usuário do Microsoft Windows , BBC BASIC para Windows, criada por Richard Russell , desenvolvedor das versões Z80 e x86, foi lançada em 2001. Esta versão ainda está em desenvolvimento ativo, tendo muito uso na indústria atualmente. Embora suporte quase completamente a especificação original do BBC BASIC (BASIC IV), a versão do Windows suporta muito da sintaxe BASIC V / VI, bem como alguns recursos avançados próprios. Os recursos exclusivos do BBC BASIC para Windows incluem suporte de intérprete para tipos de registro / estrutura e a capacidade de chamar rotinas de API do Windows ou em uma DLL externa . Versões recentes incluíram recursos avançados comparáveis ​​com linguagens como C , e uma biblioteca externa adicionou recentemente suporte para objetos. Uma versão baseada em SDL do BBC BASIC está disponível no Windows, Linux e uma série de dispositivos móveis com suporte para a biblioteca SDL.

Um clone GPL do BBC BASIC chamado Brandy , escrito em C portátil , também está disponível.

Um emulador do BBC Micro para o Commodore Amiga foi produzido pela Ariadne Software para CBM (Reino Unido). Embora extremamente rápido, ele não emulava o 6502 em velocidade total, de modo que o código assembly seria executado mais lentamente do que uma BBC real, enquanto os programas BASIC seriam executados muito mais rápido. Devido à forma como o BASIC otimizado e a emulação 6502 interagiam, quase nenhum jogo comercial rodava (mas código bem comportado e software educacional geralmente funcionavam); além disso, ele usava um formato numérico de ponto flutuante um pouco menos preciso. Por um tempo, ele foi empacotado com um pacote acadêmico especial do Amiga 500 , na esperança de que as escolas substituíssem seus antigos BBC Bs por Amiga 500s.

A editora Computer Concepts da BBC Micro produziu uma versão do BBC Basic para o Atari ST, chamada Fast ST BASIC , como um cartucho ROM.

Uma versão do BBC BASIC V (Z80) também foi feita para as famílias de calculadoras TI-83/84 + Texas Instruments por Benjamin Ryves.

Uma versão do Commodore 64 Shado foi produzida por uma pequena software house Aztec Software no início dos anos 1980.

Notas

Veja também

Referências

links externos