2015年12月27日

FDエミュ書込み対応しました

案の定、FDエミュレーションにも沢山のバグがありました。
MPU側、RTL側それぞれにバグがありましたが正常に書込みできるようになったと
思います。
release-F68k_DE0CVDEMU.151227.qar

2015年の書込みはこれで最後になると思います。
よかったら正月休みにでも試してみてください。
では。よいお年を。
posted by プー at 22:14| Comment(0) | リリース/X68k | 更新情報をチェックする

2015年12月23日

修正版

ディスク未挿入エラーの解決が出来ましたので修正版をアップします。
release-F68k_DE0CVDEMU.151223.qar
原因は、実はよく分かっていませんがREADY信号の作り方に間違いがあったのではないかと
思われます。
ドライブエミュレーション追加時にIOコントローラのドライブセレクトとMOTOR信号で
指定ドライブのみモータを回す(実際には500ms後にREADY状態にする)ようにしていましたが
ドライブセレクトでの指定ドライブのみではなく、全ドライブをMOTOR ON状態
(READY状態)にすることで未挿入エラーは出なくなりました。
ただ、実機は持っていないのでこれが正しい方法なのかどうかはわかりません。

ディスクヘッドの移動は3ms間隔で、その度にディスクイメージファイルから
トラックバッファへの展開を行いますが、その展開時間が結構時間が掛かっているようで
移動時間内では到底追いついていないようです。それでも動作はするプログラムには
したつもりですが、シーク後FDCにデータを送られる状態になるまでに数百ms掛かっており
FDDアクセスは実機よりかなり遅くなってしまったように感じられます。
(SASI HDDも遅いですが)
SDカード+ソフトウェア処理がFDDより遅いというのは、にわかに信じがたいですが
ソフトウェアエミュレーションである以上、仕方がないのでしょうか。
posted by プー at 10:32| Comment(0) | リリース/X68k | 更新情報をチェックする

2015年12月14日

FDDエミュレーション追加版

やっとFDDエミュレーションが動くようになりましたので公開します。
release-F68k_DE0CVDEMU.151214.qar
じつはまだ一部おかしなところが有って、フロッピーからのboot時に
(実ドライブ・エミュレーション問わず)ディスクが入っていないというエラーが出ます。
その時は、実ドライブなら「R」を、エミュレーションならドライブ選択で
一度該当ドライブを選択し、[ESC]で抜ければ動作すると思います。

今回なかなか苦労したのがCRCで、FDCにも同じCRCが入っていますがこちらは
ハードウェアなので8クロックで終了。なのでFDDの500kbps程度なら
読み書きの途中で完了しますが、エミュレーションの場合はFDDに対し
ドライブセレクトがアサートされてから急いで1トラック分、SRAMに
データを展開し、展開が終わったらREADYを立てます。ですが、
なかなか処理の遅いCPUで、CRCを毎回bit単位で計算すると時間が掛かり、
タイムアウトになってしまうのでテーブル方式にしていますが、
wikipediaの情報だとシフトの方向が逆だったりするのでその実装に苦労しました。

尚、書き込みに関してはまだ未確認なので注意してください。
posted by プー at 12:45| Comment(0) | リリース/X68k | 更新情報をチェックする

2015年12月03日

ディスクエミュレーション機能追加版

前回のリリースまでの物はSDカードに保存された設定ファイルを読み込んで
各ドライブに割り当てるファイルの設定を変更していましたが、
実は初期バージョンから、ディスクエミュレータ自体がCUIを持っており、
画面上で設定を変更する構造になっております。
今回、CUIを表示するためのテキスト(キャラクタ)画面、キーボードとの
インターフェイスを追加し、CUIでの操作が出来るようになりましたので
リリースします。
release-F68k_DE0CVDEMU.151203.qar
使用方法に関しては、Docディレクトリにあるdiskemu.txtを参照してください。
FDDエミュレーションはハード・ソフト共だいたい完成していると思いますが、
まだ動作確認していない為機能させていません。

ディスクエミュレーションは機種共通で使えるように設計している為、PC-88やZet/98にも
移植していく予定です。(Zet/98は本体自体がまだまだ全然な状態ですが。)

FDDのエミュレーションに関しては、現時点では.d88フォーマットで読み書きするような
ソフトウエアを考えていますが、トラック内でバイト/セクタが変わるような
変態フォーマットに対応させるとなると特に書き込みに対する処理が複雑になったり
そもそも各ギャップが.d88フォーマット自体には書かれていないがgap3は可変だったり
する為どのように変換するか等、適当に決め打ちしています。それよりも、
FMなりMFMのビット列をそのままファイルに落とすようにした方が処理は簡単に
なります。(シリアル⇔パラレル変換だけで済みます)
ただ、その場合は1バイトのデータを表すのに現状は1バイト+1bit(ミッシングクロックフラグ)
だけで表せているのが、2バイト必要になる為RAMの容量が倍、必要になります。
現在の構成では1トラック分のRAMを持っていますがそれが約倍の容量が必要になり、
SignalTapIIに使える容量が殆ど無くなってしまいます。
posted by プー at 19:31| Comment(0) | リリース/X68k | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。