'以下のプログラムはファームウェアによって各種レジスタが初期設定されていることを前提に作成されています

'*** ラベル定義 ***

:PCOUT	EQU	%FDB		'PORT C OUTPUT DATA

:CH_LF	EQU	%0A		' LF
:CH_CR	EQU	%0D		' CR
:CH_0	EQU	%30		' "0" 
:CH_9	EQU	%39		' "9"
:CH_QUE	EQU	%3F		' "?"

'*** LED消灯(初期状態) ***

	ORG	%1000		'1000h番地からコード展開
	LDX	:PCOUT,#%40	'LEDを消灯

'*** モニタに記号("?")を出力 ***

:L00	LD	r0,#:CH_QUE	'("?")の文字コードをセット
	CALL	%003B		'１文字出力(システムコール)

'*** キーボードから１文字入力、エコーバック、分岐 ***

	CALL	%003E		'１文字入力(システムコール)

	PUSH	0		'点滅回数をスタックに退避		
	CALL	%003B		'(回数を)１文字出力(システムコール)
	LD	r0,#:CH_CR	'見やすくするため改行
	CALL	%003B
	LD	r0,#:CH_LF
	CALL	%003B
	POP	0		'点滅回数をスタックから復帰

	CP	0,#:CH_0	'数字("0")以下なら、L01(サブルーチン終了)へ
	JR	/ULE,:L01

	CP	0,#:CH_9	'数字("9")以下なら、L02(LED点滅)へ
	JR	/ULE,:L02

:L01	RET			'サブルーチン終了

'*** LED点滅 ***

:L02	SUB	0,#:CH_0	'数字(3xh)から数値(x)に変換、これが点滅回数となる

:L03	PUSH	0		'点滅回数をスタックに退避
	LDX	:PCOUT,#%00	'LEDを点灯
	CALL	%0050		'100ms停止(システムコール)を3回実行
	CALL	%0050
	CALL	%0050

	LDX	:PCOUT,#%40	'LEDを消灯
	CALL	%0050		'100ms停止(システムコール)を3回実行
	CALL	%0050
	CALL	%0050
	POP	0		'点滅回数をスタックから復帰

	DEC	0		'点滅回数を-1
	JR	/NZ,:L03
	JR	:L00		