今のところ、#リストというコマンドになっています。
これは暫定的な措置で、BUFを解析しだいCALL命令のように
ダイレクトコマンドを有効にすることにしたいです。
BUFは直前に入力した文字を記憶するメモリ領域で例えばABCDEFと入力して、
「Syntax errror」と表示される時点に記憶されています。
アドレスはF55Ehから256バイト確保されています。
アセンブルツールスはエラートラップをかけて、技とエラーを起こします。
この状態で、この領域を参照すれば直前のコマンドを調べることができます。
これができれば、CALLなどの形式にこだわらずにBASICプログラムがあれば
何とダイレクトコマンドもコマンド文字制限の限界突破が可能になります。
デバッグなどでも、ダイレクトコマンドで
#DEBUG (1,0,0)
というふうにBASICで入力できるんですよ><
いちいち、実行後に隠しコマンドを作る手間がいりませんよね。
F55Ehから#が入っています。00が終了コードです。
もちろん、マルチステートメントにすれば2つのダイレクトコマンドを実行することも可能です。
MSXBASICのデバッグ環境がよくなるのは間違いないです。
さらに折角ここまで組んだので、プログラムでエラーが出た場合もやってみました。
今度はF6B7hからBASICテキストを参照するアドレスを参照します。
上位下位逆転ですから、F6B8,F6B7の順番でアドレスが示されています。
サンプルでは118 #DEBUGで、どのようになるのかを参照してみることにしました。
この場合はDEBUGと表示できますが、CLSなどの予約語が入ると
中間コードで格納されます。
これを全てマシン語にするならば、マッパ機でエラーフックを書きかえて空きメモリにプログラムを書けば、おそらくよいでしょう。
サンプルでは将来BASICを(拡張?)する場合はこんな感じになると実感できそうです。
最近は「MSXを離れる前に何かを」と、思い始めました。
MSXは他の機種にはもっていない強みがあります。
例えばMSXBASICでListを入力するとプログラムリストが流れるように出てきます。
そして、流れている間にCTRL+STOPでBreakさせて、カーソルを斜め移動させて
プログラムを書き換えます。
このようなインターフェイスは他にはあまり例がありません。
カーソルを斜め移動させるプログラムを入れたということは
MSX開発者がMSXBASICに夢中になったのではないかと思います。
さらに前景色と背景色のBOXのような二色の設定があるのも謎ですね。
考えられるのはMSX2ではSETADJUST命令が追加されて
上下左右の画面の調整が±4ドットできるようになりました。
アナログテレビでは若干の補正をしていましたから前景色の幅が変わるので
テレビの調整用と考えてもよいかもしれませんね。
MSXユーザーは無意識にやっているので価値感は気がつきません。
そう考えるとMSXのシステムは確かに古いですが、
SCREEN1などのテキストモードを残したいと思ってきました。
こういう他にはない強みはマシンにまだあるのかもしれませんね。
MSXパソコンには隠されたパワーがあるのかもしれません。
「くだらない」と思えば捨てるし、「いいね」と思えば残るしおもしろいものです。