CP /M-86、Concurrent CP/M-86、Personal CP/M-86、S5-DOS、DOS Plus、Concurrent DOS、FlexOS、Multiuser DOS、System Manager、REAL/32、およびSCP1700 [1] 、CP/K [1]、K8918-OS [1]では、CMDはCP/Mスタイルの実行可能プログラムで使用されるファイル名拡張子です。これはCP/M-80のCOMやDOSのEXEに相当します。同じ拡張子がOS/2およびWindowsのコマンドラインインタープリタCMD.EXEでバッチファイル用として使用されます。
バイナリ形式
CMDファイルには128バイトのヘッダーがあり、その後に1~8個のコードまたはデータが続きます。[2]各グループのサイズは最大1メガバイトです。このフォーマットの最新バージョンでは、CMDファイルに再配置情報と常駐システム拡張(RSX)も含まれるようになりました。[2]
ヘッダーの先頭には、ファイル内に存在するグループとそのタイプがリストされます。各タイプは最大 1 回使用できます。これらは次のとおりです。
- コード
- データ
- 余分な
- スタック
- ユーザー 1
- ユーザー2
- ユーザー3
- ユーザー4
- 共有コード(コードと共有コードは同じファイル内に存在できません)。[3] [2]
データグループの最初の256バイトはゼロでなければなりません。CP/M-86はゼロページ(DOSのプログラムセグメントプレフィックスに相当)を使用してそれらを埋めます。データグループがない場合、代わりにコードグループの最初の256バイトが使用されます。[3]
名前の競合
OS/2およびWindows NTでは、 .CMD ファイル拡張子はコマンド プロセッサCMD.EXEのバッチ スクリプトに関連付けられています。バイナリ コードはこの方法では実行されないため、CMD コマンド プロセッサで CP/M-86 CMD ファイルを実行しようとしても機能しませんが、通常はユーザーに軽微な不便が生じるだけです。CP/M-86 および関連オペレーティング システムの実行可能ローダーとリロケータは、ファイルの最初のバイト (CP/M CMD ファイルの最初のテーブル エントリのタイプ バイト) が 1 から 9 の値を持っているかどうかをテストしてから、有効な CP/M CMD ファイルとして受け入れます。[2] 10 未満の ASCII 値はバッチ スクリプトではほとんど使用されないかまったく使用されないため、このスキームは十分に優れた保護を提供します。
参照
参考文献
- ^ abc クルト、リュディガー;グロス、マーティン。ハンガー、ヘンリー (2019-01-03)。 「Betriebssystem SCP」。www.robotrontechnik.de (ドイツ語)。 2019年4月27日のオリジナルからアーカイブ。2019年4月27日に取得。
- ^ abcd Elliott, John C. 「CP/M-86 実行ファイル (.CMD)」。Seasip.info。2016年11月14日時点のオリジナルよりアーカイブ。2016年8月29日閲覧。
- ^ ab "3.4 コマンド (CMD) ファイル形式". CP/M-86 オペレーティング システム - システム ガイド(PDF) (第 2 刷、第 1 版). パシフィック グローブ、カリフォルニア州、米国: Digital Research。1981 年 6 月。pp. 20–21。2020年 2 月 28 日時点のオリジナルからアーカイブ(PDF) 。2020年 2 月 28 日閲覧。(17ページ)
