文書化されていないS1990の話

(公式に)文書化されていないS1990のお話です。

■panasonicマッパー
スロット#3-3に存在するメガコン。
マッパーは8Kbankで、バンクレジスタは9bit。つまり8Kx512=4Mbyteのメモリ空間を扱える。

・バンクレジスタ(バンク下位8bit分)
バンクレジスタの
アドレス
切り替わる
アドレス
6000-63FFh0000-1FFFh
6400-67FFh2000-3FFFh
6800-6BFFh4000-5FFFh
6C00-6FFFh6000-7FFFh
7000-73FFh8000-9FFFh
7800-7BFFhA000-BFFFh
7400-77FFhC000-DFFFh
7C00-7FEFhE000-FFFFh

・バンクレジスタ(バンク上位1bit分)
バンクレジスタのアドレスは7FF8h。各bitがそれぞれの領域に対応している。
このレジスタをアクセスするためには、後述の設定レジスタを先に設定する必要がある。
バンクレジスタの
bit
切り替わる
アドレス
bit00000-1FFFh
bit12000-3FFFh
bit24000-5FFFh
bit36000-7FFFh
bit48000-9FFFh
bit5A000-BFFFh
bit6C000-DFFFh
bit7E000-FFFFh

・リード専用レジスタ
バンクレジスタの下位8bitが読み出せる。 このレジスタをアクセスするためには、後述の設定レジスタを先に設定する必要がある。
レジスタの
アドレス
切り替わる
アドレス
7FF0h0000-1FFFh
7FF1h2000-3FFFh
7FF2h4000-5FFFh
7FF3h6000-7FFFh
7FF4h8000-9FFFh
7FF5hA000-BFFFh
7FF6hC000-DFFFh
7FF7hE000-FFFFh

・設定レジスタ
アドレスは7FF9h。RW可能。
bit21:7FF0-7FF7hからバンクレジスターが読める
bit31:この7FF9hの読み出しが可能になる
bit41:7FF8hが読み書き可能になる

・バンクの用途
ざっくりと下記の構成。
bank用途
000-07FROM
080-09FSRAM
0A0-17FROM
180-1FFDRAM
となっているが、S1990にはROM/SRAM用のCSがCSROM0〜4の5本あり、複雑な動きをしている。
(それとは別にROM用OEとSRAM用OE/WEが存在する)

ROMアクセス時(ROMOEアサート時)のCSROMxとpanasonicマッパーの対応は、
CSbanksizeMA[19:0]
CSROM0000-03Fh4Mbit00000-7FFFFh
CSROM10A0-0BFh2Mbit40000-7FFFFh
040-07Fh4Mbit80000-FFFFFh
CSROM20A0-0BFh2Mbit40000-7FFFFh
CSROM30C0-0FFh4Mbit80000-FFFFFh
CSROM4100-17Fh8Mbit00000-FFFFFh

※BANK080h-09FhはSRAM領域のため、ROMのOEはアサートされない。
※CSROM1は漢字ROMアクセス時にもアサートされる。MA[19:0]=00000-3FFFFh。
※CSROM2はCSROM1とメモリ範囲が重複。ただし、漢字ROMアクセス時にCSROM2はアサートしない。

また、SRAMアクセス時(RAMOE/RAMWEアサート時)は、
-A1ST
CSbanksize
CSROM0080h64Kbit
CSROM1081h64Kbit
CSROM2082h64Kbit
CSROM3083h64Kbit

-A1GT
CSbanksize
CSROM0080-083h256kbit
CSROM1084-087h256kbit
CSROM2088-08Bh256kbit
CSROM308C-08Fh256kbit

となっている。A1GTとA1STの違いは、S1990のA11がSRAMの容量設定端子で、リセット解除時にA11=0の時(A1GT)に256Kbit SRAM、A11がopen(A1ST)の時に64Kbit SRAMとなり、SRAMの制御にCSROM4は使用しないようです。


■ROMマッピング
上記panasonicマッパーと非常に密接な関係がある。各SLOTにアクセスしたとき、どのROMCSがアサートされるか。
slotaddresCSROMpanasonic bank
#0-00000-7FFFCSROM0028-02Bh
#0-20000-3FFFCSROM417E-17Fh
#0-24000-7FFFCSROM003E-03Fh
#0-2C000-FFFECSROM417E-17Fh
#0-34000-7FEFCSROM0024-025h
#3-10000-BFFFCSROM0038-03Dh
#3-24000-7FEFCSROM0030-037h(DOS2バンク切り替え)

■wait
IOポートのwaitとメモリアクセス時のwaitは結構複雑。別途調査結果がまとめてあるので下記を参照。
turbo RのI/O waitの話
R800のメモリアクセスwaitの話

■外部バスの動き
上記IOウェイトの動作も絡む。
R800時、IO waitが入る内部IO(A4hなど)でもリードデータはZ80側バスに出てこない。

■バスサイクル
R80時の外部IOは4cycle。Z80と異なる。

■漢字ROM
上記IOウェイトと外部バスの動作も絡む。
こちらも参照→FS-A1STの設計不良

■内部レジスタ
・S1990にはCPU切り替えなどに使う、システム設定レジスタのようなものが存在する。
こちらをおまけを参照→turbo RのI/O waitの話

・PCMのサンプリングレートの基準カウンタは、228clk@3.58MHzでカウントアップする。
即ち、PCMのサンプリングレートは、Datapackなどのサンプル通り作ると、3579545Hz/228≒15700Hzとなる。
A4hのread時、カウンタをラッチしないため、リードサイクルの途中でデータバスの値が変化する。
※A4hのreadサイクル時にwaitをかけ続けると、カウントアップ動作が見れるため正確にclock数の計測が可能。
よって、本来、01→02と動くところが、01→03→02と一瞬値がおかしくなることがある。
この現象はZ80/R800ともに発生するため、A4hのカウンタが28.6MHz系なの3.58MHz系なのか不明。
どちらにせよ、2現象とも設計バグっぽい気がする。

ちなみに、システムタイマーについてはリード時にラッチするようで、リードサイクルの途中でデータバスが変化することは無い。


感想、要望、バグ報告、その他何かありましたら、メールもしくは掲示板にてご連絡ください。
裕之  
ホームに戻る