Hardware
CPU本体
構成要素
R0 - Accumulator
機能 汎用レジスタ0、アキュームレータ
大きさ 16bit長
構成 SN74198 x 2
○ SN74198Nについて
- 8bitレジスタ
- パラレルイン、パラレルアウト
- Left/Rightの1bitシフト機能
- 非同期クリア
- ただのD型ラッチではなく、マスターフレーブ方式だったため、自分自身の出力(に演算を施し)を自分自身の入力にロード出来た。
R1 - Index Register
機能 汎用レジスタ1、インデックスレジスタ
大きさ 16bit長
構成 SN74198 x 2
SELECTOR
機能 R0、R1からの出力を選択し、ALUやDATA-BUSに渡す
大きさ 16bit長
構成 SN74157 x 4
IR - Instruction Register
機能 命令レジスタ
1word16bitの命令のうち上位8bitを保持
大きさ 8bit長
構成 SN74198 x 1
接続 この先に命令デコーダ( SN74154 x 2 )が繋がる
最上位4bit、続く4bitをそれぞれデコードする
○ SN74154Nについて
- 4-Line to 16-Lineのデコーダー
PC - Program Counter
機能 プログラムカウンタ
大きさ 16bit長
構成 SN74161 x 4
○ SN74161Nについて
- 4bit同期式バイナリカウンタ
- パラレルロード
- 非同期クリア
ALU - Arithmetic Logic Unit
機能 算術論理演算装置
大きさ 16bit長
構成 SN74181 x 4 + SN74182
○ SN74181Nについて
- 4bitALU
- 48種類の演算が可能
○ SN74182Nについて
- Carry look ahead (キャリー(桁上り)先読み機能)
Condition Flag
機能 ALU演算結果の状態を一時的に保持するフラグ
大きさ 1bit、3種類
・Carry 演算結果が桁あふれ、またはボロー
・Zero 演算結果はゼロ
・Minus 演算結果はマイナス
構成 SN7473 x 2
SCR - Scratch Register
機能 一時作業レジスタ( 雑用に使われる )
大きさ 16bit長
構成 SN74198 x 2
CNT - Loop Counter
機能 ループカウンター
CNT命令が使用するアップ・カウンター
大きさ 8bit長
構成 SN74161 x 2
Bus Buffer
機能 バスバッファー
大きさ アドレスバス16bit長、データバス16bit長
構成 SN74125 , SN74365の組合せで、多数使用
○ SN74125Nについて
- 4個入り、3ステートバッファ
○ SN74365Nについて
- 6個入り、3ステートバッファ
メインメモリ
1978年当時、メモリ用にP2102-1( 1024 x 1 )を64個購入し、その内1Kword分をキャラクターディスプレー回路(VRAM)に使い、残り3Kwordでメインメモリボードを作りました。
このボードは、CPUボード上の2段目に設置しました(3段目はキャラクターディスプレー回路(VRAM)になります)。
これでしばらくは、プログラムを作り楽しんでいたのですが、今で言うOSの役目をするシステムプログラムFORSEが機能拡張し大きくなり、アプリケーション領域が足りなくなってきたので、1980年3月に、4044( 4096 x 1 )を16個増設して、トータル7Kwordのメインメモリになりました。
この写真は、7Kwordになったメインメモリボードです。
2009年蘇りの時、メモリLSIをソケットからはずし、清掃しようとしたら、何と経年劣化でLSIの足がポキッと折れてしまったのです。
慌てて、4044の代替品が無いかネットで調べたのですが、当然今の時代に4KbitのSRAMなど存在しません。このままでは、3Kwordに縮小するしかありません。
それでは、当時作ったプログラムを再現する事が出来ません。
そこで、急遽UPD43256Bという32Kx8bitのSRAMを2個調達し、新メインメモリボードを設計しました。さすがに配線は、ワイヤリングペンでする訳にはいかないので、EARGLEにてプリント基板を設計し、中国のEZ-PCBにて製作させました。
これが、新設された32Kwordメインメモリです。
キャラクターディスプレー回路(VRAM)のボードに同居させました。
1980年当時は、メモリ用LSIの集積度が今よりも低く、また値段も高かったので、32Kwordなんて夢の夢だったのです。
TANACOM-1の搭載可能なメモリは最大32Kwordでしたので、これで念願のフル装備になる事が出来ました。
外観
各部の名称と役割
( 左上から )
- R0( Accumulator )の内容を常に表示。
- IR( Instruction Reg )の内容を常に表示( 上位8bitのみ )。
トルグSWで選択を切り替えると、R1( Index Reg )の内容を表示。 - PC( Program Counter )の内容を常に表示する。
上位8bitは、緑色LEDにて、ページ数( 0~0xFF )を表現し、
下位8bitは、赤色LEDにて、ページ内アドレス( 0~0xFF )を表現。
トルグSWで選択を切り替えるとSCR( Scratch Reg )の内容を表示。 - SWR( Switch Reg )
( 上に戻り )
- CARランプ Carryフラグの状態を常に表示。
- HALTボタン プログラムを停止。
- STARTボタン プログラムを走らせる。
- RUNランプ RUN状態であることを表現。
- POWERランプ ( 計画のみで未搭載 )
- POWER-SW 電源ボタン( 2009年に増設 )
- MANUAL OPERATION 6つの機能から選択し、「EXE」ボタンで実行。
1.SET R0・・・SWRの内容をR0にセット
2.SINGL ・・・シングルステップ( 1ステップづつ実行 )
3.SET PC・・・SWRの内容をPCにセット
4.STORE ・・・SWRの内容をPCが示すメモリに書き込む
そして PC+1 --> PC
5.DISPLY・・・SWRで示すアドレスの内容をR0に表示
6.ALL CLEAR ・オールクリア
化粧パネルの下は、このようなユニットになっております。
電源について
TANACOM-1は、5V単一の電源で動作します。
CPUブロックに対しては5Aを、メモリブロックに対しては、将来の増設を見越して7Aを供給させます。
しかしながら、復活の時2009年では、電源回路に使用していたコンデンサ等の劣化が心配でしたので、市販のATX電源350wに切り替えました。