
2002.9.15
X1TurboでVGAモニタを使う
X1TurboをVGAモニタに接続する試験です
モニタのスペースはないがX1turbo本体だけならPCの傍らに置けるかた、ビデオ出力で目をちかちかさせながら使っているかた、あなたのPCのVGAモニタにX1を繋いで見ませんか?
X1TurboのRGB出力仕様について
X1turboのハイレゾモード時には、水平周波数=24KHzで古いPC9801等と同等のタイミングになります。
X1turboZ以降の機種であればアナログRGB出力がありますので、PC9801用ディスプレイがそのまま使用できる他、水平周波数24KHz対応のVGAにもコネクタの変換アダプターのみで直結することができます。
しかしX1turboZ以前の機種にはアナログRGB出力が無いため、デジタルRGB対応のモニタしか繋ぐことが出来ません。
さらにPC9801が死滅しかかっている今日、水平周波数24KHz対応のVGAモニタも少なくなっています。
でもね、X1turboのアナログRGBインターフェースの追加って実は簡単なんですよ
それにCRTCをチョイといじってやれば、制限付きではありますがVGA標準のタイミングで出力することも実は可能なんです。
ソフトのみでVGAモニタ対応...究極の8bit機の底力、ここにあり!
アナログRGB変換アダプタ
とりあえず、ここにアナログRGBインターフェースの回路図があります。
回路は簡単で、R,G,B信号に150Ωの抵抗を入れてデジタルRGB出力のDIN6ピンからVGAコネクタに変換しているだけです。
抵抗はDSUB15ピンのケース内に収まるので、見た目普通のケーブルとして仕上げることができます。
デジタルRGBのRGB信号はTTLレベルですが、X1内部ではR,G,BはオープンコレクタでL側だけドライブし、Hレベル時は270Ωで+5Vにプルアップされる状態になります。
一方アナログRGBのRGB信号は、AC駆動、インピーダンス75Ω、0.75Vppという仕様です。
抵抗なしでRGB信号を直結するとどうなるか...
詳細説明は省きますが、振幅幅約1Vppになりレベルオーバーしてしまいます。
これでも私の所では結構綺麗に映りましたが。
150Ωを直列に入れてやれば振幅幅が約0.75Vppとなり規定値に収まる計算です。
同期信号の仕様はデジタルのアナログも同じなので、直結します。
24KHz対応のモニタを持っている人はこれでおしまい。
VGA 31KHz対応のアプローチ方法
X1turboでは、表示タイミングを42.95454MHzのクリスタルオシレーターから発生させています。
これを54.5MHz以上のオシレーターに交換してしまえば、ソフトに手をふれることなく31KHzになる計算になります。
これがセオリーなのですが、クロックの交換はハードの改造が必要だし、ビデオ回路全体を25%のオーバークロックで動かすことになるので置いといて...
X1ではCRTのタイミングを直接設定出来るので、31KHz/60Hzの標準VGAタイミングをソフトだけで作り出すことも実は可能なのです。
ただ、ピクセルクロックは固定のため、そのまま31KHzにするとドットが横に間延びしてして80桁表示出来なくなります。
それでもゲームくらいなら左右が少々かけでも問題ないでしょう?
それがイヤというなら、24KHz対応モニタか、クロック交換、はたまた実機を捨ててエミュレータに走るべきでしょう。
31KHz無理矢理設定プログラム
まずはcrt31k.basを手入力などでX1で入力し、CZ8FB02上で実行させます。
この時点でVGA 640x480,31KHz/60Hzに近似した周波数に切り替わるので、X1turboをVGAディスプレイに接続しなおすと、画面が表示されているはずです。
このままでは表示がちょんぎれていると思いますので、最良ポイントへ調整を行います。
1.ディスプレイ側の水平表示を出来る限り縮めて全体を表示します。
2."4","6"キーを押してR0の値をモニタが追従する範囲で出来るだけ大きな値に調整します。
※R0=91(29KHz)あたりまで設定出来れば、80桁表示できる可能性が高いです
※ディスプレイの保証範囲を超えた値に設定した場合、モニタが痛める場合
があるかもしれないので注意すること
3."2","8"キーを押してR2の値を、表示が良好になる値に調整していきます。
※R2<81だと80桁表示出来ず、クランプ期間と表示がぶつかるため、右端の画像によっては色落ちすることがあります。
4.DEFCHRスイッチを押してCRTCレジスタを固定すれば終了です。
以後、IPLスイッチで好きなソフトを起動するなども可能です。
PCG定義の問題などは、Hi.REZOモードでX1用Standardモードのソフトを起動する方法と同じ制限になります。
プログラムは実験用のため、80桁x25行(640x200/400)しか対応していませんが
40桁も原理は同じなので、WIDTHを40に、R0,R2の値を半分程度にして、各自実験してみてください。
プログラムの140〜170行は垂直同期(リフレッシュレート)用で、無くてもほとんどのディスプレイで問題なく動作すると思います。
リフレッシュレートが上がってちらつきが多少減るので、可能であれば削除しましょう。
crt31k.basの説明
110-120 : セットアップ
140-170 : 垂直ラスター数を525に設定(VF=約60Hz/HF=31Khz)
190-220 : セットアップ
240-300 : 水平周波数/水平同期位置設定、調整
最後に
私はX1turboZと24KHzモニタを所有しているので、実はまったく必要ありません。
X1の底力試してみたかったので、実験を行ってみました
31KHz対応のIPL-ROMか、IPL起動の設定ディスクがあると実用性が上がると思います。
一人でも多くの方にX1turboを復活させてもらいたいので、実際にこのプログラムを使ってX1を復帰させたい方がいらっしゃるなら、メールでご連絡ください
要望があれば、時間が許す範囲でトライしてみるつもりです。