建立一個開啟終端機的桌面啟動器

建立一個開啟終端機的桌面啟動器

我想在 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 /重新掛載根檔案系統讀寫的操作。網路或多用戶支援)。

類似的核心命令列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 或Ubuntu 衍生品(如Mint),您只能在軟體包存儲庫中找到它。

  3. Linux 版本為QB64甚至不在 Ubuntu 儲存庫中,但它的具體目標是成為最相容的保護模式 QuickBASIC 後代,甚至提供一個嘗試複製 QBasic/QuickBasic IDE 的 IDE。

答案4

只是拋出一個替代方案:有多個 Linux 模擬器可以跑步你的舊電腦。舉個例子,對於 xkegs,如果你啟動它,你應該有一個 applesoft basic 提示符在等著你。與其他Linux 東西進行通訊是留給讀者的練習(提示:從技術上講,我相信您可以將模擬蘋果中的輸出重定向到模擬印表機,然後xkegs 會將其公開為網路套接字,您可以使用例如數控進入其他一些管道應用程式等。我希望 Commodore 64 模擬器也能有類似的方法來運行 Commodore 的 basic 等。

相關內容