Linuxで以前のコンピューターで行っていたように、BASICコードを実行したいと思います。(OS機能をネイティブに実行できるBASIC Interrupterを探しています)
どのようなオプションがありますか?(できればDebianベースおよびArchベース)
Linuxで以前のコンピューターで行っていたように、BASICコードを実行したいと思います。(OS機能をネイティブに実行できるBASIC Interrupterを探しています)
どのようなオプションがありますか?(できればDebianベースおよびArchベース)
回答:
Linux BASICでネイティブに実行したい場合、Debianにはいくつかのパッケージがあります:
Brandyは、Acorn ComputersがArchimedesやRisc PCなどのARMプロセッサーを使用するデスクトップコンピューターの範囲で提供しているBASICの方言であるBBC BASIC Vのインタープリターであり、現在もこれらおよび互換機で使用されています。
BASIC V is a much extended version of BBC BASIC.
これは、1980年代にAcornが作成した6502ベースのBBC Microで使用されていたBASICです。
bwBASICは、さまざまなタイプのBASICインタープリターで使用可能な機能、コマンド、および機能をエミュレートするように構成できます。
bwBASICは、以前のBASICインタープリターでは使用できなかった1つの機能を実装します。シェルコマンドはbwBASICプロンプトで対話形式で入力でき、インタープリターはコマンドシェルの下で実行します。
たとえば、コマンド「dir * .bas」をbwBASIC(DOSの下、またはUNIXの「ls -l * .bas」)に入力すると、オペレーティングシステムのコマンドラインから実行されます。bwBASICはシェルプログラミング言語として使用できるように、bwBASICプログラムの番号付き行でシェルコマンドを指定することもできます。bwBASICのRMDIR、CHDIR、MKDIR、NAME、KILL、ENVIRON、およびENVIRON $()コマンドおよび関数の実装は、さらにシェル処理機能を提供します。
それらをインストールするには:
sudo apt-get install brandy bwbasic
私の個人的な経験bwbasic
としては、テキストコマンドラインまたはシェルスクリプトでBASICの機能を使用できるため、好みです。
代替として、古いコンピューターのエミュレーションパッケージもいくつかあります。BASIC構文に加えて、明らかにしたい古いコンピューターのすべての環境を実装しています。
興味深いことにbwbasic
、理論的には、Unixでの操作の自動化(たとえば、BASIC言語を使用したスクリプトの作成)が可能になります。しかし、それを試したことはありません。
私のDebianシステム、およびおそらく他のほとんどのLinuxディストリビューションには、パッケージマネージャーから直接利用できるいくつかの選択肢があります。その中で:
bwbasic
:Bywater BASIC Interpreter(bwBASIC)は、Minimal BASICのANSI標準(X3.60-1978)の大規模なスーパーセットと、CのFull BASICのANSI標準(X3.113-1987)の重要なサブセットを実装します。 BASICの拡張としてのプログラミング機能。bwBASICは、可能な限りポータブルであることを目指しています。
sdlbasic
:sdlBasicは、SDLライブラリのパワーを使用してゲームを作成するための、小型で効率的なマルチプラットフォームBASICインタープリターです。それは古くて輝かしいAMOSに触発されました。
「古いコンピューター」とは「IBM以前のPC」を意味するとみなしているようですので、別の方法で「古いコンピューター」を「Windows 9x以前のIBM互換」と解釈する回答を提供します。
を含むMS-DOSのバージョンを実行するコンピューターを意味する場合、QBASIC.EXE
「Linuxで」それらを実行することをどの程度厳密に定義するかに応じて、3つのオプションがあります。
まだQBASIC.EXE
キックのコピーがある場合は、DOSBoxまたはDOSEMUを使用して仮想化DOS環境で実行できます。(どちらもDebianのリポジトリで利用でき、セットアップも簡単です。フォルダをマウントするように設定し、そこにC:
ドロップQBASIC.EXE
するだけで、準備完了です。)
これにより、古いソースコードとの完全な互換性が得られますが、C:
「ディスクイメージではなく、実際にはフォルダーです」以外のホストOSとの統合はありません。
ただし、2つの間にトレードオフがあることを明確にする必要があります。DOSEMUは任意の端末で実行できますが、使用するQBasicの一部の特殊な低レベルトリック(たとえば、特殊なグラフィックモード用)はサポートしません。これをサポートする唯一の方法は、DOSBoxのような完全なエミュレータです...しかし、DOSBoxはターミナルを使用するのではなく、独自のウィンドウをポップアップします。
FreeBASICには、QuickBASICの大部分のサブセットqb
との完全な互換性を目指した方言/モードがあります。(サポートされていないものは、主にQuickBASICが16ビットのリアルモードシステムであり、FreeBASICが32ビットのプロテクトモードシステムであるという事実に関連する低レベルのものです。)
FreeBASICはLinuxバイナリを提供しますが、実際には「Debian」ではなく「Debian-family distros」を意味し、UbuntuまたはMintなどのUbuntu派生物を実行している場合にのみ、パッケージリポジトリで見つけることができます。
QB64のLinuxビルドはUbuntuリポジトリにもありませんが、最も互換性のあるプロテクトモードQuickBASICの子孫になることを特に目指しており、QBasic / QuickBasic IDEのクローンを作成しようとするIDEも提供します。
「古いコンピューターのように」というのは、そこにあるということです
他の人は、LinuxシステムにインストールできるBASICインタープリターに対していくつかの異なる提案を提供しているので、そこには行きません。一般に、最近のPCにはBASICインタープリターが組み込まれていないため、インストールされているBASICインタープリターを実行できるものを起動するのが面倒です。
むしろ、BASICインタープリターを自動的に起動するものを望んでいることを意味しますが、これは初期のマイクロコンピューター(Apple II、Commodore C-64、Zinclair ZX-81、およびそれらのilkなど) )ネイティブBASICインタープリターを起動しました。
これを行うには、基本的に3つの方法が考えられます。
これは、使用しているシステムと環境内で完全に機能するため、最も侵襲性が低くなります。
基本的に、デスクトップ環境が提供するあらゆる手段を通じて、プログラムランチャーを作成し、ターミナルで選択した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の編集はやや複雑で、さらにリスクが高いことに注意してください。ルートアカウントから自分をロックアウトして、構成を修復するのが非常に困難になる可能性があります。
これは最も侵襲的なアプローチですが、BASICインタープリターを直接起動することにより、初期のマイクロコンピューターがどのように機能するかに最も近づきます。これはお勧めしません。重要な作業なしでは機能しないと思われますが、完全を期すために含めています。
Linuxカーネルはコマンドラインパラメーターを受け入れます(はい、Linuxカーネルにはコマンドラインパラメーターがあります./proc/cmdlineから読み取ることで現在ブートされているコマンドラインを確認できます)namedはinit
、カーネルの初期化が完了した後に実行するプログラムを指定します。あなたはそれが言ってカーネルエントリブートできるようにブートローダ(GRUB最も可能性が高い)を設定することができinit
なければなりません/usr/bin/bwbasic
(またはいずれかがインストールされ、他のBASICインタプリタを)。
これが機能するためには、BASICインタープリターとそれが必要とするすべてのファイルがルート(/
)ファイルシステムに配置されている必要があります。これは、initのタスクの1つがすべてのファイルシステムをマウントすることであり、init以外のプログラムをinitとして提供しているため、非ルートファイルシステムがマウントされていないためです。(initのもう1つのタスクは、ルートファイルシステムを読み書きモードで再マウントすることだと思います。そのため、簡単なアプローチでは何も保存できません。ただし、実装の詳細によっては、システムに次のようなものを実行させるmount -o remount,rw /
ルートファイルシステムを読み書き可能に再マウントします。)選択したBASICインタープリターは、initが担当する他の要素にも依存してはなりません。また、initによって、またはinitによって生成されたプロセスによって処理される機能にアクセスできません(たとえば、 、ネットワークまたはマルチユーザーのサポート)。
カーネルコマンドラインのようなものを使用ro quiet init=/usr/bin/bwbasic
すると、おそらく昔のように見えます。
init
に使用し、X11ディスプレイマネージャーを起動しないように初期化システムを構成する場合と同様に、BASICインタープリターを使用するより劇的な代替手段。(私が話していることを知らない人のために、カーネルはCtrl + Alt + F1からCtrl + Alt + F12でアクセスできるさまざまな「仮想コンソール」を提供し、デフォルトではinitシステムは1から6 で起動し、 7のX11ディスプレイマネージャー(ログインダイアログを提供)。Upstartおよびsystemdの前は、これは。を介して制御されていました。その子孫はコンソールログインプロンプトを処理します。bwbasic
agetty
agetty
/etc/inittab
getty
代替手段を捨てるために、古いコンピューターを実行できるLinux用のエミュレーターが複数あります。たとえば、xkegsで起動すると、applesoftの基本プロンプトが表示されます。技術的には、私はあなたがエミュレートされたプリンタにエミュレートリンゴで出力をリダイレクトすることができると信じて、xkegsは、あなたが例えば使用できるネットワークソケットとして公開されます:他のLinuxのものとの通信は、リーダー(ヒントに左運動であるNCをへフィードに他のパイプされたアプリケーションなど。他の方法を使用する方法があるかどうかはわかりませんが、同様のことができると期待しています。コモドール64エミュレーターも同様にコモドールの基本などを実行する方法を持っていると思います。
kegs
、それらの1つではないようです(apt-cache search
結果なし)。エミュレータの一部/ほとんどについては、おそらくどこかからオリジナルのROMを入手する必要があります。
init=/usr/bin/sdlbasic
た、Linuxカーネルにそれが動作するかどうか、あなたがずっと近くなりますが、それはよく、またはなくても仕事。
多くの選択肢があります。私の提案は、ssokolowの答えに似ています。「最新の」BASICが必要であるが、古いBASICインタープリターに類似した構文を使用する場合は、BaConに試してみてください。これは、ネイティブコードを生成するBASICトランスパイラーです。このプロジェクトには、非常に優れたマニュアル、多くのライブラリとサンプル、そしてBaConで書かれたIDEさえあります。
ブラウザでC64を実行し、そのようにBASICを使用できます。
http://codeazur.com.br/stuff/fc64_final/
キーボードのレイアウトが異なる、つまりShift-2引用符であることに注意してください。
http://jilltxt.net/wp-content/uploads/C64-keyboard-layout.png
必要に応じてApplesoft BASIC- http://calormen.com/jsbasic/
オンラインで他のマシンのエミュレータがありますが
、それらの多くは、
そこに到達するために必要な最初のキーボード入力をエミュレートせずに、ロードしたプログラムに直接進みます。