| 機種 | 型格 | 内容 | 価格 | 発売時期 |
| 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 ┣MB2240? ┗SM07317-M111 |
Z80カード + CP/M-80(5インチ版) セット ┣Z80カード ┗CP/M-80 V2.2 L1.0(5インチ版) |
\35,000 | 1982年12月 |
| FM-77 | MB28021J ┣MB2240? ┗SM07317-M113 |
Z80カード + CP/M-80(3.5インチ版) セット ┣Z80カード(BSCサポートカード) ┗CP/M-80 V2.2 L2.0(3.5インチ版) |
\35,000 | 1984年6月 |
| FM-11 | MB28031 ┣MB2240? ┗SM07417-M211 |
Z80カード + CP/M-80(5インチ版) セット ┣Z80カード ┗CP/M-80 V2.2 L1.0(5インチ版) |
\45,000 | 1982年11月 |
| MB28032 ┣MB2240? ┗SM07417-M212 |
Z80カード + CP/M-80(8インチ版) セット ┣Z80カード ┗CP/M-80 V2.2 L1.0(8インチ版) |
\45,000 | 1982年11月 |
| 出版元 | 掲載誌 | 発行年月 | タイトル | 掲載ページ | 機種 | 作者・開発元 | ソース | ダンプ | パッチ | 備考 |
| 工学社 | I/O | 1985年4月 | EMX80 | 201 | FM-7/8 | 桂 英治氏 | ○ | ○ | ||
| 工学社 | I/O | 1985年6月 | [deBUG] EMX80 | 341 | FM-7/8 | 桂 英治氏 | ○ | RS232C対応、ソースレベルのパッチ | ||
| 工学社 | I/O | 1985年6月 | S1版 EMX80 | 320 | MB-S1 | 桂 英治氏 | ○ | |||
| ソフトバンク | Oh!FM | 1986年7月 | 63K CP/Mの制作 | 78 | FM-7/NEW7/77 | 中山 泰宏氏、橋本 直樹氏 | ○ |
| ↓ソフトウェア \ 実行ハードウェア→ | 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 | ○ | ◎ | ○ | ◎ | ◎ | × | ○ | ○ | ○ | ○ | ○ | × | ||
| 雑誌・書籍掲載のもの | ||||||||||||||
| EMX80 (60K CP/M) | − | ◎ | − | ◎ | ◎ | − | ○ | × | ○ | △ | × | × | ||
| Oh!FM版 63K CP/M | − | − | − | ◎ | ◎ | − | × | × | ○ | △ | × | × | ||
| ↓ソフトウェア \ 実行ハードウェア→ | 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: | × | ||
| 雑誌・書籍掲載のもの | ||||||||
| EMX80 (60K CP/M) | × | A: B: C: D: | × | A: B: C: D: | A: B: C: D: | × | ||
| Oh!FM版 63K CP/M | − | − | − | A: B: | A: B: | × | ||
| コード | 参考:ADM-3A機能 | FM-CP/Mにおける機能 | FM-8 初期版 |
FM-8 2nd版 | FM-7 | FM-77 | EMX80 60K |
Oh!FM版 63K |
FM-11 56K |
||||
| 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 Right(→) | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
| 1DH | <CTRL>'\' | - | Cursor Left(←) | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
| 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 | × | ○ | × | ○ | × | ○ | × | × | × | ○ |
| 1B54H | <ESC>'T' | - | Erase to End of Line | × | × | × | × | × | × | × | ○ | × | × |
| bit | 4 | 3 | 2 | 1 | 0 | |
| P | R | C | C | C | : P=Protect, R=Reverse, CCC=Color(0〜7) |
| bit | 5 | 4 | 3 | 2 | 1 | 0 | |
| I | B | R | C | C | C | : I=Intensity, B=Blink, R=Reverse, CCC=Color(0〜7) |
| ASCIIモード | 7bitモード | KANJIモード | |
| ASCII文字 | ○ | ○ | ○ |
| Parity付ASCII文字 | × | ○ | × |
| 半角カナ文字 | ○ | × | ○ |
| Escapeシーケンス+JIS漢字 | ○ | ○ | ○ |
| SHIFT-JIS漢字 | × | × | ○ |
| FM-11 CP/M | SELCODE K | SELCODE 7 |
| L1.0 1982年10月版 | ○ | × |
| L1.0 1983年1月版 | ○ | × |
| L1.0 1983年4月版 | ○ | × |
| L1.0 1983年8月版 | ○ | ○ |
| L1.1 1984年7月版 | ○ | ○ |
┏━━━━━━━━━━━━━━━━ FM-CP/M ━━━━━━━━━━━━━━━┓
FM-8 2nd版 FM-8 2nd版
FM-8 FM-7版 FM-77版 FM-7版、FM-77版 Oh!FM版
初期版 56K CP/M時 56K CP/M時 FM-11版 60K CP/M時 63K CP/M
0000 -+------+ 0000 -+------+ 0000 -+------+ 0000 -+------+ 0000 -+------+ 0000 -+------+
|WORK | |WORK | |WORK | |WORK | |WORK | |WORK |
0100 -+------+ 0100 -+------+ 0100 -+------+ 0100 -+------+ 0100 -+------+ 0100 -+------+
|TPA | |TPA | |TPA | |TPA | |TPA | |TPA |
C400 -+------+ C400 -+------+ C400 -+------+ C400 -+------+ | | | |
|CCP | |CCP | |CCP | |CCP | | | | |
CC00 -+------+ CC00 -+------+ CC00 -+------+ CC00 -+------+ | | | |
|BDOS | |BDOS | |BDOS | |BDOS | D400 -+------+ | |
DA00 -+------+ DA00 -+------+ DA00 -+------+ DA00 -+------+ |CCP | | |
|BIOS | |BIOS | |BIOS | |BIOS | DC00 -+------+ | |
DE00 =+======+ DE00 =+======+ DE00 =+======+ DE00 =+======+ |BDOS | | |
|BIOS09| |BIOS09| |BIOS09| |BIOS09| | | E000 -+------+
| | | | | | | | | | |CCP |
| | | | | | | | | | E800 -+------+
| | | | | | | | EA00 -+------+ |BDOS |
| | | | | | | | |BIOS | | |
| | | | | | | | EC80 =+======+ | |
| | | | | | | | |BIOS09| | |
| | | | | | EF00 -+------+ | | | |
| | | | F000 -+------+ | | | | | |
| | F100 -+------+ | | | | | | | |
F2D8 -+------+ | | | | | | F2D8 -+------+ | |
|FBIOS | |FBIOS | |FBIOS | |FBIOS | |FBIOS | F600 -+------+
| | | | | | | | | | |BIOS80| ↑ココより上はZ80(8080)のコード
FC00 -+------+ FC00 -+------+ FC00 -+------+ FC00 -+------+ FC00 -+------+ FC00 =+======+ ===============================
|Work | |Work | |Work | |Work | |Work | |BIOS09| ↓ココより下は6809のコード
FC80 -+------+ FC80 -+------+ FC80 -+------+ FC80 -+------+ FC80 -+------+ FC80 -+------+
|I/O | |I/O | |I/O | |I/O | |I/O | |I/O |
FE00 -+------+ FE00 -+------+ FE00 -+------+ FE00 -+------+ FE00 -+------+ FE00 -+------+
|BOOT | |BOOT | |WORK | |WORK | |BOOT | |BOOT |
FFFF -+------+ FFFF -+------+ FFFF -+------+ FFFF -+------+ FFFF -+------+ FE00 -+------+
FM-77版では、$FE00〜$FFDF を裏RAMに切り替えてディスクバッファやワークエリアとして使用しているため、
FM-7/NEW7/8 では使用できません。
4.3.1 FM-CP/M の BIOS 構造
次のような三層構造になっています。
BIOS80 と BIOS09 のやり取りは CPU の切り替えを伴うため一か所にまとめられています。
また、FBIOS は F-BASIC用のをほぼそのまま使ってるためやはりエントリが一か所です。
したがって、パケット変換とコマンド解釈的な処理を2度も行わなければならず、スループット
が若干低下していると言えます。(ベンチマーク結果でも同じ4MHz機と比較すると遅いです。)
FM-7/8シリーズでは、製品仕様上 Z80 CPU はハードウェアアクセスを保証していないので
I/O処理は全て 6809経由にしないといけないのと、せっかく作った FBIOS を使いまわししたい、
という2つの大きな理由があったのだと思われます。
実際に試してみると、Z80 CPU からもほとんどのハードウェアアクセスは問題ないようです。
この三層構造は必然的なものではなく、メンツを保つためのように見えます。
+--------------------------------------------------------------------------+
| BDOS/APPLICATION PROGRAM | Z80担当
| |
+----------------------------------+---------------------------------------+
|
+----------------------------------+---------------------------------------+
| BIOS80 | Z80担当
| |
+----------------------------------+---------------------------------------+
|
+----------------------------------+---------------------------------------+
| BIOS09 | 6809担当
| |
+----------------------------------+--------------------------------+ |
| | |
+----------------------------------+-------------------------------+| |
| FBIOS || |
+-----------+ || |
| BOOT ROM | || |
+-----+-----+--------+-----------+-------+-------+----------+------++---+--+
| | | | | | |
+-----+-----++-------+------++---+---++--+-++----+---++-----+------++---+--+
|Floppy Disk||バブルカセット||漢字ROM||BEEP||プリンタ||サブシステム||RS232C| ハードウェア
+-----------++--------------++-------++----++--------++--+------+--++------+
| |
+----+--++--+-----+
|Display||Keyboard|
+-------++--------+
・FM-CP/Mでは使用しない音声合成、アナログ、カセット関係は省略しています。
しかし依然としてコードは残っているため、貴重なメモリ空間を圧迫しています。
・図では表現しきれてませんが、
・割り込みも BIOS09 が担当しています。
・Floppy Diskに関しては、BOOT ROM で対応していないデバイスについては
FBIOSが直接ハンドリングします。
・BIOS09 はデバイスドライバ機能だけでなく、メモリ上の 6809コードを
実行して戻るサービス機能も持っています。(拡張BDOS機能のひとつ)
・純正のZ80カードでは、Z80 と 6809 の並行動作は行われないため、6809 が BIOS
処理をしている間は、Z80側は待たされます。
4.3.2 Oh!FM版 63K CP/M の BIOS 構造
FM-CP/M の BIOS と比較し、シンプルな構造になっています。
+--------------------------------------------------------------------+
| BDOS/APPLICATION PROGRAM | Z80担当
| |
+----------------------------------+---------------------------------+
|
+----------------------------------+---------------------------------+
| BIOS80 | Z80担当
| |
+--------------------------------+--------------+--------+-----------+
| | |
+--------------------------------+-----------+ | |
| BIOS09 | | | 6809担当
+-----+--------------------------+-------+---+ | |
| | | | |
+-----+-----+ | | | |
| BOOT ROM | | | | | 6809担当
+-----+-----+ | | | |
| x x | | | | x
+-----+-----++----+--++--+-++----+---++--+------+--++----+---++---+--+
|Floppy Disk||漢字ROM||BEEP||プリンタ||サブシステム||Keyboard||RS232C| ハードウェア
+-----------++-------++----++--------++-----+------++--------++------+
|
+---+---+
|Display|
+-------+
4.4 FM-CP/M のディスクフォーマット
4.4.1 FM-CP/M のディスクフォーマットです。(5/3.5inch 2D の場合です。)
<---------- SIDE 0 ------------><---------- SIDE 1 ------------>
セクタ 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 |空 |SST|空 |
+-------------------+-------------------------------+---+---+---+
60K CP/M時ココまで -> 56K CP/M時ココまで ->FM-11用>
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
トラック2 | Directory | data and program |
+-------------------------------+---------------+---------------+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
トラック3 | data and program |
〜39 +---------------+---------------+---------------+---------------+
・SSTの部分は、FM-11用のみ使われています。詳細は 4.4.3 FM-11 サブシステム セルフテスト機能 を参照してください。
(1)物理的なフォーマット
上の方にも書いてますが、トラック0、1はセクターインターリーブなし、
トラック2〜39はセクターインターリーブ(ファクター=2)がかかっています。)
(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は、5インチ 2Dのメディアについて 上記のパラメタが一致しているため、相互に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: コマンドにより、上記のパラメタを確認することができます。
4.4.2 FM-CP/M のディスクフォーマットです。(8inch 2D/5inch 2HD)
セクタ 1 2 3 4 5 6 7 8 9 1011121314151617181920212123242526
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
トラック0 | IPL | 空き |
サイド0 +-------+-------------------------------------------+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
トラック0 | CCP | BDOS | BIOS80|
サイド1 +---------------+---------------------------+-------+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
トラック1 | BIOS09 | FBIOS |
サイド0 +---------------------------------+-----------------+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
トラック1 | FBIOS | |SST| 空き |
サイド1 +-------+---+---+-----------------------------------+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
トラック2 | Directory | data and program |
サイド0 +-------------------------------+-------------------+
トラック2 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
サイド1 | data and program |
〜76 +---------------------------------------------------+
・トラック0、サイド0のみ、単密度でフォーマットされており、128byte/sectorとなっています。
先頭4セクタにIPLのみが書き込まれており、他のセクタは未使用です。
・トラック0、サイド1及びトラック1以降は倍密度フォーマットで、FM-CP/Mでは、256byte/sectorです。
・トラック2に配置されるDirectory Slotは、5インチ版と同じ128スロットでした。
ディスク容量が3倍強なのに、登録可能ファイル数が同じなので、ちょっと少ないかもです。
・SSTの部分は、 4.4.3 FM-11 サブシステム セルフテスト機能 を参照してください。
4.4.4 Windows とのファイル交換 CP/M Disk のイメージファイル(.D88 or .2D)に対して Windows のファイルシステムと やりとりする便利なツールがいくつか開発されていますのでご紹介します。 L3 Disk Explorer Sasaji さんの開発された、L3 Disk Explorer です。 元々は、名称の通り BML3/MB-S1用DISK-BASIC と Windows との間でファイル交換するツール としてリリースされてましたが、現在では F-BASIC、N88/N66-BASIC、MSX-BASIC/MSX-DOS、 X1用Hu-BASIC、MZ の S-BASIC、そして OS-9 for MB-S1/FM、FLEX for MB-S1/FM、CP/M for PC88/FM/X1、 MS-DOS for PC98/PCAT、他多種のディスクイメージと Windows との間でファイル交換が可能となっています。 D77Manager malikto999 さんの開発された、D77Manager です。 こちらは、FMシリーズに特化されており、F-BASIC、FM-CP/M、OS-9 for FM、FLEX for FM の ディスクイメージと Windows との間でファイル交換可能となっています。
CP/M for X1 DiskExplorer ひっそり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 の場合です。) <---------- SIDE 0 ------------><---------- SIDE 1 ------------> セクタ 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 +---------------+---------------+---------------+---------------+
| 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 | × | × | × | × | ○ | |
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:にコピーした例
を示します。
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
Copyright (C) 2019 by Haserin