コンバータを作るには、BASIC のソースファイルの構文を解析する必要があります。これを行うプログラムがいわゆるパーサーです。
今回は本格的な構文解析に入る前に、簡単な方法を試してみたいと思います。実は、これも F-BASIC 向けに作った XPOSE.BAS というプログラムを PC-BASIC 上で走らせてみようという試みです。
XPOSE.BAS は BASIC プログラム内の MML を移調 (transpose) するプログラムです。PC-BASIC でも PLAY 文が使えるので実際、移調した結果を確かめられるはずです。
PC-BASIC 向けに直した XPOSE.BASE のソースコードと実行結果をこちらに公開します。
前回と同様、エラー番号を直すだけで動作しました。このプログラムでは、PLAY 文と DATA 文にある MML を見つけて移調しています。約30年ぶりにコードを見ましたが、結構ちゃんと作られています。コンバータの作成に役立ちそうです。
それから、和音について以下のことが判りました。
F-BASIC では三和音が可能ですが、PC-BASIC で三和音を鳴らそうとすると Syntax error(コマンドまたは文の書き方に誤りがある)になってしまいます。これは C:\Users\username\AppData\Roaming\pcbasic-1.2\PCBASIC.INI という設定ファイルに syntax=tandy を指定することで回避できます。ただ、ビープ音で PLAY 文を鳴らしているようで、和音にはなっていませんでした。
ちなみに半角カタカナが化ける件も同じ設定ファイルで codepage=932 を指定すると解消するはずですが、実際は記号が表示されなくなるだけで、カタカナは長音以外表示されませんでした。フォントが対応していないようです。
また、MML の休符は、F-BASIC や Small Basic では R ですが、PC-BASIC では P でした。
(つづく)