Como posso executar o código BASIC em um terminal?

18

Eu gostaria de executar o código BASIC, como você costumava fazer em computadores mais antigos, no Linux. (Eu estou procurando por um BASIC Interrupter que pode executar as funções do sistema operacional nativamente)

Quais opções eu tenho? (Preferencialmente para baseado em Debian e Arch)

    
por DiamondCoderMan 16.04.2017 / 16:02

7 respostas

23

Se você deseja rodar nativamente no Linux BASIC, você tem vários pacotes no Debian para escolher:

  • compatível com brandy BBC Micro BASIC - funciona em uma interface gráfica X11, aparentemente suporta som e gráficos;

Brandy is an interpreter for BBC BASIC V, the dialect of BASIC that Acorn Computers supplied with their ranges of desktop computers that use the ARM processor such as the Archimedes and Risc PC, and is still in use on these and compatibles.

   BASIC V is a much extended version of BBC BASIC. 

This was the BASIC used on the 6502-based BBC Micro that Acorn made during the 1980s.

  • O modo de texto bwbasic - byWater BASIC -, afirma ser compatível com ANSI, tem extensões reconhecidas e tem a capacidade de emular / ter boa compatibilidade com vários tipos de dialetos BASIC "antigos" - incluindo IBM BASICA, Microsoft BASIC e gwBASIC.

bwBASIC can be configured to emulate features, commands, and functions available on different types of BASIC interpreters;

bwBASIC implements one feature not available in previous BASIC interpreters: a shell command can be entered interactively at the bwBASIC prompt, and the interpreter will execute it under a command shell.
For instance, the command "dir *.bas" can be entered in bwBASIC (under DOS, or "ls -l *.bas" under UNIX) and it will be executed as from the operating system command line.

Shell commands can also be given on numbered lines in a bwBASIC program, so that bwBASIC can be used as a shell programming language. bwBASIC's implementation of the RMDIR, CHDIR, MKDIR, NAME, KILL, ENVIRON, and ENVIRON$() commands and functions offer further shell-processing capabilities.

Para instalá-los:

sudo apt-get install brandy bwbasic

Quanto à minha experiência pessoal, eu prefiro bwbasic , pois permite ter o poder do BASIC em uma linha de comando de texto ou script de shell.

Como alternativa, você também tem vários pacotes de emulação de computadores antigos, que obviamente além da sintaxe BASIC implementam todo o ambiente de algum computador antigo que você pode querer reviver.

Curiosamente, bwbasic em teoria poderia permitir operações automatizadas no Unix, por exemplo construindo scripts usando a linguagem BASIC. Nunca tentei embora.

    
por 16.04.2017 / 16:13
9

Meus sistemas Debian, e provavelmente a maioria das outras distribuições Linux, têm várias opções disponíveis diretamente através do gerenciador de pacotes. Entre eles:

  • bwbasic :

The Bywater BASIC Interpreter (bwBASIC) implements a large superset of the ANSI Standard for Minimal BASIC (X3.60-1978) and a significant subset of the ANSI Standard for Full BASIC (X3.113-1987) in C. It also offers shell programming facilities as an extension of BASIC. bwBASIC seeks to be as portable as possible.

  • sdlbasic :

sdlBasic is a small, efficient and multiplatform BASIC interpreter for creating games using the power of SDL library. It was inspired by the old and glorious AMOS.

Homepage (Guia de referência)

Wikipedia

    
por 16.04.2017 / 16:12
8

Já que todo mundo parece estar assumindo que você quer dizer "PC pré-IBM" por "computadores mais antigos", vou seguir a outra rota e oferecer uma resposta que interprete "computadores mais antigos" como "compatíveis IBM antes do Windows" 9x ".

Se, você quis dizer que os computadores executando versões do MS-DOS que incluíam QBASIC.EXE , você tem três opções, dependendo de como você define rigorosamente executá-las "no Linux":

  1. Se você ainda tiver uma cópia do QBASIC.EXE , poderá usar o DOSBox ou DOSEMU para executá-lo em um ambiente DOS virtualizado. (Ambos estão disponíveis nos repositórios do Debian e são simples de configurar. Basta configurar uma pasta para ser montada como C: , soltar QBASIC.EXE nela e você está pronto para usar.)

    Isso lhe dará compatibilidade perfeita com o código-fonte antigo, mas nenhuma integração com o SO host além de " C: é na verdade uma pasta, em vez de uma imagem de disco".

    Eu devo esclarecer, no entanto, que existe um trade-off entre os dois. O DOSEMU rodará em qualquer terminal que você quiser, mas não suportará os truques de baixo nível que algumas coisas do QBasic usam (por exemplo, para modos gráficos especializados). A maneira somente de suportar isso é um emulador completo como o DOSBox ... mas o DOSBox abrirá sua própria janela em vez de usar seu terminal.

  2. FreeBASIC tem um dialect / mode qb que visa a compatibilidade perfeita com um grande subconjunto do QuickBASIC. (O material não suportado é principalmente de baixo nível relacionado ao fato de o QuickBASIC ser um sistema de modo real de 16 bits, enquanto o FreeBASIC é um sistema de modo protegido de 32 bits.)

    O FreeBASIC oferece binários do Linux, mas você só vai encontrá-lo no seu repositório de pacotes se você realmente quis dizer "distros da família Debian" ao invés de "Debian" e estiver rodando o Ubuntu ou um derivado do Ubuntu como o Mint.

  3. As compilações do Linux do QB64 não estão nem mesmo nos repositórios do Ubuntu, mas ele visa especificamente ser o mais compatível descendente QuickBASIC em modo protegido e até fornece um IDE que tenta clonar o IDE QBasic / QuickBasic.

por 16.04.2017 / 20:18
8

Você escreveu em um comentário para resposta da Foon que

What I mean by "like old computers" is that its just there

Outros forneceram várias sugestões diferentes para intérpretes do BASIC que você poderia instalar em um sistema Linux, portanto, não irei lá. PCs modernos geralmente não vêm com intérpretes BASIC embutidos, então você está preso inicializando algo que pode executar um interpretador BASIC instalado.

Em vez disso, vou pegar o acima para significar que você quer algo que inicie um interpretador BASIC automaticamente, semelhante, mas não exatamente como os primeiros microcomputadores (como o Apple II, Commodore C-64, Zinclair ZX-81, e seu tipo) inicializado em um intérprete BASIC nativo.

Existem basicamente três maneiras de fazer isso:

Crie um lançador de área de trabalho que abra um terminal

Este é o menos invasivo, porque funciona totalmente dentro do sistema e ambiente ao qual você está acostumado.

Basicamente, por qualquer meio que seu ambiente de desktop forneça, você cria um iniciador de programa e o configura para iniciar o interpretador BASIC de sua escolha em um terminal. Para efeito extra, você pode definir fontes específicas, cores, etc., para simular um ambiente de dias passados. Exatamente como você faria isso depende do ambiente de área de trabalho que você está usando, o que você não especificou, mas clicar com o botão direito do mouse sobre onde você está clicando para iniciar aplicativos e procurar uma opção para criar um novo lançador será um bom começo .

Crie uma conta de usuário separada com um interpretador BASIC como o shell

Isso é um pouco mais complicado do que um simples lançador de área de trabalho, mas os provedores têm melhor isolamento para que você não se arrisque a atrapalhar seus próprios arquivos. Primeiro, instale um interpretador BASIC; Usarei bwbasic para o exemplo, mas vale tudo, na verdade, desde que seja executado nativamente em um terminal. Em seguida, adicione um usuário e configure seu shell para ser o interpretador bwbasic. Isso pode ser feito através da GUI, mas isso depende do ambiente de área de trabalho que você está usando; a abordagem portátil é fazer isso em um terminal usando useradd . Isso será algo semelhante a

$ sudo -i
# grep -q "$(type -pP bwbasic)" /etc/shells || echo "$(type -pP bwbasic)" >>/etc/shells
# useradd --home /home/basic --create-home --shell "$(type -pP bwbasic)" basic

Em seguida, você poderá inserir um ambiente BASIC limpo por meio do sudo:

$ sudo -i -u basic

Você pode criar um lançador (como acima) que execute este comando em um terminal, se você quiser.

Dê sua senha normal quando solicitado pelo sudo. Você pode editar a configuração de sudoers para evitar o prompt de senha, se desejar, mas esteja ciente de que a edição de sudoers é um pouco complicada e, mais ainda, arriscada; você poderia se proteger da conta root, dificultando bastante o reparo da configuração.

Use um interpretador BASIC como init

Esta é a abordagem mais invasiva, mas também o aproxima de como os primeiros microcomputadores funcionavam, inicializando diretamente em um interpretador BASIC. Eu não recomendo isso, e consideraria improvável que ele funcione sem um trabalho significativo, mas estou incluindo-o para ser completo.

O kernel Linux aceita um parâmetro de linha de comando (sim, o kernel Linux tem parâmetros de linha de comando; você pode ver a linha de comando atualmente inicializada lendo / proc / cmdline) chamada init , que especifica qual programa executar uma vez a inicialização do kernel está completa. Você pode configurar o carregador de boot (provavelmente o GRUB) para permitir que você inicialize uma entrada do kernel que diz que init deve ser /usr/bin/bwbasic (ou qualquer outro interpretador BASIC instalado).

Para que isso funcione, o interpretador BASIC, bem como todos os arquivos requeridos, devem estar localizados no sistema de arquivos raiz ( / ). Isso ocorre porque uma das tarefas do init é montar todos os sistemas de arquivos e, como você está fornecendo um programa não-init como init, os sistemas de arquivos não-raiz não serão montados. (Acredito que outra das tarefas do init é remontar o sistema de arquivos raiz no modo de leitura / gravação, portanto, com a abordagem trivial, você não poderá salvar nada. No entanto, você pode depender dos detalhes exatos da implementação. faça com que o sistema execute algo como mount -o remount,rw / para remontar o sistema de arquivos raiz de leitura / gravação.) O interpretador BASIC escolhido também não deve depender de mais nada pelo qual o init é responsável e você não terá acesso a nenhum recurso manipulado pelo init ou por qualquer processo gerado pelo init (por exemplo, suporte a rede ou multiusuário).

Uma linha de comando do kernel de algo como ro quiet init=/usr/bin/bwbasic provavelmente te deixará muito parecido com o que era nos velhos tempos.

    
por 17.04.2017 / 15:18
4

Apenas para lançar uma alternativa: existem vários emuladores para Linux que podem executar seus computadores antigos. Por exemplo, com xkegs, se você inicializar, você deve ter um prompt básico do applesoft esperando por você. Comunicar com outras coisas do Linux é um exercício deixado para o leitor (dica: tecnicamente, acredito que você pode redirecionar a saída em sua maçã emulada para a impressora emulada, que os xkegs então exporão como um soquete de rede que você possa usar, por exemplo. para alimentar outros aplicativos canalizados, etc. Não tenho certeza se há uma maneira de ir para o outro lado, mas espera que algo semelhante possa ser feito. Eu esperaria que os emuladores commodore 64 teriam similarmente uma maneira de executar o básico do commodore, etc.

    
por 16.04.2017 / 18:32
1

Existem muitas alternativas. Minha sugestão é semelhante à resposta de ssokolow. Se você quer um BASIC "moderno", mas com uma sintaxe parecida com os antigos interpretadores BASIC, então você deve dar uma chance ao BaCon . É um transpilador BASIC que gera código nativo. O projeto tem um manual muito bom, muitas bibliotecas e exemplos, e até mesmo um IDE escrito em BaCon.

    
por 18.04.2017 / 03:02
-2

Você pode executar um C64 no seu navegador e usar o BASIC dessa maneira.

link

Esteja ciente de que o layout do teclado é diferente, ou seja, Shift-2 para aspas.

link

Applesoft BASIC, se você preferir, link

Existem emuladores de outras máquinas online,
mas muitos deles vão direto para qualquer programa que você carrega,
sem emular a entrada de teclado inicial necessária para chegar lá.

    
por 16.04.2017 / 21:30