Eu gostaria de executar o código BASIC, como você costumava fazer em computadores mais antigos, no Linux. (Estou procurando um Interruptor BASIC que possa executar funções do SO nativamente)
Que opções eu tenho? (Preferencialmente para Debian e Arch)
linux
command-line
programming
DiamondCoderMan
fonte
fonte
Respostas:
Se você deseja executar nativamente no Linux BASIC, você tem vários pacotes no Debian para escolher:
Para instalá-los:
Quanto à minha experiência pessoal, 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 a automação de operações no Unix, por exemplo, a criação de scripts usando a linguagem BASIC. Nunca tentei embora.fonte
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
:sdlbasic
:Página inicial (Guia de referência)
Wikipedia
fonte
Como 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 com a IBM antes do Windows 9x".
Se você quis dizer computadores com versões do MS-DOS incluídas
QBASIC.EXE
, você tem três opções, dependendo de quão estritamente você as define "no Linux":Se você ainda tem uma cópia do
QBASIC.EXE
chute, use o DOSBox ou o 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 definir uma pasta para ser montada comoC:
, solteQBASIC.EXE
nela, e você estará pronto .)Isso fornecerá perfeita compatibilidade com o código-fonte antigo, mas nenhuma integração com o sistema operacional host além de "
C:
é realmente uma pasta, e não uma imagem de disco".Devo esclarecer, no entanto, que há uma troca 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 QBasic usadas (por exemplo, para modos gráficos especializados). A única maneira de suportar isso é um emulador completo como o DOSBox ... mas o DOSBox abrirá sua própria janela em vez de usar o seu terminal.
O FreeBASIC possui um
qb
dialeto / modo que visa a perfeita compatibilidade 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 em modo real de 16 bits, enquanto o FreeBASIC é um sistema em modo protegido de 32 bits.)O FreeBASIC oferece binários Linux, mas você o encontrará apenas no repositório de pacotes se você 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.
As versões do QB64 para Linux nem estão nos repositórios do Ubuntu, mas visa especificamente ser o descendente QuickBASIC em modo protegido mais compatível e ainda fornece um IDE que tenta clonar o IDE QBasic / QuickBasic.
fonte
Você escreveu em um comentário à resposta de Foon que
Outros forneceram várias sugestões diferentes para intérpretes do BASIC que você pode instalar em um sistema Linux, por isso não vou lá. Os PCs modernos geralmente não vêm com intérpretes BASIC embutidos, portanto, você está travando a inicialização de algo que pode executar um intérprete BASIC instalado.
Em vez disso, entendo o que foi dito acima, para que você queira algo que inicie um intérprete BASIC automaticamente, semelhante, mas não muito parecido com o quanto os microcomputadores iniciais (como Apple II, Commodore C-64, Zinclair ZX-81 e outros). ) inicializado em um intérprete BASIC nativo.
Existem basicamente três maneiras de fazer isso em que consigo pensar:
Crie um iniciador de área de trabalho que abra um terminal
Isso é o menos invasivo, porque funciona totalmente no sistema e no ambiente em que você está acostumado.
Basicamente, por qualquer meio que o ambiente da área de trabalho fornecer, você cria um iniciador de programas e o configura para iniciar o intérprete BASIC de sua escolha em um terminal. Para um efeito extra, você pode definir fontes, cores etc. específicas para simular um ambiente de dias 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 do mouse no local em que você está atualmente 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 intérprete BASIC como o shell
Isso é um pouco mais envolvente do que um simples iniciador de área de trabalho, mas fornece melhor isolamento para que você não corra o risco de estragar seus próprios arquivos. Primeiro, instale um intérprete BASIC; Vou usar
bwbasic
como exemplo, mas vale tudo, na verdade, desde que seja executado 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 isso depende de qual ambiente de área de trabalho você estiver usando; a abordagem portátil é fazê-lo em um terminal usandouseradd
. Isso será algo semelhante aEm seguida, você poderá entrar em um ambiente BASIC limpo através do sudo:
Você pode criar um iniciador (como acima) que execute esse comando em um terminal, se desejar.
Dê sua senha normal quando solicitado pelo sudo. Você pode editar a configuração dos sudoers para evitar o prompt da senha, se desejar, mas lembre-se de que a edição de sudoers é um pouco complicada e, mais ainda, arriscada; você pode bloquear-se da conta root, dificultando o reparo da configuração.
Use um intérprete BASIC como init
Essa é a abordagem mais invasiva, mas também o aproxima da forma como os primeiros microcomputadores funcionavam, inicializando diretamente em um intérprete BASIC. Eu não recomendo isso e consideraria improvável que funcione sem um trabalho significativo, mas estou incluindo-o por completo.
O kernel do Linux aceita um parâmetro de linha de comando (sim, o kernel do Linux possui parâmetros de linha de comando; você pode ver a linha de comando atualmente inicializada lendo / proc / cmdline) nomeada
init
, que especifica qual programa executar quando a inicialização do kernel estiver concluída. Você pode configurar o carregador de inicialização (provavelmente o GRUB) para permitir a inicialização de uma entrada do kernel que diz queinit
deve ser/usr/bin/bwbasic
(ou qualquer outro interpretador BASIC que você instalou).Para que isso funcione, o intérprete BASIC, bem como todos os arquivos que ele requer, deve estar localizado 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 foram montados. (Acredito que outra tarefa do init é remontar o sistema de arquivos raiz no modo de leitura e gravação, portanto, pela abordagem trivial, você não poderá salvar nada. No entanto, dependendo dos detalhes exatos da implementação, você poderá tem o sistema executar algo comomount -o remount,rw /
remontar a leitura / gravação do sistema de arquivos raiz.) O 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 a qualquer processo gerado pelo init (por exemplo, , rede ou suporte multiusuário).Uma linha de comando do kernel de algo como
ro quiet init=/usr/bin/bwbasic
provavelmente o levará muito perto de como era antigamente.fonte
sudo echo
não faz o que você quer dizer e é provável que você encontre um de-bash: /etc/shells: Permission denied
qualquer maneira, já que o>>
redirecionamento é configurado pelo bash antes que o restante do comando seja avaliado. Provavelmente é melhor usá-lotype -P bwbasic | sudo tee -a /etc/shells
. Veja " permissões - Como inserir texto em um arquivo de propriedade de raiz usando o sudo? - Unix e Linux Stack Exchangeinit
seria configurar o sistema init para usar embwbasic
vez deagetty
e não iniciar um gerenciador de exibição X11. (Para outras pessoas que não sabem do que estou falando, o kernel fornece vários "consoles virtuais" acessíveis via Ctrl + Alt + F1 através de Ctrl + Alt + F12 e o sistema init, por padrão, iniciaagetty
de 1 a 6 e um X11 Display Manager (que fornece uma caixa de diálogo de login) no dia 7. Antes do Upstart e systemd, isso era controlado via/etc/inittab
.)getty
e seus descendentes tratavam dos prompts de login do console.Só para jogar fora uma alternativa: existem vários emuladores para Linux que podem executar seus computadores antigos. Por exemplo, com 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 em sua maçã emulada para a impressora emulada, que os xkegs exporão como um soquete de rede que você pode usar, por exemplo, nc para alimentar algumas outras aplicações canalizadas etc. Não tenho certeza se existe um caminho a seguir, mas esperamos que algo semelhante possa ser feito). Eu esperaria que os emuladores do comodoro 64 também tivessem uma maneira de executar o básico, etc.
fonte
kegs
não parece ser um deles (semapt-cache search
resultado). E para alguns / a maioria dos emuladores, você provavelmente precisará obter uma ROM original de algum lugar.init=/usr/bin/sdlbasic
com o kernel do Linux, que, se funcionar , o aproximará muito mais, mas pode ou não funcionar.Existem muitas alternativas. Minha sugestão é semelhante à resposta de ssokolow. Se você deseja um BASIC "moderno", mas com uma sintaxe semelhante aos antigos intérpretes do BASIC, tente a BaCon . É um transpilador BASIC que gera código nativo. O projeto tem um manual muito bom, muitas bibliotecas e exemplos e até um IDE escrito em BaCon.
fonte
Você pode executar um C64 no seu navegador e usar o BASIC dessa maneira.
http://codeazur.com.br/stuff/fc64_final/
Esteja ciente de que o layout do teclado é diferente, ou seja, Shift-2entre aspas.
http://jilltxt.net/wp-content/uploads/C64-keyboard-layout.png
Applesoft BASIC se você preferir- http://calormen.com/jsbasic/
Existem emuladores de outras máquinas online,
mas muitos deles vão diretamente para o programa que você carrega,
sem emular a entrada inicial do teclado necessária para chegar lá.
fonte