ターミナルを開くデスクトップランチャーを作成する

ターミナルを開くデスクトップランチャーを作成する

古いコンピュータで行っていたような BASIC コードを Linux で実行したいと考えています。(OS 機能をネイティブに実行できる BASIC インタープリターを探しています)

どのようなオプションがありますか? (Debian ベースと Arch ベースが望ましい)

答え1

Linux BASIC でネイティブに実行したい場合は、Debian で選択できるパッケージがいくつかあります。

  • brandy - BBC Micro BASIC と互換性あり - X11 グラフィカル インターフェイスで動作し、サウンドとグラフィックスをサポートしているようです。

Brandy は BBC BASIC V のインタープリタです。BBC BASIC V は、Archimedes や Risc PC などの ARM プロセッサを使用するデスクトップ コンピュータに Acorn Computers が提供した BASIC の方言であり、現在でもこれらのコンピュータや互換コンピュータで使用されています。

   BASIC V is a much extended version of BBC BASIC. 

これは、Acorn が 1980 年代に製造した 6502 ベースの BBC Micro で使用されていた BASIC でした。

  • bwbasic - byWater BASIC - テキスト モード、ANSI 互換であると主張し、シェル対応の拡張機能を備え、IBM BASICA、Microsoft BASIC、gwBASIC などのいくつかの種類の「古い」BASIC 方言をエミュレートでき、優れた互換性があると主張しています。

bwBASIC は、さまざまな種類の BASIC インタープリターで利用可能な機能、コマンド、および関数をエミュレートするように構成できます。

bwBASIC は、以前の BASIC インタープリタでは利用できなかった 1 つの機能を実装しています。つまり、シェル コマンドを bwBASIC プロンプトで対話的に入力でき、インタープリタはそれをコマンド シェルで実行します。
たとえば、コマンド "dir *.bas" を bwBASIC (DOS の場合、または "ls -l *.bas") に入力すると、オペレーティング システムのコマンド ラインからのように実行されます。

シェル コマンドは bwBASIC プログラム内の番号付き行に指定することもできるため、bwBASIC をシェル プログラミング言語として使用できます。bwBASIC の RMDIR、CHDIR、MKDIR、NAME、KILL、ENVIRON、および ENVIRON$() コマンドと関数の実装により、さらにシェル処理機能が提供されます。

インストールするには:

sudo apt-get install brandy bwbasic

私の個人的な経験としては、bwbasicテキスト コマンド ラインまたはシェル スクリプトで BASIC のパワーを利用できるので、気に入っています。

代替案として、古いコンピューターのエミュレーション パッケージもいくつかあります。これらは、BASIC 構文の他に、再現したい古いコンピューターのすべての環境を実装しています。

興味深いことに、bwbasic理論的には、BASIC 言語を使用してスクリプトを作成するなど、Unix での操作を自動化できる可能性があります。ただし、試したことはありません。

答え2

あなたが書いたコメントフーンの答えそれ

「古いコンピューターのように」というのは、ただそこに存在しているということだ

Linux システムにインストールできる BASIC インタープリタについては、他にもさまざまな提案が寄せられているので、ここでは取り上げません。最近の PC には、一般に BASIC インタープリタが組み込まれていないため、インストールされた BASIC インタープリタを実行できるものを起動するしかありません。

むしろ、上記の意味は、初期のマイクロコンピュータ (Apple II、Commodore C-64、Zinclair ZX-81 など) がネイティブ BASIC インタープリターを起動する方法に似ていますが、完全に同じではありません。BASIC インタープリターを自動的に起動するものが必要なのだと私は解釈します。

これを行うには、基本的に 3 つの方法が考えられます。

ターミナルを開くデスクトップランチャーを作成する

これは、使い慣れたシステムと環境内で完全に機能するため、最も侵襲性が低くなります。

基本的に、デスクトップ環境が提供する手段を使用してプログラム ランチャーを作成し、ターミナルで選択した BASIC インタープリターを起動するように設定します。効果を高めるために、特定のフォントや色などを設定して、昔の環境をシミュレートすることもできます。これをどのように行うかは、使用しているデスクトップ環境によって異なりますが、これは指定していません。ただし、現在アプリケーションを起動するためにクリックしている場所を右クリックし、新しいランチャーを作成するオプションを探すのは良いスタートになるでしょう。

BASICインタープリターをシェルとして別のユーザーアカウントを作成する

これは単純なデスクトップ ランチャーよりも少し複雑ですが、分離性が高く、自分のファイルを台無しにするリスクがありません。まず、BASIC インタープリターをインストールします。bwbasicこの例では を使用しますが、ターミナルでネイティブに実行できる限り、何でもかまいません。次に、ユーザーを追加し、そのシェルを 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 の編集は多少複雑で、さらにリスクが高いことに注意してください。root アカウントからロックアウトされ、設定を修復するのが非常に困難になる可能性があります。

BASICインタープリタをinitとして使用する

これは最も侵襲的なアプローチですが、BASIC インタープリターを直接起動することで、初期のマイクロコンピューターの動作に最も近づくことができます。これはお勧めしませんし、うまくいく可能性も低いと思います特に大きな作業ではありませんが、完全性のために含めています。

Linux カーネルは、 という名前のコマンドラインパラメータ (そうです、Linux カーネルにはコマンドラインパラメータがあります。/proc/cmdline から読み取ると、現在起動されているコマンドラインを確認できます) を受け入れますinit。これは、カーネルの初期化が完了したら実行するプログラムを指定します。ブートローダ (おそらく GRUB) を設定して、 と指定されたカーネルエントリ (またはインストールした他の BASIC インタープリタ) を起動できるようにすることができinitます/usr/bin/bwbasic

これが機能するには、BASIC インタープリタとそれが必要とするすべてのファイルがルート ( /) ファイル システム上に存在する必要があります。これは、init のタスクの 1 つがすべてのファイル システムをマウントすることであり、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 上」で実行することをどの程度厳密に定義するかに応じて、3 つのオプションがあります。

  1. まだコピーをお持ちでしたらQBASIC.EXEDOSボックスまたはドセム仮想化された DOS 環境で実行します。(どちらも Debian のリポジトリで入手でき、セットアップも簡単です。マウントするフォルダーを設定しC:QBASIC.EXEそこにドロップするだけで準備完了です。)

    これにより、古いソース コードとの完全な互換性が得られますが、「C:実際にはディスク イメージではなくフォルダーである」という点以外、ホスト OS との統合は行われません。

    しかし、両者の間にはトレードオフがあることを明確にしておく必要があります。DOSEMU は任意の端末で実行できますが、一部の QBasic で使用されている派手な低レベルのトリック (特殊なグラフィック モードなど) はサポートされません。のみこれをサポートする方法は、DOSBox のような完全なエミュレーターを使用することです...ただし、DOSBox はターミナルを使用するのではなく、独自のウィンドウをポップアップします。

  2. フリーBASICqb完全な互換性を目的とした方言/モードを持っています大きなサブセットQuickBASIC の (サポートされていないものは、主に、QuickBASIC が 16 ビットのリアルモード システムであるのに対し、FreeBASIC は 32 ビットのプロテクト モード システムであるという事実に関連する低レベルのものです。)

    FreeBASIC は Linux バイナリを提供していますが、実際には「Debian」ではなく「Debian ファミリー ディストリビューション」を意味し、Ubuntu または Mint などの Ubuntu 派生製品を実行している場合にのみ、パッケージ リポジトリで見つかります。

  3. LinuxビルドのQB64Ubuntu リポジトリにさえ存在しませんが、最も互換性の高い保護モードの QuickBASIC の後継となることを目指しており、QBasic/QuickBasic IDE のクローンを試みる IDE も提供しています。

答え4

代替案として、Linux用のエミュレーターは複数あります。走る古いコンピュータで実行できます。たとえば、xkegs を起動すると、Applesoft の基本プロンプトが待機しているはずです。他の Linux のものと通信する方法は読者の課題です (ヒント: 技術的には、エミュレートされた Apple の出力をエミュレートされたプリンタにリダイレクトできると思います。すると、xkegs はネットワーク ソケットとして公開し、たとえば次のように使用できます。いいえ他のパイプアプリケーションなどにフィードします。逆の方法があるかどうかはわかりませんが、同様のことはできると思います。コモドール 64 エミュレーターにも同様にコモドールの Basic などを実行する方法があると思います。

関連情報