スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

freedos(98)でMOを使う

前回freedos(98)を実機のPC-9801USで使えるようにしましたが、
そのままでは外部とのデータのやりとりをするたびにCFを外して
PCで編集しないと行けないので不便です。
そこでMOを使えるようにすることとします。

MOを使用するデバイスドライバとして、vectorからダウンロードできる
「NEDRV」を使用します。
http://www.vector.co.jp/soft/dos/hardware/se005370.html

NEDRVの使用にはPC-9801-55互換のSCSIカードと
特定ベンダーのMOドライブが必要となりますが、
SCSIカードはICMのIF-2771ETが搭載されているので問題ありません。
MOドライブは中身を確認していませんが、とりあえずそのまま
認識させてみます。

結果ですが、以下の画像の通り、Bドライブとしてすんなり認識しました。

freedos98_mo.jpg

ただし、ディスクのフォーマットには注意が必要で、付属のNEFORM.EXEで
フォーマットしたディスクはWindows7では認識できず、Ubuntu 12.04では
認識できました。
Windowsやその他のフォーマッタでフォーマットしたディスクを使いたくなるところですが、
逆にNEDRVで認識できなかったり、NEDRVで書き込んだディスクがWindowsで
見えなかったり、その逆になるなど互換性に問題があるようです。
ですので、Windows7で認識できないのはあきらめて、NEFORM.EXEで
フォーマットしたディスクを使った方がよいかと思います。

FreeDOS(98)を実機で動かしてみる

FreeDOS(98)をPC-98エミュレータで動かす情報はあるのですが、
実機で動かしてみたという話は検索してみても出てこなかったのでやってみました。
ソースイメージは
http://black.sakura.ne.jp/~sakai/metajo/mtj_zai_download.htm
で公開されているツァイメタ女のイメージの中身を
http://mwlab.net/2011/11/pc-98-emu-hdd-image.html
で公開されているHDDイメージの中にあるkernel.sysとcommand.comに
置き換えたもので試しています。

とりあえず動かすだけならイメージの実データ部分をそのまま
IDE接続のストレージに書き出せばよいので
CFをUSBカードリーダ経由で接続してLinuxからddコマンドで書き込みます。

dd if=test.hdi of=/dev/sdx bs=512 skip=8
(書き込み元のイメージがAnex86形式のtest.hdiで、
書き出し先のCFカードが/dev/sdxで認識されている場合)

実験には前面から簡単にIDEディスクを交換できるPC-9801USを使用しました。
CFカードの容量は512MBですが、元のイメージのサイズが40MBなので
パーティションサイズは40MBとなります。

試してみた結果、以下のことが分かりました。

・EMM386.EXEを組み込むとハングアップする。
・FDXMS.SYSを組み込まないで起動するとハングアップする。
・FDXMS.SYSを組み込んで起動すればOK

なぜかXMSドライバを組み込まないとうまく起動しませんでした。
以下のようなconfig.sysを書けばOKです。

files=20
buffers=10
device=fdxms.sys
dos=high

起動時の画面と、試しにアリスソフト様がフリー宣言されたゲームの
闘神都市IIを動かしてみた画面が以下となります。

freedos98_real_machine1

freedos98_real_machine2

とりあえず起動には成功しましたが、このままだとディスクサイズが
40MBに制限されるので何とかしたいところです。
MS-DOSに頼ってしまっては本末転倒になってしまうので、
フリーソフトのみで何とかならないか検討中です。

NEOGEO CDの複合同期信号 その2

NEOGEO CDの複合同期信号について書いてからずいぶんたってしまいましたが、
ようやく対策する気になったので公開します。

NEOGEO CDのメインクロックですが、24.167829 Mhzが乗っていて
HSYNCは15.734kHzになるようです。
ということは、14.31818MHzからHSYNCを作れるので、
以下のような回路とお試しソフトウェアを作成して試してみました。
ソフトウェアについてはお試し状態で検証不十分なので
参考にする場合は自己責任でお願いいたします。

NEOGEO_SYNC_FIX.png

http://poorcore.web.fc2.com/files/NEOGEO_SYNC_FIX_20140127.ZIP

動作ですが、VSYNCが出力されるタイミングでHSYNCのタイミングが狂っているので、
その部分をAVRの16bit Timerで作成したPWM信号に置き換えています。

結果としては以下の写真のように、画面上部の歪みはほぼ無くなっているので
効果はありました。

NEOGEO_SYNC_FIX_1.jpg


NEOGEO_SYNC_FIX_2.jpg

ただ、現状では以下の問題があるため、よく見ると画面上部が左右に微妙にふらついています。

(1) GPIOで元のHSYNCの立ち下がりを検出してからタイマーを起動しているため、
200nsec程度遅れている
(2) 本体クロックとのずれを考慮して毎フレームタイマーを起動し直しているため、
PWM信号のタイミングがフレームごとに微妙に違う

次のステップとしては次の2通りが考えられます。

(a) 回路を内蔵してしまい、CPUクロックに同期してSYNCを生成する。
これならばいちいち本体信号とPWM信号を切り替える必要がないので完璧なはず。

(b) タイマーを起動する1つ前のHSYNCのタイミングで割り込みをかけて、次のHSYNC
にはプログラムウェイトでタイミングを合わせてタイマーを起動する。

時間があればどちらかにトライしてみるつもりです。



FS-A1FのFDD交換

PanasonicのMSX2、FS-A1FのFDDのゴムベルトが切れていたので
交換してみたのですが、読み取りはできるようになったものの
書き込みに失敗する状態だったため、FDDをAT互換機用の
ダイレクトドライブに交換することとしました。

MSX向けの他Amiga向けなどにも実績があり、現時点でも新品購入可能な
サムスン製のSFD-321Bを購入してみましたが、基板を確認したところ、
Web上の改造記事で扱われているものとはレイアウトが異なっていました。

SFD-321B_01.jpg

どうもコストダウンされてしまっているようです。

基板がフラックスまみれで汚い上、34ピンコネクタのグランドピンが
全結線になっていません。

SFD-321B_02.jpg

また、コネクタが斜めになっています。

SFD-321B_03.jpg

コネクタ自体が斜めになるように設計されていますので特注のコネクタのようですが、
基板とフレームのサイズを作り間違えてしまったのでしょうか。
(基板のコネクタ接続部分よりもフレームの方が後ろに長いので、この形状でないと
フレームに干渉します)

ともかく、34ピンをDISK CHANGEからREADYに変更するためのパターンは
残っているので、MSXで使うことはできそうです。

SFD-321B_04.jpg

34ピンをREADY信号にするには、DCとプリントされている側についている
0オーム抵抗をRDYとプリントされている側につなぎ替えます。
このとき、黒と赤のケーブル(モーターの電源ケーブル?)が邪魔になりますので
いったん外して作業した方が楽です。

SFD-321B_05.jpg

TurboR以外ではDISK CHANGE信号は必要ないようですが、必要であれば、
以下の箇所の0オーム抵抗を外して2ピンにDISK CHANGE信号を接続します。

SFD-321B_06.jpg


SFD-321B_07.jpg

Drive Select信号を変更するためのパターンは無くなっているので、
ソニー機に直接接続するなどで10ピンに接続する必要がある場合は、
QFP LSIの38ピンからFDDコネクタの12ピンに出ている信号を
パターンカットして10ピンにつなぎ替える必要があります。
(なお、34ピンのコネクタ形状の関係でソニー機の34ピンコネクタを
直接接続しようとすると筐体と干渉します)

FS-A1Fの26ピンコネクタを34ピンに変換して接続したのが以下の画像となります。
これでFDDの読み書きができるようになりました。

FS-A1F_FDD_01.jpg

Neptune-Xを作ってみた

X68000の拡張ボード用ユニバーサル基板MCC-169が手に入ったので
今更ではありますが、Neptune-Xを作ってみました。

Neptune-X_1.jpg

部品面は比較的まともに見えますが、

Neptune-X_2.jpg

配線を半田面側に回しすぎたため、この通りスパゲッティ配線になっています。
配線の固定と絶縁をかねて、カプトンテープを張り巡らしてごまかしました。
他の方の作例のようにUEW線を使った方がよかったですね。

RTL8019ASはISAカードではなく、秋月電子で売っている変換基板実装済みのものを
使っています。
EEPROMも秋月で売っているMACアドレス書き込み済みのものを使っており、
LAN端子はパルストランス内蔵品です。
おかげで背面から飛び出さずにすみました。

肝心の動作ですが、eb.xを実行したところXVIでは正常でしたが、PROでは
バッファRAMのチェックで6ビット目がNGとなりました。
Neptune-EvolutionではPROのバス安定化用の回路を搭載しているとの
ことなので、回路を工夫すれば対応できるのかもしれませんが、
元々XVIで使う予定だったので、このままにしておきます。

ftp通信はNereid向けのetherL12.sysを組み込んだ上でftp.xを実行したところ、
安定して行えました。
これでRS232Cでファイルを転送するよりは快適になりそうです。
(とはいえ16MHzの68000では20kB/s台しかでませんが)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。