Crie um iniciador de desktop que abra um terminal

Crie um iniciador de desktop que abra um terminal

Eu gostaria de executar o código BASIC, como você fazia em computadores mais antigos, no Linux. (Estou procurando um interpretador BASIC que possa executar funções do sistema operacional nativamente)

Que opções eu tenho? (De preferência para baseado em Debian e baseado em Arch)

Responder1

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

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

Brandy é um intérprete do BBC BASIC V, o dialeto do BASIC que a Acorn Computers forneceu com suas linhas de computadores desktop que usam o processador ARM, como o Archimedes e o Risc PC, e ainda está em uso nestes e em compatíveis.

   BASIC V is a much extended version of BBC BASIC. 

Este foi o BASIC usado no BBC Micro baseado em 6502 que a Acorn fez durante a década de 1980.

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

bwBASIC pode ser configurado para emular recursos, comandos e funções disponíveis em diferentes tipos de interpretadores BASIC;

O bwBASIC implementa um recurso não disponível nos interpretadores BASIC anteriores: um comando shell pode ser inserido interativamente no prompt do bwBASIC, e o interpretador irá executá-lo sob um shell de comando.
Por exemplo, o comando "dir *.bas" pode ser inserido no bwBASIC (no DOS, ou "ls -l *.bas" no UNIX) e será executado a partir da linha de comando do sistema operacional.

Os comandos shell também podem ser dados em linhas numeradas em um programa bwBASIC, de modo que o bwBASIC possa ser usado como uma linguagem de programação shell. A implementação do bwBASIC dos comandos e funções RMDIR, CHDIR, MKDIR, NAME, KILL, ENVIRON e ENVIRON$() oferece recursos adicionais de processamento de shell.

Para instalá-los:

sudo apt-get install brandy bwbasic

Quanto à minha experiência pessoal, prefiro bwbasicporque 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ê queira reviver.

Curiosamente, bwbasicem teoria poderia permitir automatizar operações em Unix, por exemplo, construir scripts usando a linguagem BASIC. Mas nunca tentei.

Responder2

Você escreveu emum comentárioparaA resposta de Foonque

O que quero dizer com "como computadores antigos" é que está lá

Outros forneceram diversas sugestões diferentes para interpretadores BASIC que você pode instalar em um sistema Linux, então não irei abordar esse assunto. PCs modernos geralmente não vêm com interpretadores BASIC integrados, então você fica preso ao inicializar algo que pode executar um interpretador BASIC instalado.

Em vez disso, entenderei o que foi dito acima como se você deseja algo que inicie um interpretador BASIC automaticamente, semelhante, mas não exatamente como os primeiros microcomputadores (como o Apple II, o Commodore C-64, o Zinclair ZX-81 e seus semelhantes). ) inicializado em um interpretador BASIC nativo.

Existem basicamente três maneiras de fazer isso que consigo pensar:

Crie um iniciador de desktop que abra um terminal

Este é o menos invasivo, pois funciona totalmente dentro do sistema e ambiente aos quais você está acostumado.

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

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

Isso é um pouco mais complicado do que um simples iniciador de desktop, mas oferece melhor isolamento para que você não corra o risco de bagunçar seus próprios arquivos. Primeiro, instale um interpretador BASIC; Vou usar bwbasiccomo exemplo, mas vale tudo, desde que rode nativamente em um terminal. Em seguida, adicione um usuário e defina seu shell como o intérprete bwbasic. Isso pode ser feito através da GUI, mas depende de qual ambiente de área de trabalho você está usando; a abordagem portátil é fazê-lo 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

Então, você poderá entrar em um ambiente BASIC limpo através do sudo:

$ sudo -i -u basic

Você pode criar um launcher (como acima) que execute este comando em um terminal, se desejar.

Forneça sua senha normal quando solicitado pelo sudo. Você pode editar a configuração do sudoers para evitar a solicitação de senha, se desejar, mas esteja ciente de que editar os sudoers é um tanto complicado e, mais ainda, arriscado; você pode bloquear o acesso à conta root, dificultando bastante o reparo da configuração.

Use um interpretador BASIC como init

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

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 em /proc/cmdline) chamado init, que especifica qual programa executar quando a inicialização do kernel for concluída. Você pode configurar o carregador de boot (provavelmente GRUB) para permitir inicializar uma entrada do kernel que diz que initdeveria ser /usr/bin/bwbasic(ou qualquer outro interpretador BASIC que você instalou).

Para que isso funcione, o interpretador BASIC, bem como todos os arquivos necessários, 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 terão sido montados. (Acredito que outra tarefa do init é remontar o sistema de arquivos raiz no modo leitura-gravação, portanto, pela abordagem trivial, você não será capaz de salvar nada. Você pode, no entanto, dependendo dos detalhes exatos da implementação, ser capaz de faça com que o sistema execute algo como mount -o remount,rw /remontar a leitura e gravação do sistema de arquivos raiz.) Seu intérprete BASIC escolhido também não deve depender de mais nada pelo qual o init seja responsável e você não terá acesso a nenhum recurso tratado pelo init ou por qualquer processo gerado pelo init (por exemplo, rede ou suporte multiusuário).

Uma linha de comando do kernel ro quiet init=/usr/bin/bwbasicprovavelmente o deixará bem próximo de como era antigamente.

Responder3

Como todos parecem estar assumindo que você quer dizer "PC pré-IBM" por "computadores mais antigos", vou seguir o outro caminho e oferecer uma resposta que interpreta "computadores mais antigos" como "compatíveis com IBM antes do Windows 9x".

Se você se referia a computadores que executam versões do MS-DOS incluídas QBASIC.EXE, você tem três opções, dependendo de quão estritamente você define a execução deles "no Linux":

  1. Se você ainda tem uma cópia do QBASIC.EXEKicking Around, você pode usarDOSBoxouDOSEMUpara executá-lo em um ambiente DOS virtualizado. (Ambos estão disponíveis nos repositórios do Debian e são simples de configurar. Basta definir uma pasta para ser montada como C:, entrar QBASIC.EXEnela e pronto.)

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

    Devo esclarecer, entretanto, que há uma compensação entre os dois. O DOSEMU será executado em qualquer terminal que você desejar, mas não suportará os truques sofisticados de baixo nível que algumas coisas do QBasic usam (por exemplo, para modos gráficos especializados). OapenasUma maneira de suportar isso é um emulador completo como o DOSBox... mas o DOSBox abrirá sua própria janela em vez de usar seu terminal.

  2. FreeBASICpossui um qbdialeto/modo que visa perfeita compatibilidade com umgrande subconjuntodo QuickBASIC. (O material não suportado é principalmente de baixo nível relacionado ao fato de que o QuickBASIC era um sistema de modo real de 16 bits, enquanto o FreeBASIC é um sistema de modo protegido de 32 bits.)

    O FreeBASIC oferece binários Linux, mas você só os encontrará em seu repositório de pacotes se realmente quis dizer "distros da família Debian" em vez de "Debian" e estiver executando o Ubuntu ou um derivado do Ubuntu como o Mint.

  3. As compilações do Linux deQB64nem está nos repositórios do Ubuntu, mas visa especificamente ser o descendente QuickBASIC de modo protegido mais compatível e ainda fornece um IDE que tenta clonar o IDE QBasic/QuickBasic.

Responder4

Só para lançar uma alternativa: existem vários emuladores para Linux que podemcorrerseus computadores antigos. Por exemplo, com o xkegs, se você inicializá-lo, deverá ter um prompt básico do applesoft esperando por você. A comunicação com outras coisas do Linux é um exercício deixado para o leitor (dica: tecnicamente, acredito que você pode redirecionar a saída da sua maçã emulada para a impressora emulada, que o xkegs irá então expor como um soquete de rede que você pode usar, por exemplonãopara alimentar alguns outros aplicativos canalizados, etc. Não tenho certeza se há uma maneira de seguir o outro caminho, mas espero que algo semelhante possa ser feito). Eu esperaria que os emuladores do Commodore 64 também tivessem uma maneira de executar o básico do Commodore, etc.

informação relacionada