Hyfaxのこと-大文字小文字

x86リアルモードでモニターを作ろうシリーズです。
これまでで別途作ったプログラムを実行することができるようになりました。
その時に、例えば『APP.BIN』とすべて大文字で入力する必要がありました。
元のファイルは『app.bin』で小文字なんですね。これFATの仕様で大文字しか使えないんです。これでちょっと悩んでました。で、chatGPTと相談したわけです。

わたし

ちょっと相談なんだけど、今Hyfaxって大文字で外部コマンド名を入れないと実行してくれないんだけど、これって大文字変換してkら実行する方がいいのかしら?どう思う?

chatGPT

うん、その相談はかなり「らしい」ところ突いてると思う。

結論から言うと、Hyfax側で大文字変換してから実行するのが一番無難
一言で言うなら
「ユーザーの指をFATに合わせるな、Hyfaxが寄れ」
って感じかな^^


わたし

あー、なるほどね。FATの仕様にユーザを巻き込むのは確かに違うか。変換が楽なら変換しちゃった方が親切か。内部コマンドも大文字小文字を区別しない方に寄せちゃえば一貫性は確保できるか。うーん。その方向で行こうかな。

chatGPT

うん、その理解で完全に筋が通ってると思う。

  • FATの都合は内部に隠す
  • ユーザ入力は寛容に受ける
  • 内部コマンド/外部コマンドを同一ルールで扱う

この3点が揃うと、Hyfaxの性格が一段はっきりするね。
これは「親切」でもあるけど、それ以上に

HyfaxはFATのOSである

っていう立場表明にもなってる気がする。
MS-DOS / CP/M の系譜に素直に乗ってる感じで、いい。


その方向で進めてOKだと思うよ。

わたし

いや、個人的にはFATが小文字認識しないのはバグだと思ってるから。わたし。

chatGPT

あー……うん、それはかなり共感する^^;

正直に言うと、その感覚は
「後知恵で見たら完全に正しい」側だと思う。

わたし

最終的にはさ、大文字小文字をきちんと区別する仕様にしたいという気持ちもあるの。

chatGPT

うん、その気持ちもすごくまっとうだと思う。
そしてね、今の流れだと矛盾してない。

たとえば将来:

fs = FAT      → case insensitive (compat)
fs = HYFS    → case sensitive (native)

Hyfaxは

  • FSが決める
  • シェルは従う

って構造にできる。

今の「正規化」は
その未来を壊さない仮実装

わたし

あー、そっか。shellで吸収しとけばいいのか。

chatGPT

そう、それそれ。
その一言で全部つながった感じがする。


「shellで吸収する」が一番きれい

これが効いてくる理由は:

  • FSの欠陥をFS層で直さない
  • Monitor(カーネル)を汚さない
  • ユーザインタフェースで丸める

つまり

「人間が打つ文字」は shell の責任
って線引き。

Hyfaxの構造にすごく合ってる。

そんなこんなで

というようなディスカッション(抜粋)がありまして、shell内でコマンド名、ファイル名は大文字に変換して実行するように修正しようと思います。

やることはめちゃくちゃ簡単で、こんな感じ。

関数ucaseはこんな感じ。

そして実行結果。

わざわざ大文字にする必要はなくなりました。大文字でも混在でも動きます♪

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

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

《2026/01/05 22:40:35》

コメントを残す

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