FM-7/8シリーズ FM-CP/M 画面キャプチャ集(by はせりん)


本ページの各画面キャプチャについては、XM73ZIPを使用させていただきました。
PI.さん、たけがみりうさん、Apolloさん、いつも感謝しております。
(XM7がなかったらこんなページを作ろうという気にはなりませんでした。^^;)
お急ぎの方へ。
DIR実行サポートデバイスドライブレター画面制御/Escapeシーケンス漢字表示機能
メモリマップディスクフォーマットWindows ファイル交換
\.COMコマンドMODSYS.COMコマンド
FM-CP/Mデモ参考文献

4. CP/M-80編

FM-8,7,77シリーズまでは、オプションのZ80カードとともにCP/M-80が提供されていました。
FM77AV以降で Z80カードが提供されなくなったのは非常に残念です。
それはさておき、まずは各機種用のCP/M-80の起動画面です。
(各画像をクリックするとフルサイズの画像になります。)

CPM8_MSA
CPM8_2ND
CPM7_56
CPM77_56
CP/M関連の製品一覧です。FM-8 と FM-7以降で販売形態が異なっています。
機種 型格 内容 価格 発売時期
FM-8 MB22401 Z80カード \11,700 1981年5月
SM07217-M011 CP/M-80 V2.2(5インチ版) \65,000 1981年10月
SM07217-M011 CP/M-80 V2.2(5インチ版) 2nd Version \65,000 1982年6月
SM07217-M012 CP/M-80 V2.2(8インチ版) 2nd Version \65,000 1982年6月
FM-7
FM-NEW7
MB28021 Z80カード + CP/M-80(5インチ版) セット \35,000 1982年12月
┣MB2240? ┣Z80カード
┗SM07317-M111 ┗CP/M-80 V2.2 L1.0(5インチ版)
FM-77 MB28021J Z80カード + CP/M-80(3.5インチ版) セット \35,000 1984年6月
┣MB2240? ┣Z80カード
┗SM07317-M113 ┗CP/M-80 V2.2 L2.0(3.5インチ版)

4.1 各CP/MについてDIRを実行してみてみましょう。

CPM8_MSA2
CPM8_2ND2
CPM7_562
CPM77_56

これら3機種、4種類のCP/M-80について共通点は次の通りです。
各CP/M-80の利用可能デバイス(◎○)、起動可能デバイス(◎)、サポート機能についてまとめた表です。
(−は起動しません)
FM-8 FM-7/
NEW7
FM-77 共通
CP/M 型格 システム
(MODSYS)
32KB
BUBBLE
320KB
FDD
1MB
FDD
320KB
FDD
320KB
FDD
1MB
FDD
RS
232C
PF
KEY
6809
コード
実行
ESC
シー
ケンス
ESC+JIS
漢字表示
SHIFT
JIS
漢字表示
FM-8
SM07217-M011
(初期版)
(出荷状態) × × × × ×
SM07217-M011
(2nd Version)
FMCPM565.COM
(出荷状態)
× ×
FMCPM568.COM ×
FMCPM605.COM × × × × × × × × ×
SM07217-M012 (出荷状態) ×
FM-7
FM-NEW7
SM07317-M111 FMCPM565.SYS
(出荷状態)
× ×
FMCPM568.SYS ×
FMCPM605.SYS × × × × × × × × ×
FM-77
SM07317-M113 (出荷状態)
FMCPM605.SYS × × × × × × ×
FM7CPM80.SYS × ×

似たような表が続いて恐縮ですが、ドライブレター一覧表です。
FM-8 FM-7/
NEW7
FM-77
CP/M 型格 システム 32KB
BUBBLE
320KB
FDD
1MB
FDD
320KB
FDD
320KB
FDD
1MB
FDD
FM-8
SM07217-M011
(初期版)
(出荷状態) M: N: A: B: C: D: × A: B: C: D: A: B: C: D: ×
SM07217-M011
(2nd Version)
FMCPM565.COM
(出荷状態)
M: N: A: B: C: D: E: F: G: H: A: B: C: D: A: B: C: D: ×
FMCPM568.COM M: N: E: F: G: H: A: B: C: D:
FMCPM605.COM × A: B: C: D: × A: B: C: D: A: B: C: D: ×
SM07217-M012 (出荷状態) M: N: E: F: G: H: A: B: C: D:
FM-7
FM-NEW7
SM07317-M111 FMCPM565.SYS
(出荷状態)
M: N: A: B: C: D: E: F: G: H: A: B: C: D: A: B: C: D: ×
FMCPM568.SYS M: N: E: F: G: H: A: B: C: D:
FMCPM605.SYS × A: B: C: D: × A: B: C: D: A: B: C: D: ×
FM-77
SM07317-M113 (出荷状態) A: B: C: D: E: F: G: H:
FMCPM605.SYS A: B: C: D: ×
FM7CPM80.SYS M: N: A: B: C: D: E: F: G: H: A: B: C: D: A: B: C: D: ×

4.2 画面制御/Escapeシーケンスのサポート状況です。

まずは一覧表です。
コード 参考:ADM-3A機能 FM-CP/Mにおける機能 FM-8
初期版
FM-8 2nd版 FM-7 FM-77 FM-11
16進 記号表記 56K 60K 56K 60K 56K 60K
05H <CTRL>'E' ENQ Erase to End of Field
07H <CTRL>'G' BELL BELL
08H <CTRL>'H' BS(←) BS(←)
09H <CTRL>'I' HT(TAB) HT(TAB)
0AH <CTRL>'J' LF(↓) LF(↓)
0BH <CTRL>'K' VT(↑) Home Cursor
0CH <CTRL>'L' FF(→) Clear Screen
0DH <CTRL>'M' CR CR
0EH <CTRL>'N' SO - × × × × × × × ×
0FH <CTRL>'O' SI - × × × × × × × ×
11H <CTRL>'Q' - Start Field × × × ×
12H <CTRL>'R' - Cursor Address × × ×
13H <CTRL>'S' - Repeat Character × × ×
1AH <CTRL>'Z' SUB(Clear Screen) - × × × × × × × ×
1BH <CTRL>'[' ESC Escape Sequence 下表を参照
1CH <CTRL>']' - Cursor Left(←)
1DH <CTRL>'\' - Cursor Right(→)
1EH <CTRL>'^' RS(Home Cursor) Cursor Up(↑)
1FH <CTRL>'_' - Cursor Down(↓)
Esacpe Sequence
1B63H <ESC>'c' - Console Initialize × × × ×
1B43H <ESC>'C' - Color/Back Ground Color × × ×
1B47H <ESC>'G' Video Attribute - × × × × × × ×
1B50H <ESC>'P' - Hard Copy × × ×
1B2AH <ESC>'*' - Clear Screen × × ×
1B3DH <ESC>'=' Cursor Address Cursor Address × × ×
1B6EH <ESC>'n' - Kanji Display in JIS Code × × × ×

参考のため、ADM-3A の制御コードも載せておきましたが、ご覧の通り、ほとんど一致してません。
FM-CP/M は ADM-3Aに準拠した画面制御可能、と書いてある資料がありましたら、それは嘘です。
同じ MSAが開発してた PC-8001/8801用CP/Mでは、ADM-3Aの制御コードがサポートされてるので、
FM-CP/M も?と期待しましたが、この辺の開発は富士通側でやられてたようです。
(あと、FM-11は上記の表以外にも制御コードサポートしてますが、省略してます。)

画面制御コードを大別すると、次の3種類になります。(はせりんによる勝手な分類です)
 (1)シングルバイトオーダー
 (2)マルチバイトオーダー
 (3)エスケープシーケンス

(1)(2)は、サブシステムでサポートされている画面制御機能そのものです。詳細仕様はそちらをご覧ください。
(1)シングルバイトオーダーは、サブシステムにコードを渡すだけですので、全システムでサポートされています。
(2)マルチバイトオーダーは、BIOS側で細工が必要となる関係で、バージョンやメモリサイズによりサポート範囲が異なります。
 ・60Kシステムでは全滅、
 ・FM-8初期版では 12H(Cursor Address) と 13H(Repeat Character)、
 ・それ以外のシステムでは 11H(Start Field)、12H(Cursor Address)、13H(Repeat Character)
がサポートされています。ただし、11H(Start Field) のサポートはマニュアルに記載されていない隠し機能となっています。
(FM-11用CP/Mのマニュアルには記載あり)

11H <CTRL>'Q' Start Field
 11{00-1F}H スタート・フィールド(アトリビュート設定)
  bit 4 3 2 1 0
    PRCCC P=Protect. R=Reverse, CCC=Color
 FM-8初期版では使えません。
 FM-8 2nd版以降ではマニュアルに記載ないですが使えます。

12H <CTRL>'R' Cursor Address
 12{00-4F}{00-18}H カーソル・アドレッシング
 X座標、Y座標の順に指定します。

13H <CTRL>'S' Repeat Character
 12{00-FF}{00-FF}H リピート・キャラクタ
 文字数、文字コードの順に指定します。

(3)エスケープシーケンスの概説

1B63H <ESC>'c' Console Initialize
 1B6330H <ESC>"c0" カラーモードにする (\ Console,,,0 相当)
 1B6331H <ESC>"c1" 単色モードにする (\ Console,,,1 相当)
 これ、無いと不便だよな〜、と思ってたらこっそりFM-8 2nd版以降で追加されてました。
 マニュアルに記載ありません。
 これがあると、いちいちシステムに戻って \ Console,,,0 とかしないで済むので超便利です。

1B43H <ESC>'C' Color/Back Ground Color
 1B43{30-37}55H <ESC>"C{0-7}U" カラー指定 (\ Color {0-7} 相当)
 1B43{40-47}55H <ESC>"C{A-G}U" 反転カラー指定 (\ Color {8-15} 相当, FM-8初期版では使用不可)
 1B43{30-37}{30-37}H <ESC>"C{0-7}{0-7}" カラー&背景色指定 (\ Color {0-7},{0-7} 相当)
 1B43{40-47}{30-37}H <ESC>"C{A-G}{0-7}" 反転カラー&背景色指定 (\ Color {8-15},{0-7} 相当, FM-8初期版では使用不可)
 1B4355{30-37}H <ESC>"CU{0-7}" 背景色のみ指定 (\ Color ,{0-7} 相当)
 <ESC>'C'の後は必ず2文字指定します。'U'が変更なしです。
 <ESC>"CUU" は文法上可能ですが、意味がありません。

1B50H <ESC>'P' Hard Copy
 1B5031H <ESC>"P1" 濃淡付ハードコピー
 1B5032H <ESC>"P2" ドットbyドットハードコピー

1B2AH <ESC>'*' Clear Screen
 1B2A30H <ESC>"*0" 画面消去(\ Cls 0 相当)
 マニュアルには書いてませんが、'0'の部分は読み飛ばしてるだけなので、実は何でもよいです。
 アプリケーションプログラムからは <ESC>"*0" を使うよう推奨されています。

1B3DH <ESC>'=' Cursor Address
 1B3D{20-38}{20-6F}H <ESC>"={ -8}{ -o}" カーソル・アドレッシング
 ADM-3A等と同様、ROW first(Y座標が先)です。
 上記 <CTRL>'R' とは逆なので変換時にご注意。

1B6EH <ESC>'n' Kanji Display in JIS Code
 1B6E jjjj jjjj jjjj ... jjjj 0FH <ESC>'n' JISコード列 <CTRL>'O'
 FM-8 2nd版以降で追加された機能です。

4.2.1 漢字表示について各バージョンの違いを見てみましょう。

CPM7_KANJI
CPM8_MSA_KANJI
CPM8_2ND_KANJI
CPM77_SELCODE_AUTOEXEC

上記の他、拡張BDOSコールによっても漢字が可能です。FM-8版のCP/Mに添付されている KANJIデモ(FM-8)は、その方式を用いています。 (推奨されていない出力方式のため、詳細は省略します。)

4.3 FM-CP/M のメモリマップ
                     FM-8 2nd版                        FM-8 2nd版
       FM-8              FM-7版          FM-77版  FM-7版、FM-77版
       初期版        56K CP/M時       56K CP/M時       60K CP/M時

0000 -+------+   0000 -+------+   0000 -+------+   0000 -+------+
      |WORK  |         |WORK  |         |WORK  |         |WORK  |
0100 -+------+   0100 -+------+   0100 -+------+   0100 -+------+
      |TPA   |         |TPA   |         |TPA   |         |TPA   |
C400 -+------+   C400 -+------+   C400 -+------+         |      |
      |CCP   |         |CCP   |         |CCP   |         |      |
CC00 -+------+   CC00 -+------+   CC00 -+------+         |      |
      |BDOS  |         |BDOS  |         |BDOS  |   D400 -+------+
DA00 -+------+   DA00 -+------+   DA00 -+------+         |CCP   |
      |BIOS  |         |BIOS  |         |BIOS  |   DC00 -+------+
DE00 =+======+   DE00 =+======+   DE00 =+======+         |BDOS  |
      |BIOS09|         |BIOS09|         |BIOS09|   EA00 -+------+
      |      |         |      |         |      |         |BIOS  | ↑ココより上はZ80(8080)のコード
      |      |         |      |         |      |   EC80 =+======+ ===============================
      |      |         |      |   F000 -+------+         |BIOS09| ↓ココより下は6809のコード
      |      |   F100 -+------+         |      |         |      |
F2D8 -+------+         |      |         |      |   F2D8 -+------+
      |FBIOS |         |FBIOS |         |FBIOS |         |FBIOS |
FC00 -+------+   FC00 -+------+   FC00 -+------+   FC00 -+------+
      |I/O   |         |I/O   |         |I/O   |         |I/O   |
FE00 -+------+   FE00 -+------+   FE00 -+------+   FE00 -+------+
      |BOOT  |         |BOOT  |         |BOOT  |         |BOOT  |
FFFF -+------+   FFFF -+------+   FFFF -+------+   FFFF -+------+
4.4 FM-CP/M のディスクフォーマット
4.4.1 FM-CP/M のディスクフォーマットです。(5/3.5inch 2D の場合です。)

セクタ      1 2 3 4 5 6 7 8 9 101112131415161 2 3 4 5 6 7 8 9 10111213141516
           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
トラック0  |IPL|      CCP      |          BDOS             |      BIOS     |
           +---+---------------+---------------------------+---------------+

           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
トラック1  |       BIOS        |            BIOS               |    空き   |
           +-------------------+-------------------------------+-----------+
           60K CP/M時ココまで ->           56K CP/M時ココまで ->

           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
トラック2  |          Directory            |        data and program       |
           +-------------------------------+---------------+---------------+

           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
トラック3  |                      data and program                         |
     〜39  +---------------+---------------+---------------+---------------+

(1)物理的なフォーマット
上の方にも書いてますが、トラック0、1はセクターインターリーブなし、
トラック2〜39はセクターインターリーブ(ファクター=2)がかかっています。)
cpm-sectorid-1
(2)論理的なフォーマット
トラック0、1はIPL及びCP/M本体が格納されるシステム領域です。
トラック2のサイド0がディレクトリ領域、トラック2のサイド1以降がデータ領域です。
ファイルはF-BASICと同様、8セクタx256バイト=2Kバイトの単位で管理されています。
フォーマット直後には、4 x 38 - 2 = 150 ブロック = 300KB の空き容量があります。

これを実現するための DPB は次のようになります。
*     SPT    BSH  BLM  EXM  DSM    DRM    AL0 AL1  CKS    OFF
xxxxH 0040H, 04H, 0FH, 01H, 0097H, 007FH, C0H,00H, 0020H, 0002H  5'FDD

各項目の意味は次のとおりです。

SPT: Records Per Track
BSH: Block Shift: 128 * 2^BSH
BLM: Block Mask: 128 * (BLM + 1)
EXM: Extent Mask
DSM: Number of blocks - 1
DRM: Number of directory entries - 1
AL0: AL0 directory bitmap
AL1: AL1 directory bitmap
CKS: Size of checksum vector
OFF: Reserved tracks

FMシリーズのCP/Mと、NEC PC-8001/8801シリーズのCP/Mは、上記のパラメタが一致しているため、
相互にDISKを交換しても正しくファイルをアクセス(読み書き)することができます。
一見、当たり前のような話ですが、実はこれは大変めずらしいことなのです。
CP/Mの世界では、標準フォーマットは8インチの1S(片面単密度)のものしか規定されておらず、
それ以外のメディアについては、移植する各社が勝手に決めて流通していたのでした。
なので、不特定機種向けのソフトウェアの販売は8インチ 1Sフォーマットで提供するのが
普通でした。

では、なぜFMシリーズとNEC PC-8001/8801シリーズのCP/Mのフォーマットが一致していたかと
言うと、MicroSoftware Associates(MSA) という会社が両方のCP/Mの移植に深く関わっていた
からに他なりません。(PC用は自主開発、FM用は共同開発もしくは委託開発と思われる。)

# 初出時、事実に基づかない記述になっていましたので修正しました。すいません。

しかしこの互換性は、残念ながら 5インチ 2D版の CP/M-80 で途絶えてしまいます。
CP/M-86 の時代になると各社それぞれの思惑でフォーマットが選定されたため非互換に
戻ります。DPB、DPH を BIOS側に持っている欠点が露呈しています。IDセクタ等に入れる
方式であればむしろフレキシブルなフォーマットで便利なはずなのに残念なところです。
MS-DOS は最初からフォーマットを規定してたので互換問題は発生しませんでした。
普及の一助になっていると予想されます。

CP/Mでは、STAT DSK: コマンドにより、上記のパラメタを確認することができます。
cpm_fm8_msa_dsk
pc8801ma_cpm_msa_dsk
4.4.2 Windows とのファイル交換(CP/M for X1 DiskExplorer のご紹介)

CP/M Disk のイメージファイル(.D88 or .2D)に対して Windows のファイルシステムと
やりとりする便利なツールが開発されていますのでご紹介します。
ひっそりX1 さんのサイトにある、CP/M for X1 DiskExplorer です。 名称の通り、本来は X1用のCP/M Diskのイメージファイル用なのですが、 若干の工夫で PC-8001/8801用CP/M、FM-CP/M の 5インチ 2D フォーマットの イメージファイルでも使う事ができ、非常に便利です。 (1) CP/Mイメージファイル→Windowsファイルシステム  特に問題なくCP/Mイメージファイルから、当該のファイルを取り出すことができます。 (2) Windowsファイルシステム→CP/Mイメージファイル  X1用CP/M と、PC-8001/8801/FM用CP/M の微妙なディスクフォーマットの違い(後述)  により、ディレクトリ領域(の後半)を破壊する可能性がありますので、下記のブランク  ディスクイメージを使用してください。(.2D、.D88、.D77 の3種類入れてあります。)  CP/M for X1 DiskExplorer用Blank Diskイメージ
説明:X1用CP/M と、PC-8001/8801/FM用CP/M の微妙なディスクフォーマットの違い トラック0、1の違いは問題とならないのですが、トラック2において、X1用CP/Mでは 下記の通りディレクトリ領域が PC/FM用と比較し半分になっています。このため、 X1用CP/M 及び CP/M for X1 Explorer では トラック2、セクタ 9-16 をデータ領域 と誤解して書き込んでしまう事になります。 上記ブランクディスクでは、DUMMYファイル にてこの領域をリザーブしてますので、 X1用CP/M、CP/M for X1 Explorer、PC/FM用CP/M で共通に使えるようになっています。 X1用CP/M のディスクフォーマットです。(5inch 2D の場合です。) セクタ 1 2 3 4 5 6 7 8 9 101112131415161 2 3 4 5 6 7 8 9 10111213141516 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ トラック0 |i| CCP | BDOS | BIOS | +-+---------------+---------------------------+-----------------+ | IPL info +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ トラック1 | BIOS | 空き | +---------------------+-----------------------------------------+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ トラック2 | Directory | data and program | +---------------+---------------+---------------+---------------+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ トラック3 | data and program | 〜39 +---------------+---------------+---------------+---------------+

4.5 \.COMコマンド

それでは、FM-CP/Mの特長のひとつである \.COM コマンドについて見ていきましょう。
マニュアルによれば、F-BASICにおけるコマンドのいくつかのサブセットを提供する、とあります。
(あまりそうする必然性はないと思うのですが...)
重要:この \.COM コマンドは、60K版のシステムでは使用できません。

CPM77_CONSOLE
CPM77_COLOR
CPM77_CLS
CPM77_KEY
CPM77_KEY2
CPM77_CONSOLE2
CPM77_CONSOLE3

各機種、バージョン毎の\コマンドサポート機能一覧表です。
FM-8初期版 FM-8 2nd版 FM-7 FM-77 FM-11
COLOR △(0-7)
CONSOLE 第1,2パラメタ ×
第3パラメタ ×
第4パラメタ
CLS
HARDC ×
DSKINI × × × ×
BUBINI × × × ×
WIDTH × × ×
KEY
KEY LIST
CLOCK ON × × × ×
CLOCK OFF × × × ×
TIME × × × ×
4.6 MODSYSコマンド
FM-CP/Mの特徴のひとつである、MODSYSコマンドについて解説します。
このコマンドは単独で使われることはなく、CP/M標準コマンドの
MOVCPM や FM-CP/M 用のSYSGENコマンドと組み合わせて使用されます。
ですので、まずは MODSYSコマンドと関連の深い SYSGENコマンドと
MOVCPMコマンドから見て行きます。(遠まわりご容赦)

# MODSYSはFM-8用2nd Version以降のFM-CP/Mに搭載されているコマンドです。

4.6.1 SYSGENコマンド

FM-CP/MのSYSGENコマンドは非常に単純な機能のみ実装されています。
(1)指定されたドライブのトラック0、トラック1をメモリ内に読み込む。
   FM-CP/Mでは、トラック0、トラック1にIPL,CP/M本体,BIOSが格納
   されています。
                       +------+
    +---+              |      |
    | O | → SYSGEN → |MEMORY|
    +---+              |      |
                       +------+

(2)メモリに格納されたIPL,CP/M本体,BIOSを指定されたドライブの
   トラック0、トラック1に書き込む。
                       +------+
    +---+              |      |
    | O | ← SYSGEN ← |MEMORY|
    +---+              |      |
                       +------+

  IPL,CP/M本体,BIOSを格納する領域は固定されています。

            |        |
       100 -+--------+
            |SYSGEN  |
       780 -+--------+
            |IPL     | ↑
       980 -+--------+ |
            |CP/M本体| |Track 0, 1 のデータ
           -+--------+ |
            |BIOS    | ↓
           -+--------+
            |        |

上記2つの機能は連続で実行することもできますし、どちらか片方だけ
実行することも可能です。(1)と(2)を連続で実行した場合には、トラック0、
トラック1のコピーをしたことになります。(事前に転送先のフロッピー
ディスクはフォーマットしてあることが前提です。)
話が反れますが、FM-CP/Mのフロッピーディスクのバックアップを取る際に
は、トラック0、トラック1のコピーは上記SYSGENコマンドで、トラック2
以降は PIP A:=B:*.* コマンドで実行するのが一般的です。
(しかしこの方法ではシングルドライブだとコピーできませんので、FM-7用
CP/Mでは SDCOPY というバックアップコマンドが用意されました。)

SYSGENコマンドでドライブA:のトラック0、1をドライブB:にコピーした例
を示します。
CPM8_2ND_SYSGEN

4.6.2 MOVCPMコマンド

Z80(8080)のコードはリロケータブルでないため、メモリ容量に合わせてCP/Mの
本体(CCP+BDOS+BIOS)にパッチ当てしてメモリ位置を変更する際に使用するコマ
ンドです。ただし BIOS に関しては Intel MDS-800 専用になっているため、
他の機種では使えません。
FM-CP/M では Digital Research社から供給される標準版の MOVCPM が添付され
ており、CCP と BDOS に対するパッチのみが有効です。
ちなみに CP/M 2.2 のOriginalのメモリサイズは20KBです。

        Original
        20K CP/M         56K CP/M         60K CP/M

  0000 -+------+   0000 -+------+   0000 -+------+
        |WORK  |         |WORK  |         |WORK  |
  0100 -+------+   0100 -+------+   0100 -+------+
        |TPA   |         |TPA   |         |TPA   |
  3400 -+------+         |      |         |      |
        |CCP   |         |      |         |      |
  3C00 -+------+         |      |         |      |
        |BDOS  |         |      |         |      |
  4A00 -+------+         |      |         |      |
        |BIOS  |         |      |         |      |
  4FFF -+------+         |      |         |      |
        |      |         |      |         |      |
        |      |   C400 -+------+         |      |
        |      |         |CCP   |         |      |
        |      |   CC00 -+------+         |      |
        |      |         |BDOS  |   D400 -+------+
        |      |   DA00 -+------+         |CCP   |
        |      |         |BIOS  |   DC00 -+------+
        |      |   DFFF -+------+         |BDOS  |
        |      |         |      |   EA00 -+------+
        |      |         |      |         |BIOS  |
        |      |         |      |   EFFF -+------+
        |      |         |      |         |      |
  FFFF -+------+   FFFF -+------+   FFFF -+------+

・再配置可能なサイズは4KB単位でなく1KB単位で設定可能です。
  実際に、他のメーカー製PCで57K CP/Mを発売していた例があります。
・BIOSについては Intel MDS-800 専用のものが生成され、他の機種では
 使えないので、他のプログラムで対処する必要があります。
 (そこで登場するのがMODSYSです。)

MOVCPMコマンド実行例

(1)
  A>MOVCPM 60

(2)
  A>MOVCPM 60 *

(1)は、メモリサイズ60KB用に再配置後、CP/Mを再起動します。
前述の通り、MOVCPM で生成される BIOS は Intel MDS-800
専用となっているため、他の機種では確実に暴走します。

# NEC製の PC-8001/8801用CP/M では、標準BIOS ではなく NEC製BIOS
# に関してもリロケートしてくれるそうです。また、(1)の書式であっ
# ても (2)の書式として扱われ、再起動はしないそうです。(TF様情報)

(2)は、メモリサイズ60KB用に再配置して、それをメモリ上に残したまま、
コマンドラインに戻ります。通常はこの使い方になります。

下記は、Original CP/M(20K)に対し MOVCPM を実行した場合のメモリ
マップです。CCP'、BDOS'、BIOS'は再配置後のものを示しています。

                        (1)              (2)
        Original         MOVCPM 56        MOVCPM 56 *
        CP/M             実行後           実行後

  0000 -+------+   0000 -+------+   0000 -+------+
        |WORK  |         |WORK  |         |WORK  |
  0100 -+------+   0100 -+------+   0100 -+------+
        |TPA   |         |MOVCPM|         |MOVCPM|
        |      |   0980 -+------+   0980 -+------+
        |      |         |      |         |CCP'  |
        |      |         |      |        -+------+
        |      |         |      |         |BDOS' |
        |      |         |      |        -+------+
        |      |         |      |         |BIOS' |
        |      |         |      |        -+------+
        |      |         |      |         |      |
  3400 -+------+         |      |   3400 -+------+
        |CCP   |         |      |         |CCP   |
  3C00 -+------+         |      |   3C00 -+------+
        |BDOS  |         |      |         |BDOS  |
  4A00 -+------+         |      |   4A00 -+------+
        |BIOS  |         |      |         |BIOS  |
        |for   |   C400 -+------+         |for   |
        |20K   |         |CCP'  |         |20K   |
        |CP/M  |   CC00 -+------+         |CP/M  |
        |      |         |BDOS' |         |      |
        |      |   DA00 -+------+         |      |
        |      |         |BIOS' |         |      |
        |      |         |for   |         |      |
        |      |         |56K   |         |      |
        |      |         |CP/M  |         |      |
  FFFF -+------+   FFFF -+------+   FFFF -+------+

さて、既にお気付きの通り SYSGEN コマンドがトラック0、トラック1を
読み込むメモリ領域と、上記MOVCPMコマンド(2)がCP/M本体を再配置後
に格納するメモリ領域は一致しています。
そこで登場するのが本題のMODSYSコマンドになります。

4.6.3 MODSYSコマンド

今風に言うとCONFIGコマンドと呼んだ方がしっくり来るコマンドです。
上述のSYSGENコマンド、MOVCPMコマンドと組み合わせてCP/Mシステム
を再構成します。主な用途は次の通りです。

(1)メモリサイズ変更を伴わない再構成
   (A) 320KBドライブシステムから、1MBドライブシステムを構成する。
   (B) 1MBドライブシステムから、320KBドライブシステムを構成する。
   (C) FM-77用CP/Mシステムから、FM-7用CP/Mシステムを構成する。
   (D) デフォルトのファンクションキーを変更する
   (E) 320KBドライブのステップレートを変更する
   (F) キャラクターコードの設定を変更する

(2)メモリサイズ変更を伴う再構成
   (G) 56K CP/Mシステムから、60K CP/Mシステムを構成する。

各機種用のCP/Mで設定できる項目が異なっています。
FM-7,FM-77版CP/Mでは設定項目が増えたため、MODSYSコマンドも肥大化
しています。780H からのシステム格納領域を避けるよう、MODSYS.COM
及び MODSYS.OVL という名前で分割ロードするようになっています。
FM-8初期版 FM-8 2nd版 FM-7 FM-77 FM-11
(A)56K 1MB CP/M生成 × ×
(B)56K 320KB CP/M生成 ×
(C)FM-7 CP/M生成 × × ×
(D)PF KEY設定 × ×
(E)ステップレート × × × ×
(F)キャラクタコード × × × ×
(G)60K CP/M生成 × ×
(A),(B),(C),(G)のケースでは BIOS(Z80)、BIOS09、FBIOS を差し替えるため、
メモリ上に格納されているCP/M本体に加えて次のファイルを読み込みます。

     FM-8用        FM-7用        FM-77用
---------------------------------------------
(A)  FMCPM568.COM  FMCPM568.SYS
(B)  FMCPM565.COM  FMCPM565.SYS
(C)                              FM7CPM80.SYS
(G)  FMCPM605.COM  FMCPM605.SYS  FMCPM605.SYS

ファイルの構成とロードアドレス

                               |      |
                          100 -+------+
                               |MODSYS|
                               |  .COM|
     FMxxxxファイル       780 -+------+
                   +---->      |IPL   | <----- SYSGEN でロードされた
   0 -+------+     |      980 -+------+        IPL は上書きされる
      |IPL   |-----+           |(CCP) | <--+ 
 200 -+------+                -+------+    +-- SYSGEN または MOVCPM にて
      |BIOS80|-------+         |(BDOS)| <--+   あらかじめ格納しておく
 x00 -+------+       |   1F80 -+------+
      |BIOS09|-----+ +-->      |BIOS80|
 y00 -+------+     |     xx80 -+------+
      |FBIOS |---+ +---->      |BIOS09|
 z00 -+------+   |       yy80 -+------+
                 +------>      |FBIOS |
                         zz80 -+------+
                               |      |
                         6000 -+------+
                               |MODSYS| <----- FM-7版、FM-77版のみ
                               |  .OVL|
                         67FF -+------+
                               |      |

実行方法は(1)と(2)で異なります。

MODSYSコマンド実行例(1)

  A>SYSGEN
  A
  A>MODSYS
  ...
  A>SYSGEN
  B

MODSYSコマンド実行例(2)

  A>MOVCPM 60 *
  A>MODSYS
  ...
  A>SYSGEN
  B
CPM8_2ND_MODSYS565
CPM8_2ND_MODSYS568
CPM8_2ND_MODSYS605
CPM7_MODSYS565
CPM7_MODSYS568
CPM7_MODSYS605
CPM77_MODSYS56K
CPM77_MODSYS60K
CPM77_MODSYSFM7

4.7 FM-CP/M デモ
FM-8 CP/M2ndバージョンデモKANJIデモ(FM-8)09DEMO

4.7.1 FM-8用CP/M 2ndバージョンデモ

CPM8_2ND_DEMO0
CPM8_2ND_DEMO1
CPM8_2ND_DEMO2
CPM8_2ND_DEMO3
CPM8_2ND_DEMO4
CPM8_2ND_DEMO5
CPM8_2ND_DEMO6
CPM8_2ND_DEMO7
CPM8_2ND_DEMO8
CPM8_2ND_DEMO9
CPM8_2ND_DEMOA
CPM8_2ND_DEMOB

4.7.2 KANJIデモ(FM-8)
FM-8 CP/M2ndバージョンデモKANJIデモ(FM-8)09DEMO

cpm-kanji-1
cpm-kanji-2
cpm-kanji-3
cpm-kanji-4
cpm-kanji-5
cpm-kanji-6

4.7.3 09DEMO
FM-8 CP/M2ndバージョンデモKANJIデモ(FM-8)09DEMO

cpm-09demo8-0
cpm-09demo8-1
cpm-09demo8-2
cpm-09demo8-3
cpm-09demo8-4

cpm-09demo8-7
cpm-09demo77-0
cpm-09demo77-2
cpm-09demo77-3
cpm-09demo77-4

4.8 参考文献

82SM-000031-1 FM-7 CP/M-80 操作手引書 1982年12月(富士通)
82SM-000031-2 FM-7/NEW7 CP/M-80 操作手引書 1984年7月(富士通)
83SM-000041-2 FM-11 CP/M-80 操作手引書 1983年5月(富士通)

謝辞:本ページの各表の作成にはThinkさんのCSV→Table変換サイトのお世話になりました。 ありがとうございました。
謝辞:福井利夫様、MOVCPM及びPC-8001/8801mkII用CP/MのBIOS 及びディスクフォーマットに関する情報、ありがとうございました。


F-BASIC詳細編を覗いてみる F-BASIC詳細編(その2:デモ画面集)を覗いてみる
FM77AVシリーズ システムディスク編を覗いてみる
FM77AVシリーズ デモ・入門ディスク編を覗いてみる
CP/M-80編を覗いてみる
OS-9編を覗いてみる
Flex編を覗いてみる
F-BASIC ファイルシステム(およびその上位互換)上に構築されたOS、開発システム
番外編(その1:ナウシカベンチマークの謎)を覗いてみる
番外編(その2:勝手に誤記修正編)を覗いてみる
番外編(その3:MMU考察)を覗いてみる
番外編(その4:FM-77 謎のS1スイッチ)を覗いてみる
番外編(その5:FM-7,8シリーズのROM一覧)を覗いてみる
番外編(その6:FM-77用拡張メモリ他について)を覗いてみる
緊急特集:MB22603の秘密 を覗いてみる
緊急特集2:FM-8ブートROMの秘密 を覗いてみる
超番外編:レベル3BASICとF-BASIC を覗いてみる
入り口ページに戻る


ご意見、ご要望はこちらまで(笑)
thasegaw@hotmail.com