現在地

F8へUniversal Monitorを移植(その2)


カテゴリー:

前回サブルーチン呼び出しの方法で終わってしまったので、今回は実際にUniversal Monitorでどうしたか書いていきたいと思います。

前回書いたようにサブルーチン呼び出しが2段を超えると一気に大変になります。

それではUniversal Monitorで呼び出しが深い箇所をどう対処したか、いくつかの例を見てみます。

  • DPLDPBHEXOUT2HEXOUT1CONOUT
    まずDPLDPB番外にあたるのでJMPで戻るようにしてしまいます。呼び出し位置に展開してしまえばJMPも不要になりますが他のプロセッサ用と対比しやすくしておきたいのでこうしました。これで5段が3段に削減できました。
    続いてHEXOUT2は1バイトを16進2桁で表示するルーチンですが、16進1桁表示のHEXOUT1を2回呼び出すのをやめて展開してしまいました。
  • GETLINCRLFCONOUT
    CRLFは単にCRとLFの2文字を表示するだけなので無くしてしまうのも一つの手です。ただ何箇所かから呼ばれている(ここ以外は2段に収まっている)ので残しました。
    ここ例えば8080用では次のようになっています。
    GLE:
    	CALL	CRLF
    	MVI	M,00H
    	RET

    改行の表示と終端マークの書き込みは順序を入れ替えることが出来ます。そしてCALL+RETJMPに置き換えることが出来ます。こうすれば呼び出しの段数を1段減らせます。
    F8では以下のようになりました。

    GLE:
    	LR	A,2
    	LR	IS,A
    	CLR
    	LR	0CH,A
    	LR	P,K
    	JMP	CRLF

    書き方が汚くなっても良ければLR P,Kと飛び先のLR K,Pを対消滅させて次のようにすることもできます(今回はやっていません)。

    GLE:
    	LR	A,2
    	LR	IS,A
    	CLR
    	LR	0CH,A
    	JMP	CRLF+1
  • HEXINHI0CONIN / UPPER
    これは上のHEXOUT2に少し似ています。
    HEXINは8080版では以下のようになっています。
    HEXIN:
    	XRA	A
    	CALL	HI0
    	RLC
    	RLC
    	RLC
    	RLC
    HI0:
    	PUSH	B
    	MOV	C,A
    	CALL	CONIN
    	CALL	UPPER
    	CPI	'0'
    	JC	HIR
    	CPI	'9'+1
    	JC	HI1
    	CPI	'A'
    	JC	HIR
    	CPI	'F'+1
    	JNC	HIR
    	SUI	'A'-'9'-1
    HI1:
    	SUI	'0'
    	ORA	C
    HIR:
    	POP	B
    	RET


    HI0を展開してしまおうかとも思ったのですが、CONINUPPERを取り出してHI0と並列にすることにしました。

    HEXIN:
    	LR	K,P
    	
    	PI	CONIN
    	PI	UPPER
    	PI	HI0
    	LR	A,0
    	SL	4
    	LR	1,A
    	PI	CONIN
    	PI	UPPER
    	PI	HI0
    	LR	A,0
    	AS	1
    	LR	0,A
    
    	LR	P,K
    	POP
    HI0:
    	LR	A,0
    	CI	'0'-1
    	BC	HIR
    	CI	'9'
    	BC	HI1
    	CI	'A'-1
    	BC	HIR
    	CI	'F'
    	BNC	HIR
    	AI	'9'-'A'+1
    HI1:
    	AI	-'0'
    HIR:
    	LR	0,A
    	POP

    これで3段だったものを2段になりました。

このような対処をしていったところ、すべて2段に収まってしまいました。

次回はサブルーチン以外について書いてこの移植話は終わりにしようと思います。

参考文献・関連図書: 
"F8 Guide to Programming", Fairchild.
F3850データシート, Fairchild.

コメントを追加

Plain text

  • HTMLタグは利用できません。
  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。
  • 行と段落は自動的に折り返されます。
※ コメントは原則公開です。個別のご相談などは「ご意見・ご要望」からお願いします。