2016年09月22日

MSX用FDD

うちにはMSXロゴの入ったパソコンが3台あります。
1つ目はPanasonicのMSX2
2つ目はSONYのMSX2+
3つ目は1chip MSXです。
1つ目はいとこのお兄さんからの貰い物、2つ目は中古屋さんでジャンクで、
3つ目は普通に注文して買いました。
1つ目に、カートリッジに刺すタイプのFDDユニットも付けて貰ったのですが、
そのドライブが調子悪く、なかなかゲームがうまく動かない、という問題がありました。
中身のドライブはベルト方式ではなく現在のものと同じDDタイプです。
ですのでベルトの寿命劣化というわけではありません。2つ目のものは内蔵FDDが
ありますが、こちらも正常に動作しません。
どちらのドライブも、蓋を開けて中を見るとAT互換機と同じ形状のドライブが
入っています。当時は知識もなかったのでAT用のものに付け替えれば動くように
なるのではないかと、いろいろと実験してみましたが駄目でした。
結論から言うと、READY信号ではなくDiskChange信号が出ているから、なのですが
当時はまだインターネットからの情報もあまり無く、途方に暮れていました。
ですが、時は流れインターネットから、READY信号をとりあえずディスク検出スイッチ
から引っ張れば大丈夫という知識を得たため、現在は普通に動いています。

なのですが、それだけ苦労をしたためMSX用FDDには思い入れがあり、先日
秋葉原のBEEPさんでAT用と思われるFDDを使用したMSX用外付けFDDユニットが
発売されているのを見てから、うちのFPGA版MSX(1chipと、DE0でも移植されたものを
使ったことがある)のFPGAの中にFDCの機能を入れて、他にも僕みたいに
MSX用FDDゲームはたくさん持っているのにFDDが死んでて遊べない人のために
何とか出来ないか、考えています。
ハードウェアは、PC88やX68kで実績があるuPD765互換IPがそのまま使えると思うので、
あとはデュアルポートRAMを共有メモリのような形にしてFDDユニットとしての
スロットにでも入れて、もう片側はFDCから直接読み書き出来るようにハードで
組めば、そんなに難しくはない気がしますが、MSXの各デバイスはハードの差を
BIOSが吸収すればいいので、デバイス毎に異なるハードウェア構成です。
従い、実機からdisk biosを吸い出しても、それと異なるハードウェア構成の
FPGA版FDCでは動作しないはずです。
CP/Mでは、OSがBIOS/BDOS/CCPの3ブロックに分かれており、ハードの差異はBIOSが
吸収します。CP/Mの場合、ディスク関係はBIOSにはセクタ単位で読み書きできる
プログラムだけハードに合わせて作れば、あとはBDOSがやってくれるようです。
MSX用DISK BIOSが同じようなモジュール構成になっていると簡単なのですが、
MSX用FDDカートリッジには、刺せばDISK BASICが使えるように、FAT読み書きまで
出来るかなりの高機能なプログラムが入っているようです。セクタ読み書きであれば
簡単なプログラムで済みますが、FATに対応させるとなると相当な量のコードを
書かなければならないでしょう。
そうなると、FDDユニット内のfdc biosから機種依存部分ではない共通部分だけ
抜き出して、機種依存部分は一から書き直す、という形が簡単だと思いますが、
そもそもMSXのdisk biosはそのように作られているのでしょうか。
posted by プー at 02:12| Comment(0) | MSXネタ | 更新情報をチェックする

2016年09月03日

MPUコア変更完了、しましたが

MPUコアをtg68からao68000に変更の作業が一段落しました。
動かない原因は、DMA中にもMPUがデータバスを切り離さなかったことと
割り込みとDMAが同時にアクティブになったときにDMA転送のACKが
INTへのACKと認識され、DMA転送のデータがINTベクトルと認識されていた
ということでした。
この部分修正し、Human68kは無事、起動し、SX-WindowもKO Windowも
起動するようになりました。が、予想以上に遅いようです。
tg68を10MHzで動作させたときにはKO WINDOWのEPSの値が800を超えるのですが、
ao68000 20MHzでは400にも満たない数値です。
速度アップも見込んだ変更だったので残念です。

上記、分かった問題のうち、DMA中にMPUがバスを切り離さないのは、
tg68を使ったものでも同じ設計になっていましたので(tg68はASをネゲート後、
一度バスをリードに変えるらしく、そのタイミングでDMA転送に切り替えるため
tg68のクロックイネーブルを切っているのでうまくいっていたと思われる)
気持ちが悪いのでこの部分は修正しようと思います。
posted by プー at 18:23| Comment(0) | X68000 | 更新情報をチェックする

2016年09月02日

MPUコア切換えを行っているのですが

tg68からao68000へのMPUコア切換えを行っているのですが、なかなか何故か
上手くいきません。
バス幅変換も、割り込み関連もそこそこ上手くいっているように見えるのですが、
OSのbootにはまだたどり着けません。
SRAMの設定で内蔵ターミナルが起動する設定にし、bootデバイスを全部
無しにすると、ちゃんと内蔵ターミナルが起動しますが、
HDDやFDDから起動しようとすると毎回違った動作をしています。
違った動作というのは、エラーで止まったり、BOOTセレクタが表示されたり。
BOOTセレクタというのは初めて見ました。
FDD/HDDでエラーが発生し、ROMでは発生しないという事は恐らくDMA関連では
ないかと予想するのですが、DMA関連は特に変更が必要ではなさそうだったので
何も手を加えていませんし、SignalTapIIで見た範囲では、DMAは正常に動作して
いるように見えます。
ただ、FPGAのRAM容量から、そんなに沢山のモニタが出来るわけではないので
軽く見た範囲だけですが。
posted by プー at 15:37| Comment(0) | X68000 | 更新情報をチェックする

2016年08月25日

MPUコアを変えてみようと思います

FPGA版X68k互換機には、MPUコアとしてOpenCoresのtg68を使用していました。
このコアには
・割り込みがオートベクタしかない
・FC出力が無い
・バスエラーが無い
という問題と、
・クロックあたりの処理は早いが、クロック数を上げられない
という特徴が有ります。
この中で、X68kのBIOSではわざとバスエラーを発生させる場所が
有るのですが、この部分が正常動作しない為、現在はSRAMの設定で
この部分を回避しています。
ですが、ソフトによっては同じように処理することが有る可能性が有りますので
他にIPが無いか、探したところ、同じOpenCoresにao68000というIPが有りました。
このIPは
・データバスが32bitで、アドレスバスにA0~A1が無い
という特徴が有ります。それ以外は本物のMC68000と目立った差異が無さそうです。
データバス幅に関しては、ブリッジを作って変換することで16bitバスに変換できそうです。
速度に関しては、同じ処理にtg68よりも2倍くらいのクロック数を要しますが、
クロック数を3倍程度上げられそうですので、1.5倍程度、高速で動かせそうな状況です。
一部割込みでバグが有りましたが(割込み7はNMIの筈だがマスクが掛っている)
tg68よりも使いやすそうでパフォーマンスも高いのでこれに切り替えていこうと
思います。
posted by プー at 21:19| Comment(0) | X68000 | 更新情報をチェックする

2016年08月13日

X68kも更新です

同じPCB用にX68kも更新しましたのでRTLをアップします。
release-F68k_DE0CVDEMU.160813.qar
ディスクエミュレーション用しかまだ修正できてません。
続きを読む
posted by プー at 17:37| Comment(3) | リリース/X68k | 更新情報をチェックする

久しぶりの更新です

FPGA関係としては約1年ぶりの更新でしょうか。
内容に関してはあまり変更は無いのですが、最近感光基板を使った別の趣味で遊んでおり、
DE0-FDD等接続用の中継基板を感光基板化すれば綺麗に簡単に作れるかと思って
中継基板をパターン化してみました。
パターン作成はフリーソフトのPCBEを使わせてもらいました。
IOboard2.pcb
は僕が入手できた部品(ヘッドホン端子、USBコネクタ等)に合わせて設計されているので入手した
部品に合わせて修正してください。
フィルムはサンハヤトのインクジェット用がちょっと高価ですが綺麗に出来上がります。
使用する部品はDE0接続用基板はんだ付けタイプの40pinメスコネクタ、FDD接続用34pinオスコネクタ、
FDD電源供給(I2C出力付き)用にUSB Aコネクタ、抵抗アレイ コモンタイプ1kΩ×8が3個、
ヘッドホン端子基板タイプ(SW無)、D-SUB 9pinオス基板はんだ付け用×2、適当なパスコン×2、
秋月のRTCユニット RTC-8564NB(プルアップ無)、適当なスーパーキャパシタ、ショットキダイオード
それ以外に数本のジャンパー(抵抗の足等)が必要です。

従来のピンアサインは手配線で引きやすいように配置されていましたが、直接コネクタを
DE0に刺すことを考えると引きにくいアサインですのでピンアサインは最初から配置
し直していますので従来のRTLだと互換性がありません。
ピンアサイン変更後のRTLは
release-de0cv.160813.qar
ですのでこちらを使用してください。(まだDE0-CV用しか修正できていません)
中に入っているピンアサイン表は、修正していないので無視してください。そこまでは修正できていません。
ついでに、実家でジョイパッドを発掘しましたので、ジョイパッドに対応させています。2ポートありますが
DE0につなげた時に手前側になる方を使用します。(X68k等では2ポート共使用可能)
posted by プー at 17:31| Comment(0) | リリース | 更新情報をチェックする

2016年05月16日

Ku C 両対応LNBF買いましたが。。。

DiSEqC 1.2/USALS対応のH-HマウントにCバンドLNBFを取付け、その脇にKuバンドLNBFを
取り付けています。
Cバンドは(ほぼ)正確にアンテナの中心に取り付けられているので、衛星の経度を入力すれば
USALSを使って目的の衛星の向きに調整されます。ですが、Kuバンド用LNBFは中心から
ずれている為、経度を入力して、更にDiSEqC 1.2ですこし向きを変えないと電波を拾えません。
このずれ量をSatFinderの「ピー」を聞きながら合わせるのですが、近くに強い電波を
出力する衛星があると、合わせたい衛星の「ピー」なのか、近くの衛星の「ピー」なのか
良く分からない状態になります。その為、同軸上にKuバンドとCバンドが一体になった
Ku/Cバンド 両対応のLNBFというのが販売されています。
ですが、周波数帯の違う=波長の違うアンテナを1本の筒の中に入れるので、感度が落ちてしまいます。
だけど、きっとまぁ使えるレベルでしょう、という事で1個、買ってみました。
ですが。。。Netでの情報の通り。Cバンドはほぼ単体のLNBFと同じくらいの感度が出ています。
ですが、Kuバンドは、本当に悪いです。JCSATは入りますが、キッチリ合わせて何とか入る
程度、KoreaSat5やIntelSat19は全然入りません。脇に付けたKuバンドLNBFは、アンテナを
斜めに使うので感度は落ちているはずです。対してセンターに取り付けられた一体型は
アンテナを真っすぐ使う為感度は高いはずです。もっとも、1.5mでセンターが合っていると
いう事は、かなり指向性は上がっているはずですので向きをきっちり合わせれば受信できるのかも
しれません。ですが、H-Hマウントのバックラッシも有りますし、完全に合わせるのは
無理だと思いますので早速、元のKuバンド脇付け構造に戻してしまいました。
posted by プー at 20:47| Comment(0) | 海外衛星放送 | 更新情報をチェックする

2016年04月21日

Kuバンド追加

衛星から送られてくるテレビ放送の電波には大きく分けて2種類あります。
3~5GHz程度のCバンドと10~13GHz程度のKuバンドです。
日本で一般家庭で見ているBSやCSはKuバンド、アジアをはじめ、国際放送に
多く使われているのはCバンドです。
僕はもともとKuバンドから始めましたが、Cバンドの方が広範囲に電波が届き、
放送しているチャネルも多いのでCバンドを後から始めました。
最初はDiSEqCのH-Hマウントにオフセットアンテナ+Kuバンドだったのですが、
CバンドのLNBFを購入してからはメインはCバンドを受信していました。
ですが、Kuバンドも受信できないわけではありません。
というわけで、H-HマウントにつけたメッシュアンテナのCバンドLNBGの隣に
KuバンドのLNBFもくっつけてみました。(ホームセンターのパイプ取付金具等で固定)
P_20160421_233127.jpg
CバンドのLNBFよりも8°程度、ずれていると思われ、USALSの設定を自分の住んでいる場所
から約8°設定をずらすとKuバンドのアンテナ位置が合うようです。

現在はKuとCのLNBF切り替えは電線の繋ぎ替えで対応していますが、DiSEqCスイッチを
注文してあり、自動切り替えができる予定です。
KuバンドのLNBFはもともとオフセットアンテナ用なのでアンテナ面積の一部の電波しか
拾えておらず、焦点もずれているため元の75cmオフセットの時と感度としては大して
変わらないレベルです。
posted by プー at 23:53| Comment(0) | 海外衛星放送 | 更新情報をチェックする