MZ-2800 解析資料




メモリマップ
$000000-$07ffff : 標準RAM 512KB
$080000-$0bffff : 標準RAM 256KB / メモリウィンドウ
$0c0000-$0dffff : VRAM 128KB * 4バンク
$0e0000-$0effff : 辞書ROM 64KB * 4バンク
$0f0000-$0f0fff : PCG 2KB / 漢字ROM 2KB * 128バンク (偶数アドレスのみ)
$0f1000-$0f3fff : PCG 6KB (偶数アドレスのみ)
$0f4000-$0f5fff : TVRAM 6KB (アドレス%4=3は空き)
$0f6000-$0f7fff : TVRAM イメージ
$0f8000-$0fffff : IPL ROM 上位32KB
$200000-$7fffff : 増設RAM 6MB
$ff0000-$ffffff : IPL ROM 64KB

$080000-$0bffffはメモリウィンドウとなっており、16MBの物理アドレス中の任意の256KBにアクセスすることができる
$0f0000-$0f7fffは起動/リセット直後はIPL ROMの下位32KBとなる



I/Oレジスタマップ
アドレスRead/Write内容
$70-$7fR/W uPD71071
Ch.0 : SASI HDD
Ch.1 : MB8876
Ch.2 : DRAMリフレッシュ?
Ch.3 : 拡張スロット DRQ3
$80-$81R/W 8259 (MASTER / MN12861)
IR0 : 8253 OUT0
IR1 : VBLANK
IR2 : Z80SIO
IR3 : uPD71071G TC
IR4 : SASI HDD
IR5 : MB8876
IR6 : 9253 OUT1
IR7 : 8259 SLAVE
$82-$83R/W 8259 (SLAVE)
IR0 : 8253 OUT2
IR1 : プリンタ BUSY
IR2 : RP-5C15
IR3 : 拡張スロット IR11
IR4 : 拡張スロット IR12
IR5 : 拡張スロット IR13
IR6 : 拡張スロット IR14
IR7 : YM2203
$8cR/W メモリウィンドウレジスタ
$080000-$0bffffにアクセスする際に、bit0-bit5がA18-A23に出力される
ただし、DMAのメモリアクセスには影響しない
$8dR/W VRAMバンク設定 ($0c0000-$0dffff)
0 : リードモディファイライト?
4 : バンクB
5 : バンクR
6 : バンクG
7 : バンクI
$8eR ディップスイッチ
bit0 : 1=400ライン, 0=200ライン
bit1 : 1=スーパーインポーズ無効, 0=有効
bit2 : 1 (常時OFFに設定)
bit3 : 1 (常時OFFに設定)
bit4 : 1=外付けFDDは2HD/2DD, 0=2DD
bit5 : 1 (常時OFFに設定)
bit6-bit7 : RS-232Cの送受信クロック
工場出荷時の設定では$ffが返る
$8fR/W システムポート
bit4 : SHUT0
bit5 : SHUT1
ハードウェアリセットが掛ったか、プロテクトモードからの復帰なのかを判別するためのポート?
起動時にSHUT0=1, SHUT1=1の場合、SP=0000:021Ch, SS=0000:021Ehとして、0000:0218hにfar jumpする
$a0-$a3R/W Z80SIO
$**aeR/W 4096色パレットボード色指定
A8-A12でバンクを指定する ($00-$1f)
$afR/W SASI I/F コマンド&ステータスレジスタ
データレジスタはDMAでのみアクセスする?
$beR Z80SIOの割込み応答サイクル
CPUがZ80でないため、I/Oアクセスで割り込み応答とベクタ取得を行う
(割込みからの復帰についてはZ80SIOの内部コマンドで行う)
$c8-$c9R/W YM2203

No.14は出力ポートとして設定される
IOA0 : RS-232C READYA
IOA1 : 外部ディスク選択
IOA2 : 4096色パレット選択
No.15は入力ポートとして設定される
IOB0 : RS-232C CDA
IOB1 : RS-232C CIA
IOB3 : RP-5C15
IOB6 : CRTスイッチ
IOB7 : GND
$caR/W ボイスコミュニケーションI/F?
リードすると$7fが返る
$*ccR/W RP-5C15
バンクはA8-A11で選択する
$ceR/W 辞書ROMバンク設定
bit3-bit4 : 辞書ROMバンク
$d8-$dbR/W MB8876
バスバッファに74LS640を使用しており、データバスが反転するため、実質的にはMB8877相当となる
$dcW ディスクドライブの選択信号とモータ制御
bit0-bit1 : ドライブ番号
bit2 : ドライブの選択無効
bit7 : モータ制御
2HD/2DDドライブの場合は常にモータオンとなる
$ddW ディスクのサイド(面)選択
$deW ディスクの記録方式の選択?
$dfW ディスクの記録方式の選択?
$e0-$e3R/W 8255 (MN12861)

ポートA (出力)
PA4 : モノクロディスプレイの表示反転?
ポートB (入力)
PB0 : BLANK
PB1 : VBLANK
PB2 : +5V
PB3 : +5V
PB4 : +5V
PB5 : +5V
PB6 : +5V
PB7 : EAh(キーボード入力)のbit7
ポートC (出力)
PC0 : 画面表示禁止
PC1 : CPUリセット?
PC2 : ダイレクトサウンド出力
PC3 : パワーオンリセット
PC7 : WTRP → システムコントローラ NFTD
PC7:WTRPは、データバスの状態を監視する回路で、D0,D8をマスクするのに使用している
Z80のモード2割り込み終了時に、RETI命令を認識するのに関係がある?
$e4-$e7R/W 8253 (MN12861)

カウンタ1
CLK0 ← 31.25KHz
GATE0 ← PITG ($f0-$f3?)
OUT0 → 8253(MASTER) IR0, CLK1
カウンタ2
CLK1 ← OUT1
GATE1 ← PITG ($f0-$f3?)
OUT1 → 8253(MASTER) IR6
カウンタ3
CLK2 ← 31.25KHz
GATE2 ← +5V
OUT2 → 8253(SLAVE) IR0
CLK2は、MZ-2500モードとMZ-2800モードで入力が異なる
$e8-$ebR/W Z80PIO

ポートA (出力)
A0 : キーボードのカラム選択
A1 : キーボードのカラム選択
A2 : キーボードのカラム選択
A3 : キーボードのカラム選択
A4 : キーストローブ信号
A5 : 80桁/40桁
A6 : HCLG
A7 : DISP
ポートB (入力)
B0-B7 : キースキャン
A6:HCLG, A7:DISPは、MZ-80B/2000モードのメモリマップに使用する
MZ-2800ではMZ-80B/2000モードはないが、メモリコントローラへの接続は残っている
$efR/W ジョイスティック状態取得&制御?
$133R/W
$170W テキスト画面コントローラのレジスタ選択?
MZ-2500の$f4相当
$172W テキスト画面コントローラのレジスタ出力?
MZ-2500の$f5相当
$174W グラフィックマスク制御?
MZ-2500の$f6相当
$176W 縦12行モードの制御?
MZ-2500の$f7相当
$178, $179W グラフィックコントローラのレジスタ#1選択
bit0-bit4 : レジスタ番号
bit7 : 1=オートインクリメント有効, 0=無効
$178は$17aの、$179は$17bのレジスタ番号を指定する
$17a, $17bW グラフィックコントローラのレジスタ#1出力
#00 : プレーン0用タイリングペイントパターン
#01 : プレーン1用タイリングペイントパターン
#02 : プレーン2用タイリングペイントパターン
#03 : プレーン3用タイリングペイントパターン
#04 : 描画したい色のパレット番号
#05 : アクセスするプレーンとモード
#06 : ビットマスクデータ
#07 : リードモディファイの修飾情報
#08,#09 : ハードウェアビューポート縦方向終了位置?
#0a,#0b : ハードウェアビューポート縦方向開始位置?
#0e : 画面モード?
MZ-2500の$bd相当のうち、リードモディファイライト関係のみ
$17aはVRAMの偶数アドレス、$17bは奇数アドレスに対して機能する
#08-#0eは起動時に初期化しているが、機能していない?
$1feR/W プリンタステータス入力、制御信号出力
$1ffW プリンタデータ出力
$270W グラフィックコントローラのレジスタ#2選択
bit0-bit4 : レジスタ番号
bit7 : 1=オートインクリメント有効, 0=無効
$272W グラフィックコントローラのレジスタ#2出力
#00,#01 : ハードウェアビューポート縦方向開始位置
#02,#03 : ハードウェアビューポート縦方向終了位置
#04 : ハードウェアビューポート横方向開始位置
#05 : ハードウェアビューポート横方向終了位置
#06 : 画面モード
$13=640x400x16
$17=640x200x16
$1b=640x400x65536
$1f=640x200x65536
#07 : 横スクロール量
#08,#09 : スクロールエリアの開始VRAMアドレス
#0a,#0b : 固定エリアの開始VRAMアドレス?
#0c,#0d : スクロールエリアの縦のラスタ数
#10 : 表示するプレーン
MZ-2500の$bd相当のうち、ビューポートおよびスクロール関係のみ
#08-#0bの値は2倍して使用する
$274R/W PCG/漢字ROMバンク設定 ($0f0000-$0f0fff)
bit0-bit6 : 漢字ROMバンク bit7 : 0=PCG, 1=漢字ROM

※ +$8000したアドレスでアクセスされる場合もある



参考資料: このページの情報は、武田が独自に調査したものです。
内容の正確さについては保証されません。