TK-80
このような処理をすると8228は、このフェーズにおいてシステムデータバスの状態とは関係なくRST 7命令をCPUデータバスに送る。プロセッサは0038Hへのサブルーチン呼び出しを実行する。 TK-80では2番目の8228を1レベルの割り込みコントローラとして使う方法を採用している。この8228のINTA端子に対す処理はTK-80の回路図によって確認できる。
割り込み処理が開始されると割り込み許可フラグがディセーブルされるので、モニタープログラム内の処理が連続実行される。モニタープログラム内ではこの割り込みエントリから実行が始まるとPC(プログラムカウンタ)、Aレジスタ、PSW(フラグ)レジスタの内容をLEDに表示する。その後、RETキーを押すとこのサブルーチンコールがリターンしユーザープログラムにリターンし、命令の実行を継続する。このリターンの直前に割り込みが許可されるのでユーザープログラムが1命令だけ実行され、再びモニタープログラムに戻ってくる。EI(割り込み許可)命令の後、RET(サブルーチン/割り込みからのリターン)命令を実行するが、単純にM1信号を割り込み要求に接続するとRET命令の実行後に割り込みがかかりユーザープログラムが実行されない。そのためTK-80のシングルステップ実行機能は割り込み許可後、1命令(RET命令)を実行しその次の命令(ユーザープログラムの1命令)の実行後の割り込みが実行されるような回路になっている。
基板上にはROMを4個実装することができる。キットではμPD454Dを3個装着し、モニタプログラムが実行されるようになっている。μPD454DはROMライターを使ってデータの書き込み、電気的なデータ消去を行える256ワード×8ビット構成のパラレルバス型EE-PROMである。
EE-PROMを使ったのは組み込み機器の実験などのためにユーザーがデータを書き換えて使えるようにするためだったと思われるが、アマチュアへの販売量が増えたために販売された後継の廉価版のTK-80EではμPD454DとピンコンパチブルなマスクROMのμPD464に変更された。
ROM用領域は、8080のアドレス空間の0000Hから03FFHの1Kバイト分である。TK-80/TK-80Eともマニュアル通りの組み立て完成時の状態ではPROM実装用スペースが1つ残っているので、自分でROMチップを用意しプログラムやデータを置くことができる。つまり、TK-80/TK-80E標準実装モニタプログラム用ROM領域は0000Hから02FFHの768バイトで、0300Hから03FFHの256バイト分はユーザー用拡張ROM領域となる。
TK-80は、インテルの8080A互換のNEC製マイクロプロセッサμPD8080AをCPUとして使用している。
μPD8080Aは同社製μPD753(μCOM-8)とのソフトウェア互換品であり、8080Aとは完全互換ではなかった。10進加算後のBCD補正を行うDAA命令がインテル製のチップは加算後の補正しかできなかったのに対し、NEC製は両者とも減算後の補正も行えたのである。NEC製チップは加減算のBCD補正を行うために、直前に行ったのが加算であるか減算であるかを記憶するSUBフラグをPSW(フラグレジスタ)中に追加した。
プログラムを作る立場からすればNECによる拡張は便利なものだったのであるがオリジナルの8080Aとの命令の動作の違いフラグの構成の違いなどの問題があり、後から販売されたTK-80EではBCD演算処理がインテルのオリジナルと同じになっているμPD8080AFCに変更された。
8080プロセッサは、TTLレベルではない2相クロックを必要とする。また周辺回路を制御するための信号(メモリ-I/Oアクセスの識別、リード/ライトの識別など)の信号は特定のタイミングでデータバスに出力されるという構成であったため、そのままでは簡単に周辺チップを接続することができなかった。インテル製の8080Aファミリではクロックジェネレータ8224、システムコントローラ8228というチップが用意されており8080Aとあわせて3チップでプロセッサユニットとして機能するという設計だった。
NEC製のμCOM-80ファミリも同じ構成でCPUがμPD8080AD、クロックジェネレータμPB8224、システムコントローラがμPB8228という構成である。