機種 | 型格 | 内容 | 価格 | 発売時期 |
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