チャルメラ音を鳴るようにした版。
数字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分経ったら再度チャルメラ音がなりタイマー終了。
で、
プログラムは最初に戻り、再びキー入力待ち状態になるので
また直ぐにタイマーを利用できるようにしてる。