2005. 1.11 新規

PCGオートウェイト回路とは


 この解説は、X1でPCG定義プログラムを書いた経験がある方や、構造を理解している方向けの文章です。

 X1のPCG定義のアクセス方法は、垂直帰線期間中のCRTCのアクセス中にCPUから横やりを入れて、いわば無理矢理CG RAMを書き替えるという手段をとります。
 同期手段はCPU任せとなっており、プログラム上の処理としては、垂直帰線期間信号の開始を検出後、249ないし250クロックサイクル周期を命令でカウントしながら、1ライン分のCGデータを順番に出力していきます。
 
しかし、ソフトコアであるTV80やfz80はZ80一部の命令が速く処理されるため、使用する命令の種類(特にIX系)によって同期が狂い、PCG定義に失敗します。
 そこで、1回の水平走査内に2回アクセスされたとき、次の水平走査に入るまで、Z80にウェイトを掛けてやることで、強制的に同期させます。
 3倍ないし24倍速定義では、1走査でB,R,Gの3回がアクセスされ、アクセス順序もB-R-Gと決まっている訳ではないので、下記のシーケンスにします。

1.垂直帰線期間後の、最初のアクセスアドレス(B/R/G/ROM)を記憶する。
2.記憶したアクセスアドレスが1水平走査内に2回アクセスされると、次の走査までZ80にウェイトを掛ける。