#34 MSX2++のペリフェラル
はじめに
VDPとCPUの話は色々書いてきましたが、ではその他はどうなるの?という疑問を持つ方もいらっしゃると思いますので、今回はその辺について描いていこうと思います。
実際のところ、まだ決めきれていないところもあるので、ここに書き記すことで少しでも確定していけたらと思います。
Bus
本体内部は、従来の MSX は、Z80 の BUS がそのまま System BUS になっていましたが、これを高速な新しい 高速BUS に変えていきます。
複数のイニシエーター(マスター)が存在し、複数のターミネーター(スレーブ)が存在するバスです。競合が発生したらアービトレーションによって、優先度が高いイニシエーターから順にアクセスする構造にします。
Sound
PSG, SCC, DCSG, MSX-MUSIC(OPLL), MSX-AUDIO(OPL3), turboR PCM, MSX-MIDI, 1bit sound
非常に盛りだくさん。これは、既存の IP の I/F を、上記高速BUS に対応させて繋げるだけです。
2025年1月18日の品川でデモした FPGA MSX では、実際に PSG, SCC, OPLL,1bit sound が載って動作してました。
OPL3 は、OCM-PLD に既に入っているものがあるのでそれを使わせて頂く予定。
turboR PCM (OUTのみ) や MSX-MIDI (OUTのみ) も、OCM-PLD から改めて派生して使った OCM改の方で実現して動いていますので、そちらを利用する予定。
MSX-AUDIO の ADPCM や、OPL4 の ADPCM も入れたいところですが、それらも未定です。
Storage
本体内蔵ストレージとしてSDカード。加えて、新規の仕組み用の仕組みも(ミニカートリッジ? まだ詳細は未定)。
制御用のマイコンを搭載し、それを経由して SDカードを直接扱うモードと、SDカード内に置かれた 2DDイメージファイルを 2DDとして扱えるディスクエミュレーションモードを切り替えられるようにする。
OSD/各種設定
V9968の表示にモノクロの画像をオーバーレイ表示できるようにして、制御用マイコンからその内容をコントロールできるようにします。
2DDイメージファイルの選択や、各種細かい設定(全部 DIP S/W にするとスイッチだらけになるので、細かいものはキーボード操作によって OSD(On screen display)上で分かりやすく切り替えられるようにします。
各種設定は SDカード上にテキストファイルの形で記録され、MSX本体側からも設定を書き替えられるようにします。
Keyboard
制御用マイコンから MSXキーマトリクスの状態で受け取り、それを利用します。
制御用マイコンの方で USBキーボード/PS2キーボード/内蔵キーボードなどの I/F対応します。各種キーボードに対応するための キーコード → MSXキーマトリクス変換を処理することで、様々な国のキーボードと、様々な国向けの BIOS の認識する MSXキーマトリクスとの整合をとっていきます。これも設定ファイルにて編集可能にします。
Joypad
従来の PSG に繋がる 9pin の Port1, Port2 は従来互換でそのまま残ります。
それとは別に、USBゲームコントローラーの一部に対応し、方向キーと8ボタン程度(未定)まで対応出来る仕組みを入れたいと思っています。
Timer
turboRからシステムタイマーという名のフリーランカウンターが追加されていますが、コレを拡張してタイマー割り込みを追加します。
CPUが速くなり、キャッシュやアービトレーションにより CPU命令の実行速度が状況によって変化します。また、今後の CPU の改版( R80 → R900 → R1800 → … )によって、速度が変わっていきますので、ループによるタイミング制御が非推奨となります。今後は、タイマー(及び垂直同期割込や走査線割込)を使ったタイミング制御が推奨となります。
カートリッジスロット
従来と互換のカートリッジスロットを2つ。
モード切替で、多少速くなるモードを追加する可能性有り。
MegaROMエミュレーター
カートリッジスロットの代わりに、MegaROMエミュレーターを接続できるようにする。切替式。
ROMカートリッジイメージを書き込むことで、ある程度のソフトが動く上に、新規のソフトをここで動かすと高速BUSで動作して高速動作する。
I2C
IoT用途の MSX2++ がでた場合は、これを IoT用途に使えるように装備しておく。全ての MSX2++ に I2Cコネクタが付くかどうかは未定。
DMA
本体内の Slot/MapperRAM/MegaROMエミュレーターの Slot/Segment/Bank を切り替えなくても、指定の場所にブロック転送などを行えるコントローラーを搭載する予定。
データ転送における CPU負荷を低減し、バックグラウンドで動くようにする。ただし、バスの速度が早くなるわけではないので、DMA稼働中は CPU が遅くなる可能性がある。
MSX-BASIC/BIOS
MSX-BASIC5.0 が搭載される予定です。V9968 の新機能などに対応した BASIC です。
MSX-DOS/MSX-DOS2
MSX-DOS2の後継DOS を載せる予定です。
MSX-JE
未定です。載せられると嬉しいですが・・・。
RAM
MapperRAM 4MB を搭載します。カートリッジスロットに搭載する MapperRAM にも対応はしますが、内蔵4MB の方が圧倒的に速くなるので、実質的に MapperRAMカートリッジを使う意味が薄れるでしょう。
その速度差は、「MSXturboR の内蔵メモリの方が速い」よりも、より顕著な差が出ます。
SLOT構成
MSXturboR からスロット構成が固定になっていますので、基本的に turboR と同じ構成になります。
ただし、MegaROM Emulator を使う場合には、Slot#1 か Slot#2 が MegaROM Emulator になります。
内蔵ソフト/付属ソフト/ローンチソフト
未定です。
ローンチとなるソフトは、何か派手な新作ゲームを用意したいところですが、まだ確約できるような状況ではありませんので未定です。
エミュレーター
MSXPLAYer が、MSX2++に対応予定です。実機とエミュレーターのどちらが先にリリースされることになるのかも不明です。
V9968 の表示
HDMI になります。
まとめ
現状、こんなところです。
本体が出来上がったら、また公表できることも増えてくると思いますので、またその時期に note かきたいと思います。
2025年12月29日 初版
2026年1月1日 タイマーの記述を追加
いいなと思ったら応援しよう!
いただいたチップは、FPGA MSX の開発関連に使わせていただきます。