学研の4ビットマイコンGMC-4で「パワーゲーム」を作成した。
ルール
2進LEDがパワーゲージとして増減する。
たくさん光っているタイミングでボタンを押して攻撃しよう。
攻撃すると、光っているLEDの数だけ7セグメントLEDに表示された数から引かれる。
3回の攻撃で、7セグメントLEDに表示されるべき数を負にできたら成功、できなかったら失敗。
プログラム
以下のようにレジスタおよびメモリを割り当てている。(レジスタは power_loop
時点のもの)
-
A
: 作業用 -
B
: 残り攻撃回数のカウント -
Y
: パワーゲージの状態 -
[0]
: 7セグメントLEDに表示する値 -
[0xE], [0xF]
: 2進LED消灯用
MikeAssembler でアセンブルできる。
target gmc4
TIA 0x10 - 3
CH
TIA 0
TIY 0xE
AM
TIY 0xF
AM
CY
AM ; [0] = 0xF
AO
JUMP power_loop_reset
power_loop:
CIY 7
JUMP power_loop_noreset
power_loop_reset:
CAL DSPR
TIY 0
power_loop_noreset:
CAL SETR
AIY 1
TIA 0
CAL TIMR
KA
JUMP power_loop
CAL SHTS
stopped_wait:
KA
JUMP stopped_next
JUMP stopped_wait
stopped_next:
TIA 9
CAL TIMR
CY
TIY 0
M-
JUMP game_clear
AM
AO
CH
AIA 1
JUMP end_loop
CH
JUMP power_loop_reset
game_clear:
CAL RSTO
CAL ENDS
end_loop:
JUMP end_loop
以下が、このプログラムの機械語表現である。
| 0 1 2 3 4 5 6 7 8 9 A B C D E F
--+-----------------------------------
0 | 8 D 2 8 0 A E 4 A F 4 3 4 1 F 1
1 | 6 D 7 F 1 A E D A 0 E 1 B 1 8 0
2 | E C 0 F 1 1 E 9 0 F 2 F F 2 8 8
3 | 9 E C 3 A 0 7 F 4 6 4 1 2 9 1 F
4 | 4 A 2 F 1 6 E 0 E 7 F 4 A