誘うPC98互換機(8) GDCの同期は大変そうである

Kitsune no Shippo

実は、同僚のソフト担当から「GDCの同期合わせは大変である。そこでGDCは8MHzでしかも合計3個はまかりならん」と言うご指摘を受けていました。そうは言っても、方向性を代えるわけにいきません。そこで、GDCの同期関連のお話をします。<外伝>はその同僚が、当方のハードの対応もしないまま、天国に旅立ったお話です。

※誘うPC98互換機 投稿順indexはこちら

まず、(98マニュアルではありません)GDCマニュアルのRMW処理時間が冒頭から書いてあります。あるアドレスにRMWをしようとした場合、コマンドでblankコマンド発行まで6xGDC、RMWサイクルが6xGDC、次もRMWサイクルなら表示が継続していない訳ですから、その走査線の区間が一瞬消え、黒い横筋が入ります。そこでPC98本体もPC98互換機も原則として、ブランキング時間以外は修正を加えない旨をサードパーティに依頼しました(簡単に言えば、この横筋が良い人は問題ないのですが、ほとんどの場合RMWサイクルを実行しますのでやも得ないのかも)。

この他の命令も2xGDCサイクルから15xGDCサイクルです。このうち画面のon/offやRMWに関わるものがほとんどです。あとはGDC経由のDMAなどが主です。PC98本体はCRT最小で2280ns待てば良い(blankをリードする時間です、同時にサードパーティのエンジニアにはblank信号を待ちなさいと言っていることになります)としています。blank信号はA0hのD5(VS)、D6(Hblank/Vblank)にあります。

さて、PC98互換機・CADシステムではGDCサイクルはシミレーションが可能となりました。これは、GDCがBUSYを予想できる場合は、クロックを止めることができる仕掛けです。従来(固定クロック)型のPC98本体及びPC98互換機では2から6xGDCの間NRDYをアサートしていました。PC98互換機・CADシステムではシミレーション回路を駆使し可変型のクロックが提供することが可能となります。また、ブランキングを予定していないGDCでは4xGDCもしくは2xGDCサイクルを基本としています。なお、ソフトウエアにも負荷がかからないように制御できるようにもなりました。

実際の例です。RMWリクエスト(※,E3,E4)があった際に、実際に書き込みされるのはGDCのクロックには同期せず、メモリサイクル(cycle)に同期します(実際は同じクロックです)。その際に重ねてRMWリクエスト(E1,E2,E3,E4)があった場合は、GDCクロックの発生は一旦中断し、少し遅れてからGDCサイクルとメモリサイクルが発生しています。本タイムチャートでは、コマンドサイクルが続けてきた場合(D1,D2)でも、影響は与えない状況です。

<外伝>

同僚のご指摘に深く感謝しなくてはならないのですが、GDCクロックが可変調で提供できるのは指摘を受けた内容を模倣したシミレーション回路のおかげです。この回路がなければ、GDCクロックの8MHzへの変更やブランキングの実施など、内容は凄く複雑だったと思います。

とあるCADベンダーは自己のベクトル発生速度を「PC98互換機・CADシステム[PRO-486]で計測した状態です」とカタログに明記していました。

さて、入院をしていた同僚ですが、退院することはなく、そのまま天国へ召されました。同僚と距離は離れていたため(上田市)、数回あっただけでした。若い同僚が召されるのは悲しいことで、ご家族もいたと思います。その後、お見舞いにも行けずに申し訳ありませんでした。黙祷

誘うPC98互換機(7) GDC(ビデオのコントローラ)のお話です へ戻る

誘うPC98互換機(9) GDCのVRAMのアドレシングは微妙です へ進む