FreeDOS(98)動作確認 : ERCACHE + ERCVFD

FreeDOS(98)上でERCACHEとERCVFDを使用して仮想フロッピーディスクの動作を確認してみます。

ERCACHEの使い方については、DOSで行こう!! というWebページのERCACHEを導入しよう-仮想FD編-を参考にさせていただきました。
(トップページに表示される移転先は消滅しておりますが、トップページ以外はまだ参照可能なようです)

※ERCACHEは多機能ですので、詳細な使い方は付属のドキュメントを参照ください。

ERCACHEと関連ファイルは作者えらー15様のWebページから最新版がダウンロードできます。

えらー15の小屋 : http://hp.vector.co.jp/authors/VA000363/

以下のファイルがA:\ERCACHEフォルダに格納されていることを前提とします。

ERCACHE.EXE
ERCGSV.EXE
ERCVFD.EXE
ESOUND.BIN
MKSOUND.EXE
ESOUND.COM (※ESOUNDのドキュメントに従い生成する必要があります)

事前準備として、「FreeDOS(98)動作確認 : HSB」で記載した内容でHSBを組み込んでおく必要があります。

HSBでCONFIG、AUTOEXECを指定しての再起動はできないので、FDCONFIG.SYSを以下の例に示すような内容に差し替えて起動する必要があります。

FILES=30
BUFFERS=10
LASTDRIVE=Z
DOS=HIGH
DEVICE=HSB\HSB.EXE VU IGDC I26 II[A468&7F]
DEVICE=ERCACHE\ERCACHE.EXE /HM /IGDC2 /VFDS=100 /VFDMAX=10 /VFDKEY /VFD1FD /HIDEDEV /400LINE

AUTOEXEC.BATではHSBとERCACHEのあるディレクトリにパスを通した上で、余計なドライバや常駐プログラムをロードしないようにしてください。

この状態でリセットボタンを押して再起動すると、以下の画面のようにERCACHEが組み込まれます。

FreeDOS98_ERCACHE_01.jpg

次に、仮想フロッピーディスクで起動するアプリですが、ここではアリスソフトアーカイブで配布されているランスのPC-98版を使用します。
D88形式で配布されておりますが、ERCVFD形式に変換しておく必要があります。VFICを使用して変換しておきます。

VFIC : http://www.vector.co.jp/soft/win95/util/se151106.html

以下の4枚分のフロッピーイメージを実機のA:\VFD\RANCEディレクトリに格納するものとします。

DISKA.VFD
DISKB.VFD
DISKC.VFD
DISKD.VFD

以下の起動用のバッチファイルを用意します。

@ECHO OFF
A:\ERCACHE\ESOUND /VF
A:\ERCACHE\ERCVFD /LOAD A:\VFD\RANCE\DISKA.VFD
A:\ERCACHE\ERCVFD /LOAD A:\VFD\RANCE\DISKB.VFD
A:\ERCACHE\ERCVFD /LOAD A:\VFD\RANCE\DISKC.VFD
A:\ERCACHE\ERCVFD /LOAD A:\VFD\RANCE\DISKD.VFD
A:\ERCACHE\ERCVFD /IC- /REBOOT

この状態で起動用バッチファイルを実行すると以下のようにディスクイメージが読み込まれます。

FreeDOS98_ERCACHE_02.jpg

すべて読み込まれた後に再起動がかかり、ゲームが起動しました。

FreeDOS98_ERCACHE_03.jpg

というわけで、ERCACHE + ERCVFDによる仮想フロッピーディスクの使用は可能でした。これは実機運用ではかなりありがたいです。

なお、この環境ではディスクの書き込みがRAMに対して行われるので、データを保存するには以下のようにする必要があります。

[1] CTRL + GRPH + INS を同時押しして再起動する
[2] A:\ERCACHE\ERCVFD.EXE /VFDSAVE? と入力してファイルに書き出す

なんですが、これだと保存を忘れる可能性があるので、運用としてはセーブに使うディスクのみは実フロッピーを使うのがよいのではないかと思います。
やり方ですが、実フロッピーが未挿入の状態で、ゲームの起動直後に以下のキーを入力します。

セーブディスクがドライブ#1の場合: CTRL + GRPH + ESC
セーブディスクがドライブ#2の場合: CTRL + SHIFT + GRPH + ESC (2FDD機である必要があります。1FDD機の場合は /DRIVE=2134 を指定する方法があるそうですが、詳しくはERCACHEのドキュメントをご参照ください)

これでイメージのマウントが解除されますので、その後実フロッピーを挿入すると実フロッピーに対してアクセスするようになります。
この操作はいつやってもいいはずではありますが、ゲーム中に行うとハングアップしてしまうことがありましたので、ゲームの起動直後に行ったほうがよいと思います。(セーブするディスクに入れ替えがあると難しいですが)
スポンサーサイト

FreeDOS(98)動作確認 : HSB

MS-DOS以外でHSBを動かすのは無謀であろうという気はしますが、実機環境では動作してくれた方がありがたいのは間違いないので試してみます。

HSB : https://www.vector.co.jp/soft/dos/util/se002233.html

※ HSBですが、そのままだとライトバックキャッシュのCPUでは問題がありますので、えらー15様のWebページで公開されている対策パッチを当てておく必要があります

以下のようなFDCONFIG.SYSを作成して一度リブートします。
※ 以下のFDCONFIG.SYSは386以上のCPUで86音源を搭載している場合の例となります。
HSBはA:\HSBに格納されているものとします。

DEVICE=HSB\HSB.EXE I26 VC Y-
FILES=30
BUFFERS=10
FCBS=2,0
LASTDRIVE=Z
DOS=HIGH
DEVICE=FDOS\BIN\HIMEMX.EXE
DEVICE=FDOS\BIN\EMM386.EXE RAM FRAME=C000
DEVICE=HSB\HSB.EXE VU IGDC I26 II[A468&7F] IGDC IG IF Y1 T2 TS

AUTOEXEC.BATには以下の記述を追加しておきます。

SET HSBEXT=HSB

再起動して環境を保存すると、以下のように正常に起動しました。

FreeDOS98_HSB_01

動作ですが、通常の高速再起動は可能です。
以下は HSB IC- で再起動する前後のCPUBENCHの結果です。

再起動前は以下となります。

FreeDOS98_HSB_02

再起動後は以下となり、キャッシュがオフになって性能が落ちています。

FreeDOS98_HSB_03

ただし、使えない機能もありまして、CONFIG.SYS、AUTOEXEC.BATを指定して再起動しようとすると失敗します。
以下はA:\CONFIGフォルダのCONFIG.ERCとAUTOEXEC.ERCを指定して再起動した場合ですが、IO.SYSが読み込めずに失敗します。
(コマンドは HSB A:\CONFIG\ERC)

FreeDOS98_HSB_04

原因についてですが、これはHSBとFreeDOSの仕様上やむを得ないものでありまして、HSBは指定したCONFIG、AUTOEXECファイルに加えて指定ドライブのルートディレクトリに存在するIO.SYS、MSDOS.SYSをメモリに読み込んだ状態で再起動しようとします。
しかしながら、FreeDOSの仕様上KERNEL.SYSは存在しますが、IO.SYS、MSDOS.SYSは存在しませんので読み込むファイルが無いことになります。
これはHSBをFreeDOS対応に改造しなければ対応できません。

とはいえ、通常の再起動が機能するのであればERCACHEが動作する可能性はあるので、次回はERCACHE+ERCVFDを試してみます。



FreeDOS(98)動作確認 : FMDSP、MIMPI

FreeDOS(98)上でDOSアプリをいくつか動作確認してみます。
1回目はFM音源プレーヤーのFMDSPとMIDIプレーヤーのMIMPIです。
実機は以下の機種を使用します。

機種: PC-9801BX
FM音源: PC-9801-86 + ちびおと

FMDSP : https://www.vector.co.jp/soft/dos/art/se022227.html
FMP : https://www.vector.co.jp/soft/dos/art/se003498.html
PPZ8: http://www.vector.co.jp/soft/dos/art/se022226.html

MIMPI : ユージのホームページ様 MIMPI作品->MIMPIのページ : http://www.oekaki.org/yuji/
MU : https://www.vector.co.jp/soft/dos/art/se021479.html

機種: PC-9821An
MIDI音源: GPPC-N


FMDSPですが、以下の画像のように問題なく起動し、FMPの再生もできました。

FreeDOS98_FMDSP_01.jpg


MIMPIですが、MUから起動しようとすると以下のようにログが出力されてハングアップします。

FreeDOS98_MU_01.jpg

MIMPI自体を直接起動した場合は問題なく、MIDI再生、WRD表示ともに可能でした。
(WRD付きMIDIの確認は、Gomiなページ様で公開されているPublic Domainの曲を使わせていただきました。)

FreeDOS98_MIMPIV4_01.jpg

次はHSBを動かしてみます。


FreeDOS(98)に外部ストレージを認識させる その3

FreeDOS(98)に外部ストレージを認識させる その2 で記載した内容のうち、ATAPI ODDとSCSI MO/PCカードリーダーについて、実機で動作確認しました。
使用機種は以下となります。

(1) ATAPI ODD

機種: PC-9801BX4
光学ドライブ: SW-9587

(2) SCSI MO/PCカードリーダー

機種: PC-9801BX
SCSIカード: SC-98II
MOドライブ: DTST-H640
PCカードリーダー: CARDDOCK-EX/SC

ATAPI ODDの結果です。
認識してディスクアクセスもできました。

FreeDOS98_ATAPIODD_01.jpg

FreeDOS98_ATAPIODD_02.jpg

SCSI MOの結果です。
認識してディスクアクセスもできました。

FreeDOS98_SCSIMO_01.jpg

FreeDOS98_SCSIMO_02.jpg

SCSI PCカードリーダーの結果です。
認識してディスクアクセスもできました。

FreeDOS98_SCSIPCCard_01.jpg

FreeDOS98_SCSIPCCard_02.jpg

というわけで、確認したものについてはすべて認識、ディスクアクセスが可能でした。

参考としてPATACD.SYSを使った場合の結果ですが、以下の画面で数分止まってしまう場合がありました。
光学ドライブをDVDマルチドライブに換装しているので互換性問題が出たのかもしれません。

FreeDOS98_PATACD.jpg

次回からはDOSアプリケーションを動かしてみることにします。
懐かしのアプリとか、実機でしか使わないようなアプリを試してみる予定です。

FreeDOS(98)に外部ストレージを認識させる その2

FreeDOS(98)にストレージを認識させるために必要なドライバを記載します。

[1] - 1 ATAPI ODDを認識させる場合

FreeDOS(98)の提供ページにあるpatacd.sysが使えますが、PC-9801BX4で試してみたところ、ドライブを認識した段階でコンソール表示が止まってしまい、数分経過した後に起動完了するような現象が時たま発生したため、EDWARD98.SYSを使用することとしました。

EDWARD98 : https://www.vector.co.jp/soft/dos/hardware/se033916.html
CD-SD Mini : https://www.vector.co.jp/soft/dos/hardware/se007453.html
SHSUCDX : http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/dos/shsucdx/

EDWARD98.SYSとSHSUCDX.COMをブートフロッピーのルートディレクトリにコピーします。
CD-SD MiniはCDSDMINI.ASPをCDSDMINI.SYSにリネームしてブートフロッピーのルートディレクトリにコピーします。

FDCONFIG.SYSには以下のように記述します。

DEVICE=EDWARD98.SYS /ERD /LUN
DEVICE=CDSDMINI.SYS /D:CD_001 /I2

AUTOEXEC.BATには以下のように記述します。

SHSUCDX /D:CD_001,Q /Q

これでODDがQドライブとして認識されます。

※CDSDMINI.SYSの/I2はSCSI IDの指定ですので、ODDが別のIDで認識されている場合は変更してください。


[1]-2 SCSI接続のODDを認識させる場合

CD-SD MiniのPC-9801-55対応版、もしくはHENRY103.SYSとCD-SD MiniのASPI版の組み合わせがありますが、今回は後者としました。

HENRRY : http://www.vector.co.jp/soft/dos/hardware/se000679.html
CD-SD Mini : https://www.vector.co.jp/soft/dos/hardware/se007453.html

HENRY103.SYSとSHSUCDX.COMをブートフロッピーのルートディレクトリにコピーします。
CD-SD MiniはCDSDMINI.ASPをCDSDMINI.SYSにリネームしてブートフロッピーのルートディレクトリにコピーします。

FDCONFIG.SYSには以下のように記述します。

DEVICE=HENRY103.SYS /F
DEVICE=CDSDMINI.SYS /D:CD_001 /I5

AUTOEXEC.BATには以下のように記述します。

SHSUCDX /D:CD_001,Q /Q

これでODDがQドライブとして認識されます。

※CDSDMINI.SYSの/I5はSCSI IDの指定ですので、ODDが別のIDで認識されている場合は変更してください。

[2][3] SCSI接続のMO、PCカードリーダーを認識させる場合

MOをスーパーフロッピー形式のフォーマットで使用するとWindowsでの取り扱いに問題があるため、FDISK形式で運用することとします。このため、FDISK形式のMOを認識できるSCSIDISK.SYSをHENRY103.SYSと組み合わせて使うこととします。
これにより、MOとPCカードリーダー接続のCF、SDカードは同じドライバで認識させることができます。

※2018/4/24追記
SCSIDISK.SYSを使った場合、ドライバ組み込み時にFDISK形式のディスクが挿入されていないと、コンソールログは正常でもドライブレターが割り当てられない現象がありました(MS-DOS6.2でも同じ)。スーパーフロッピー形式のMOを使う場合はベンダー提供のドライバを使った方が良さそうです。

HENRRY : http://www.vector.co.jp/soft/dos/hardware/se000679.html
SCSIDISK.SYS : Taka2のページ様 X68000関連 : http://www.doga.co.jp/~taka2/

HENRY103.SYSとSCSIDISK.SYSをブートフロッピーのルートディレクトリにコピーします。

FDCONFIG.SYSには以下のように記述します。

DEVICE=HENRY103.SYS /F
DEVICE=SCSIDISK.SYS

これで、最終ドライブの次のドライブレターで認識されます。

MOをFDISK形式でフォーマットする方法ですが、USB接続のMOの場合、セクターサイズ512バイトのメディア(128MB、230MB、540MB)であれば、SDメモリカードフォーマッタでフォーマットできてしまうので、これを使うこととしました。(SDカードと同じ扱いにできますし)

※2018/4/24追記
Windows10環境ではMOをFDISK形式にしてしまうと、スーパーフロッピー形式に戻すには一度MBRを削除する必要があります。やり方としては、余裕を見て32kBのAll 00hのイメージファイルをWin32DiskImagerで書き込むのが手っ取り早いかと思います。MOに関してはMBRを削除した上でWindows10標準のフォーマットを実行すればスーパーフロッピー形式でフォーマットしてくれるようです。

SDメモリカードフォーマッタ: https://www.sdcard.org/jp/downloads/formatter_4/

FreeDOS98_MO_Format_1.png

FreeDOS98_MO_Format_2.png


せっかくですので、マルチコンフィグにしてみました。
FreeDOS(98)の配布ページで公開されているHDDイメージの内容を参考にさせていただきました。

・FDCONFIG.SYS

MENUCOLOR=7
MENU
MENU Boot Select Menu
MENU ----------------
MENU
MENU 0 XMS 2.0 driver
MENU 1 XMS 2.0 driver + IDE ODD
MENU 2 XMS 2.0 driver + SCSI ODD
MENU 3 XMS 2.0 driver + SCSI MO
MENU 4 No XMS driver
MENU 5 No XMS driver + IDE ODD
MENU 6 No XMS driver + SCSI ODD
MENU 7 No XMS driver + SCSI MO
MENU
MENU F5 bypass config.sys & autoexec.bat
MENUDEFAULT=0,5

01234567?FILES=30
01234567?BUFFERS=20
01234567?LASTDRIVE=Z
0123?DOS=HIGH

0123?DEVICE=FDXMS286.SYS

15?DEVICE=EDWARD98.SYS /ERD /LUN
2367?DEVICE=HENRY103.SYS /F

15?DEVICE=CDSDMINI.SYS /D:CD_001 /I2
26?DEVICE=CDSDMINI.SYS /D:CD_001 /I5

1256?SET DEV_CD=CD_001

37?DEVICE=SCSIDISK.SYS

・AUTOEXEC.BAT

@ECHO OFF

if not "%DEV_CD%x" == "x" shsucdx /D:%DEV_CD%,Q /Q

set TZ=JST-9


実機での動作確認結果はその3で記載します。