[書籍][購入][感想][プログラム] GMC-4、Canon デジタルカメラ IXY DIGITAL 210 IS レッド

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秒と短いのですが、ハイビジョン撮影にも対応しています。