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

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

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

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

答案1

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

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

Brandy 是 BBC BASIC V 的解释器,这是 BASIC 的方言,Acorn Computers 为其一系列使用 ARM 处理器(例如阿基米德和 Risc PC)的台式计算机提供了这种方言,并且仍在这些及其兼容机上使用。

   BASIC V is a much extended version of BBC BASIC. 

这是 Acorn 在 20 世纪 80 年代生产的基于 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

就我个人的经验而言,我确实更喜欢它,bwbasic因为它允许在文本命令行或 shell 脚本中拥有 BASIC 的强大功能。

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

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

答案2

你写在一条评论冯的回答

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

其他人为可以安装在 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

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

$ sudo -i -u basic

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

当 sudo 提示时输入您的普通密码。如果需要,您可以编辑 sudoers 配置以避免密码提示,但请注意,编辑 sudoers 有点复杂,甚至更有风险;您可能会将自己锁定在根帐户之外,从而使修复配置变得非常困难。

使用 BASIC 解释器作为 init

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

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

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

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

答案3

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

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

  1. 如果你还有QBASIC.EXE踢球的副本,你可以使用DOS盒或者多塞姆在虚拟化 DOS 环境中运行它。 (两者都可以在 Debian 的存储库中找到,并且设置起来很简单。只需将要安装的文件夹设置为C:,放入QBASIC.EXE其中即可。)

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

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

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

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

  3. Linux 版本为QB64甚至不在 Ubuntu 存储库中,但它的具体目标是成为最兼容的保护模式 QuickBASIC 后代,甚至提供一个尝试克隆 QBasic/QuickBasic IDE 的 IDE。

答案4

只是抛出一个替代方案:有多个 Linux 模拟器可以跑步你的旧电脑。举个例子,对于 xkegs,如果你启动它,你应该有一个 applesoft basic 提示在等着你。与其他 Linux 东西进行通信是留给读者的练习(提示:从技术上讲,我相信您可以将模拟苹果中的输出重定向到模拟打印机,然后 xkegs 会将其公开为网络套接字,您可以使用例如数控进入其他一些管道应用程序等。不确定是否有办法走其他路,但期望可以完成类似的事情)。我希望 Commodore 64 模拟器也能有类似的方法来运行 Commodore 的 basic 等。

相关内容