RUN命令を実装
2012年7月26日
KM-BASICで、複数行からなるプログラムが実行できるようになった。
「RUN」命令部分のコードは簡単に書いたのだが、行をまたいでのプロセス移動の実装に少し時間がかかった。始め、「FOR」命令を使用した時の挙動が思うようにいかず、ここの部分のデバッグにはMZxx_internetという、ステップ実行ができるMZのエミュレーターを使わせていただいた。
あとは、しらみつぶしに実装してくだけ。ステートメントは、
・IF
・GOSUB
・RETURN
・DIM
・REM
・POKE
・CALL
・EXEC
といったところ。関数は
・NOT
・STRNCMP
・ABS
・ASC
・LEN
・SGN
・RND
・PEEK
あたり。現在9kbぐらいの大きさになっているが、最終的には12kbぐらいになるかもしれない。機能の割には大きいプログラムになってしまったが、Cで書いているので仕方がない。今時、この規模のプログラムをアセンブラーで書く気にはなれないし。
ところで、3万回ループをFOR分で実行してみると、凡そ6秒かかる。MZ-80K用の普通のBASICインタープリターのおよそ3-4倍の速度。まずまずか。
「RUN」命令部分のコードは簡単に書いたのだが、行をまたいでのプロセス移動の実装に少し時間がかかった。始め、「FOR」命令を使用した時の挙動が思うようにいかず、ここの部分のデバッグにはMZxx_internetという、ステップ実行ができるMZのエミュレーターを使わせていただいた。
あとは、しらみつぶしに実装してくだけ。ステートメントは、
・IF
・GOSUB
・RETURN
・DIM
・REM
・POKE
・CALL
・EXEC
といったところ。関数は
・NOT
・STRNCMP
・ABS
・ASC
・LEN
・SGN
・RND
・PEEK
あたり。現在9kbぐらいの大きさになっているが、最終的には12kbぐらいになるかもしれない。機能の割には大きいプログラムになってしまったが、Cで書いているので仕方がない。今時、この規模のプログラムをアセンブラーで書く気にはなれないし。
ところで、3万回ループをFOR分で実行してみると、凡そ6秒かかる。MZ-80K用の普通のBASICインタープリターのおよそ3-4倍の速度。まずまずか。