学研の4ビットマイコン GMC-4 で「ガッテンR」的なものを作ってみた。
ガッテンR
「ガッテンR」とは、プロジェクト59 タケ様がかつて頒布していたキットである。
『ガッテンR』 ⑥ キット頒布について - プロジェクト59 : キット頒布、電子工作 『ユルハム派』
以下の仕様となっているようである。
- ボタンを押して離すと、モールス信号の「R」の音が鳴り、LEDが光る。
- 光るLEDの色は、緑と赤がボタンを押すたびに交互になる。
- スイッチを切り替えると、「R」のかわりに「FB」の音を鳴らすモードにできる。
今回の仕様
- F以外のキーを押して離すと、2進LEDのビット3を点灯させ、モールス信号の「R」を鳴らす。
- Fキーを押すと、「R」のかわりに「FB」を鳴らすモードの有効/無効を切り替える。
- 「FB」を鳴らすモードのときは、2進LEDのビット0を点灯させる。
プログラム
以下のプログラムは、MikeAssembler でアセンブルできる。
target gmc4
TIY 3
TIA 0
AM
main_loop:
CAL RSTR
key_wait:
KA
JUMP key_wait
key_release_wait_loop:
KA
JUMP key_released
JUMP key_release_wait_loop
key_released:
TIY 3
CIA 0xF
JUMP make_sound
; R / FB 切り替え
MA
AIA 8
AM
TIY 0
CIA 0
JUMP switched_to_fb
JUMP main_loop
switched_to_fb:
CAL SETR
JUMP key_wait
make_sound:
CAL SETR
CAL SHTS
MA
CIA 0
JUMP play_fb
CAL LONS
CAL SHTS
JUMP main_loop
play_fb:
CAL SHTS
CAL LONS
CAL SHTS
TIA 2
CAL TIMR
CAL LONS
CAL SHTS
CAL SHTS
CAL SHTS
JUMP main_loop
以下は、このプログラムの機械語表現である。
| 0 1 2 3 4 5 6 7 8 9 A B C D E F
--+-----------------------------------
0 | A 3 8 0 4 E 2 0 F 0 7 0 F 1 2 F
1 | 0 B A 3 C F F 2 C 5 9 8 4 A 0 C
2 | 0 F 2 7 F 0 5 E 1 F 0 7 E 1 E 9
3 | 5 C 0 F 3 D E A E 9 F 0 5 E 9 E
4 | A E 9 8 2 E C E A E 9 E 9 E 9 F
5 | 0 5
解説
GMC-4 の「短い音」CAL SHTS
および「長い音」CAL LONS
は、以下のようなモールス信号に都合がいい仕様になっているようなので、そのまま用いた。
- 音を鳴らした後、「短い音」1個分の動作停止が入る
- 「長い音」は「短い音」3個分の長さになっている
また、「短い音」1個分の長さは約0.15秒のようである。
「R」と「FB」の切り替えは、8を足すことで同じ処理で互いに切り替えられるようにした。
さらに、「R」と「FB」で共通する最初の部分を使いまわしたり、モールス信号の終了時の CAL RSTR
と「R」モードに切り替える時の CAL RSTR
を重ねたりすることで、容量を節約した。
実行結果
モールス信号が遅い印象がある。