画面周りのRAM削減に着手しました。
今の構成は、
CRTC は、14MHz で912×262を出力(1画面分、約1/60秒)
↓
2ポートRAM で乗せ換え(1画面分のRAM)
↓
VGA への出力は、25MHz で、800×524を出力(1画面分、約1/60秒)
となっています。
途中の1画面分のRAM がかなり大きく、今の構成では、5 bit × 65535 word を使っています。
1 word 分(5ビット)が、1ドットに相当していて、色データを適当にエンコードして実装しています。
で、この乗せ換えのRAMを減らす方針ですが...
・ CRTC の1画面の周期と、VGA の1画面の周期を完全に合わせる
です。
これだと、乗せ換えのRAM は1画面分は必要ではなく、揺らぎ分を吸収するだけでよくなります。
この時に、出来る事と出来ない事を整理すると...
・14MHz、25MHz のクロック周波数は、動作途中で変更する事は出来ない。
・CRTC の出力クロックを変更するのは不可(本物の動作と変わるため)。
・PLLを使って、完全に合わせるのは難しい。ずれた時の対処も難しい。
なので、結論としては、VGA の出力を変更することになります。
VGA の仕様は、25.175MHz で、水平方向に800クロック、垂直方向に525クロックのようです。
ですが、このクロック数は、多少増減しても動作はするみたいです。現に今の回路は524クロックになっています。
計算してみると、垂直方向のクロック数を、520クロックもしくは522クロックのどちらかにすればいいようです。
通常、520クロックにしていて、ある程度ずれたら522クロックを挟む、という構成になります。
VSYNC から後ろの方のラインを2ライン分抜く事になるので、問題にならないかと思います。
で、実装してみましたが...
パソコン用モニタ3台、液晶テレビ(パソコン入力あり)1台試しました。
・パソコン用モニタ1台目:正常動作
・パソコン用モニタ2台目:正常動作
・パソコン用モニタ3台目:同期が取れず
・液晶テレビ :同期は取れたが、上下にふらふらする
と動かないものがありました。最近のものの方がNGです。
うーん...もうちょっと解決策を探ってみます。
2012年04月30日
2012年04月26日
ディスク関連(6)
そろそろ無視できない問題が...
今は、P66 の内蔵ドライブの実装をしていますが、DE0 のメモリがほとんどなくなってきました。
M9K という単位で56個使えるんですが、既に55個使っています。
外付けドライブを対応するとなると、内蔵と同じ構成を取った場合、1KバッファのRAM(M9K単位で1個)が必要になります。
PC-80S31 と同じ構成にした場合、リードバッファ、ライトバッファ合計で8K(M9K単位で8個)必要になります。
さらに制御用のプログラム領域も殆どないために、さらに1個〜2個必要になります。
これだけRAM を捻出するとなると、大きなRAMを使っている所のアーキテクチャを見直す必要があります。
一番大きなRAMは、画面コントローラが出力してるデータを、VGA に変換(乗せ換え)しているRAMで、M9K で40個も使っています。
案はあるんですが、構成がややこしくなりそうなのと、もしかすると一部のVGAモニタで動かなくなる可能性があるのとで、どうしようか迷っています。
外付けドライブと内蔵ドライブを同時に使用できない仕様にすれば、ぎりぎり足りるように出来るんですけどねぇ...
4ドライブはやってみたいんですよねぇ...(意味なさそうですけど)
今は、P66 の内蔵ドライブの実装をしていますが、DE0 のメモリがほとんどなくなってきました。
M9K という単位で56個使えるんですが、既に55個使っています。
外付けドライブを対応するとなると、内蔵と同じ構成を取った場合、1KバッファのRAM(M9K単位で1個)が必要になります。
PC-80S31 と同じ構成にした場合、リードバッファ、ライトバッファ合計で8K(M9K単位で8個)必要になります。
さらに制御用のプログラム領域も殆どないために、さらに1個〜2個必要になります。
これだけRAM を捻出するとなると、大きなRAMを使っている所のアーキテクチャを見直す必要があります。
一番大きなRAMは、画面コントローラが出力してるデータを、VGA に変換(乗せ換え)しているRAMで、M9K で40個も使っています。
案はあるんですが、構成がややこしくなりそうなのと、もしかすると一部のVGAモニタで動かなくなる可能性があるのとで、どうしようか迷っています。
外付けドライブと内蔵ドライブを同時に使用できない仕様にすれば、ぎりぎり足りるように出来るんですけどねぇ...
4ドライブはやってみたいんですよねぇ...(意味なさそうですけど)
2012年03月25日
P6のVDGのナゾの動き
動作チェックのために、いろんなソフトを動かしてみて、変なモノを見つけました。
AX-7 の デモプログラムの最後の部分で、画面に大きくAX-7 の表示される部分です。
AX-7 の文字の背景の縞模様が、上から下にスクロールしています。
これ、PC-6001V や PC-6001VW では縞模様が表示されません(当然スクロールもしない)。
てっきりVDG のバグだと思って、念のために実機で動かしてみると...
縞模様が、下から上にスクロールしてる!!
推測ですが、縞模様のスクロール速度が違うために、スクロール方向が違うのだと思います。
扇風機が高速回転しているのを見ていると、ゆっくりと逆回転して見えるような原理かと...
しかし、これを直すのは至難の業かも...
AX-7 の デモプログラムの最後の部分で、画面に大きくAX-7 の表示される部分です。
ダウンロードは🎥こちら
AX-7 の文字の背景の縞模様が、上から下にスクロールしています。
これ、PC-6001V や PC-6001VW では縞模様が表示されません(当然スクロールもしない)。
てっきりVDG のバグだと思って、念のために実機で動かしてみると...
ダウンロードは🎥こちら
縞模様が、下から上にスクロールしてる!!
推測ですが、縞模様のスクロール速度が違うために、スクロール方向が違うのだと思います。
扇風機が高速回転しているのを見ていると、ゆっくりと逆回転して見えるような原理かと...
しかし、これを直すのは至難の業かも...
2011年11月05日
2011年11月04日
ファイル選択機能の設計(2)
とりあえず、簡易ファイル選択のプログラムは完成しました。
ただ、さすがに使いにくいので、もう少し修正するつもりです。
動作するソフトのチェックをしていますが、数本ほど動かないものが出てきました。
ただ、これらはどうもテープのロードに失敗をしているようです。
今の構成では、基本的な部分は実機と同じ速度で動いています。
ただし、それだとロードに時間がかかるため、ロードは1200ボーを再現せずに、もっと高速でデータを読み込ませています。
通常のBASIC などでは問題がないようにしたつもりですが、画面を表示しながらロードするものの一部に問題があるようです。
速度を1200ボーぐらいに落とせば問題ないはずなんですが、それでも動作しないものがあります。原因は調査中です。
↓ は、とりあえず、無事に動いたソフトの一部です。DSi で撮影しているので、ちょっと画像が粗いです。

ロード速度を速くすると、音楽は正常でも途中で暴走します。ロード速度を落とすだけで正常動作しました。

特に何の問題もなし。ゼビウス2は画面が正常ではなかった。mkII以降用だっけ?

ROM テスト用にモセスさんのムーンレイダースを4000H〜に実装してみる。あっさり動作。

ROM テスト用その2。のりさん移植のPC-6001版ハイドライドです。このソフトはROM+テープリードですが、これもあっさり動作。

スクリーンモードが特殊なヤツその1。動かしながらの撮影は難しい...

スクリーンモードが特殊なヤツその2。スクリーン3と4が混在しています。境目がおかしいのは、入力ミスかも知れません。スキャナ取り込みだからあんまり間違いはないはずなんだけど...
ただ、さすがに使いにくいので、もう少し修正するつもりです。
動作するソフトのチェックをしていますが、数本ほど動かないものが出てきました。
ただ、これらはどうもテープのロードに失敗をしているようです。
今の構成では、基本的な部分は実機と同じ速度で動いています。
ただし、それだとロードに時間がかかるため、ロードは1200ボーを再現せずに、もっと高速でデータを読み込ませています。
通常のBASIC などでは問題がないようにしたつもりですが、画面を表示しながらロードするものの一部に問題があるようです。
速度を1200ボーぐらいに落とせば問題ないはずなんですが、それでも動作しないものがあります。原因は調査中です。
↓ は、とりあえず、無事に動いたソフトの一部です。DSi で撮影しているので、ちょっと画像が粗いです。
ロード速度を速くすると、音楽は正常でも途中で暴走します。ロード速度を落とすだけで正常動作しました。
特に何の問題もなし。ゼビウス2は画面が正常ではなかった。mkII以降用だっけ?
ROM テスト用にモセスさんのムーンレイダースを4000H〜に実装してみる。あっさり動作。
ROM テスト用その2。のりさん移植のPC-6001版ハイドライドです。このソフトはROM+テープリードですが、これもあっさり動作。
スクリーンモードが特殊なヤツその1。動かしながらの撮影は難しい...
スクリーンモードが特殊なヤツその2。スクリーン3と4が混在しています。境目がおかしいのは、入力ミスかも知れません。スキャナ取り込みだからあんまり間違いはないはずなんだけど...
2011年10月25日
FPGA化の方針について(3)
今の所、実装していないものを挙げておきます。
1)CMTロード用のファイルの選択が出来ない
2)CMTセーブが未実装
3)実際のCMTのデータの入出力がない(〜.p6 のみにしか対応していない)
4)JOY-STICK が接続できない(AY-3-8910 のI/Oポート未実装)
5)ビデオ出力がない
6)ROMカートリッジの対応がない
7)拡張ポートの対応がない
8)RS-232C の対応がない
9)キーリピートが効かない(実装していない)
10)プリンタポートがない
分かっているバグは、以下の通りです。
1)音声がおかしい時がある(ポリス&ギャング)
2)SCREEN4 の表示画面がちょっと違う
3)テープリード時に、?OM Error が出た場合に、MOTOR がOFF にならない(これは実機も?)
4)マシン語ロードなどで、ヘッダがついていないような形式の場合、ずれる時があるかも
次は、ロード用ファイルの選択に取り掛かります。
1)CMTロード用のファイルの選択が出来ない
2)CMTセーブが未実装
3)実際のCMTのデータの入出力がない(〜.p6 のみにしか対応していない)
4)JOY-STICK が接続できない(AY-3-8910 のI/Oポート未実装)
5)ビデオ出力がない
6)ROMカートリッジの対応がない
7)拡張ポートの対応がない
8)RS-232C の対応がない
9)キーリピートが効かない(実装していない)
10)プリンタポートがない
分かっているバグは、以下の通りです。
1)音声がおかしい時がある(ポリス&ギャング)
2)SCREEN4 の表示画面がちょっと違う
3)テープリード時に、?OM Error が出た場合に、MOTOR がOFF にならない(これは実機も?)
4)マシン語ロードなどで、ヘッダがついていないような形式の場合、ずれる時があるかも
次は、ロード用ファイルの選択に取り掛かります。
2011年10月21日
FPGA化の方針について(2)
今の所、実装していない(と思われる)ものを挙げておきます。
1)CMTロード用のファイルの選択が出来ない
2)CMTセーブが未実装
3)実際のCMTのデータの入出力がない(〜.p6 のみにしか対応していない)
4)音が出ない(AY-3-8910 未実装)
5)JOY-STICK が接続できない(AY-3-8910 未実装)
6)ビデオ出力がない
7)SCREEN 4 の色ずれの対応がない
8)ROMカートリッジの対応がない
9)拡張ポートの対応がない
10)RS-232C の対応がない
SDカードのファイル選択を作るのが、かなりのハードルになっているため、1)2)8)が後回しになっています。
(H/W でやると、シーケンサとかは面倒なんですよねー)
とりあえず7)は簡単なので、すぐに対応するとして、後は...音が先かなぁ。
音が出なくても欲しい人がいるのなら、1)2)8)の対応を先にするんですけどね。
後、今のバージョンでバグりそうな所は、
10)マシン語ロードなどで、ヘッダがついていないような形式の場合、ずれる時があるかも
ぐらいです。ドアドアが動かない可能性大、ですね。
1)CMTロード用のファイルの選択が出来ない
2)CMTセーブが未実装
3)実際のCMTのデータの入出力がない(〜.p6 のみにしか対応していない)
4)音が出ない(AY-3-8910 未実装)
5)JOY-STICK が接続できない(AY-3-8910 未実装)
6)ビデオ出力がない
7)SCREEN 4 の色ずれの対応がない
8)ROMカートリッジの対応がない
9)拡張ポートの対応がない
10)RS-232C の対応がない
SDカードのファイル選択を作るのが、かなりのハードルになっているため、1)2)8)が後回しになっています。
(H/W でやると、シーケンサとかは面倒なんですよねー)
とりあえず7)は簡単なので、すぐに対応するとして、後は...音が先かなぁ。
音が出なくても欲しい人がいるのなら、1)2)8)の対応を先にするんですけどね。
後、今のバージョンでバグりそうな所は、
10)マシン語ロードなどで、ヘッダがついていないような形式の場合、ずれる時があるかも
ぐらいです。ドアドアが動かない可能性大、ですね。

