ハムフェアでマイコンを見つけました
2011年3月11日の東日本大震災のあと、通信手段は多い方がいいと思い、アマチュア無線の免許を取りました。免許取得の話や購入した無線機の話は第12回で書いたとおりです。
その取得から早5年。この夏に初めての更新があったのですが、すっかり忘れていました。気付いたのは期限の月の月初です。あわててサイトを確認しましたが、再免許申請の提出期限は有効期間満了の1年前から1ヵ月前とのこと。ぎりぎりアウトです。
仕方ないので再免許はあきらめて、新たに開局申請を提出しました。このとき旧コールサインを継続して使えたんですが、実は免許を取ってから一度も電波を出したことがなかったのでコールサインに思い入れもなく、たとえばGTRやCIA、USS、IBM、CPUみたいな、なにか意味があるような言葉でもなかったので、再割り当てをしてもらいました。
新コールサインはJJ1GCR。なんとなく前よりは意味があるようなないような。
そんなこんなで再度免許を取得したんですが、アマチュア無線が趣味の王様と呼ばれたのははるか昔のこと。最盛期には約135万局もあったと言われるアマチュア無線局はどんどん減っていて、震災のころは約45万局、2017年8月には約43万局まで減ってしまいました。
衰退していってるのは残念ですが、まあでも見方を変えれば40万局以上あるっていうのはすごいことだし、最近は興味をもつ小中学生も増えてきてるのだとか。年に一度のアマチュア無線の祭典、アマチュア無線フェスティバル――通称ハムフェアも、今年は2日間でのべ約3万9000人もの来場者があったそうです。
そんなハムフェアにちらりとお邪魔してきました。お目当ては日本各地のアマチュア無線クラブが販売するさまざまなモノ。メーカーの展示販売ブースや、交信やモールス通信の体験ができる特設コーナー、アマチュア無線クラブの展示などもありましたが、ワタシ的にはクラブが販売する中古の無線機や、測定器、パソコン、デジタルガジェット、電子部品、工具などが気になります。
なかでも一番ひかれたのはジャンク品。なにかおもしろそうな物はないかなーと探していたところ、見つけました。マイコンです。
トランクに本体と電源がセットされていて、電源を入れてもらうとLEDになにやら表示されました。正常に動作するかどうかはわかりませんが、超安かったし、なによりマイコンには憧れがあるので形だけでも全然オッケー。即ゲットです。
CPUは懐かしのZ80
名称はどうやらKENTAC 800Z mk2というみたいです。
これを見てすぐ思い出したのは、NECのTK-80とか富士通のLKIT-8パナファコムのLKIT-16、東芝のEX-5やEX-80、日立のH68/TRなどのマイコンキット。小学生時代の憧れの存在であります。
当時、電子工作が高じてマイコンに興味をもったのですが、マイコンキットなんて当然高くて買えません。そこで電子部品を少しずつ集めて、小6の夏休みにハンダ付けによる手配線でマイコンを作ったのです。それが初めての自分のコンピューターでした。
そのときのCPUは日立のZ80互換品で、本体はCPUボードとメモリーボード、I/Oボードの3枚でした。入出力はパネルにずらっと並べたトグルスイッチとLED。取り付けのためアルミ板にハンドドリルで穴を開けてリーマーで広げるという作業に、やたらと時間がかかった覚えがあります。メモリーは1KBかせいぜい2KBぐらいしかなかったんじゃないかなぁ。入力がスイッチのオンオフだけの2進数なので、四則演算をさせるだけでも大変で、電卓にも劣る感じです。
このKENTAC 800Z mk2もCPUはZ80の互換品。同じCPUとは思えないぐらい進化していますが、基本は変わりません。メイン基板の上に入力用スイッチと出力用LEDが並んだ基板が乗っています。メイン基板は教育訓練用のワンボードマイコンで、調べてみたらスペックはこんな感じでした。
CPU:Z80A(4MHz)
ROM:32KB
RAM:32KB(8000H以降の28KBが使用可能)
I/O:8255AC-5搭載(入力×1、出力×2)
その他:I/Oボード・専用キーボード付属
昔のマイコンキットのキーボードは汎用のプッシュスイッチを使っているのが多かったんですが、これもまさにソレ。しかも一番の憧れだったLKIT-16っぽい白いスイッチです。シビレまくりです。動作するにこしたことはないですが、むしろこのキーのために買ったと言ってもいいぐらいです。
キーボードの上には7セグメントのLEDが8桁ぶん。16進数でアドレスやデータを表示します。
うちのMacBook Airのメモリーは4GB。対するKENTAC 800Z m2はたったの32KBしかありません。メモリーは1バイトごとに番号が割り当てられていて、それを番地とかアドレスなどと呼ぶんですが、Z80はアドレスを示す信号を出すピンが16本なので、2進数で1が16個ならんだ数字――16進数だとFFFFまでのアドレスが使用可能です。これは10進数にすると65535。つまり最大で64KBまで使えることになります。
前半はROMのエリアで最後の方もシステムが使うので、ユーザーが使えるのは8000hからの28KBに限られます。4GBといえば約43億バイトなので、ずいぶんと差があるというか、28KBなんて誤差の範囲ですよね。
メモリーの番地はこんな感じで使われています。
0000h~7FFFh ROMのエリア
8000h~FFFFh RAMのエリア(ユーザーが使えるのはF000hまで)
学校で2進数や16進数を習ったとき、数字の書き方ってやりましたっけ? よく覚えていないのですが、16進数は16進数であることがわかるように、うしろにHやhを付けます。これは16進法を意味するhexadecimalからとったもので、プログラム中では頭に0xを付けて0xFFFFのように書かれたりもします。
2進数は0110bのようにbをつけ、10進数を明示したいときは1234dのようにdをつけます。binaryとdecimalかな。
メモリーテストは合格!
動作させてみようと思ったんですが、マニュアルがありません。だいたいのところはキートップに書かれたADRS SETやWRIT、RUNなどの文字からなんとなく想像がつくし、いろいろ押してみたらMONを押すとリセットされるっぽいのはわかりました。が、MODEやREGなどは使い方がわかりません。
マニュアルがネットにないか検索してみたんですが、見つかったのはまったく読めない外国語のもの。言語検出で翻訳してみたら、なんとインドネシア語でした。そりゃ読めないわけですよね。でもgoogle翻訳で訳してみて、メモリーテストやレジスタの内容を表示させる方法などがわかりました。
レジスタは計算時にデータや結果を入れておく領域なので、計算結果を知るためには必須の機能といってもいい機能です。また、電源を入れたら基板上のリセットスイッチを押すようにとも書かれていました。
せっかくメモリーテストの方法がわかったのでテストしてみました。リセットを押したあとMONキーで初期状態にし、MODEキー、Cと押すと、メモリーテストモードになります。次にテスト範囲を入力。試しに8000hから8500hまでにしてみます。これでLEDにEndと表示さればメモリーはOKなんですが……ちゃんと表示されたので大丈夫なようです。ラッキー!
メモリーテストのプログラムが動作するということはCPUも大丈夫そうですよね。次回は簡単なプログラムを走らせて動作チェックをしてみたいと思います。
プラモやジオラマを動いたり光らせたりする時にPICという1チップマイコンでコントロールしているので、たまにプログラムを書くことがあります。LEDを点滅させたり明るさを調節したり、モーターで扉を開閉したりサーボモーターを回したりと簡単なことばかりですが、思ったとおりに動いたときは結構うれしいものです。
2020年には小学校のプログラミング教育が必修化されるとのことなので、子どもたちにはぜひプログラムを作る楽しさを知ってもらいたいところです。
それにしてもZ80の自作コンピューターでは本当にほんのちょっとしたことしかできなかったけど、それで十分楽しかったなぁ。