学研の4ビットマイコンGMC-4で某仮装大賞風メーターを作ってみた。
今回の仕様
- 2進LEDが全て消えている状態から開始する。
- E・F 以外のキーを押すと、2進LEDの点灯数に応じた音が鳴り、2進LEDが1個追加で点灯する。既に全て点灯している場合は何も起こらない。
- E キーを押すと、2進LEDが5個以上点灯している場合はエンド音、そうでない場合はエラー音を鳴らす。(合否判定)
- F キーを押すと、2進LEDが全て消灯する。(リセット)
プログラム
このプログラムは、MikeAssembler でアセンブルできる.
target gmc4
; [0] : ゲージの位置
; [0xE],[0xF] : 消灯用
TIA 0
TIY 0xE
AM
TIY 0xF
AM
TIY 0
AM
key_release_wait:
KA
JUMP key_wait
JUMP key_release_wait
key_wait:
KA
JUMP key_wait
; F (リセット) が押されたか判定
CIA 0xF
JUMP no_reset
CAL DSPR
TIA 0
AM
JUMP key_release_wait
no_reset:
; E (判定) が押されたか判定
CIA 0xE
JUMP no_judge
; 判定
MA
AIA 0x10 - 5
JUMP judge_passed
; 不合格
CAL ERRS
JUMP key_release_wait
judge_passed:
; 合格
CAL ENDS
JUMP key_release_wait
no_judge:
; カウントアップ指示
MA
CIA 7
JUMP not_saturate
; 既に最大なので、カウントアップしない
JUMP key_release_wait
not_saturate:
; カウントアップする
CY
CAL SETR
CY
AIA 1
AM
CAL SUND
JUMP key_release_wait
以下は、このプログラムの機械語表現である。
| 0 1 2 3 4 5 6 7 8 9 A B C D E F
--+-----------------------------------
0 | 8 0 A E 4 A F 4 A 0 4 0 F 1 2 F
1 | 0 B 0 F 1 2 C F F 2 3 E D 8 0 4
2 | F 0 B C E F 3 8 5 9 B F 3 3 E 8
3 | F 0 B E 7 F 0 B 5 C 7 F 4 1 F 0
4 | B 3 E 1 3 9 1 4 E B F 0 B