Hyfaxのこと―Shellへの遠い道

MONITORが動くようになりAPP実行から終了までできるようになりました。でもそれだけです。まだ入力とかもほとんどできません。プログラム名の入力→実行とか出来るようにしたいな~……。

というわけで、まずはshellを目指すのでした。これがないとHyfax君と会話できないし♪
shellといっても超簡易版です。最初ですんで何かキーを押したら反応が返ってくる、それくらいのやつ。

なにはともあれechoの実装

echoから作ります。shellに組み込む前に動作確認ですね。せっかくAPPが動くようになったんで、APP内で作って動作チェックして、それからshellとして取り込みましょう。
ドライバのソースはこれ。

本体がこちら。

実行結果

ちゃんと返ってきてます。これで勝ち確ですよね。アプリ名を入力して、前回作ったapploadに渡せば実行できる流れです。とはいえ今はappに居る関係上、このまま実行するとアドレスが被るんで動かないんでしょうけれども。動かすにはもう少し調整が必要です。(今回はやりません。)

履歴機能とか

コマンド(らしきもの)が入力できるようになると、欲しくなってくるのが履歴機能です。command historyですね。以前打ち込んだ内容を↑キーとか↓キーで表示してくれるやつです。プログラミングの練習がてら上下カーソルキーで文字列を変更するプログラムも書いてみましょう。

実行確認用ドライバのソースはこれ。

本体のソースはこれです。

実行結果はこちら。

上下キーでone、two、three、fourが切り替わります。

そして1行入力へ

echoとhistoryが形になりました。次にこれを悪魔合体させて1行入力を作りましょう。
例によって確認用ドライバのソースはこれ。

本体のソースはこちら。

上下キーで履歴の内容を表示、文字入力可能でエンターキーで確定して戻ります。
戻ったらバッファの内容を表示して文字数、バッファをクリアしています。
実行結果はこちら。

履歴を切り替えてバッファに反映、文字入力をバッファに反映、履歴と文字入力を共にバッファに反映、それぞれできています。
追加機能として,tabキーで現在の履歴を即時反映させます。直前のコマンド表示させるのに上下キーで上って降りてなんてしたくないですから。

(tabが素通しで文字化けしたんで機能を得割り振ったなんてことはないですよ?
本当のところは、どう、なのかですか?
禁則事項です♪)

shellへの遠い道

これで文字列を入力することができるようになります。受け取った文字列をコマンドとして実行したり処理を振り分けたりできるようになるということですね。

現状ではまだ本体に組み込みません。MONIOTRにshell機能を持たせるか、shellとして独立したapp扱いするか決めかねているからです。それによってメモリ配置も考え直す必要があります。今後の宿題ですね。

今回はここまでです。お付き合いありがとうございましたm(_ _)m

この連載の成果物はgithubに公開しています。よろしければどうぞ。
https://github.com/CbWB-Inc/software/tree/main/laboratory/lab02/hyfax-01-long-road-to-shell

《2025/12/28 15:34:41》

コメントを残す

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