番外編その3:6809用MMU(Memory Management Unit)考察(by はせりん)


6809システムにおけるMMUといえば、本家モトローラ社のMC6829が有名ですが、
実際に使われた事例は少ないようです。各社のPCでは、似たようなスペックで
独自のMMUが構築されています。それらの違いについて、調べてみました。

MC6829Positron 9000FM-11FM-77, FM77AVMB-S1CoCo3Dragon BetaGIMIX 6809 III

MMUハード 発表年月 Task
Block
Size
アドレス
空間
最大搭載
メモリ
System/
User
Mode
速度 OS-9
Level2
備考
MC6829/68A29/68B29 1979年? 4 2KB 2MB -- あり 1〜2MHz 8ケまでカスケード接続により
32Task切り替え
MC6829搭載機
Positron 9000 1982年10月 4
(32)
2KB 512KB 512KB あり 1MHz
(2.0MHz)
SC67476(MC68B29)を最大8個搭載
独自MMU搭載機
FM-77 (+400Line Set)
FM-77L4
1984年5月 4 4KB 256KB 256KB なし 1.6MHz MB8149-45(4x1Kwordメモリ)x2
FM77AV
FM77AV20
1985年10月 4 4KB 256KB 192KB なし 1.6MHz MB8149-45(4x1Kwordメモリ)x2
FM77AV20EX 1987年11月 8 4KB 256KB 192KB なし 2.0MHz MB8149-45(4x1Kwordメモリ)x2
FM77AV40
FM77AV40EX
FM77AV40SX
1986年10月 8 4KB 1MB 960KB なし 1.6MHz
(2.0MHz)
MB8149-45(4x1Kwordメモリ)x2
FM-11 6809CPUカード 1982年11月 16 4KB 1MB 1MB なし 2MHz MB8149-45(4x1Kwordメモリ)x2、
SRAMと兼用
MB-S1 1984年5月 1 4KB 1MB 560KB あり 2MHz × 74S189(4x16wordメモリ)x2
MB-S1 (+OS-9カード) 1985年3月 64 4KB 1MB 560KB あり 2MHz HM6148HP-45(4x1Kwordメモリ)x2
Tandy Color Computer 3 1986年7月 2 8KB 512KB 512KB なし 1.78MHz ACVC(GIME) LSI内部
Dragon Beta(128) 1984年頃(未発売) 16 4KB 1MB 768KB なし 2MHz SRAM
GIMIX 6809 CPU III 1983年? 8 2KB 1MB 1MB あり 2MHz 4x1Kwordメモリ x3
Write Protect, Unallocated Trap

# こうして見ると、完璧なのはひとつもありません。(笑)
# MC6829 は Task切り替え数少ないし。供給が少なく価格も高い。
# FM-77系は論外として、FM-11はTask数が今の倍あって、System/User
# の切り替えがあればベストでしたね。
# MB-S1は最大搭載メモリとのバランスが悪い。何よりハード的なタスク
# 切り替え機構が実装されていないため、素のままではOS-9 Level2を
# 動かすことができず、ハード改造が必要な点がNGです。
# CoCo 3 は Block Size 8KB でよく頑張ってたと思います。
# OS-9 Level2的には、タスク切り替えが2つというのが最低ラインだったようです。

MC6829の接続イメージ図(一部簡略化しています)

        Task
        切り替え
   +--------+----------------+
   |        |                |
   |        V                |
   |    +-------+  +------+  |
   |    |Address|->|      |  |
   |    | Decode|->|      |--/-> PA20
+----+  +-------+  |      |--/-> PA19
|    |-----BS----->|      |--/-> PA18
|    |-----BA----->|      |--/-> PA17
|    |             |MC6829|--/-> PA16
|    |-----A15---->|      |--/-> PA15
|6809|-----A14---->|      |--/-> PA14
|    |-----A13---->|      |--/-> PA13
|    |-----A12---->|      |--/-> PA12
|    |-----A11---->|      |--/-> PA11
+----+             +------+

# アドレス空間2MBなのでPA20まであります。アプリケーションノートに、
# このPA20信号を各ブロック毎の書き込み許可信号に使う例が出ています。
# (その場合はアドレス空間は1MB)

レジスタマップ (ベースアドレスは一例で、物理アドレス上の最上位ブロック
のどこかに配置します。)

         76543210
  1FF800       ** PA20-19 for Block 0($0000-$07FF)
  1FF801 ******** PA18-11 for Block 0($0000-$07FF)
  1FF802       ** PA20-19 for Block 1($0800-$0FFF)
  1FF803 ******** PA18-11 for Block 1($0800-$0FFF)
  1FF804       ** PA20-19 for Block 2($1000-$17FF)
  1FF805 ******** PA18-11 for Block 2($1000-$17FF)
    --      --          --         --
  1FF83E       ** PA20-19 for Block 31($F800-$FFFF)
  1FF83F ******** PA18-11 for Block 31($F800-$FFFF)
  1FF840      *** Key Value Register for MMU0
  1FF841      *** Key Value Register for MMU1
  1FF842      *** Key Value Register for MMU2
    --      --          --         --
  1FF847      *** Key Value Register for MMU7
  1FF848        * System/User Flag (Read Only)
  1FF849      *** Fuse Register
  1FF84A    ***** Access Key
  1FF84B    ***** Operate Key (Current Task)
  1FF84C          Reserved
    --      --          --         --
  1FF87F          Reserved

# この通り、貴重なI/O空間をなんと128バイトも占めてしまいます。
# ただし、カスケードして8個接続しても128バイトで済むような設計に
# なっています。そんな工夫するより、MC6829 1個で32タスクまで管理
# できるようにしろや、と言いたくなりますが。

# リセット時にはすべての論理ブロックが最上位ブロックを指します。
# 従ってリセットベクタもこの最上位ブロック内を指すようにします。

# これらのレジスタはSystemモードでしか書き換えることができません。
# MC6829からはS/U信号は出力されていないので、デバッグは大変であった
# と予想されます。その点MB-S1は基板上に出てるので安心です。

# Task0 がSystem Taskに、Task1 がDMA Taskに予約されています。
# 従って、どれか1つのMMUの Key Value が0になっている必要があります。
# MMU1個だと、ユーザータスクは2個までって事ですね。

# MC6829があまり流行らなかったのは、上記のような使いにくさも理由
# だったと思われます。(PC各社が自前で組んだのも頷けます。)

システムモード、ユーザーモード

  接続イメージ図の通り、MC6829は BA, BS信号を監視しており、CPUが
  何らかのVector Fetchを行うと、システムモードに遷移します。
  リセット解除後はもちろんシステムモードです。
  Fuseレジスタにカウントダウン値を設定し、0になったらユーザーモード
  へ遷移します。
  ちなみに、6809の BA, BS信号は次のような意味を持っています。

    BA=0 BS=0  通常サイクル
    BA=0 BS=1  ベクターフェッチ
    BA=1 BS=0  SYNC命令(割り込み待機中)
    BA=1 BS=1  HALTまたはBUS GRANT

System/User遷移タイミングチャート
                ______ _____________ ______ ... _________________________
  BA:BS         __00__X_____01______X__00__ ... ____00___________________
                ______ ______ ______ ______ ... _ ______ ______ ______ __
  Address       ______X_FFF4_X_FFF5_X______ ... _X______X______X______X__
                       ____________________ ... _______________
  S/U           ___U__X  S                           S         X___U_____
                ___________________________ ... _ ______ ______ _________
  Fuse          ___0_______________________ ... _X___2__X___1__X___0_____
                ______ ____________________ ... _______________ _________
  Task(内部信号)__02__X__00________________ ... ____00_________X__02_____
                ___________________________ ... _________________________
  Operating Key _________02________________ ... ____02___________________

参考文献:6809ハンドブック
1981年6月30日第1版第3刷発行
ISBN4-87148-250-2 C3055 \2800E
出版元:アスキー出版

<リンク集>

データシート:
しばらくリンク切れだったのですが復活したようです。
MC6829 Data Sheet MC6829 Data Sheet

MC6829の入手について:
eBayでは SC67476 という名称で出品されているようです。
MC68B29は一般売りされず特定顧客のみに販売された、というのは
この型番から察するに事実のようです。
裏面にちゃんと 6829 と印字されているようですが、未確認日本から買われてみた方もいらっしゃいます。
→はせりんも買ってみました!

世間には、この SC67476(MC68B29) を 65C02 のMMUとして使用してみた
人がいます。世間は広いです。
ここを参照

この他、MC6829に関する記事を見つけましたので、備忘録として載せておきます。
インターフェース 1982年8月号(CQ出版)、「最大2Mバイトまでメモリ空間を拡張できるMC6829の概要とMMU付きCPUボードの試作」
SC67476

英国Positron Computers Limited社 Positron 9000 

MC6829 搭載の市販システムが見つかりました!
Mike Miller @mikem_pg さんに教えていただきました。どうもありがとうございました。
こちらのページに写真がたくさん掲載されてますので参照願います。

さてこのマシン、SC67476(MC68B29)を1〜8個搭載可能というすごいマシンです。
出荷時期としてはFM-11よりちょい早い程度。(1982年10月)
CPUはMC6809の1MHz(Optionで2MHz)。
最大RAM搭載容量は512KB、ROMは最大で128KB位まで搭載可能で、
出荷時は何と OS-9 Level II を5個のROM(計40KB)に搭載、ということらしいです。

SC67476 はカスタム品のため、どこかにこれを使った製品があるはずだ、と気になっていたのですが、
これでようやく全てがつながりました。
私が購入したSC67476は英国のSellerさんでしたが、このPositron 9000用に在庫がたくさんあったのでしょうね。

FM77AVのMMU(MMR) イメージ図(実際の回路はもっと複雑です)
MB8149 x2ケ

        Task       MMR
        切り替え   設定
   +-------+---------+
   |       |         |
   |       V         V
   |    +-----+  +------+
   |    |MB113|->|      |  +-----+
   |    | T603|->|      |--|     |-> PA17
+----+  +-----+  |MB8149|--|LS367|-> PA16
|    |----A15--->|  x2  |--|     |-> PA15
|6809|----A14--->|      |--|     |-> PA14
|    |----A13--->|      |--|     |-> PA13
|    |----A12--->|      |--|     |-> PA12
+----+           +------+  +-----+

# MB8149のアドレス入力は10本ありますがそのうち6本しか使われていません。
# フルに使えば64タスクまで切り替え可能な潜在能力なのにもったいないです。
# FM-77(L4または400ラインセット)の場合は、上記のゲートアレイ(MB113T603)
# の部分が汎用ゲートになっているだけで機能的には同じです。

レジスタマップ (FMシリーズではI/O空間は論理アドレス上の$FD00〜$FDxxに配置
され、すべてのタスクからアクセス可能です。便利な反面危険です。)
FM77AV,FM77AV20,FM77AV20EXでほぼ共通です。(AV20EXのみセグメント数を8に増加
させたりMMR使用時に速度が落ちない設定が可能。)

       76543210
  FD80   ****** PA17-12 for Block 0($0000-$0FFF)
  FD81   ****** PA17-12 for Block 1($1000-$1FFF)
  FD82   ****** PA17-12 for Block 2($2000-$2FFF)
    --      --          --         --
  FD8F   ****** PA17-12 for Block 15($F000-$FBFF)
  FD90      o** Memory Segment Register (Current Task) 20EXのみ拡張MMR Enable時3bit有効
  FD93 *        MMR Enable
  FD94 o        拡張MMR Enable (これが 0 の時はFM77AVと同じ) 20EXのみ
  FD95     o    MMR高速モード (これが 1 の時はMMRでスピードダウンしない) 20EXのみ

FM77AV40/EXでは若干追加されます。

        Task       MMR
        切り替え   設定
   +-------+---------+
   |       |         |
   |       V         V
   |    +-----+  +------+  +-----+
   |    |     |->|      |--|     |-> PA19
   |    |不明 |->|      |--|     |-> PA18
   |    |     |->|      |--|     |-> PA17
+----+  +-----+  |MB8149|--|LS367|-> PA16
|    |----A15--->|  x2  |--|     |-> PA15
|6809|----A14--->|      |--|     |-> PA14
|    |----A13--->|      |--|     |-> PA13
|    |----A12--->|      |--|     |-> PA12
+----+           +------+  +-----+

       76543210
  FD80 ******** PA19-12 for Block 0($0000-$0FFF)
  FD81 ******** PA19-12 for Block 1($1000-$1FFF)
  FD82 ******** PA19-12 for Block 2($2000-$2FFF)
    --      --          --         --
  FD8F ******** PA19-12 for Block 15($F000-$FBFF)
  FD90      *** Memory Segment Register (Current Task)
  FD93 *        MMR Enable
  FD94 *        拡張MMR Enable (これが 0 の時はFM77AVと同じ)
  FD95     o    MMR高速モード (これが 1 の時はMMRでスピードダウンしない) 40EXのみ

FM-11のMMU(MMR) イメージ図(実際の回路はもっと複雑です)
MB8149 x2ケ

        Task       MMR
        切り替え   設定
   +-------+---------+
   |       |         |
   |       V         V
   |    +-----+  +------+
   |    |     |->|      |  +-----+
   |    |LS173|->|      |--|     |-> PA19
   |    |     |->|      |--|     |-> PA18
   |    |     |->|      |--|     |-> PA17
+----+  +-----+  |MB8149|--|LS244|-> PA16
|    |----A15--->|  x2  |--|     |-> PA15
|6809|----A14--->|      |--|     |-> PA14
|    |----A13--->|      |--|     |-> PA13
|    |----A12--->|      |--|     |-> PA12
+----+           +------+  +-----+
   |                ↑
   +----------------┘
                   SRAMとしてアクセス

# 10本あるMB8149のアドレス入力のうち、MMR用としては8本しか使われていません。
# しかしFM-11の6809CPUカードは非常に巧妙な設計となっており、残りの2本を使って
# $FC00〜$FC7F, $FE00〜$FFFDまでのRAMとして使っているのです。
#   MB8149のアドレスマップ
#   $000+--------------+
#       |     SRAM     | $FC00〜$FC7F
#   $080+--------------+
#       |     あき     |
#   $100+--------------+
#       |     MMR      | 16x16=256バイト
#   $200+--------------+
#       |     SRAM     | $FE00〜$FFFD
#   $3FD+--------------+

レジスタマップ (FMシリーズではI/O空間は論理アドレス上の$FD00〜$FDxxに配置
され、すべてのタスクからアクセス可能です。便利な反面危険です。)

       76543210
  FD80 ******** PA19-12 for Block 0($0000-$0FFF)
  FD81 ******** PA19-12 for Block 1($1000-$1FFF)
  FD82 ******** PA19-12 for Block 2($2000-$2FFF)
    --      --          --         --
  FD8F ******** PA19-12 for Block 15($F000-$FBFF)
  FD90     **** Memory Segment Register (Current Task)
  FD93 *        MMR Enable

MB-S1のMMU(Address Mapper) イメージ図(実際の回路はもっと複雑です)
74S189 x2ケ

                   Address  System/
                   Mapper   User
                   設定     切り替え
   +-----------------+--------+
   |                 |        |
   |                 V        V
   |             +------+  +-----+
   |             |      |--|     |-> PA19
   |             |      |--|     |-> PA18
   |             |      |--|     |-> PA17
+----+           |74S189|--|LS257|-> PA16
|    |----A15--->|  x2  |--| x2  |-> PA15
|6809|----A14--->|      |--|     |-> PA14
|    |----A13--->|      |--|     |-> PA13
|    |----A12--->|      |--|     |-> PA12
+----+           +------+  +-----+

# MB-S1の解説記事ではアドレスマップがたくさんあるように書いて
# ありますが、上図の通り1タスク分しかメモリマップがありません
# ので、切り替えの際にひたすら書き換えているようです。

OS-9カード装着時のMMU(Address Mapper) イメージ図(実際の回路はもっと複雑です)
HM6148HP-45 x2ケ
                   Address  System/
        Task       Mapper   User
        切り替え   設定     切り替え
   +-------+---------+--------+
   |       |         |        |
   |       V         V        |
   |    +-----+  +------+     |
   |    |     |->|      |     |
   |    |     |->|      |     V
   |    |     |->|      |  +-----+
   |    |LS174|->|      |--|     |-> PA19
   |    |     |->|      |--|     |-> PA18
   |    |     |->|      |--|     |-> PA17
+----+  +-----+  |HM6148|--|LS257|-> PA16
|    |----A15--->|  x2  |--|  x2 |-> PA15
|6809|----A14--->|      |--|     |-> PA14
|    |----A13--->|      |--|     |-> PA13
|    |----A12--->|      |--|     |-> PA12
+----+           +------+  +-----+

# OS-9カード装着の際は、74S189を引っこ抜いてケーブルでHM6148と
# 接続するという「荒業」を使っています。(MB-S1 model30/40/45 では
# 74S189はソケット実装されてるので「荒業」とは言えないのかもしれま
# せんが、model10/15/20/10AVでは基板に直付けのため日立のサービスマン
# の方が文字通り74S189を引っこ抜いてソケット実装に変更してくれた、
# との事です。)

レジスタマップ (物理アドレスの$EFブロック、$FFブロックに配置されて
います。)

        76543210
  EFE00 ******** PA19-12 for Block 0($0000-$0FFF)
  EFE01 ******** PA19-12 for Block 1($1000-$1FFF)
  EFE02 ******** PA19-12 for Block 2($2000-$2FFF)
    --      --          --         --
  EFE0F ******** PA19-12 for Block 15($F000-$FFFF)
  EFE10     **** Fuse Register
 (EFE11   ****** Segment Register (Current Task) ) ... OS-9カード実装時
  FFFEB      *   System/User Flag (Read Only)

# $EFE00〜$EFE11のレジスタは、システムモードでしかアクセスできません。
# System/Userの遷移タイミングチャートはMC6829とほぼ同じだと思います。
# 他の機種とは異なり、MMUを殺すことはできません。(厳密には、Level 3
# モードでは MMUは殺されていますが...)

  システムモードでは、Block14 と Block15 は固定のマップになります。
    Block 14($E000-$EFFF) = $84 (RAM)
    Block 15($F000-$FFFF) = $EF (ROM, I/O)

  リセット直後は各マップレジスタは不定のため、Block 14, 15以外は使用
  できません。まずは Block 15 に配置されたROM内ルーチンでマップ
  レジスタを初期化する必要があり、そのためシステムモードのマップ
  が一部固定になっているのだと思われます。

# MB-S1の OS-9 Level2 は、ユーザーモードで64KBフルに使える事を売り
# にしていましたが、システムモードでは $EFブロックが OS-9と関係ない
# ROMとI/Oで占められるためRAMは60KBちょっとしか使えないことになります。
# ちなみに S1-BASIC はフルタイムでシステムモードで動作しています。
# 素のままでは OS-9 Level2 が走らない S1で、果たしてユーザーモードを
# 使うソフトウェアが存在したのか、興味のあるところです。

参考文献:S1活用研究
昭和60年10月25日初版発行
雑誌61473-68 \2500
出版元:工学社

参考文献:MB-S1シリーズ OS-9操作手引書
1985年発行
発行元:日立製作所

参考文献:プロセッサ 1988年4月号
記事:P.107〜111 S1蘇生術「RAM512K搭載 OS-9ボードの製作」
著者:MITSさん
出版元:技術評論社

米国Tandy Radio Shack社 Color Computer 3のMMU(Address Mapper) イメージ図(実際の回路はもっと複雑です)
GIMEチップ

                 +-------------------------+
                 |                +------+ |
                 |                |      |-|-> RAS
                 | +-----+        |      |-|-> CAS
                 | |     |--PA18--|      |-|-> Z8
                 | |     |--PA17--|      |-|-> Z7
+----+           | | MMU |--PA16--|DRAM  |-|-> Z6
|    |----A15--->|-|     |--PA15--|Cont- |-|-> Z5
|6809|----A14--->|-|     |--PA14--|roller|-|-> Z4
|    |----A13--->|-|     |--PA13--|      |-|-> Z3
|    |           | +-----+        |      |-|-> Z2
|    |---A0-12-->|----------------|      |-|-> Z1
+----+           |                |      |-|-> Z0
                 |GIME            +------+ |
                 +-------------------------+

# 物理アドレスはGIMEチップの内部信号となっており、外部にはDRAMアクセス
# 用のRAS、CASに時分割された信号が出ています。

レジスタマップ (CoCoシリーズではI/O空間は論理アドレス上の$FF00〜$FFxxに配置
され、すべてのタスクからアクセス可能です。便利な反面危険です。)

       76543210
  FF90  *       MMU Enable
  FF91        * MMU Task Register
  FFA0   ****** PA18-13 for Task0, Block 0($0000-$1FFF)
  FFA1   ****** PA18-13 for Task0, Block 1($2000-$3FFF)
  FFA2   ****** PA18-13 for Task0, Block 2($4000-$5FFF)
    --      --          --         --
  FFA7   ****** PA18-13 for Task0, Block 7($E000-$FEFF)
  FFA8   ****** PA18-13 for Task1, Block 0($0000-$1FFF)
    --      --          --         --
  FFAF   ****** PA18-13 for Task1, Block 7($E000-$FEFF)

# アメリカ人が作ると、何でこんなにシンプルになるんだろう、っていう見本です。
# CoCo-3 の元である CoCo はさらにシンプルな作りで驚きますから。

米国GIMIX社 6809 CPU III Board のMMU(Address Mapper) イメージ図(実際の回路はもっと複雑です)
MB8149(相当品) x3ケ

        Task       MMR
        切り替え   設定
   +-------+---------+
   |       |         |
   |       |         V
   |       |     +------+  +-----+
   |       V     |      |--|     |-> UAM (UnAllocated Memory Trap)
   |    +-----+  |      |--|     |-> WPT (Write Protection Trap)
   |    |     |->|      |--|     |-> SST (Single Step Trap)
   |    | ??? |->|      |--|     |-> PA19
   |    |     |->|      |--|     |-> PA18
   |    +-----+  |MB8149|--|     |-> PA17
+----+           |(相当)|--| ??? |-> PA16
|    |----A15--->|  x3  |--|     |-> PA15
|6809|----A14--->|      |--|     |-> PA14
|    |----A13--->|      |--|     |-> PA13
|    |----A12--->|      |--|     |-> PA12
|    |----A11--->|      |--|     |-> PA11
+----+           +------+  +-----+


この製品はパソコンではなく、SS-50という規格のボード製品です。
このページで紹介している中では、一番まともなMMUかもしれません。
MC6829の不完全な部分をロジックゲートで補ったというか、安く再構成
したような感じです。メモリブロックのサイズは2KBで細かく管理できますが、
今となっては小さすぎてオーバーヘッドが大きいような気がします。

  UAM (UnAllocated Memory Trap)
    メモリが実装されていないことにするフラグです。
    この領域をアクセスするとTrapが発生します。
  WPT (Write Protection Trap)
    書き込み禁止にするフラグです。
    この領域にライトアクセスするとTrapが発生します。
  SST (Single Step Trap)
    この領域で命令を実行すると、1命令毎にTrapが発生します。

レジスタマップ (物理アドレスの$FEブロック、$FFブロックに配置されて
います。システムモードのみアクセス可能です。)

        76543210
  FE280 ***  *** UAM/WPT/SST Enable, Task Regsiter
  FF800 ***    * UAM,WPT,SST,,,,PA19 for Task 0, Block 0($0000-$07FF)
  FF801 ******** PA18-11             for Task 0, Block 0($0000-$07FF)
  FF802 ***    * UAM,WPT,SST,,,,PA19 for Task 0, Block 1($0800-$0FFF)
  FF803 ******** PA18-11             for Task 0, Block 1($0800-$0FFF)
    --      --          --         --
  FF83E ***    * UAM,WPT,SST,,,,PA19 for Task 0, Block 31($F800-$FFFF)
  FF83F ******** PA18-11             for Task 0, Block 31($F800-$FFFF)
    --      --          --         --
  FF9FE ***    * UAM,WPT,SST,,,,PA19 for Task 7, Block 31($F800-$FFFF)
  FF9FF ******** PA18-11             for Task 7, Block 31($F800-$FFFF)
  FFB00      *** Fuse Register

# なんとも贅沢なMMUです。$FF800から始まっているのはMC6829に合わせて
# いるのかもしれませんが、512バイト以上もアドレス空間を占めるなんて。

# ネットで拾ったユーザーマニュアルには、回路図はおろかプリント基板の
# パターン図まで掲載されています。この時代は大らかで良かった...

英国Dragon Data社 Dragon Beta のMMU(Address Mapper) 

Tandy社のCoCoクローンを作っていたDragon Data社が、独自に発展させたマシンです。
MC68B09Eを2個使うなど意欲的なマシンで、OS-9 Level 2も移植されていたようですが、
完成前に会社が倒産してしまい、陽の目を見なかったようです。合掌。

このマシンのMMUについては詳細情報収集中です。
FM-11並みのSPECを持ってはいるようです。
製品化されていたら良きライバルだったかも。(MB-S1がアレなので)

レジスタマップ (Dragon BetaではI/O空間は論理アドレス上の$FC00〜$FEFFに配置
され、すべてのタスクからアクセス可能です。便利な反面危険です。)

       76543210
  FCC0     **** Task Register (Current Task)
  FE00 ******** PA19-12 for Block 0($0000-$0FFF)
  FE01 ******** PA19-12 for Block 1($1000-$1FFF)
  FE02 ******** PA19-12 for Block 2($2000-$2FFF)
    --      --          --         --
  FE0F ******** PA19-12 for Block 15($F000-$FBFF, $FF00-$FFFF) 

MMU以外にも、中々特徴的な仕様を持ったマシンです。
・2つのCPUは、バスを共有している。すなわちメモリやIOとか
 すべてトランスペアレント。サイクルスチールしてるのか
 どうかは未確認。
・一方のCPUは、DMACとしてのみ動作。68B44を使えばもっと
 スマートにできるはずですが。
 (将来的には他の事をやらせる計画だったのかもしれませんが)
・ブートROMも共通なので、途中までは同じコードを走る。
 特定のIOレジスタのリード値に従い、メインCPUは本来のブート
 動作、DMA用CPUはスタック設定後にNMI待ちになる。
・DMAはFDCとのやりとりのみに使われており、FM-77の1MBフロッピー
 コントロールカード使用時のように、SYNC命令を使っている。

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

ご意見、ご要望はこちらまで(笑)
Copyright (C) 2019 by Haserin