MGSDRV version 3.20 Copyright(c) 1991-94 by Ain Copyright(c) 1997-2001 GIGAMIX Modified by Goripon & Influenza (GIGAMIX) Special Thanks Masaki Kiyono 2020年11月23日 加筆修正(Nextor DOSを追加、連絡先を変更) MGSDRVとは ---------- ・8bit PC、MSXパソコンの主要な音源である  * PSG音源  * FM音源(MSX-MUSIC, YM-2413/OPLL)  * SCC音源  を用いて最大17音まで演奏出来る、Musicドライバです。 ・MSXの1/60秒のタイマー割り込み機能を用い、音楽を演奏しながら他の処理と並列  動作させるBGM機能を搭載しています。 ・MGSDRVはフリーソフトウェアです。どなたでも無償で自由にMGSDRVを楽しむことが  できます。 ・80年代の“パソコン通信”主流の頃から広く普及しており、数多くの作品(=データ)  が発表されています。 ・MGSDRVは Ain.氏 が開発しました。現在ではギガミックスがサポートを行っており  ます。 ※ SCCは コナミ株式会社 のウェーブ音源ICです。 ※ Ain.氏は現在MSX用フリーソフトウェアのサポートを一切行っておりませんので、 MGSDRVに関するご質問は ギガミックスまでお寄せください。 動作環境 --------  * MSX1(64kB以上)、MSX2、MSX2+、MSX turbo R  * MSX-DOS(1)、MSX-DOS 2、Nextor DOS 使用方法 -------- MGSDRV自体(MGSDRV.COM)は、MSX-DOS2(Nextor DOS含む)で動作します。 v2.xxまでのMGSDRVとは違い、基本的にデータを演奏する事しか行ないませんので、 これだけでは曲データを作成したり演奏を聞くことはできません。  DOS1上では常駐が出来ず、他のプログラム(MGSEL,MGSC等)がオーバーレイとして 読み込むだけですので実行する意味はほとんどありません(バージョン番号が確認 出来る位)。DOS2では以下に示すオプションが使用できます。  /Z .... ドライバを常駐、開放します。常駐時には最低32kバイトの空きマッパ RAM(プライマリ以外は不可)が必要です。オプションの後に実行するDO Sコマンドが指定できます。指定が無い場合、REBOOT.BATが実行(あれば) されます。なおオプションは左から解釈、実行されますのでこのオプ ションは一番最後(右端)に書くようにしてください。  /Dx ... ブートドライブを設定します。この指定はMGSDRVがDOSをリブートする時 だけでなく、以降のリブートでも有効になります(BASICで_SYSTEMを実行 した時など)。xはそのままドライブ名(A〜H)を指定します。  /Sx .. SCCのスロット番号を強制的に指定します。スロット番号は拡張スロット 番号(基本スロットの場合は0)×4 + 基本スロット番号を16進数で記述し て下さい。このオプションが指定されると、そこがRAMやROMでもSCCと見 なして処理しますので指定を誤ると暴走する場合があります。  /Bx .. 曲データ用セグメントを複数確保します。最大10個まで指定することが出 来ます。このオプションが指定されなくとも自動的に1個確保されます。 /Bの後に(確保したいセグメント数)-1を指定して下さい。4つ確保したい のなら/B3です。/B9(最大)とした時は、16k+160kで176k(11セグメント)必 要です(未改造のFS-A1STでは/B9を指定することは出来ません)。  /Kx ... キーボードで演奏開始、音量などをコントロールする際にテンキーと一緒 に押されるキーを指定します。無指定の時は[CTRL]になっています。 指定可能なキーと、その値は次の通りです。 1...SHIFT 2...CTRL 3...GRAPH SHIFTなら/K1をGRAPHなら/K3を指定します。0で無効に出来ます。 使用例: ・MGSDRV /Z MGSDRVを常駐(解放)させる。 ・MGSDRV /ZAUTOEXE2 MGSDRVを常駐(解放)させた後、AUTOEXE2を実行。 ・MGSDRV /DC /Z ブートドライブをドライブCに変更してから常駐。 ドライブCのREBOOT.BATが実行されます。 ・MGSDRV /S5 /Z SCCのスロット番号を#1-2に強制指定して、常駐。 ・MGSDRV /DB: ブートドライブをドライブBに変更する。 常駐はしません。 ・MGSDRV /B4 /Z 曲データ用セグメントを5つ確保して常駐。 コントロールキーの割り当てについて ----------------------------------  /Kで設定されたキーと、テンキーの以下のキーを押すことにより、いつでも(独自  の割り込みルーチンを持つものや、割り込みを禁止したまま動作するプログラムを  除く)演奏開始、音量の操作などが行なえます。  / ... 演奏停止  * ... 演奏開始  - ... 音量を下げる  + ... 音量を上げる  . ... 演奏中断  , ... 演奏再開  0〜9 ... 曲データセグメントを指定された番号に切り替える  これらの処理は割り込みで行なわれるため、プログラムによっては動作しなかった  り不都合が発生する場合があります。特に演奏開始は処理時間が極端に長いため通  信ソフトでは文字落ちの原因となります。必ず実行中のプログラムが入力待ちなど  になっている状態で操作して下さい。  0〜9を押すと、曲データセグメントが切り替わります(セグメントなんて専門用語  (笑)を出していますが、この場合曲データを保存しておく領域と思って下さい)。2  個以上のセグメントを確保している場合はそれぞれのセグメントに曲データをロー  ドしておいて、それを自由に切り替える事が出来ます(切り替えると必ず演奏が停  止します)。有効なセグメントでなかった(確保された数を超えている)場合、演奏が  停止するだけで実際には切り替わりません。切り替える際は、他のキーと同じく実  行中のプログラムが入力待ちなどになっている状態で行なって下さい。特にMGSDRV  を使用するほとんどのプログラムは現在のところ、突然セグメントが切り替えられ  る事を前提に作られていません(突然追加された仕様なので当然ですが)ので、それ  らのプログラム実行中は細心の注意を払って下さい。 操作例:(mgsdrv /b3 /zとしてセグメントを4個確保した場合)  (CTRL + [0]を押す) A>mgsqc ys200 ← 適当な曲1  (CTRL + [1]を押す) A>mgsqc ys201 ← 適当な曲2  (CTRL + [2]を押す) A>mgsqc ys202 ← 適当な曲3  (CTRL + [3]を押す) A>mgsqc ys203 ← 適当な曲4  CTRL + [0]を押すとys200のセグメントへ、  CTRL + [1]を押すとys201のセグメントへ、  CTRL + [2]を押すとys202のセグメントへ、  CTRL + [3]を押すとys203のセグメントへ、  それぞれ切り替わります。切り替えた後はCTRL + [*]で演奏開始。 ※ MGSQCはいーた氏が作成されたフリーソフトウェアです。 注意 ---- ・R800モードや、Z80/5.37MHzモードなどの高速モードに対応していますが、あくま  で「そのモードでも動作する」という意味での「対応」です。モードの変更は一切  行いませんので、CPUモードを変更する場合は、他のツールを使用してください。 ・ブートドライブを変更した場合は、そのドライブにMSXDOS2.SYSとCOMMAND2.COMが  存在しないと正常にブートしません。カレントドライブはブートしたドライブにな  ります。 ・演奏には割り込みを使用していますので、長時間割り込みを禁止されると(例えば  ディスクアクセス時)演奏が遅くなったりしますが、異常ではありません。 Z80/5.37MHzモードへの対応について --------------------------------- Panasonic製のMSX2+には、プログラムで状態の変更や参照が可能なクロックアップ機 能が搭載されており、この機能を使用しクロックアップした状態を「Z80/5.37MHzモー ド」と呼んでいます(ビクター HC-90/95の「ターボモード」とは別のものです)。 このモードでは、CPUの動作速度が1.5倍になりますがPSGに供給されるクロックも 1.5倍になってしまうため、そのままでは1.5倍高い音を再生したり、ハードエンベ ロープの周期が1/1.5倍になったりといった問題が発生してしまいます。 そこでMGSDRVでは、CPUの状態をプログラムで参照し、Z80/5.37MHzモードだった場合、 PSGのレジスタに書き込む値に補正をかけ、問題を回避するようにしました。完全に 自動で認識しますので、演奏や常駐などの際に特殊な操作は必要ありません。 ただし、補正計算の都合上、Z80/5.37MHzモードでは、通常よりも表現できる範囲が 狭まっており、PSGに関してのみ、精度の低下と、以下のような制限が発生します。 ・O1D#以下の音が正常に出力されません。  (約40.97Hzの音が出力されます) ・Nコマンドでの値が22以上になるような周波数のノイズが正常に出力されません。  ("N21"相当のノイズが出力されます) ・Mコマンドでの値が43691以上になるようなハードウェアエンベロープ周期が設定  されません。  ("M43690"相当のエンベロープ周期が設定されます) また、PSGに対して書き込みが行われる時点で補正を行っている都合上、PSGへの書き 込み頻度が低いデータの場合、再生中にZ80/5.37MHzモードに切り替えたり、逆に通 常の3.58MHzモードに戻したりすると、正常に演奏されなくなってしまう場合があり ます。再生中には、出来るだけモードの切り替えを行わないでください。 バージョンアップ履歴 -------------------- 3.19→3.20  ・Z80/5.37MHzモードへの対応が不完全だったので修正した  ・起動時のコピーライト表示が古いままだったので修正した  ・ドキュメントの不備を修正した 3.18A→3.19  ・パナソニックFS-A1FX/WX/WSXのZ80/5.37MHzモードに対応した   (清野まさきさん、ありがとうございます)  ・ドキュメントの現状に合わない記述を修正した 3.18→3.18A  ・バージョン番号が3.17のままだったので修正した 3.17→3.18  ・スロット構成によってはSCCが鳴らなくなってしまうバグを修正した  ・/Sxオプションによるスロット設定値のミスを修正した  ・メンテナンスをGIGAMIXに委託した 転載、配布について ------------------ 転載、配布は自由に行なって構いませんが、アーカイブの内容は変更しないでください。 不明な点があれば、下記WEBページ、またはメールアドレスまでお問い合わせください。 MGSDRVへのリンク先は https://www.gigamix.jp/mgsdrv/ でお願いします。 連絡先 -------------- MSX Club Gigamix Website https://www.gigamix.jp/ Twitter @nf_ban (Takashi Kobayashi) E-mail nf_ban@gigamix.jp (Takashi Kobayashi) [eof]