Hyfaxのこと-呼べば応えるecho哉

x86リアルモードでモニターを作ろうシリーズです。Windows11+wsl2で構築しています。

キーボードをタイプしてプログラムを起動できるようになりました。そこでコマンドを作ってみようと思います。定番ではあるものの作るコマンドはechoです。与えられた引数を表示するだけのプログラムですね。実用性はともかく、引数を受け取ってそれを操作する基本を押さえるのに重宝するプログラムです。

処理の概要

今回作るまで知らなかったのですが例えば『echo aaa bbb』とか打ち込むと途中の複数の空白を一つにまとめて『aaa bbb』と表示されるのですね。何のことはない、コマンド自体をsplitでパースして、コマンド自体を除いた引数部分を順に表示するという仕様なわけです。

ということであれば、もうsplitはできているわけで、コマンド部分を読み取り、それを実行し、コマンド内では引数部分を列挙表示すればよいということです。これならすぐできそうです。

実際の実行イメージはこんな感じでしょうか

レジスタはどれでもよかったのですが、axは成功失敗を受け取るために使用していたので、引数はbxで渡しています。bxにsplitした引数を設定して、アプリを実行です。

実際の実行部にあわせて、必要な部分で引数を設定していきます。まず最初はtss.asmですね。抜粋するとこんな感じ。

コマンドの実行はシステムコールにしています。

で、monitor.asmのsvc_execがこんな感じ。

都合、loadapp.asm、monitor.asm、tts.asmの3つを変更しています。

echo本体

echo本体は引数を受け取って順次表示するだけです。こんな感じ。

デバッグ用の表示がそのまま残っていますが、許してください。いつ必要になるかわからない開発中の状況ですんでそのままにしてあります。

実際の実行結果はこうなります。

終わりに

今回はここまでになります。

それにしても、コマンドとか作ってできることが多くなってくるとわくわくしますよね♪

このソースはgithubで公開しています。よろしければどうぞ。
https://github.com/CbWB-Inc/software/tree/main/laboratory/lab02/hyfax-05-echo

《2026/01/11 15:38:35》

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です