CP/Mコマンドにおける小文字パラメータの実現 [Z80]
CP/M-80(以降、CP/M と記す) でコマンドのパラメータに小文字を入力しても強制的に大文字に変換されます。このため PC から CP/M へシリアル通信等で転送したアーカイブファイルを解凍した場合等に小文字のファイル名があると ERA コマンドでは消せなくなってしまいます(今まで MBASIC を起動して KILL コマンドで消していた^^;)
また、grep のようなファイルの内容を参照するようなコマンドを作成する場合、コマンドパラメータで対象文字列として小文字を指定できず不便でした。
CP/M でコマンドパラメータに小文字が使えないのは「入力されたコマンドを処理する CCP(Console Command Processor) 内の1行入力処理部で小文字を大文字に変換している」ためです。
そこで CCP の1行入力処理内の大文字変換部にパッチを当て一時的に小文字の入力を可能にするコマンドを作ってみました。注意点として CCP はコマンド解析を大文字前提で行っているのでコマンド自体は大文字で入力する必要があります。
また、このパッチは外部プログラムのみならず ERA 等のビルトインコマンドにも有効になるので上記のような小文字のファイル名の削除も可能になります。上記で”一時的”と書いたのは、コントロールC押下または実行したプログラムの終了時に WBOOT が実行されると CCP が再度読み込まれてパッチが消えてしまうからです(なのでパッチを元に戻すコマンドは準備していません)。
実行例を下図に示します。argtest は実行時に与えられたパラメータを表示するだけのテスト用プログラムです。
リストも貼っておきます。0080H に保存されている起動時のパラメータ文字列の長さがゼロ以外の場合、ヘルプ内容を表示するようにしました。
今回作成したコマンドは下記のリンクからダウンロードできます。
[history]
Ver 0.01a 2023/01/20 8080対応
また、grep のようなファイルの内容を参照するようなコマンドを作成する場合、コマンドパラメータで対象文字列として小文字を指定できず不便でした。
CP/M でコマンドパラメータに小文字が使えないのは「入力されたコマンドを処理する CCP(Console Command Processor) 内の1行入力処理部で小文字を大文字に変換している」ためです。
そこで CCP の1行入力処理内の大文字変換部にパッチを当て一時的に小文字の入力を可能にするコマンドを作ってみました。注意点として CCP はコマンド解析を大文字前提で行っているのでコマンド自体は大文字で入力する必要があります。
また、このパッチは外部プログラムのみならず ERA 等のビルトインコマンドにも有効になるので上記のような小文字のファイル名の削除も可能になります。上記で”一時的”と書いたのは、コントロールC押下または実行したプログラムの終了時に WBOOT が実行されると CCP が再度読み込まれてパッチが消えてしまうからです(なのでパッチを元に戻すコマンドは準備していません)。
実行例を下図に示します。argtest は実行時に与えられたパラメータを表示するだけのテスト用プログラムです。
小文字パラメータコマンドの実行例 |
|
リストも貼っておきます。0080H に保存されている起動時のパラメータ文字列の長さがゼロ以外の場合、ヘルプ内容を表示するようにしました。
CP/Mー80 用の小文字パラメータ対応コマンドリスト(Z80 アセンブラ) |
|
今回作成したコマンドは下記のリンクからダウンロードできます。
[history]
Ver 0.01a 2023/01/20 8080対応
コメント 0