2019年03月26日

修正版

テキスト画面の同時アクセスで正常に書き込みができないプレーンがあるのと、FDエミュで
イメージの読み込み中にSASIにアクセスがあると暴走する問題がありましたので
修正しました。
テキスト画面の同時アクセスは、キャッシュ回路及びSDRAMアクセス回路がMPUの
タイミングに合わせて設計してあるため同じタイミングでアクセスしないと書き込みに
失敗するようで、合わせたのでMPUで4アドレスに書き込む時間と同じ時間が掛かって
しまいます。
そのため、あまり同時アクセスしたからと言って高速には動かない、という回路になって
しまいました。
FDイメージ読み込み中(トラック単位)は割り込み禁止にしましたので(SASIは割り込みで
動作するがファイルI/Oが多重アクセスに非対応にしてあるため)SASIが未反応で
IOCS等がエラーを出すと思いますが、大抵はリトライで対応可能だと思います。
release-F68k_DE0CVDEMU.190326.qar
posted by プー at 22:07| Comment(1) | リリース/X68k | 更新情報をチェックする

2019年03月22日

画面周り等修正版

今まで半透明や特殊プライオリティには対応していませんでしたが、画面の重ね合わせに
異常な部分があり、その修正のついでに半透明と特殊プライオリティにも対応させました。
従来、色コード0を指定したところは透明でプライオリティが低い画素の色が表に出るように
コードを書いていましたが、エミュレータ等の動作を見ると、色コード0だけではなく、
パレット="0000"の場合も透けるようです。その場合、例えばテキストとスプライトで
プライオリティが高い画面の色コードが0以外の時には高い画面のコードを、0の場合は
低い画面の色コードをパレットに回せばよかったのでパレットが1つで済みましたが
パレット出力も見て判断が必要なのでパレットも別々に準備する必要があるようです。
それほど大きなRAM容量ではないので同じ内容のパレットRAMを2種類用意して対応
しました。
ついでに半透明でも複数のパレットが必要ですので半透明・特殊プライオリティにも
対応させました。
ただし、動作確認用のソフトが無いので、「たぶんこれでいいと思う」レベルですが。

それと、SDRAMが1つしかありませんので、10MHzのMPUだけSDRAMを使用するので
あればキャッシュは使用しませんが、画像関係でテキスト・グラフィックスと多くの
データをSDRAMから読む必要があるため、その間MPUができるだけ止まらないように
キャッシュを持たせています。
(PC-88ではグラフィックスの容量が少ないのでキャッシュがなくても十分に回せた)
読み出しキャッシュにSDRAMからデータを読み出している間はキャッシュ外への
アクセスにはウェイトが入るので、容量の多いキャッシュを少し積むよりは適度な
サイズのキャッシュを沢山積んだほうが効率よく動作します。
そのため、キャッシュのサイズと数量を可変できるようにしました。
1個当たりのキャッシュサイズはX68DE0CVDEMU2.vhdのarchitecture分の先頭にある
brsizeで8=256word,7=128word...という指定です。9以上は指定禁止です。
キャッシュの個数はcachecont.vhdのarchitecture分先頭のbrblocksで個数をそのまま記入します。
個数が多いほど本来であればパフォーマンスは上がるはずですが、増やしすぎると
配線長や回路が複雑になるため正常に動作しなくなります。
現在の設定(brsize=7,brblocks=8)あたりがパフォーマンスは最適になるようです。
(ソフトによって異なるでしょうが)

ちなみに従来の回路はbrsize=8,brblocks=4に相当します。

release-F68k_DE0CVDEMU.190322.qar
posted by プー at 20:40| Comment(4) | リリース/X68k | 更新情報をチェックする

2019年03月09日

DiskEmu変更

初期バージョンのFDディスクエミュレータはトラック毎にNiosIIプロセッサでSDカードから
データを読み出し、トラックイメージに展開していましたが、NiossIIプロセッサは
遅いためタイムアウト等で正常に動作しないソフトウェアがあったようです。

2番目のバージョンはトラック毎にNiosIIプロセッサはSDカードからデータを読み出しますが、
ハードウェアでトラックイメージに展開することで高速化しました。
ですが、まだ稀にタイムアウトが発生していたようです。

NiosIIでトラック毎イメージを展開するのは限界のようですので、今回のバージョンでは
FDファイルを選択した時点でディスクイメージを丸ごとSDRAMに展開する方法に
変更しました。
ですのでファイルを選択したときに変換時間分待たされますが、ロードは実FDDと等速で
動作できるようになったため、エラー発生はほぼなくなったようです。
FDへの書き込み時には、書き込みが終わった時点でSDカードに書き戻しを行います。
ですのでエミュレータBUSY(一番右のLED)が点滅している間はSDカードを抜いたり
電源を切らないでください。
別のファイルに切り替えたりする操作を行うと未保存のイメージは書き戻しを行います。

同時に、SASIエミュレータがリセット信号を無視していたため、反応するように変更しています。

release-F68k_DE0CVDEMU.190309.qar

PC88の方はSDカードアクセス方法が異なるため、エミュレータ自体は対応できる
設計にしてありますが、移植はまだです。また、2HD以外での確認もできていません。
単密度(FMフォーマット)時の動作は正確ではないことは分かっています。
(トラック長さが倍になっていますのでディスク1回転にかかる時間が倍の時間に
なってしまっています)
posted by プー at 19:37| Comment(8) | リリース/X68k | 更新情報をチェックする