先頭の英字一文字が変数名として有効。それに続く英数字は無視される。これがGAME言語の特徴のひとつ。
ところがこの子を78Kの制御に使おうとすると、この変数名の仕様がちょっと物足りなくなる。
たとえばI/OポートはP12とかP13のようにPで始まるシンボル名。GAMEにとってこれはどちらもPという名前のおなじ変数だ。せっかくビット操作の拡張を実装して、ポート12の3ビット目をP=$FF0C P:0).3とC言語のビットフィールドのように扱えるようになったのに、これは残念。しかもポート関係ではポートモードレジスタがPM、ポートモードコントロールレジスタがPMCだ。
これらが別々の変数名ならば、あらかじめそれぞれにアドレスを与えておくことで特殊レジスタをシンボル名で扱えるのだが…。
長い変数名を扱えるような変更は可能だ。しかしこれではGAMEではなくなる。先頭に記号でも補って、長い変数名も同居できるような変更も可能だ。しかし、それでなくても読みやすいとは言えないGAMEのソースがさらにややこしくなりはしないか。そこまで無理して拡張して、果たしてそれをGAME言語と呼んでいいものか。
先に作ったDFORTH32ならば、変数名はいくら長くても大丈夫。ローカル変数にも対応している、変態的に高機能なFORTHコンパイラなのだ。これにシリアル通信関係のワードを追加すれば使える。
しかしこれはちょっと仕様的に重すぎて、8ビットマイコンを制御して遊ぶにはなじみが悪い。
どうすべかな。ちょっと頭冷やそう。
ところがこの子を78Kの制御に使おうとすると、この変数名の仕様がちょっと物足りなくなる。
たとえばI/OポートはP12とかP13のようにPで始まるシンボル名。GAMEにとってこれはどちらもPという名前のおなじ変数だ。せっかくビット操作の拡張を実装して、ポート12の3ビット目をP=$FF0C P:0).3とC言語のビットフィールドのように扱えるようになったのに、これは残念。しかもポート関係ではポートモードレジスタがPM、ポートモードコントロールレジスタがPMCだ。
これらが別々の変数名ならば、あらかじめそれぞれにアドレスを与えておくことで特殊レジスタをシンボル名で扱えるのだが…。
長い変数名を扱えるような変更は可能だ。しかしこれではGAMEではなくなる。先頭に記号でも補って、長い変数名も同居できるような変更も可能だ。しかし、それでなくても読みやすいとは言えないGAMEのソースがさらにややこしくなりはしないか。そこまで無理して拡張して、果たしてそれをGAME言語と呼んでいいものか。
先に作ったDFORTH32ならば、変数名はいくら長くても大丈夫。ローカル変数にも対応している、変態的に高機能なFORTHコンパイラなのだ。これにシリアル通信関係のワードを追加すれば使える。
しかしこれはちょっと仕様的に重すぎて、8ビットマイコンを制御して遊ぶにはなじみが悪い。
どうすべかな。ちょっと頭冷やそう。
マイコンを使い始めた頃のBASIC(フローティング・ポイントが使えるやつ)は、頭2文字しか認識しれくれませんでした。それが原因で変数がダブっている事になかなか気がつかず、思った動作をしてくれなかったんでした。
GAME-APPLEで、%で始まる拡張命令っていうのがあったけど、さすがに変数の拡張をやってしまうと、GAMEじゃなくなっちゃうしね~
拡張かぁ。アンダスコアで始まる変数名は…いや、ちょっとセコいな。^^;