2016-04-26 13:29 — asano
カテゴリー:
1枚目の基板はキー・LED関係です。
まずは表側、左上に並んでいるICはMB74LS42, MSM4028RS, HD74LS04Pでキー・LEDのスキャンのデコーダ、圧電ブザーのドライバです。入力が共通の負論理のデコーダと正論理のデコーダを並べているのはデコード後の8本を反転するより有利と考えたためでしょうか。
その右に並んでいるトランジスタはLEDのコモン側のドライバ、右上に立っている抵抗群はLEDセグメントの電流制限抵抗です。この抵抗とIC群の間に白っぽく見えるのは圧電ブザー接着の跡。リード線の出ているタイプを付けていたのですが失われていました。上に2本出ている赤いリード線がその名残。
LEDは7セグメントのもの8桁ですが、基板の穴が足りなくて右端のは右側の足を基板の上に曲げて付けています。セグメントのデコードはソフトウェア処理になっているので"0"~"9"以外にも16進表示のための"A","b","C","d","E","F"("b","d"は小文字にしないと7セグメントでは表現できない)や起動時の”Monitor”(これはかなり無理やり)・ハイフンなども表示できます。アルファベットについては日立のマイコンボード「H68」のコンソールを参考にしています。
キーは右上がリセット、その左と下の列の計8つがコマンドキー"0."~"7."、残りが"0"~"F"の16進キーになっています。LED付を使っているのはこれが最も安く入手できたからだったと思います。実際LEDは結線されていません。そのうちつなぐことも考えていましたが結局そのままになりました。
裏側です。この頃はほぼ最短距離を直線で配線する流儀でした。
基板上部に縦に線が並んでいるのは2枚目基板との接続線。コネクタをケチって基板間も直接配線されています。1列に並ぶように基板の穴を一度縫うようにしています(表側の一番上に見えています)。
モニタ動作時のLEDの表示とキーの機能を簡単に書いて見ます。
まずLEDの1桁目は最後に押した(現在動作している)コマンドキーが表示されます。2~5桁目には選択されているアドレスが表示されます。6桁目は区切りのハイフン、7,8桁目には選択されているアドレスのメモリ内容が表示されます。
"0"~"F"の16進キーは値の入力なわけですが、例えば"0. ASET"が押され(LED1桁目に"0."が表示され)ているときに"7"を押すとアドレスが4ビット左シフトされ空いた下4ビットに7が入ります。同様に"1. DSET"~"3. DEC"の状態でもメモリ内容が4ビットシフトされ下位4ビットに押したキーが入力されます。必要な桁数(アドレスで4,データで2)入力しても勝手にアドレスが進んだりしないので、間違えたときは最初から入力しなおせば間違えたところは押し出されて消えます。
"0. ASET"はアドレス入力モードに切り替えます。
"1. DSET"はデータ入力モードに切り替えます。
"2. INC"はアドレスを1増やした後にデータ入力モードに切り替えます。
"3. DEC"はアドレスを1減らした後にデータ入力モードに切り替えます。
"4. RUN"は選択されているアドレスから実行します。
"5. S-AD", "6. L-AD"は何の機能だったか忘れました。
"7. SHIFT"は続いて押したキーと組み合わせて特殊な機能を実行します。例えば "7. SHIFT"→"F"と押すと16進電卓モードに移行します。
例えば 1000番地から C3, 00, 10 の3バイトを書き込んで、1000番地から実行する(この例は無限ループです)場合は次のようにします。
"0. ASET" "1" "0" "0" "0" # これでアドレスが1000になります。
"1. DSET" "C" "3" # これで1000番地にC3が書き込まれます。
"2. INC" "0" "0" # これで1001番地に00が書き込まれます。
"2. INC" "1" "0" # これで1002番地に10が書き込まれます。
"3. DEC" "3. DEC" # これでアドレスを1000に戻します。"0. ASET"で再入力するより早いです。
"4. RUN" # これで実行されます。この例では無限ループに入るので"RESET"が必要になります。今どきのシステムと違ってリセット時にメモリの初期化とかは行わない(モニタが自分で使っている一部の領域のみ初期化します)ので入力したプログラムなどは大抵無事です。
2016-04-30修正:
上で1000番地からを例にしていますが、実際にはここはROMなので書き込み出来ませんし、実行結果も違ってきます。
コメントを追加