如何在终端中运行 BASIC 代码?

Dia*_*Man 26 linux command-line programming

我想在 Linux 中运行 BASIC 代码,就像您以前在旧计算机上所做的那样。(我正在寻找可以本地运行操作系统功能的 BASIC 中断器)

我有哪些选择?(最好是基于 Debian 和基于 Arch 的)

Rui*_*iro 26

如果您想在 Linux BASIC 中本地运行,您在 Debian 中有几个软件包可供选择:

  • 白兰地 - 兼容 BBC Micro BASIC - 在 X11 图形界面中工作,显然支持声音和图形;

Brandy 是 BBC BASIC V 的译员,这是 Acorn Computers 随其使用 ARM 处理器的台式计算机系列(如 Archimedes 和 Risc PC)提供的 BASIC 方言,并且仍在这些和兼容机上使用。

   BASIC V is a much extended version of BBC BASIC. 
Run Code Online (Sandbox Code Playgroud)

这是 Acorn 在 1980 年代制造的基于 6502 的 BBC Micro 上使用的 BASIC。

  • bwbasic - byWater BASIC - 文本模式,声称与 ANSI 兼容,具有 shell 感知扩展,并声称能够模拟/与多种类型的“旧”BASIC 方言(包括 IBM BASICA、Microsoft BASIC 和 gwBASIC)具有良好的兼容性。

bwBASIC 可以配置为模拟不同类型的 BASIC 解释器上可用的特性、命令和功能;

bwBASIC 实现了以前 BASIC 解释器不具备的一项功能:可以在 bwBASIC 提示符下交互式输入 shell 命令,解释器将在命令 shell 下执行它。
例如,可以在 bwBASIC 中输入命令“dir *.bas”(在 DOS 下,或在 UNIX 下为“ls -l *.bas”),它将像从操作系统命令行一样执行。

shell 命令也可以在 bwBASIC 程序中的编号行上给出,以便 bwBASIC 可以用作 shell 编程语言。bwBASIC 对 RMDIR、CHDIR、MKDIR、NAME、KILL、ENVIRON 和 ENVIRON$() 命令和函数的实现提供了进一步的 shell 处理能力。

要安装它们:

sudo apt-get install brandy bwbasic
Run Code Online (Sandbox Code Playgroud)

至于我的个人经验,我更喜欢bwbasic它,因为它允许在文本命令行或 shell 脚本中使用 BASIC 的强大功能。

作为替代方案,您还有几个旧计算机的仿真包,这显然除了 BASIC 语法之外,还实现了您可能想要重温的某些旧计算机的所有环境。

有趣的是,bwbasic理论上可以允许在 Unix 中自动化操作,例如使用 BASIC 语言构建脚本。虽然从未尝试过。


use*_*ser 9

你在写评论,以欢的回答是

我所说的“像旧电脑”是指它就在那里

其他人为您可以在 Linux 系统上安装的 BASIC 解释器提供了几种不同的建议,所以我不会去那里。现代 PC 通常不带有内置的 BASIC 解释器,因此您无法启动可以运行已安装的 BASIC 解释器的东西。

相反,我认为上面的意思是你想要一些自动启动 BASIC 解释器的东西,类似于但不太像早期的微型计算机(例如 Apple II、Commodore C-64、Zinclair ZX-81 和他们的同类) 启动到本机 BASIC 解释器。

我能想到的基本上有三种方法可以做到这一点:

创建一个打开终端的桌面启动器

这是侵入性最小的,因为它完全适用于您习惯的系统和环境。

基本上,通过您的桌面环境提供的任何方式,您可以创建一个程序启动器并将其设置为在终端中启动您选择的 BASIC 解释器。为了获得额外的效果,您可以设置特定的字体、颜色等,以模拟过去的环境。具体如何执行此操作取决于您使用的桌面环境(您尚未指定),但右键单击您当前单击的位置以启动应用程序并寻找创建新启动器的选项将是一个好的开始.

使用 BASIC 解释器作为 shell 创建一个单独的用户帐户

这比简单的桌面启动器要复杂一些,但提供程序更好地隔离,因此您不会冒弄乱自己的文件的风险。首先,安装一个BASIC解释器;我将bwbasic用于示例,但实际上,只要它在终端中本机运行,一切都会发生。然后添加一个用户并将其 shell 设置为 bwbasic 解释器。这可以通过 GUI 完成,但这取决于您使用的桌面环境;便携式方法是在终端中使用useradd. 这将类似于

$ 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
Run Code Online (Sandbox Code Playgroud)

然后,您应该可以通过 sudo 进入一个干净的 BASIC 环境:

$ sudo -i -u basic
Run Code Online (Sandbox Code Playgroud)

如果需要,您可以创建一个在终端中执行此命令的启动器(如上所述)。

在 sudo 提示时提供您的普通密码。如果需要,您可以编辑 sudoers 配置以避免密码提示,但请注意,编辑 sudoers 有点复杂,甚至更危险;您可以将自己锁定在 root 帐户之外,从而很难修复配置。

使用 BASIC 解释器作为 init

这是最具侵入性的方法,但也通过直接启动到 BASIC 解释器,让您最接近早期微型计算机的工作方式。我不推荐这样做,并且认为它在没有大量工作的情况下不太可能工作,但为了完整性,我将其包括在内。

Linux 内核接受一个名为 的命令行参数(是的,Linux 内核有命令行参数;您可以通过读取 /proc/cmdline 来查看当前启动的命令行)init,它指定内核初始化完成后要执行的程序。您可以配置引导加载程序(最有可能是 GRUB)以允许您引导一个内核条目,该条目init应该是/usr/bin/bwbasic(或您安装的任何其他 BASIC 解释器)。

为此,BASIC 解释器及其所需的所有文件必须位于根 ( /) 文件系统中。这是因为 init 的任务之一是挂载所有文件系统,并且因为您提供了一个非 init 程序作为 init,非 root 文件系统将不会被挂载。(我相信 init 的另一个任务是以读写模式重新挂载根文件系统,因此通过简单的方法您将无法保存任何内容。但是,根据确切的实现细节,您可能能够让系统执行类似mount -o remount,rw / 以读写方式重新挂载根文件系统。)您选择的 BASIC 解释器也不能依赖于 init 负责的任何其他事情,并且您将无法访问由 init 处理的任何设施或由 init 产生的任何进程(例如、网络或多用户支持)。

类似的内核命令行ro quiet init=/usr/bin/bwbasic可能会让你非常接近它在过去的样子。


Ale*_*ies 8

我的 Debian 系统,可能还有大多数其他 Linux 发行版,都可以通过包管理器直接获得多种选择。他们之中:

  • bwbasic:

Bywater BASIC Interpreter (bwBASIC) 在 C 语言中实现了 ANSI 最小 BASIC 标准 (X3.60-1978) 的大型超集和完整 BASIC ANSI 标准 (X3.113-1987) 的重要子集。它还提供了 shell编程工具作为 BASIC 的扩展。bwBASIC 力求尽可能便携。

  • sdlbasic:

sdlBasic 是一个小型、高效和多平台的 BASIC 解释器,用于使用 SDL 库的强大功能创建游戏。它的灵感来自古老而辉煌的 AMOS。

主页(参考指南)

维基百科


sso*_*low 8

由于每个人似乎都假设“旧计算机”是指“IBM 之前的 PC”,因此我将走另一条路并提供一个答案,将“旧计算机”解释为“Windows 9x 之前的 IBM 兼容机”。

如果您的意思是运行包含 的 MS-DOS 版本的计算机QBASIC.EXE,则您有三个选项,具体取决于您定义“在 Linux”上运行它们的严格程度:

  1. 如果你还有一个副本QBASIC.EXE,你可以使用DOSBox或DOSEMU在虚拟化的 DOS 环境中运行它。(两者都在 Debian 的存储库中可用并且设置起来很简单。只需设置一个要挂载为 的文件夹C:,QBASIC.EXE放入其中,就可以了。)

    这将使您与旧源代码完美兼容,但除了“C:实际上是一个文件夹,而不是磁盘映像”之外,没有与主机操作系统的集成。

    但是,我应该澄清一下,两者之间存在权衡。DOSEMU 将在您想要的任何终端上运行,但不支持某些 QBasic 使用的花哨的低级技巧(例如,用于专门的图形模式)。支持它的唯一方法是像 DOSBox 这样的完整模拟器……但是 DOSBox 会弹出它自己的窗口,而不是使用您的终端。

  2. FreeBASIC有一种qb方言/模式,旨在与QuickBASIC的大部分子集完美兼容。(不受支持的内容主要是与 QuickBASIC 是 16 位实模式系统而 FreeBASIC 是 32 位保护模式系统这一事实相关的低级内容。)

    FreeBASIC 提供 Linux 二进制文件,但如果您实际上是指“Debian 系列发行版”而不是“Debian”并且正在运行 Ubuntu 或像 Mint 这样的 Ubuntu 衍生产品,那么您只能在您的软件包存储库中找到它。

  3. QB64的 Linux 版本甚至不在 Ubuntu 存储库中,但它专门旨在成为最兼容的保护模式 QuickBASIC 后代,甚至提供了一个试图克隆 QBasic/QuickBasic IDE 的 IDE。