top of page

 ​MYCPU80 

完成写真

 CPUの中を見たことがあります。顕微鏡で見るICはまるで大都市の街並みです。それが活動しているところを観ることができたら・・・少し思ったことは有ります。でも本当にみられるなんてすごいことだと思います。

 完成稼働 

 TK-80という日本で初めて個人で持てるコンピュータに使われていた8080というCPUをロジックICだけで作ろうという,壮大な計画が実現されました。

 CPU内部のレジスタの一つ一つに8つのLEDを持たせてデータ内容を表示させています。プログラムカウンタも16bitのLEDがついていますし,OPコードを保管しているレジスタも8bitのLEDで表現されています。データが流れている様子が見えるんです。

​ 中日電工さんが8080CPUをロジックICで作って,KIT販売しているMYCPU80。2009年9月14日発売,私は2014年8月8日注文9月10日到着10月28日完成しました。

 LEDを取り付けると遅くなると思っていたんですが,そんなことはありませんでした。電力もさほど使わないようです。

 見ているだけでプログラムの流れが「感じられる」作品です。

​ 右半分はLEDもなく,静かに動作していますが,この部分が判断の中枢です。

​ 各レジスタのLEDがけなげに動いて役目を果たそうとしているレジスタたちの姿は,見ているだけで感動します。

 CPU顕微鏡写真で検索してみました。

 多分左上の2つのブロックがRAMとROMだと思います。

​ 下のほうがALUなどの頭脳に当たるところでしょうか?

 この街並みが意思をもって光り輝いたらなんて素敵だと思いませんか。

 組み立て始め 

 新しい工作を始めようとするとき,いつも期待と夢がいっぱいになります。幸せを感じます。

 基盤 

 プリント基板の工作は数多く行ってきましたが,こんなに大きい基盤は初めてです。

 基板寸法はヨコ480mm×タテ310mmです(A3より大きい、です)。(中日電工さん)

基板 組み立て前

 巨大 

 大きくて重いので慎重に扱わなくてはなりません。

 修正されています 

​ 送られてきた基板は修正するべき個所の修正がされていて必要なところはICソケットも取り付けられています。とても良心的です。

最初のレジスタ

 電源部分とバスのコントロール部分を取り付けた後,アドレス入力用のdipSWとトグルSW,データ入力用トグルSWを取り付けました。クロックのタイミングに合わせてOPコードを受け取る部分を取り付けました。

 更に,プログラムカウンターを付けてLEDたちが輝きはじめました。RAMをセットしてあるのでデータをかくことができます。

 途中も楽しい 

​ 基盤や部品を傷めないようにプチプチの上で作業しました。熱からICを守ることと間違えて違うICを取り付けてしまわないようにするために,すべてのICにソケットを付けました。

 IC,抵抗,LED,コンデンサを取り付け,各命令が実行できるかを確かめながら組み立てていきます。わくわくドキドキです。

​ ここでは省略しますが,レジスタのテストや命令の実行・確認をスナップSWをバチバチと倒して押しボタンSWを押してRAMにデータを書き込みながら作り上げるので楽しくてうれしくて,あっという間に組み立ててしまいます。

完成全体
レジスタ部分

 ラベル粘付け 

 完成しました。各レジスタにラベルを貼りました。基盤にもシルクで書いてありますが,表示を大きくして見やすくしました。

 ラベルを2行で書いてはさみで切ったので少し曲がっています。

 TK-80の機能は左上の方にある黄色で囲った,8つの7セグLEDと5x5のタクトSWの部分です。

 アドレス4桁とデータ上位下位が表示される7セグLEDと16進数キー(緑1から9と青0,AからF),黄色のファンクションキーとリセットキーがTK-80の機能を持ちます。

​ 黒いフィルターを付ければいいのですが,付けると7セグの形が見えないので付けていなかったら,どこかにしまい忘れてしまいました。光って見えずらいでしょうが,私はこれが好きです。欲を言えば,アドレス4桁とデータ4桁が少し分かれてくれると TK-80 ぽくていいのですが,残念です。

 KEYボードです。緑が1から9青がAからFと0,黄色がファンクションキーとりセットキーになっています。

​ADRS SETはアドレスのセット 

RD INCは読んでインクリメント

RD DECは読んでディクリメント

WD INCは書いてインクリメント

RUNはプログラムを走らせます。

RETは戻ります。

STREはプログラムをしまいます。

LOADはプログラムを読み込みます。

​RESETはモニタの最初に戻ります。

MVI

 レジスタにデータ入力 

 move inputの略号だと思いますがMVI(ムブとかムビと読みますがムーブと呼んでもいいような気もします)。レジスタに8bitの数字を入力します。

 準備 

データを入力するためには準備が必要です。

 SP1とDS3 

SP1とDS3

 Address設定用のdipSWの右側にSP1があります。電源入力コネクタの上にDS3があります。

 SP1 

 DS3 

 TK-80はリセットすると0000h番地から3FFFhにはロムが割り当てられていて,モニタープログラムが走るようになっています。しかし,それではいろいろな実験をするのに不便です。工夫されていて,0000hからにもRAMを配置できるようにしてあるのが有難いところです。

 SP1のジャンパを外すと00h番地にRAMが配置されます。 

 データを入力するためにはモニタが扱っているバスを入力用に開けてもらわなくてはなりません。

 DS3の4をONにするとデータを入力できるようになります。

 AddressとDATAの入力 

 Addressの下位4bitとDATAの8bitは左下にあるトグルSWで入力します。Addressが4bitしかないのはたくさん入力をすることがないだろうと考えているからだそうです。上がON,1h。下がOFF,0です。

​ バチバチとスナップSWを倒しボタンを押してデータ入力するのはとても爽快です。

テストプログラム

 テストプログラム 

 MYCPU80の組み立て説明書にあるプログラムです。各レジスタにデータを入力します。

行番号 機械語    命令

 0000      0600    MVI  B,00

 0002      0E01    MVI  C,01

 0004      1602    MVI  D,02

 0006      1E03    MVI  E,03

 0008    2604    MVI  H,04

 000A      2E05    MVI  L,05

 000C      3E07    MVI  A,07

 000E       76       HLT

 実際のキー操作(スナップSW操作)は下のようにして,1行ずつすぐ右にある四角い緑のMEMWR SWを押します。

 01の並びはスナップSWの並び順,0は下,1は上にスナップSWを倒します。

 

Address    DATA        機械語

  0000      0000 0110    06

  0001      0000 0000    00

  0010      0000 1110    0E

  0011      0000 0001    01

  0100      0001 0110    16

  0101      0000 0010    02

  0110      0001 1110    1E

  0111      0010 0110    26

  1000      0000 0100    04

  1001      0010 1110    2E

  1010      0000 0101    05

  1011      0011 1110    3E

  1100      0000 0111    07

  1101      0111 0110    76

​ これを入力して走らせる(電源を落としてSP3の4を上げて電源ON)と各レジスタにそれぞれの数字が入ります。

 RESETキーを押しながらDS3の4をOFFにするとプログラムが走ります。​

 右上のAレジスタは7(○○○○○●●●)を表示していますね。BCDEHLの各レジスタもそれぞれの2進数を表示しています。

レジスタの値

  D       E       B      C 

​ ○○○○○○●○    ○○○○○○●●    ○○○○○○○○    ○○○○○○○●

  2         3       0       1 

  H       L      SPH     SPL 

​ ○○○○○●○○    ○○○○○●○●    ●●●○●●●○    ●●●○●●●

  4         5       EE      EE 

 WKH     WKL    PCH      PCL 

​ ●●●●●●●●    ●●●●●●●    ○○○○○○○○    ○○○○●●●○

 FF      FF       00        0E 

 プログラムカウンタも0Ehになっています。76のHALTでCPUは停止しています。

 デコーダ 

デコーダ(CPU)

 デコーダーの部分です。LEDの付いているレジスタは一時記憶装置です。OPCODEラッチともいい,命令を選別して実行させる,この部分がCPU(中央処理ユニット)の考える?部分にあたる所です。

 識別された命令の内容に応じて右側1/3にあるLEDのない静かなICの群れに信号が手渡されてデータの流れを作っていきます。

Excellでデコーダ

 LEDを備えたレジスタ群 

 レジスタ全体 

 フラグ

 INC/DEC 

SZ  H  P  C

 ROTATE 

 LEDを持ったレジスタたちの動きを追うことができます。画像の下の部分はクリックするとPopUPします。

 BUS開放時のレジスタ 

​ BUSを開放されると各レジスタはスタックポインタを除いてhiの状態が多くなっています。PC(プログラムカウンタ)はアドレス0番地を示しています。ALU XORはALUの反転なので00hです。INC/DECとROTATEは使用前のため00hになっています。

 MVI 

 06 00 MVI B,00 

 MVI B 00を実行したときのレジスタの動きです。8つのLEDが点灯してFFhを表していたBレジスタのLEDが消えて00hを示しています。Addressが00 03hとなっています。右下の赤いLEDがClock数3(00011)を表しています。

 クロック 

 CPUはどのようにしてBレジスタに00hを入れるのでしょう?ただ,00hをBレジスタに入れるといっても手順があるはずです。

 手順を作るために一つ一つの動作を区切るクロックがあります。1クロックで一つの動作を行います。TK-80では1命令の区切りは1μ秒(100万分の1秒),CPUの速度は1MHzです。(2MHzかもしれません)

 右下の部分を拡大してみるとたくさんのLEDが一列に並んでいます。右にある5つの赤いLEDがクロックの表示です。5bitですから,0から31クロックまで表せます。

 左側にあるOP CODEと書いてあるICの下にあるLEDはOPコードを記憶しているレジスタのデータを表示します。

MRD

MWR

IOR

IOW

B

USAK

Eclk

InRD

HTRT

OP CODE

Clock

 クロック毎の動作 

 ステップ動作をさせるときは、ディップスイッチDS3の右から3番目の3のみを、小型のマイナスドライバを使って図のようにON(下側)にセットします。中日328

 流れを見るために画像は小さくしてあります。

A0000h CLC0

inner BUS 06h

A0000h CLC1

A0000h CLC2

A0000h CLC3

OP CODE 06h

OP CODE 06h

OP CODE 06h

inner BUS FFh

 Address 0000hの

 Clock 0では内部バス(inner BUS)にOPコードの06hが読み込まれます。

 Clock 1ではOPコードラッチに06hが読み込まれます。

 Clock 2ではOPコードの分析が行われているのでしょう。​

  (次に読み込まれたデータをBレジスタに転送)

 Clock 3ではPC(プログラムカウンタ)に緑のLEDが点灯して,書き込み指示を出しています。

A0001h CLC4

A0001h CLC5

inner BUS 00h

B REG 00h

 Clock 4ではAddressが0001hになっています。内部バスは0001hの内容00hが入っていて,それをBレジスタに転送しています。MVI B 00hが実行されました。

(*0001hの内容をA5hにしてみました。A5hを読込,転送されています。)

 Clock 5ではPCに書き込み指示が出ています。PCをインクリメントして命令実行を終了します。(OPコードは06h)

 HLTA 

A0002h CLC0

OP CODE 06h

inner BUS 76h

A0002h CLC1

OP CODE 76h

A0002h CLC2

A0002h CLC3

OP CODE 76h

LED HLTA

OP CODE 76h

LED HLTA

 Clock 0ではinnerBUSに76hが入っています。OPコードは以前のままです。

 Clock 1でOPコードがラッチ(一時記憶)されます。

 Clock 2でHLTAのLEDが点灯して停止状態を告げます。

​ Clock 3では変化は有りません。以降Clock0からClock3の繰り返しです。

やっと,このページの修復作業が終りました。​2022/10/17

​この下には何もありません。2022/10/17

アドレス4桁

データ上位

データ下位

キーボード

bottom of page