(回路図が手元にあることを前提に書いています)
・VDG関連(メイン・ブロック左半分)
左側の下の方に鎮座しているM5C6847が、VDG(Video Display Generator)で、画面表示を一手に担っているチップである。
その上のμPD2332が、キャラクタROMで、6847からとCPUからと両方アクセスが可能なようにセレクタやらバスドライバーなどが付いている。
μPD2332の左のLS157×2が、キャラクタROMのデータとグラフィックのデータを選ぶセレクタである。
μPD2332の右のIC63、IC4(LS367)がバスドライバー、その下のLS161は、キャラクタROMの縦方向のアドレスを生成しているカウンタ、LS161の右のLS157が、6847とCPUのアドレスを選択しているセレクタである。
6847 の右のLS374のさらに右のLS374 は、DRAMから読み出したデータをラッチするFFである。
(この辺りの回路はドンくさいようで、無駄な回路があるようです)
6847 のすぐ右のLS374は、DRAMから読み込んだアトリビュートデータをラッチするFFである。
この辺りが、PC-6001独特のようで、元々6847 にはアトリビュートという概念はないようである。
つまり、アトリビュートは元々固定値で、画面の一部で変えるようには出来ていないようである。
そのため、6847 は、読み出しアドレスを1回しか出力しない。
PC-6001の回路では、この読み出しアドレスを加工して、1アクセスに対して2回アクセスを行って、アトリビュートと画面データを読み出している。
そのための回路の1つは、6847 の左のLS257とその間のゲート数個で、これはアドレスを加工している。
アドレスの加工は、次の通り。
6847 アドレス → A(12:9)="0000" 固定 → アトリビュートアドレス
6847 アドレス → A(12:9) を+1する → データアドレス
例えば、6847 アドレスが、17FFHの場合(スクリーン3、4の最終アドレス)、
アトリビュートアドレス → 01FFH
データアドレス → 19FFH
となって、マニュアルなどに記載されている値と一致する。
2回読み出しのためのもう一つは、1アクセス時に、CASを2回出力することで実現している。
一番左下のLS161が、RAS、CASの生成や、各ラッチの生成のためのタイミングを作っている。このカウンタの出力をデコードすることにより、1アクセス(4clock@3.58MHz)でRASを1回、CASを2回出力している。この辺りの回路が、下の方のLS74が2つ並んでいる箇所である。
で、また回路図の間違い。下の方ある、BUSRQN を出力している LS74のクロック信号をドライブする素子がない。
前の間違いと同様に、十字交差のドット抜けのようで、下の方に2つ並んでいるLS74の右の上のLS04の出力が、そのクロックになる。
6847 のすぐ下のμPD4040、その右のNANDたすきがけ×2、その右のμPD4040は、それぞれ BUSRQN を生成する回路である。
6847 のHSN、FSN から、描画するタイミング(=DRAMにアクセスしたいタイミング)を作っている。左のμPD4040 が垂直側の描画エリアを生成し、右のμPD4040 が垂直側の描画エリアを生成している。
垂直側は、エリアのデコード値がぴったり描画エリアと同じになるが、水平側は、描画エリアより若干広くなっている。これは、BUSRQN → BUSACKN のタイミングが遅れる事を想定しているようである。
2011年09月28日
この記事へのコメント
コメントを書く

