UNPKG

@nataliapc/mcp-openmsx

Version:

Model context protocol server for openMSX automation and control

669 lines (474 loc) 30.7 kB
MGSC MML compiler version 1.11 Copyright(c) 1992-93 by Ain テキストファイルに書かれたMMLをMGSフォーマットの演奏データへ変換します。 ★ 使用方法 書式:MGSC <Source file[.MUS]> [<Object file>] [Option] ・<Source file>  MMLソースのファイル名を指定します。拡張子を省略すると.MUSと見なします。 ・[<Object file>]  コンパイル後のデータのファイル名を指定します。省略された場合は<Source file>  と同じファイル名になります。  ※ DOS2では、ファイル名にパスを含めることができます。 ・[Option]  オプションです。使用可能なものは以下の通りです。  -p ... コンパイル終了後、演奏を開始させます。MGSDRVが無いとエラーになります。 演奏中の操作は、SELECTで早送り(Turbo RのみSHIFT+SELECTで高速早送りが できます)、ESCで終了です。MGSDRVを常駐させている場合のみSHIFT+ESCで 演奏を止めずに終了させることができます。MGSDRV v3.13以降ならテンキー 操作で再演奏、音量調整なども行なえます。 -q ... -pオプションで演奏が開始されるとESCが押されるか、演奏が終了するまで DOSに戻りませんが、このオプションを指定するとすぐにDOSへ戻ります(MG SDRV常駐時でないと一瞬だけ演奏してDOSへ戻ってしまいます)。-pオプシ ョンと一緒に使用しないと意味はありません。 -t ... コンパイル終了後にトラック毎の使用状態を表示します。括弧の中の数字は 左から、 確保(#allocなどで)されたバイト数 実際に使用しているバイト数 残りバイト数 となっています。一番下にはそれぞれの合計値が表示されます。 -s ... #no_mgs命令を無視して強制的にデータをセーブします。  -n ... データをセーブしません。デバック中は-pと併用するといいでしょう。 -e ... CP/Mファンクションのみを使用します(後述の補足参照)。 ★ 制御命令 ・#opll_mode <0|1>  OPLLのモード。0はFM9音モード、1はFM6音+リズム音モード。この命令を実行しな  いと他の制御命令(MMLも)は一切使用できませんので、必ず最初に実行するように して下さい。 ・#machine_id <0~7> データを作成(コンパイル)した機種コードを指定します。この機種コードに対応し ているプログラムでは、どのメーカーのマシンでも音量バランスが一定になるよう に補正を行います。機種コードは今のところ以下の番号が予約されています。 1:SONY製マシン 2:Panasonic製マシン 3:SANYO製マシン 上記以外の機種コードは無効になります(使用しないで下さい)。それらのマシンは 0(省略値)を設定して下さい。 ・#lfo_mode <0|1>  LFOのモード。1を指定するとLFOの速度が若干速めになります。初期値は0です。 ・#title <"string">  データのタイトル名を定義します。数行に渡って書きたい場合は"{~}"で囲んで下  さい。長さは1kバイトまでです。コメントなどを含んでも構いません。  例:#title { "Falcom Ys morning grow" "要SCC" }  引用符(")を文字列中に含ませたい場合は2つ並べて書いて下さい。タイトル名が80  文字を超えるとObject too bigエラーが発生する場合がありますが、大抵、#alloc  を使用してトラックバッファを確保(自動的に確保されるバイト数より減らす)すれ  ば抑えられます。 ・#alloc <track no. = bytes>  トラックバッファを割り当てます。通常、トラックバッファはそのトラックを初め  て使用する時に自動的に(16K÷総トラック数(16又は18)バイトが)確保されますが、  多くのMMLを書き込むトラックがある場合はこの命令であらかじめ確保しておいて  下さい。  例:#alloc 0=100 ← トラック0に100バイトを割り当てる。 #alloc { 3=100, 5=256 } ← 1度複数のトラックバッファを確保する場合。 トラックバッファの合計は16kバイトまでです。トラック0はMMLを書き込むのでは  なく、音色設定等で使用されます。通常は設定しなくても初期値で十分足ります。 ・#psg_tune { cの音程データ,c#の音程データ .... bの音程データ }  PSG音源およびSCC音源の音程の元となるデータを変更します。それぞれのデータは  オクターブ1の音程データです(範囲は0~4095。12音程分必要)。通常、使用する必 要はありません。 ・#opll_tune { cの音程データ,c#の音程データ .... bの音程データ }  FM音源の音程の元となるデータを変更します。それぞれのデータはオクターブ1(bl ock情報を除く)音程データです(範囲は0~511。12音程分必要)。通常、使用する必 要はありません。なお、この命令を使用するとMMLの@\(デチューン微調整)が狂い ます(仕様)。 ・#tempo <57~2047>  テンポを設定します。ソース中、1回のみ有効です。最初にテンポを設定するときは  MMLのtコマンドではなく、できるだけこちらを使用して下さい。初期値は120です。 ・#macro_offset <定義文字 = no> 1文字の英文字(A-Z)にマクロのオフセット番号を定義します。通常、マクロの指定 は0-255の数値で行いますがこの命令を使用すると、各文字にオフセット番号を割り  当てる事ができ、使用目的が分かりやすくなります。 例:#macro_offset a = 32 *48 = { cdefgab } *a16でマクロ番号48を呼び出したのと同じ結果になります。 #macro_offset { a = 32, c = 16 } *20 = { t150 } *40 = { v15 } *42 = { l16 } 1 *c4*a8*a10 トラック1には、"t150v15l16"が書き込まれます。 この指定(*a16など)は、マクロ番号を扱う全ての命令、MMLで使用出来ます。内部   でマクロ番号に変換しているだけですので、重複したりオフセット+値の結果が255 を超えないように注意して下さい。 ・#play_start  コンパイル終了後、演奏を開始します。コマンドラインの-pと同じ。 ・#no_mgs .MGSファイルを作りません。コマンドラインの-nと同じ。 ・#track_status  コンパイル終了後トラック毎の使用状態を表示します。コマンドラインの-tと同じ。 ・#play_track  演奏開始時に指定されたトラックのみを演奏させます。MGSCで演奏する場合のみ有効  です。この命令を省略した場合は、全てのトラックが演奏されます。  例:#play_track 367ABR   トラック3,6,7,A,B,Rのみを演奏する。 なお、この命令は演奏させるトラックを指定するだけで実際に演奏はしません。 ・#end  ソースの終わりを定義します。MGSCはこの命令が現われた行でコンパイルを終了し  ます。普通は<EOF>をソースの終わりと見なしますので、この命令は省略できます。 ・#disenable_mgsrc mgsrc.comで逆コンパイルできないように禁止属性を掛けます。乱用はあまりお薦め 出来ませんが・・・。 ★ マクロ定義  MGSCではマクロを定義することができます。マクロの呼び出しは、MMLの"*"コマン ドで行ないます。マクロ定義の段階では、内容についての解釈を一切行ないませんの でエラーはマクロを呼び出している行で発生します。  定義の方法は行の先頭で、    *<マクロ番号> = { 文字列 }  とします。マクロ番号の範囲は0~255です(オフセット指定も可能)。文字列は数行 に渡って書いても構いませんが、終わりには必ず"}"を書いて下さい。再定義(同じマ クロ番号に対して2回以上定義すること)はできません。マクロ全部の長さは4kバイト 以内にして下さい。 ★ プログラム制御用文字列定義  外部プログラムに受け渡す文字列を定義します。外部プログラム側で適当に解釈し て演奏とタイミングを取るなど、色々と利用できます(具体的にはMGSDRV内のワーク エリア(MIB)へアドレスが渡されます)。MGSELではMMLの@mコマンドを使用して文字列 を呼び出すと、その文字列を画面上に表示するようになっています。  定義の方法は行の先頭で、    @m<定義番号> = { "文字列" }  とします。文字列は引用符で囲まれていなければなりません。定義番号は0~127 の範囲です。番号を省略すると直前に指定された番号(初期値0)+1が用いられます。 コントロールコードなどはエスケープ記号(\)を使用して、指定したいキャラクタの コードに40Hを足したキャラクタを書きます(^Cなら\C、^Zなら\Z)。それ以外に次の ような指定も可能です。    \\ \を意味する。 \" "を意味する。 \x?? 16進数(2桁)で指定されたキャラクタ。  エスケープ記号の直後に書かれた文字は大文字化されます。\@は文字列の終了コー ドとして内部で用いられていますので使用できません。 文字列はトラック0に書き込まれます。多くの文字列を定義する場合はあらかじめ #alloc等でトラックバッファを多めに確保しておいて下さい。 制御文字列を使用した時の動作などは、それぞれのマニュアルを参照してください。 ★ 音色定義  行の先頭が"@"である場合、音色定義となります。<number>はすべて音色番号を意  味します。範囲は0~31です。 ・@e<number> = { Mode,Noise,data...data }  エンベロープデータを定義します。旧MGSDRV(以下MGSDRV ver2.xxのことを示します)  の_ESETと同じ形式です。  (1) Mode PSG音源で使用された場合のトーン・ノイズのモードを指定します。範囲は0~3、  省略値は1です。  0 ... 無指定(変化なし)  1 ... トーンのみ  2 ... ノイズのみ  3 ... トーンとノイズ  (2) Noise  PSG音源のノイズ周波数を指定します。PSG音源以外のトラックで使用された場合は  無視されます。Modeが2以上の場合のみ有効です。範囲0~31、省略値0。  ※ ModeとNoiseは@コマンド実行時に設定されるだけです。  (3) Data  エンベロープデータを指定します。約255文字(内容により異なる)まで書けます。   ・0~f(16進数)    その音量を設定して、1カウント待ちます。以下<音量>と記します。   ・<音量> : <カウント>    音量を設定して、カウント数だけ待ちます。   ・<音量> = <カウント>    現在の音量から指定された音量まで、カウント数の時間を掛けて自動的に変 化させます。   ・n<ノイズ周波数>    PSG音源のノイズ周波数を変更します。(2)のNoiseと同じです。   ・/<モード> 又は *<モード>    PSG音源のモードを変更します。(1)のModeと同じです。   ・[    繰り返し開始位置の定義。   ・]    繰り返し終了位置の定義。   ・@<音色番号>    音色データの変更を行ないます。SCC音源およびFM音源のみ有効です。エンベ    ロープは変更されず、音色データのみが変更されます。当然、@v(@s)でその    音色が定義されていなければなりません。 ・y<r>,<d> レジスタ<r>へ、データ<d>を書き込みます。実際に書き込まれるレジスタはこ のエンベロープを使用中の音源になります。SCCの場合は無視され、実行され ません。 ・\<n> 現在の周波数に<n>を加えます。範囲は-127~127。正の数で周波数は高くなり ます。単位はMMLの"\"と同じです。 ・., 区切り。数値と数値の間に入れて下さい。(例:n4.456789)  ※ <カウント>の範囲は2~239です。 ・@r<number> = { Mode,Noise,AL,AR,DR,SL,SR,RR }  エンベロープデータを定義します。  Mode ... @eと同じ  Noise .. @eと同じ AL,AR,DR,SL,SR,RRについて簡単に説明します。それぞれの値の範囲は0~255です。 ・AL ..... アタックレベル キーオンされた瞬間の音量。値が大きい程音量も大きくなります。 ・AR ..... アタックレート キーオンされた時から音量が最大点(255)に達する速さ。実際の処理ではALに ARを毎回加算して255を超えると次のDRの処理に移行します。 ・DR ..... ディケイレート 最大点から次のSLに達する速さ。最大点からDRの値を毎回減算してSLと同じか、 小さくなると次のSRの処理に移行します。 ・SL ..... サスティンレベル DRからSRへの移行点。 ・SR ..... サスティンレート 音量が減衰する速さ。SLの値からこの値が毎回減算されます。音量が0になる か、キーオフされるまでこの処理は続きます。あまり大きい値を指定すると一 瞬で音が切れてしまいますので10位までが適当な値です(意図的に行う場合は は別として)。 ・RR ..... リリースレート キーオフされた時から音量が減衰する速さ。現在保持しているエンベロープの 音量からRRの値を毎回減算します。  ※ @rと@eは同じ領域を使用して定義されますので、同じ番号に対して両方を定義    することはできません。そのような場合は後に設定された方が有効になります。 ・@s<number> = { data1 .... data32 }  SCC音源の音色データを定義します。dataは16進数(00~ff)です。データは必ず32  個必要です(省略は出来ません)。  例:@s02 = { 7f7f7f7f 7f7f7f7f 7f7f7f7f 7f7f7f7f ;PSG 80808080 80808080 80808080 80808080 } ・@v<number> = { data ... }  FM音源のオリジナル音色を定義します。 例:@v15 = { ;BRASS ; TL FB 25, 7, ; AR DR SL RR KL MT AM VB EG KR DT 8, 8, 1, 2, 0, 0, 0, 1, 0, 0, 0, 8, 2, 1, 1, 1, 1, 0, 1, 0, 0, 0 }  パラメータの並びは旧MGSDRVの_VSETCと同じです。 ・@#<number> = <n>  音色に割り付けられているROM音色番号を変更します。MGSCでは@0~@14にそれぞれ、  1~15のROM音色を割り当てています。@15以上はすべて0(オリジナル音色)となって  いますので、@vでの音色設定は<number>が15以上である場合のみ意味を持ちます。  @#はそれぞれの音色に割り当てられているROM音色番号を変更するものです。<n>は  0~15で、0がオリジナル音色を意味します(その他の番号については後述)。 ★ コメント  MMLを含む、すべての行の中に";"(セミコロン)が見つかると、それ以降から行の終 わり(CRLF)までをコメントと見なして無視します。 ★ MMLについて  行の先頭が1~Hであると、指定されたトラックへMMLデータが書き込まれます。 #opll_modeの設定値によって、トラックは次のように割り当てられます。 ・モード0(FM9音モード)  1~3 ... PSG音源  4~8 ... SCC音源  9~h ... FM音源(a,b,c,d…と続きます) ・モード1(FM6音+リズム音モード)  1~3 ... PSG音源  4~8 ... SCC音源  9~e ... FM音源  f ... リズム音(rでも可能)  トラックの指定と、MMLデータの間は1つ以上のスペース(タブ)で区切って下さい。  指定を複数ならべることで一度に複数のトラックへの書き込みができます。  例:123a v15cdef ← トラック1,2,3,aに"v15cdef"が書き込まれる。  音長は、"%"でステップ数を指定することもできます。4分音符は48ステップです。  (例:a4 = a%48) 1音のステップ数は256まで指定できます。  以下に、使用可能なMMLを示します。小文字で記述してありますが、実際は大小文 字の区別はありませんのでどちらで書いても構いません。<n>は数値を意味します。 旧MGSDRVと違い、ほとんどの数値は省略できません。MML中のスペース、タブは無視 されます。 ・t<n> テンポの指定。範囲は57~2047。すべてのトラックに影響する。 初期値120。 ・l<n> デフォルト音長の指定。範囲は1~192(テンポによって制限がある)。 付点や%を用いたりステップ数で指定する事も可能。初期値4。 ・^<n> 音長コマンドの後に付けて、音長を加算する(タイ)。音長(<n>)を 省略するとlコマンドで指定した音長になる。足した結果が256を 超えるとエラーになる。 ・& スラー。音程の直後で指定された場合のみ意味を持つ。タイとは 区別される。 ・q<n> 音長比。範囲は0~8。0はキーオフされなくなる(FM音源のみ)。初期 値8。リズム音トラック不可。 ・v<n> 音量の設定。リズム音トラックで指定された場合は全ての楽器の音 量が設定される。範囲は0~15。PSG音源ではハードエンベロープが 無効になる。初期値0。 ・v+|-<n> 音量を相対的に変化させる。範囲0~15。リズム音トラックで使用 すると全ての楽器の音量が変化する。 ・)<n> 音量を上げる。v+と同じ効果。<n>の範囲1~15。省略値1。 ・(<n> 音量を下げる。v-と同じ効果。その他は")<n>"と同じ。 ・v<楽器><n> リズム音トラックのみ有効。それぞれの楽器の音量を設定する。 <楽器名>は、bsmhcのいずれかを指定する。<n>の範囲は0~15。 ・v<楽器>+|-<n> 指定されたリズム楽器の音量を相対的に変化させる。範囲0~15。 ・k<n> PSG音源およびSCC音源のみ有効。キーオフされた後で、音が消える 速さを指定する。範囲は0~255。0が最も速い。@rで定義されたエ ンベロープを使用している場合、およびハードエンベロープ使用中 は無視(設定はされるが効果は表れない)される。初期値0。 ・@<n> 音色を変更する。範囲は0~31。リズム音トラック不可。 ・@e<n> @eまたは@rで設定されたエンベロープデータを現在使用中の音色に コピーする。SCC音源およびFM音源のみ有効。PSG音源で使用された 場合は@<n>と同じ動作をする。 ・@r<n> @e<n>と同じ。 ・m<n> PSG音源のみ有効。ハードエンベロープの周期を設定する。範囲は 1~65535。 ・s<n> PSG音源のみ有効。ハードエンベロープの形状を設定する。ソフト エンベロープは解除される(音色番号は保持しているのでVコマン ド等を実行すれば元に戻る)。範囲は0~15。 ・n<n> ノイズ周波数の設定。PSG音源のみ有効。範囲0~31。 ・o<n> オクターブの設定。範囲1~8。初期値4。 ・> オクターブを1つ上げる。 ・< オクターブを1つ下げる。 ・a~g[+,-][n] 音程を発音する。+は半音上がり、-は半音下がる。後に付ける数値 は音長を示す(省略するとlコマンドの値になる)。 ・_音程 直前の音程から指定された音程まで滑らかに変化させる。 (例:a_o4c4、a_>>g、a_b%100) ・r 休符。音長が省略された場合はBASICと異なりlコマンドの値になる。 ・楽器名[:] 指定されたリズム音を発生。":"を指定すると音長をデフォルトと見 なす(例:bh4 bh:)。リズム音トラック以外では無効。 ・\<n> デチューン量の設定。範囲-127~127。初期値0。 ・@\<n> デチューン量を細かく設定する。PSG音源とSCC音源では、範囲-327 68~32767。128で約半音ずれる。FM音源では、範囲0~255。255で 半音上がる。 ・p<n> PSG音源およびSCC音源のみ有効。音程を自動的に下げる量を設定す る。範囲は0~255。LFOと同時使用は不可能。旧MGSDRVのpコマンド と同じ効果を得る場合は128を足す(0~127と128~255では補正の仕 方が異なる)。 ・h<n1>,<n2>,<n3>,<n4> 音程LFOを設定、開始する。波形は三角波のみ。 n1:ディレイ(0~255) n2:深さ(0~127) n3:スピード(0~255) n4:粗さ(-127~127) ・@p<n> LFOの粗さを細かく設定する。PSG音源およびSCC音源のみ有効。範 囲-32768~32767。通常、音程LFOを設定した直後に用いる。 ・ho 音程LFOを開始する。 ・hf 音程LFOを停止する。 ・hi 音程LFOを初期化してディケイの処理に戻す(LFOのパラメータ自体 は初期化されない)。 ・[<回数>~] 囲まれた中を指定された回数だけ繰り返して演奏する。回数は0~ 255。0の場合は無限ループ。省略値は2。16重まで重ねが可能。 ・[~]<回数> 上と同じ。ただし回数はカッコの外に書く。 ・| 繰り返しのコマンドの中で用いる。最後の1ループを演奏中なら、 そのループを抜ける。 ・so FM音源のみ有効。サスティンをonにする。 ・sf FM音源のみ有効。サスティンをoffにする(初期状態)。 ・ko リズム音トラックのみ有効。リズム音発生の度に音を切らないよ うにする(初期状態)。 ・kf リズム音トラックのみ有効。リズム音発生の度に音を切るように する。 ・/<n> FM音源では強制的にキーオフさせる(q0実行時などに有効)。PSG音 源ではトーン、ノイズのモードを変更する。範囲は0~3。意味は@ eのModeと同じだが、0は"音を出さない"となる。それ以外のトラッ クでは無効。なお、FM音源で使用する場合、パラメータは無効。 ・y<n1>,<n2> レジスタn1へデータn2を書き込む。実際に値を書き込む音源は、演 奏中のトラックによって自動的に判断される。n1の範囲はFM音源(リ ズム)の場合0~56、PSG音源の場合0~15。データの範囲は0~255。 SCC音源では無効。 ・@l<n> オリジナル音色(FM音源)のtotal levelを変更する。y2,<n>と同じ。 PSG音源およびSCC音源では無効。 ・*<n> 指定された番号のマクロを呼び出す。8重まで重ねが可能。範囲0~ 255(オフセット指定可)。 ・! このコマンドを実行したトラックの以降のMMLをすべて無視する。 ・@m<n> 制御文字列の呼び出し。範囲0~127。値を省略すると直前に指定 した番号(初期値0)+1が指定されたと見なされる。省略した場合の 処理はコンパイル段階で行なわれるので注意。 ・@o<n> 制御文字列番号のオフセットを指定する。例えば"@o2@m12"とする と実際には2(@o2)+12(@m12)で"@m14"が指定されたことになる。歌 詞など、MMLは1ループ分だけで歌詞データのみを変更したいとき などに有効。 ・@f MIBの[fadefg]をインクリメントする。MGSELではフェードアウト が開始されるが、実際の動作はプログラムによって異なる(何も起 らない場合もある)。 ・$ デバッグ用コマンド。-pで演奏させた場合、"$"コマンドの位置まで 自動的に早送りする。 ★ エラーについて  MGSCはソース中に1つでもエラーが発見されると、適当なエラーメッセージを表示 してコンパイルを中断します。 <エラーの原因> in <行番号> >> <その行の内容(全部)>  エラーの原因は、漢字ドライバが起動している場合は漢字で、テキストの場合は 英字で表示されます。行番号は0から数えています(KID.COM,AKID.COMでは表示と一 致します)。なお、表示された行にエラーがあるとは限りませんので注意して下さい (特にマクロ使用時や"{"-"}"での"}"を忘れた場合など)。 ★ 補足 (1) テンポについて  MGSCではどのようなテンポを設定しても、トラック間の演奏ずれ(いわゆるテンポ ずれ)は絶対に起こりませんが、演奏中にテンポを変更する場合は注意が必要です。 テンポの変更(最初に設定する場合は、#tempoを使用して下さい)は必ず1番最初のト ラックで行ない、途中で変更する場合は他のトラックとタイミングを合わせて行な わなければなりません。 例:1 t86l4ct190def 2 l8ccddeeff 3 l16cdecdecd  上の例のような位置で変更する場合、ずれは起こりませんが次の例のような場合は テンポの変更位置が2、3トラックで音程を発生している途中ですので、ずれが起こり ます。 例:1 t86l8ct190def 2 l4cdef 3 l4gggg  テンポはトラック毎に独立しません。上の2つの例はトラック2、3ではテンポが設 定されていませんが、トラック1で変更された時点(正確には、次の音符発生)で他の トラックも影響を受けます。例を挙げますと、次のようなテンポの設定はトラックバ ッファを消費するだけです。 例:1 t86cdet90cdet100cdef 2 t86efgt90efgt100efga 3 t86ccct90ccct100cccc (2) 音長指定について  MGSCの"%"指定による音長指定の意味は、旧MGSDRVと異なります。旧MGSDRVではテ ンポによって値が異なりましたが、MGSCではテンポの影響を受けません。例えば4分 音符は常に%48です。MGSCでは192で割り切る音長を使用する限り、%で音長を指定す る必要はありません。5連符などは192では割り切れませんので、そのような場合は 適当に等分した音長を%で指定する必要があります。  使用可能な最短音長はテンポによって影響を受けます(MGSDRVでは1/60秒以下の音 長を発生することはできません)。あるテンポでの最短音長は次の式で計算できます。 14400÷テンポ = 最短音長(小数点は切り捨て)  ただしこの式での答えが、192を超えても最短音符は192分音符となります。 (3) MGSDRVの検索について  -pオプションで演奏させるには、MGSDRVが必要になります。常駐していれば、それ を使用しますが、常駐していない場合は環境変数mgsdrvで指定されたファイルを読み 込みます。DOS1ではカレントドライブからMGSDRV.COMを検索します。 ※ 本バージョンでコンパイル済みのデータはMGSDRV v3.13以降でのみ演奏できます。 (4) ROM音色番号の割り当て  音色名はMSX-MUSICと異なります。 音色番号 ROM音色番号 音色名   0 1 バイオリン 1 2 ギター 2 3 ピアノ 3 4 フルート 4 5 クラリネット 5 6 オーボエ   6 7 トランペット 7 8 オルガン 8 9 ホルン   9 10 シンセ 10 11 ハープシコード 11 12 ビブラフォン 12 13 シンセベース 13 14 ウッドベース 14 15 エレキベース 15 0   : : オリジナル音色 31 0 (5) コマンドラインの-eオプションについて -eオプションを指定するとCP/Mファンクションのみを使用するようになります。 CP/Mエミュレーター等でも動作しますが、Z80命令をサポートしている必要があり ます。当然の事ですが演奏は行えません(-pなどを指定しても無効)。 ★ 変更点 version 1.06(非公開) ・@fコマンドを追加。 ・$コマンドを追加。 ・turbo Rの高速モードで-pオプションを付けて演奏させたとき、早送り(SELECT) の速度にウェイトを掛けるようにした。 ・SHIFT+SELECTキーで高速早送りができるようにした(turbo Rの高速モードのみ)。 ・制御命令の追加。 ・演奏が終了した時、自動的にDOSへ戻るようにした。 version 1.07 ・#macro_offset,#machine_idの追加。 ・ver1.04からずっとバグがあった、MMLを"{"~"}"で囲めるという機能を却下(^^; ・hi(LFO初期化)コマンドを追加した。 version 1.08 ・制御文字列中で漢字を使用すると化ける事があったので直した。 ・#disenable_mgsrc命令の追加。 ・データを強制的にセーブする-sオプションの追加。 version 1.09 ・@eエンベロープにY、\コマンドを追加。 ・DOSのend of fileエラーが発生することがあったので直した。 version 1.10 ・@eエンベロープ中の"/"コマンドが正常に機能しない場合があったので直した。 ・#opll_tuneを付けた。 ・MMLに@lコマンドを追加した。 version 1.11 ・-qオプションを追加。 ・ソースに標準入力を指定出来るようにした(type a.mus | mgscとか)。 ・CP/Mに対応。 ★ 転載、配布は自由に行なって下さい。 Special thanks: TARO Saibara BLASTER TAKAWO CHABIN 参考:MXCのドキュメント MARIO NET :AIN FALCON NET :FALC0180 NATSUME NET:NAT25667 Ain