カテゴリー
プログラミング言語

EndBASIC – Rustで書かれたBASICインタプリタ+環境

フリオ・メリノさん(Julio Merino)によるBASIC処理系プロジェクト EndBASICは、新たに書き起こされたBASICインタプリタに、MS-DOS風のコマンドラインを組み合わせたBASIC言語の処理系です。

EndBASIC サイトトップ

BASIC としての文法や機能は、Amstrad CPC という1980年代の8bitパソコンで動いたLocomotive BASICや、マイクロソフトのQuickBASIC を意識したものとなっているそう。

Linux/MacOS/Windows のバイナリをダウンロードして手元で動かすこともできますが、ブラウザ上でも動く環境が公開されています。

Rust で書かれた処理系が WebAssembly で動いているということで、昔からあるBASIC 言語を最新の技術と組み合わせているんですね。QuickBASIC で書かれたプログラムを少し直してウェブで公開、なんてことにも使えるかもしれません。

環境にはCUIエディタも内蔵されており、編集したファイルは環境内に保存することもできます。フラットに保存しファイル名で区別。ディレクトリについては今後の実装を検討ということ。また「ドライブ」を複数作ることができるのでドライブでの整理もできそうです。

EndBASIC のサンプルコード

BASIC言語ではよくある行番号機能は、GO TO 命令と共に省かれています。そのうち実装するかもということですが、分岐とループ命令でおおかたは問題ないかと思います。

面白いのはクラウド対応機能で、ユーザー登録するとユーザー名以下に置いたファイルを他ユーザーと共有できるようになります。

Raspberry PI で動かした時はGPIOにアクセスできる命令が提供されていて、ボタンやLEDなどの入出力が使えるそう。これも教育用としてよさそう。

今はプログラミングに入門する時の言語も多数候補がありますが、昔は入門言語といえばBASICが主流ということもありました。プロジェクトでは、プログラムとプログラムを動かす環境が最小限でセットになっていることで、セットアップの苦労なしにプログラミングの学習ができるようにすることを目指しているそう。

via Hacker News

カテゴリー
技術

DOS Subsystem for Linux – MS-DOSの上でLinuxコマンドを動かす

DOS Subsystem for Linux は、「MS-DOS環境を好む人のためのWSLの代替」で、Linux 環境をMS-DOS 上に構築したものです。

“Windows Subsystem for Linux”(WSL)においては、Windows 上でLinuxのアプリケーションをそのまま実行できるようになりましたが、それと似たようなことを MS-DOS の上で動かす、というもののよう。

MS-DOS の起動画面から、dsl コマンドを叩いて、MS-DOS 側のファイルシステムをマウントし、viエディタで編集していますね。DOS をメインに使っていて Linux アプリケーションも使いたいという人にとってはありがたい仕組みです。

Hacker Newsのスレッドでは当初、「MS-DOS を Linux 上で動かすもの」と誤解されたようですが、逆方向になります。

誤解が生まれた訳は、”Windows Subsystem for Linux”というマイクロソフト公式の名づけ方法にありそう。”Windows Subsystem for Linux” という字面を見ると、海外ユーザーでもやはり直観的には「Linux のために動く Windows」という印象を受けてしまうようです。しかし、「Windows は複数のサブシステムを持っていて、その一つとして Linux を動かす」と解釈すれば、WSL のことだと言えなくもありません。

Linux側には「サブシステム」という概念がないため、Linux ユーザー側から見ると混乱が起こるのであろう、ということ。”Windows Services for Unix”についても同様で、Unix で Windows を動かすのではなく、Windows のサービスとしてLinux コマンドを使えるという意味になる、と。

“DOS Subsystem for Linux” は、そんなマイクロソフトの WSL のネーミングに従った名前と言えます。

作者の解説によると、MS-DOS 上で最初に dsl コマンドが呼ばれた際、Linux カーネルが立ちあげられ、MS-DOS からPCのコントロールを奪います。

Linuxコマンドの終了時、カーネルは仮想86モードで元のDOSに制御を移し、DOSは仮想モード内で動いているとは意識せずに次に DSL コマンドが呼ばれるまで DOS として動き続ける、と。

仕組みとしては問題ありそうだが、驚くほどうまく動作している、ということだそうです。