オフィシャル(?)のGMC-4専用アセンブラへの要望とか。


オフィシャル(?)のGMC-4専用アセンブラの要望とか。
2パスにして欲しいです。


Gakken GMC-4 Assembler
http://www.musashinodenpa.com/misc/GMC4/


どうも下の方にあるラベルへの指定を
上の方で指定しても見つけられないみたいなんですね。
アドレス指定すればちゃんとジャンプしてくれるけど。
つまり1パスアセンブラということ。


C言語で例えるなら、
プロトタイプ宣言してない関数は
メイン関数より上に書いておかないと
関数が見つからないというエラーが出る風に。
(Cコンパイラの場合は基本的に 1パスコンパイラ として
設計できるようにするためあえてこうしてるのだそうな。)


本誌プログラム入門の15秒カウンタとか、
ラベル指定で書くとジャンプ処理が変になったりするのは
その性なようですね。


15秒カウンタ−ラベル指定版

START:	TIY	1
CNTUP:	TIA	9
	CAL TIMR
	CY
	AO
	CY
	CAL SHTS
	AIY	1
	JUMP	CNTSTP
	JUMP	CNTUP
CNTSTP:	CAL ENDS
END:	JUMP	END


この場合 AIY 1 にて桁あふれが発生した際、
CCNTSTP: ラベルに飛んでもらい、
エンド音を鳴らしてプログラム終了となるのが正しいのですが、
上記アセンブラで出力される
JUMP CNTSTP 部分に対応するジャンプ先アドレスが
0C (固定?)という全然無関係な値(アドレス)に置き換えられているんです。


使い勝手が良く、実は多用させて頂いてるので
ここを何とかして頂けると尚嬉しいといった感じです。