2010年4月4日 by ごきち
◆序章
2010年
封印していた機械弄りが完全に復活した。
ここ数年、仕事が忙しくなり休日は家族サービスに時間を費やすことが精一杯だった。
それでも3年ほど前から月に一度、ロックバンドを組んで楽器を弄るようになった。それもあって家では殆ど半田ごてに火を入れることが無くなっていた。
しかし、最近ちょっとした修理や音楽機材の改造の為に押入れに終っていたジャンクパーツを掘り漁る機会があり徐々に血が騒ぎだした。
更にはずいぶん前に買って放っていたブレッドボードで「仕事」を名目にインバータを模した回路を組んだことも拍車をかけた。
止めはPICマイコン。
久々にロジックICで鳴りモノを工作をしていてPICマイコンに手を染める。
最初はブレッドボードで Z80CPUセットを組み立てようと考えていたが、あふぉか?と後で思った。PICマイコンすげー(笑
短期集中で少しPICマイコンが弄れるようになってきた。
ネットを徘徊しているとPICマイコンとパソコンをRS232Cで通信しているサイトを発見する。
「Windows 付属のハイパーターミナルを使えば簡単にRS232C通信が出来る。」
目から鱗が落ちた。
パソコンがまだN88べーしっく だった頃、98パソコンのモニターモードでRS232CでリンクさせるCPUボードを組んだ。
ところがパソコンがWindowsへと変貌してから既成のソフトを弄ることが精一杯になる。
RS232Cを使ったターミナルモードに相当するソフトを見つけられず、お蔵入りとなっていた。
実はちゃんとあったんや。探せなかっただけやったんや。
製作から二十年弱が経過して。
自分の記憶から完全に消え去る前に、HD64180CPUボードとWindowsパソコンを繋げて遊んでみた復活記録を残す。
◆HD64180CPUボードを製作した経緯
私の卒業研究は「電子顕微鏡の自動画像処理」の一部で試料テーブルをNC制御する部分の開発だった。
着手して半年後、制御用CPUボードとそのソフトウェアが完成した頃にペアだった相棒が退学(苦笑
彼の担当だった機械駆動部分の開発が進まない中、教授から提案があった。
スタンレーに就職した卒業生から貰ったLEDアレーがある。これで文字やら絵やら出せる電光掲示板を作れないか?作れたら卒業させてあげる。(笑
そう言われて 16 x 64ドットのLED表示器を二つ渡された。
NC制御用に丁度組みあがったHD64180CPUボードには駆動用に使えるシリアル出力もある。
結局、残り半年で回路、躯体、ソフトウェアを設計をして、16 x 128 ドット の電光掲示板を教授にプレゼントすることで卒業できた。(笑
その頃は高価だった漢字ROMの代わりに98パソコンのBASICとターミナルコマンドを駆使して文字フォントデータをCPUボードのRAMエリアに転送し、上下左右スクロール、点滅、擬似乱数を使ってぱらぱら文字抜き、文字表示させる等など。
当時はZ80CPUとその周辺LSIのワンチップ化が流行っていて、東芝から TMPZ84C*** 日立からHD64180*** 等、それぞれZ80の互換CPUが出回った頃。
大阪日本橋のジャンク店、デジットで破格のお値段で売られていたHD64180CPUボード(基板だけ)を購入。
当初の目的だったNC装置としての制御であれば、「買ったまんま」のHD64180ボードのままで不具合は無かった。しかし「ポータブル表示機」として賄えるよう、RAMのバッテリバックアップ回路を中心に改造を施した。
作品提出用にもう一セット製作したため、自前のプロトタイプが押入れの宝箱に眠っていた。
◆主な仕様
購入したHD64180CPUボードは、流石に安い基板だけあってメーカー推奨の回路そのものだった。
動くには動く。けれども使い勝手や作品として応用するため回路の改造を試行錯誤して繰り返し、完成させた。
リチウム電池でバックアップされた64kバイトのRAMエリアに、フォントデータとプログラムデータをブートしておくと、その指定された表示方法で表示される。
一通り表示し終わった後、RAMエリアの所定のアドレスにサブルーチンジャンプする。
何も無ければ一旦RS232Cポートを見に行き、文字データがあればモニタープログラムに入る。
RS232Cは割り込み制御でXon/Xoff制御をサポートする。4800ボー。リングバッファでがんがん送受信可能。
モニタプログラムのコマンドは以下を装備
Dコマンド: D,x,y x番地からy番地のデータを表示する。(ダンプ機能)
Sコマンド: S,x x番地のデータを表示して入力されたデータを書き込み。(書き込み機能)
Gコマンド: G,x x番地へサブルーチンジャンプ(プログラム実行機能)
その他、研究室にあったROMライタ(ペッカー)にデータを転送するHEXフォーマット出力やデータ転送サブルーチンがあった。しかし卒研終了間際だったらしく、良い状態で記録・保存されていなかった。(笑
◆HD64180ボードの全貌
発掘された状態
中には見ての通りCPUボードと電源、その他伝統の味が入っていた。(笑
【HD64180CPUボード詳細】
全体像
写真左のサブ基板はデータバックアップ用のリチウム電池。
電圧はまだ3Vをキープ。ってことはデータは健在か?!
○CPU
HD64180RF8X − 80ピンのフラットパッケージ
当時の半田付け技術では楽勝(だった
○リセット回路
元は抵抗+コンデンサ+ダイオード のオートリセットのみの回路だった。
電圧監視型リセットIC PST518B を組み合わせ、電源を切った時にCPUが暴走しないように改造。
○メモリ(EEP−ROM)
HN58064P−25
64kビット(8kバイト)のEEP−ROM(フラッシュROM)
画像左上の抵抗は消去防止対策用。ピンに直接プルアップ抵抗を半田付けしたメモリを27ピンを抜いたソケットを間に挟んで装着。
このフラッシュメモリは端子の信号一発で全消去するので必須回路。
これに気付くまで、電源を落とす度にデータが真っ白に(笑
ソフト開発、デバッグにかなり役に立った。
○メモリ(RAM)
HM62256LP−12
256kビット(32kバイト)のスタティックRAMを2個で64kバイト。
電源投入直後、モニタープログラム部分をEEP−ROMからコピーした後バンクを切り替える。
64kバイトを全てRAMの状態で動作させる。
ROMが8kバイトしかない。なので、それ以上のプログラムは当時パソコンからロードしたプログラムデータをバッテリバックアップで記憶している。
さて、18年前のデータは残っているか??
○バッテリバックアップ回路
−リチウム電池−
無理やりリチウム電池搭載。2450型と刻印があるのでΦ24mmの5mm厚?
製作から18年経過している。テスターで電圧を測ると3.07V。すげー(笑
RAMデータの生存に期待がかかる。
−基板の裏面−
RAMへの電源供給用ショットキーダイオードとバックアップ時用のプルアップ抵抗。
当時既に電流を流せるゲルマダイオードが市場から姿を消していた為高価なダイオードを採用。
−チップセレクトバッファ−
SN74S08N
メモリアクセス(チップセレクト)にTTLのSタイプロジックを挿入する。
C−MOS のロジック出力のままだと、IC内部のラッチアップ防止用ダイオードが絡んでHレベルを保持できずメモリバックアップが出来なくなる。
非反転ロジックは遅延時間が長く、LSタイプでも同様に電流が逆流するたため、ショットキーTTLを採用した。
当時、同様の問題解決策としてオートリセット回路とチップセレクト用のバッファロジックをセットにしたICが市販されていた。が、そんなもの買わないところがアマチュア工作の良い所。(笑
○シリアルインターフェース
MAX232C マキシム社を一躍有名にしたRS232C用トランシーバーバッファ。
コンデンサのチャージポンプを利用して5V単一電源から232Cに必要十分な±9Vを生成し、かつドライバロジックを備えている。
このICが登場するまでは±15V電源とトランシーバ用バッファのSN75188/189が必要だった。
○パラレルインターフェース
μPD71055C (C−MOS版 8255)
8ビット x 3ポート のパラレル入出力を装備。全てコネクタが出ているので即利用可能。
プルアップ、プルダウン抵抗が省略されている。
◆PCとの接続実験
押入れからは装置と同時に、卒業研究資料のマシン語プログラムリスト、サブルーチンリストが比較的読みやすい状態で発見された。
破壊レジスタまで書いている。かなり時間をかけてハンドアセンブルした形跡も伺える。
ただし、完成間近のプログラム最終付近になると適当になっててワケワカメ。
とりあえず、通信用に232Cケーブルを作る。
プログラムシートを見ると、X制御されている様子。
トラ技SPECIALを参考にケーブルを作る。
これで きゅーはち と接続した実績あり。
とりあえず深く理由は追求せずに製作する。
9ピンコネクタはメスを買いましょう。(間違ってオスを買って無駄にした
早速HD64180ボードとパソコンを接続し、ボードの電源を入れる。
ハイパーターミナルを立ち上げる。
フロー制御はXon/Xoffに設定。
その後Telnetの設定のふんにゃらもんにゃらが出てくるが一切無視する(笑
おっしゃ。適当にリターンキーを押すと返事が返ってくるはず。
おおお、きた。(一部モザイクをかけています)
ん?キャラクタがかぶっている。
とりあえずデータの送受信はされているが、改行表示がおかしい。
ハイパーターミナルのプロパティで文字設定を弄ってみる。
下から三行目の「着信データに改行文字を付ける」にチェックを入れる。
Enterキーに改行反応するようになった。
改めて大文字で「G0」
更にEnterキーを入力してしばらく待つ
おおお!きた!
1992年から18年間。とりあえずEEP−ROM部分の記憶は無くなっていない。
0h番地からダンプリストを表示させてみる。
この部分はEEP−ROMからのコピープログラムが走っている部分。
1100h番地からは純粋にRAM領域
LEDアレーのデモ表示を終えて1100h番地にサブルーチンジャンプしてからまたデモに戻る。
2000h番地以降のデータも壊れずに保持している!完璧!すげーじゃん!
小さなプログラムを組んで動かしてみる。
FE16h、FE17h 番地にスタートアドレス、FE18h、FE19h 番地にエンドアドレスを指定して C00hから始まるサブルーチンコールすると、ヘキサフォーマットを出力してくれる。
※プログラムを書いた8000h番地から実行しなければいけないのに サブルーチンのアドレス C00h に飛ばした為、この後暴走した。
気を取り直して 8000h番地 から実行!
ブラボー! 使えるジャン!
最後の矢印マークは気になるが、チェックサムもきちんと出力している様子。
いろいろ試していて、ふと気が付いた。
発掘された資料と私の記憶では2000h〜4000h番地にデモ表示用のフォントデータを入れていたはず。
98から大量のフォントデータをRAM領域にソートして表示させていたはずの16X16ドットフォントデータが見当たらない。
2000h番地からのプログラムを見ると、どうも怪しい。
PIOの初期設定やサブルーチンが書かれている。
・・・ぼんやり記憶が甦る。
卒業して二年目。知人から教授より渡されたものと似たLEDアレーを頂戴した。
それを駆動するべく更に改装を施そうとした時に、一度飛ばしたんだわ。
パチンコ台のLCDユニットを買ってきてそれを駆動して遊んだ記憶もある。
LCD表示のフォントデータ、プログラムは消えたと言うより消してしまっていたようだ。
なので正確には18年間ではなく16年前のRAMデータが残っていたと言うことになる。
勿論EEP−ROMデータは丸々18年生きていたことになる。
当時、EEP−ROMの寿命は10年間のデータ保持、が一般的だったから余裕で上回っている。
またリチウムバッテリによるRAMデータのバックアップも16年間という長期間保持が確認された。
◆あとがき
○実質は18年前のデータではなかった。けれども16年でも十分大したもの。スタティックRAMの省電力にECOを感じた。
○リチウム電池の耐久性も素晴らしいの一言。18年放っておいても殆ど電圧が下がっていない。アルカリやマンガン電池なんかだと跡形も無く吹き捲っているだろう。
○PICマイコンネタ用に赤外線リモコンのデータ解析をやりたかった。コネクタを出すだけで簡単にデータ計測が出来そう。上手く利用できそうだ。
○しばらくはお小遣いを使うことなく遊べそう・・・かな?(笑
おわり