; -----------------------------------------------------------------------------
;	KZ80マニュアル用サンプル
; -----------------------------------------------------------------------------

; 定数を定義する ( EQU命令で値を設定できる )
; 以下に並ぶのは、サブルーチンのアドレス
KEYIN	EQU	004FH	; キー入力1
KEYINP	EQU	0052H	; キー入力2 キーリピートあり
DISP	EQU	0040H	; 表示バッファ出力
DHEX1	EQU	0043H	; 16進一桁表示バッファセット
DHEX2	EQU	0046H	; 16進二桁表示バッファセット
DHEX4	EQU	0049H	; 16進四桁表示バッファセット
DSET	EQU	004CH	; 表示バッファセット
		
		.8085
		ASEG
		org		8000h
l1:
		; キー入力があるまで待つ
		call	KEYIN
		jnc		l1
		; それを表示する
		mvi		c,5
		call	DHEX2
		call	DISP
		; 最初に戻る
		jmp		l1
		; 隙間を空ける
		nop
		nop
		nop
		nop
		; ゼロフラグを0にする
		mvi		a,1
		ora		a
		; サブルーチンをコール
		cnz		test_func1
		hlt
		;
		;
		; 一桁の足し算
		org		8800h
		; 表示の初期化
		call	DSET
		db		1	; 小数点のデータ
		db		63	; 0
		db		63	; 1
		db		0	; 2
		db		63	; 3
		db		00	; 4
		db		63	; 5
		call	DISP
l3:
		call	KEYIN
		jnc		l3
		cpi		16
		jnc		l3
		; 表示
		push	b		; 一時スタックへ入力されたデータを保存する
		mvi		c,5
		call	DHEX1
		call	DISP
		; 二つ目のデータ入力
l4:
		call	KEYIN
		jnc		l4
		cpi		16
		jnc		l4
		; 表示
		push	b
		mvi		c,3
		call	DHEX1
		call	DISP
		; たしざん
		pop		d	; dに数2
		pop		h	; hに数1
		mov		a,d
		add		h
		; 答えを表示
		mvi		c,1
		call	DHEX2
		call	DISP
		hlt
		; 意味もなく遠くへ
		org		9000h
test_func1:
		hlt
