<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Ms-Dos on akky@サイボウズラボ・ブログ</title>
		<link>https://labs.cybozu.co.jp/blog/akky/tags/ms-dos/</link>
		<description>Recent content in Ms-Dos on akky@サイボウズラボ・ブログ</description>
		<generator>Hugo</generator>
		<language>ja</language>
		
		
		
		
			<lastBuildDate>Wed, 08 Jun 2022 00:00:00 +0000</lastBuildDate>
		
			<atom:link href="https://labs.cybozu.co.jp/blog/akky/tags/ms-dos/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>EndBASIC - Rustで書かれたBASICインタプリタ&#43;環境</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2022/06/endbasic-interpreter-by-rust/</link>
				<pubDate>Wed, 08 Jun 2022 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2022/06/endbasic-interpreter-by-rust/</guid>
				<description>&lt;p&gt;フリオ・メリノさん(Julio Merino)による&lt;a href=&#34;https://www.endbasic.dev/&#34;&gt;BASIC処理系プロジェクト EndBASIC&lt;/a&gt;は、新たに書き起こされたBASICインタプリタに、MS-DOS風のコマンドラインを組み合わせたBASIC言語の処理系です。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.endbasic.dev/&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2022/06/endbasic-interpreter-by-rust/endbasic-top_hu_975fbcd13bc1b694.webp 480w, https://labs.cybozu.co.jp/blog/akky/2022/06/endbasic-interpreter-by-rust/endbasic-top_hu_8e9d56115d902345.webp 768w, https://labs.cybozu.co.jp/blog/akky/2022/06/endbasic-interpreter-by-rust/endbasic-top_hu_5c19793aeb107553.webp 981w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2022/06/endbasic-interpreter-by-rust/endbasic-top.png&#34; width=&#34;981&#34; height=&#34;908&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;EndBASIC サイトトップ&lt;/p&gt;&#xA;&lt;p&gt;BASIC としての文法や機能は、Amstrad CPC という1980年代の8bitパソコンで動いた&lt;a href=&#34;https://en.wikipedia.org/wiki/Locomotive_BASIC&#34;&gt;Locomotive BASIC&lt;/a&gt;や、&lt;a href=&#34;https://ja.wikipedia.org/wiki/QuickBASIC&#34;&gt;マイクロソフトのQuickBASIC&lt;/a&gt; を意識したものとなっているそう。&lt;/p&gt;&#xA;&lt;p&gt;Linux/MacOS/Windows のバイナリをダウンロードして手元で動かすこともできますが、&lt;a href=&#34;https://repl.endbasic.dev/&#34;&gt;ブラウザ上でも動く環境が公開&lt;/a&gt;されています。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://repl.endbasic.dev/&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2022/06/endbasic-interpreter-by-rust/endbasic-on-chrome_hu_41396642765eeaee.webp 480w, https://labs.cybozu.co.jp/blog/akky/2022/06/endbasic-interpreter-by-rust/endbasic-on-chrome_hu_d6576c46b00b13b6.webp 676w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2022/06/endbasic-interpreter-by-rust/endbasic-on-chrome.png&#34; width=&#34;676&#34; height=&#34;247&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Rust で書かれた処理系が WebAssembly で動いているということで、昔からあるBASIC 言語を最新の技術と組み合わせているんですね。QuickBASIC で書かれたプログラムを少し直してウェブで公開、なんてことにも使えるかもしれません。&lt;/p&gt;&#xA;&lt;p&gt;環境にはCUIエディタも内蔵されており、編集したファイルは環境内に保存することもできます。フラットに保存しファイル名で区別。ディレクトリについては今後の実装を検討ということ。また「ドライブ」を複数作ることができるのでドライブでの整理もできそうです。&lt;/p&gt;&#xA;&lt;p&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2022/06/endbasic-interpreter-by-rust/endbasic-sample_hu_eaea25b1beb65799.webp 431w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2022/06/endbasic-interpreter-by-rust/endbasic-sample.png&#34; width=&#34;431&#34; height=&#34;348&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/p&gt;&#xA;&lt;p&gt;EndBASIC のサンプルコード&lt;/p&gt;&#xA;&lt;p&gt;BASIC言語ではよくある行番号機能は、GO TO 命令と共に省かれています。&lt;a href=&#34;https://www.endbasic.dev/docs.html#lang-goto&#34;&gt;そのうち実装するかもということ&lt;/a&gt;ですが、分岐とループ命令でおおかたは問題ないかと思います。&lt;/p&gt;&#xA;&lt;p&gt;面白いのは&lt;a href=&#34;https://www.endbasic.dev/docs.html#cloud&#34;&gt;クラウド対応機能&lt;/a&gt;で、ユーザー登録するとユーザー名以下に置いたファイルを他ユーザーと共有できるようになります。&lt;/p&gt;&#xA;&lt;p&gt;Raspberry PI で動かした時は&lt;a href=&#34;https://www.endbasic.dev/docs.html#hw-gpio&#34;&gt;GPIO&lt;/a&gt;にアクセスできる命令が提供されていて、ボタンやLEDなどの入出力が使えるそう。これも教育用としてよさそう。&lt;/p&gt;&#xA;&lt;p&gt;今はプログラミングに入門する時の言語も多数候補がありますが、昔は入門言語といえばBASICが主流ということもありました。プロジェクトでは、プログラムとプログラムを動かす環境が最小限でセットになっていることで、セットアップの苦労なしにプログラミングの学習ができるようにすることを目指しているそう。&lt;/p&gt;&#xA;&lt;p&gt;via &lt;a href=&#34;https://news.ycombinator.com/item?id=31651881&#34;&gt;Hacker News&lt;/a&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>DOS Subsystem for Linux - MS-DOSの上でLinuxコマンドを動かす</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2020/09/dos-subsystem-for-linux/</link>
				<pubDate>Fri, 25 Sep 2020 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2020/09/dos-subsystem-for-linux/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://github.com/charliesome/doslinux&#34;&gt;DOS Subsystem for Linux&lt;/a&gt; は、「MS-DOS環境を好む人のためのWSLの代替」で、Linux 環境をMS-DOS 上に構築したものです。&lt;/p&gt;&#xA;&lt;p&gt;&amp;ldquo;Windows Subsystem for Linux&amp;rdquo;(WSL)においては、Windows 上でLinuxのアプリケーションをそのまま実行できるようになりましたが、それと似たようなことを MS-DOS の上で動かす、というもののよう。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2020/09/dos-subsystem-for-linux/dos-subsystem-for-linux.gif&#34;&gt;&lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2020/09/dos-subsystem-for-linux/dos-subsystem-for-linux.gif&#34; width=&#34;734&#34; height=&#34;419&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;MS-DOS の起動画面から、dsl コマンドを叩いて、MS-DOS 側のファイルシステムをマウントし、viエディタで編集していますね。DOS をメインに使っていて Linux アプリケーションも使いたいという人にとってはありがたい仕組みです。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://news.ycombinator.com/item?id=24555689&#34;&gt;Hacker Newsのスレッド&lt;/a&gt;では当初、「MS-DOS を Linux 上で動かすもの」と誤解されたようですが、逆方向になります。&lt;/p&gt;&#xA;&lt;p&gt;誤解が生まれた訳は、&amp;ldquo;Windows Subsystem for Linux&amp;quot;というマイクロソフト公式の名づけ方法にありそう。&amp;ldquo;Windows Subsystem for Linux&amp;rdquo; という字面を見ると、海外ユーザーでもやはり直観的には「Linux のために動く Windows」という印象を受けてしまうようです。しかし、「Windows は複数のサブシステムを持っていて、その一つとして Linux を動かす」と解釈すれば、WSL のことだと言えなくもありません。&lt;/p&gt;&#xA;&lt;p&gt;Linux側には「サブシステム」という概念がないため、Linux ユーザー側から見ると混乱が起こるのであろう、ということ。&amp;ldquo;Windows Services for Unix&amp;quot;についても同様で、Unix で Windows を動かすのではなく、Windows のサービスとしてLinux コマンドを使えるという意味になる、と。&lt;/p&gt;&#xA;&lt;p&gt;&amp;ldquo;DOS Subsystem for Linux&amp;rdquo; は、そんなマイクロソフトの WSL のネーミングに従った名前と言えます。&lt;/p&gt;&#xA;&lt;p&gt;作者の解説によると、MS-DOS 上で最初に dsl コマンドが呼ばれた際、Linux カーネルが立ちあげられ、MS-DOS からPCのコントロールを奪います。&lt;/p&gt;&#xA;&lt;p&gt;Linuxコマンドの終了時、カーネルは仮想86モードで元のDOSに制御を移し、DOSは仮想モード内で動いているとは意識せずに次に DSL コマンドが呼ばれるまで DOS として動き続ける、と。&lt;/p&gt;&#xA;&lt;p&gt;仕組みとしては問題ありそうだが、驚くほどうまく動作している、ということだそうです。&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
