Vol.24 4ビットマイコン | 大人の科学マガジン | 大人の科学.net
http://otonanokagaku.net/magazine/vol24/

GMC-4
いろいろなブログで紹介されているので興味がわき、購入してしまいました。
学生時代、授業でワンボードマイコンの TK-80 を使用したことがあります。
GMC-4 の命令コード早見表を見ると、4ビットで動作させるため、いろいろ工夫されているのでしょうが、あまりにも特殊で驚いてしまいました。
Vol.24 4ビットマイコン | 大人の科学マガジン | 大人の科学.net
http://otonanokagaku.net/magazine/vol24/description.html
‘Vol.24 4ビットマイコン | 大人の科学マガジン’ の取扱説明書でマイコンの歴史を読んだ後、一通り、操作方法を学び、上の URL から FX−マイコン・全マニュアル[PDF:5.3MB]をダウンロード後、GMC-4 にサンプルを入力し理解を深めました。
どこで見つけたのか忘れてしまいましたが、下記URL
GMC-4 software
http://spreadsheets.google.com/ccc?key=0AqitP89E8bQTcnJjeURVdWxoRHRGdTFkWjExNzVfU2c&hl=ja
の ’08潜水艦’ で遊んでみました。貧弱な環境で、ここまで遊べるのには感服します。
FX−マイコン・全マニュアル[PDF:5.3MB]のサンプルをいくつか印刷し、理解した動作を書き留めておこうと思います。(間違っている可能性もあると思います。)
最初は CALL SIFT 命令を使ったビット状態の判別です。
注意が必要なのは CALL 命令は、実行フラグが 1の時にしか動作しません。
ここで肝になるのは、実行フラグが変化する命令以外は、実行フラグが 1 になることです。
これを利用して A レジスタの2ビット目が 0、1 か判断をするサンプルを作りました。(JUMP 命令が多いので最適化の余地があるかもしれません。)
番地: 命令コード 命令記号
00: 0 INPUT: KA
01: F 0 0 JUMP *INPUT
04: E 6 CALL SIFT
06: 2 CH
07: 2 CH
08: E 6 CALL SIFT
0A: F 1 2 JUMP *EVEN
0D: 8 1 TIA 1
0F: F 1 4 JUMP *PRINT
12: 8 0 EVEN: TIA 0
14: E 9 PRINT: CALL SHTS
16: 1 AO
17: F 0 0 JUMP *INPUT
CH命令は Aレジスタと Bレジスタ、Yレジスタと Zレジスタの値を交換します。実行フラグは、変化しないので 1 になります。もう一度、CH 命令を実行することで、レジスタの値を戻し、実行フラグを 1 にします。結局、CH 命令を2度繰り返すことで、レジスタの値も変化せず、実行フラグを 1 にすることができます。
また、GMC-4には停止命令がないので、プログラムの最後に
番地: 命令コード 命令記号
・
XY: F X Y LOOP: JUMP *LOOP
のように無限ループを作る必要があります。
一番理解しにくいのは CAL DEM+、CALL DEM- 命令だと思います。 FX−マイコン・全マニュアル[PDF:5.3MB]の
No. 71 CAL DEM+ と CALL ENDS の実験 P104
No. 72 CAL DEM- 命令を使った実験 P106
が理解の参考になると思います。
このプログラムで多用しているのは Yレジスタの値の引き算です。例えば Yレジスタを1引きたい場合は、16進数の $F を足しています。
Y - 1 = Y + $F
Y - 2 = Y + $E
のようになります。
CAL DEM+、CALL DEM- 命令で参照するデータメモリ M は 50番地に Yレジスタの値を足した値(メモリ番地)です。Yレジスタが 6、Aレジスタ 2 の時に CAL DEM+命令を実行すると
CALL DEM+ 命令前
54番地 55番地 56番地
0 5 8
[50 + Y] + A = 8 + 2 = 10
CALL DEM+ 命令後
54番地 55番地 56番地
0 6 0
となります。この場合、56番地 の 8 と Aレジスタの 2 を足すと桁上げが生じるので 55 番地の値に 1加わることになります。桁上がりは連鎖していくので注意してください。
同様に Yレジスタが 6、Aレジスタ 2 の時に CAL DEM- 命令を実行すると
CALL DEM- 命令前
54番地 55番地 56番地
0 5 1
[50 + Y] - A = 1 - 2 = 9
CALL DEM- 命令後
54番地 55番地 56番地
0 1 9
となり、桁下げが生じた場合 55 番地の値は、無条件に 1 にセットされるので注意してください。連鎖もおきません。CAL DEM+、CALL DEM- 命令は 10進数の加減算ですが、10進数以外の値( $A – $F ) を入力しても動作します。
学研 大人の科学マガジン Vol.24 4ビットマイコン GMC-4 @ wiki - トップページ
http://www15.atwiki.jp/gmc4/
上の Wiki のリンクで アセンブラ、コンパイラ、Windows 用ですが FXマイコンシミュレータ などが紹介されています。私も可能なら アセンブラなどは作ってみたいですね!
ブログに書くなら GMC-4 の写真が必要だと思ったのですが、随分前にデジカメを持っていましたが、現在、所有していません。あまりお金を使いたくなかったので、資金は2万円ぐらいで、サイトをいろいろ調べました。家電はあまり買わないし、ポイントもあまり使い道がないので、アマゾンから ‘Canon デジタルカメラ IXY DIGITAL (イクシ) 210 IS レッド IXYD210IS(RE) ‘
を購入しました。あんまり、深く考えずに購入したのですが、最近のデジカメは2万円代でも、かなりのスペックを備えているんですね!時間は 29分59秒と短いのですが、ハイビジョン撮影にも対応しています。