GMC-4 でラーメンタイマー R2。


チャルメラ音を鳴るようにした版。


数字LED演出をばっさりカットして
分経過も3分経ったかどうかのみとした。
レジスタ←→メモリ間の処理も不要な為カット。
そうすることで38ニブル確保できた。


容量内訳見てて思ったのは
ジャンプ命令3ニブルというのが
とにかく容量食ってた模様。
多用してたので。


RAMEN TIMER R2.ASM

;
;RAMEN TIMER R2
;

START:
	KA		;キー入力待ち
	JUMP START	;入力があるまで待機
	
INIT:
	TIY	0	;Yr 値初期化(Y'r 用のもの。15秒毎に1カウント。
			;値が 12(0CH) となることで3分経過したことになる)
	JUMP	PLYSND	;計測開始時に、チャルメラ音を再生
	
CNTINI:
	CH		;Ar, Yr 値を裏レジスタへ戻す(スワップ)
CNTINS:
	TIA	6	;タイマーウエイト用の値(0.7秒分)
	TIY	1	;16進なので最初に1加算しておき、
			;15秒カウントしたら桁超えするよう仕向ける
CNTSEQ:
	CAL SHTS		;短いブザー音を鳴らす
	CAL TIMR		;0.7秒ウエイトする(ブザーと合わせて約1秒。
			;多少実時間より早くなってしまうのはご愛嬌)
	AIY	1	;1秒経過毎にカウント
	JUMP	CNTUP	;15秒経過したら(桁超えしたら)15秒カウンタ(上位カウンタ)の増分処理へ
	JUMP	CNTSEQ	;まだ15秒を経過してなければ(下位カウンタ)カウントを続行
CNTUP:
	CH		;裏レジスタを一時的に表へ
	AIY	1	;15秒経過する毎に1カウントアップ
	
CHKMN3:
	CIY	0CH	;3分経過したか確認(上位カウンタが12カウントしたかどうか)
	JUMP	CNTINI	;3分経過してなければ(下位カウンタ)カウントを続行
	
			;3分経過してたら、
			;計測終了時に、チャルメラ音を再生
PLYSND:
	TIA	0AH
	CAL SUND		;ド・
	TIA	0BH
	CAL SUND		;レ・
	TIA	0CH
	CAL SUND		;ミ・
	TIA	6
	CAL TIMR
	TIA	0BH
	CAL SUND		;レ・
	TIA	0AH
	CAL SUND		;ド・
	TIA	3
	CAL TIMR
	
	CIY	0CH	;3分経過したか確認(上位カウンタが12カウントしたかどうか)
	JUMP	CNTINI	;3分経過してなければ(下位カウンタ)カウントを続行
	
END:
	JUMP	START	;3分カウント処理終了。プログラムの最初に戻る


RAMEN TIMER R2.BIN

	address		code	mnemonic 
00	(0000000)		0	KA 
01	(0000001)		F 0 0	JUMP <00> 
04	(0000100)		A 0	TIY <0> 
06	(0000110)		F 2 2	JUMP <22> 
09	(0001001)		2	CH 
0A	(0001010)		8 6	TIA <6> 
0C	(0001100)		A 1	TIY <1> 
0E	(0001110)		E 9	CAL SHTS 
10	(0010000)		E C	CAL TIMR 
12	(0010010)		B 1	AIY <1> 
14	(0010100)		F 1 A	JUMP <1A> 
17	(0010111)		F 0 E	JUMP <0E> 
1A	(0011010)		2	CH 
1B	(0011011)		B 1	AIY <1> 
1D	(0011101)		D C	CIY <C> 
1F	(0011111)		F 0 9	JUMP <09> 
22	(0100010)		8 A	TIA <A> 
24	(0100100)		E B	CAL SUND 
26	(0100110)		8 B	TIA <B> 
28	(0101000)		E B	CAL SUND 
2A	(0101010)		8 C	TIA <C> 
2C	(0101100)		E B	CAL SUND 
2E	(0101110)		8 6	TIA <6> 
30	(0110000)		E C	CAL TIMR 
32	(0110010)		8 B	TIA <B> 
34	(0110100)		E B	CAL SUND 
36	(0110110)		8 A	TIA <A> 
38	(0111000)		E B	CAL SUND 
3A	(0111010)		8 3	TIA <3> 
3C	(0111100)		E C	CAL TIMR 
3E	(0111110)		D C	CIY <C> 
40	(1000000)		F 0 9	JUMP <09> 
43	(1000011)		F 0 0	JUMP <00> 


動作内容は
何かキーを押すとチャルメラ音がなりタイマー開始。
1秒毎に秒を知らせる音が3分間鳴ってるのは以前と変わらず。
3分経ったら再度チャルメラ音がなりタイマー終了。
で、
プログラムは最初に戻り、再びキー入力待ち状態になるので
また直ぐにタイマーを利用できるようにしてる。