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