TK-80
TK-80(Training Kit μCOM80)とは日本電気(NEC)の半導体事業部(現在のルネサス エレクトロニクス)が1976年8月3日に販売した、マイクロコンピューター(マイコン)システム開発のためのトレーニングキットである。
目次 |
[編集] 概要
TK-80は、NEC製のμCOM80ファミリーを使いこなすためのトレーニングキットとして発売されたワンボードマイコンキットである。
TK-80の特徴はデータの入出力のために、ほかの機器を必要としなかったことである。当時の他社(インテルやモトローラなど)のトレーニングキットの多くはデータ入出力を行うために、シリアル通信機能を備えた端末装置(テレタイプやVDT装置など)を接続する必要があった。それに対しTK-80は16進入力キーパッドと8桁の7セグメントLEDを基板上に備えており、端末装置なしでシステムを使うことができたのである。
高価な端末装置を必要としないという点が当時のアマチュアの目に留まり、TK-80は本来の意図とは異なり相当数がコンピュータマニアに購入されることになった。このことが当時ちょっとしたブーム(マイコンブーム)となり、その後の8ビットパソコン(国産では、NECのPC-8000シリーズ、日立のベーシックマスター、シャープのMZシリーズなど)に続いていくことになった。
[編集] トレーニングキット/エバリュエーションキット
初期のマイクロプロセッサは、電卓などのアプリケーションを意図していた。その後、マイクロプロセッサの能力の向上により電卓とは別のアプリケーションも想定されるようになった。従来ワイヤードロジック回路、リレー回路、アナログ回路、機械機構などで実現されていた複雑な動作を行う機器をソフトウェア制御化し機器のコストダウン、小型化を図ろうとしたのである。
マイクロプロセッサを使ったソフトウェア制御を行うためには、機器を設計する技術者がそれまでの回路設計などの技術とは別にソフトウェア開発技術を習得する必要がある。そのためマイクロプロセッサを製造、販売する会社は技術者がマイクロプロセッサのハードウェア、ソフトウェア技術を習得するための教材としてトレーニングキット、あるいはエバリュエーションキット(評価用キット)を提供するようになった。
この種のキットはCPU、ROM、RAM、I/Oチップなどの構成部品を1枚の基板上に実装し最小構成のマイクロプロセッサシステムを構成していた(このような構造から、ワンボードマイコンと呼ばれた)。通常ROMにはモニタ/デバッグプログラムが置かれていたが、ユーザーが自分用のプログラムに置き換えて各種の実験を行ったりあるいはそのままそのボードを制御用部品として製品に組み込むこともできた。
[編集] システムの構成
最初に発売されたTK-80とその後廉価版として販売されたTK-80Eでは一部の使用部品が変更されているが、ここでは初代のTK-80を中心に説明する。
TK-80はプロセッサ、モニタプログラムを収めたROM、RAM、DMAにより表示される8桁の7セグメントLED、プログラマブルパラレルポートから構成されている。
[編集] プロセッサ
TK-80は、インテルの8080A互換のNEC製マイクロプロセッサμPD8080AをCPUとして使用している。
μPD8080Aは8080Aとは完全互換ではなかった。10進加算後のBCD補正を行うDAA命令がインテル製のチップは加算後の補正しかできなかったのに対し、NEC製は減算後の補正も行えたのである。NEC製チップは加減算のBCD補正を行うために、直前に行ったのが加算であるか減算であるかを記憶するフラグをPSW(フラグレジスタ)中に追加した。
プログラムを作る立場からすればNECによる拡張は便利なものだったのであるがオリジナルの8080Aとの命令の動作の違いフラグの構成の違いなどの問題があり、後から販売されたTK-80EではBCD演算処理がインテルのオリジナルと同じになっているμPD8080AFCに変更された。
8080プロセッサは、TTLレベルではない2相クロックを必要とする。また周辺回路を制御するための信号(メモリ-I/Oアクセスの識別、リード/ライトの識別など)の信号は特定のタイミングでデータバスに出力されるという構成であったため、そのままでは簡単に周辺チップを接続することができなかった。インテル製の8080Aファミリではクロックジェネレータ8224、システムコントローラ8228というチップが用意されており8080Aとあわせて3チップでプロセッサユニットとして機能するという設計だった。
NEC製のμCOM-80ファミリも同じ構成でCPUがμPD8080AD、クロックジェネレータμPB8224、システムコントローラがμPD8228Dという構成である。
[編集] ROM
基板には256バイトROMを4個装着することができる。キットではこのうち3個にμPD454Dを装着し、モニタプログラムが実行されるようになっている。μPD454Dは専用のROMライターを使ってデータの書き込み、電気的なデータ消去を行えるEE-PROMである。
EE-PROMを使ったのは組み込み機器の実験などのためにユーザーがデータを書き換えて使えるようにするためだったと思われるが、アマチュアへの販売量が増えたために販売された後継の廉価版のTK-80EではマスクROMのμPD464に変更された。
ROMは、8080のアドレス空間の0000Hから03FFHの1Kバイトである。TK-80/TK-80Eとも通常の状態ではスロットの空きが1つあるので、自分でROMチップを用意しプログラムやデータを置くことができる。つまり、モニタプログラムは0000Hから02FFHの768バイトで0300Hから03FFHはユーザー用領域となる。
[編集] RAM
基板には1Kビット(4ビット×256)のS-RAMを最大8個、つまり1KバイトのRAMを装着できる。TK-80では、バッテリーバックアップ可能なμPD5101Eというバッテリーバックアップ可能なC-MOSチップを使っていた。μPD5101Eは3Vのスタンバイ電圧でデータを保持できるためTK-80の基板に外部の3V電源(単三電池2本)を接続し、さらにスイッチで主電源のVccからバックアップのVccに切り替えられるようになっていた。
スイッチでバッテリーバックアップモード(基板上の表示ではPROTECT)に切り替えるとRAMのVcc電源がバッテリー側に切り替わるとともにRAMチップの制御信号が変化してディセーブル状態になり、メモリアクセスが一切禁止される。そのため、動作中にPROTECTに切り替えると(また、PROTECTを解除すると)プログラム(モニタプログラムも含む)は暴走する。このスイッチを切り替える際は、RESETボタンを押しながら行わなければならない。
TK-80Eではコストを低下させるために、n-MOSのμPD2101AL-4が使われた。こちらは消費電力や電圧の定格の問題があるため、バッテリーバックアップはできなかった。
TK-80ではRAMのメモリアドレスは8000Hから83FFHまでの1Kバイトであるがキットに含まれるRAMチップは4個だけで、この空間のうち8200Hから83FFHに実装するようになっている。上位アドレスに実装するのは、最上位アドレスがモニタプログラムやLEDディスプレイ用のワークエリアとして予約されているためである。ユーザーがRAMチップを増設することで、フルに1Kバイトを利用することが可能になる(マニュアルや各種プログラムライブラリに記載されていたプログラムの多くは、標準の8200Hからのメモリ実装に対応していた)。
C-MOSの5101はピン互換のn-MOSの2101と比較しアクセスタイムが長かったため、CPUによるメモリアクセスの際に1クロック分のウェイトが挿入された。マスクROMとn-MOSの2101を使っているTK-80Eではこのウェイトは不要なため、基板のパターンカットにより速度を向上させることができた。ただしタイマールーチンの待ち時間が変わるため、シリアル通信の伝送レートが変化してしまうという問題がある。
[編集] I/Oポート
TK-80は、8080ファミリーのプログラマプルなパラレルI/OポートμPD8255を1個実装している(シリアルI/Oポートの8251は、TK-80には実装されていない)。8255は8ビットポートを3ポート備え(PA、PB、PC)、各ポートの入出力、動作モードなどをプログラムから設定できる。単純な8ポート×3、2ポート+制御信号、ビット単位の入出力指定(PCポートのみ)などの動作が可能だ。
TK-80は8255をキーパッドのスキャン、シリアル入出力、LEDディスプレイの制御に使っている。このチップのアドレスは、I/Oアドレス空間の0F8Hである(ただし、フルデコードされていない)。
キーパッドは回路に直結しているRESETを除くと24キーであり、これが3×8のマトリクス接続になっている。8255のPCポートの3ビット(PC4からPC6)とPAポートがこのマトリクスに接続されておりモニタープログラム内のキースキャンルーチンが8255のポートを制御し、キーの押し下げ状態を検出する。スイッチ操作の際にはチャタリング(断続的なスイッチのオン/オフ)が発生するがキースキャンルーチン内でのタイマー処理により、誤動作を防いでいる。
TK-80モニタプログラムは、110bpsでのシリアル入出力をサポートしている。これはシリアル入出力LSIを使わずソフトウェアでタイミング処理を行い、8255のパラレルポートのビットを使用して行う。使用しているのはPC0(シリアル出力)とPB0(シリアル入力)である。タイミング生成はソフトウェアのタイマールーチン(空ループにより時間をつぶすという方法)を使っているため、この処理中はDMAによるLEDディスプレイを停止させる必要がある。このための制御は、8255のPC7ポートで行われる。
TK-80モニタプログラムはSTORE DATAキー、LOAD DATAキーを使いメモリデータをシリアル出力し、また外部からシリアルデータをロードできる。一般的な用法はシリアル出力ポートのビット出力を数kHzのオーディオ信号でトーンバースト変調し、このデータをカセットテープレコーダに出力するというものである。またこのオーディオ信号を復調し、シリアル入力ポートに与えることで保存したデータをロードすることができる。TK-80そのものにはこのようなオーディオ変調/復調回路は含まれていないが、マニュアルには回路例が記載されており多くのユーザーは基板上のフリースペースにこの回路を組み込んでいた。
[編集] LEDディスプレイ
8桁の7セグメントLEDはパラレルポートなどを介して表示されるという構造ではなくRAM中の特定のアドレス(83F8Hから83FFの8バイト)のデータをDMAで読み出し、各バイトの8ビットデータの値に応じて7セグメントLEDの小数点を含めた8セグメントを点灯/消灯する。これにより、小数点を含む8個のセグメントを任意のパターンで表示することができた。
データバスから読み出したメモリデータは、8212チップでラッチされる。これは8ビットラッチ/3ステートバッファのバイポーラICで、非プログラマブルI/Oポートとして8080ファミリーに含まれているチップである。回路構成からすると8212ではなく単純なラッチでも済むのであるが、トレーニングキットという性格からこのチップを使ったものと考えられる。
LEDの点灯はプログラムの動作とは関係なく555タイマーチップを使った数百Hzの信号でCPUをホールドし、そして前述の範囲でアドレスを1つずつ進め(555の出力で、3ビットのアドレス用カウンタが動作する)RAM中のデータを1バイトずつ読み出しラッチで保持し、該当桁のLEDを点灯させるというダイナミック点灯構造である。
このような構造により、プログラムは83F8Hから83FFの8バイトに適当なデータを書き込むだけで出力ルーチンを呼び出すことなくLED表示を行うことができる。またデータを16進数で表示するというルーチンがモニタ内にあり、これを使うことで簡単に数値表示を行うこともできる。
8080のような単純なプロセッサの場合、プログラムの実行ステップ数を数えることでかなり正確に時間を測ることができるがこのようなDMA処理を行うとCPUの実行速度が多少低下し時間を正確に測れなくなる。そのため110bpsの入出力処理中など、厳密な時間測定が必要な時にはDMAによるLED表示を停止することができる。これは、8255の特定のビットで制御できる。
[編集] シングルステップ実行
TK-80モニタプログラムは、プログラムをデバッグするためのシングルステップ実行をサポートしている。シングルステップスイッチをAUTOモードからSTEPモードにするとプロセッサから得られるM1信号(インストラクションのフェッチ、つまり1つの命令の実行開始を示す信号)が、プロセッサの割り込み要求に入力される。これにより、8080プロセッサは割り込み処理を開始する。
8080プロセッサは割り込み要求があると、データバスから割り込みのための命令を読み込むという動作をする。TK-80では、このフェーズにおいてメモリアクセスをディセーブルするようになっている。データバスはプルアップされているためメモリなどがバスにデータを出力していない時は全ビットが1になり、プロセッサは0FFHという命令を読み込む。8080の命令ではこれはRST 7という割り込み用の命令で、0038Hへのサブルーチン呼び出しが実行される。
割り込み処理が開始されると割り込み許可フラグがディセーブルされるので、モニタープログラム内の処理が連続実行される。モニタープログラム内ではこの割り込みエントリから実行が始まるとPC(プログラムカウンタ)、Aレジスタ、PSW(フラグ)レジスタの内容をLEDに表示する。その後、RETキーを押すとこのサブルーチンコールがリターンしユーザープログラムにリターンし、命令の実行を継続する。このリターンの直前に割り込みが許可されるのでユーザープログラムが1命令だけ実行され、再びモニタープログラムに戻ってくる。EI(割り込み許可)命令の後、RET(サブルーチン/割り込みからのリターン)命令を実行するが、単純にM1信号を割り込み要求に接続するとRET命令の実行後に割り込みがかかりユーザープログラムが実行されない。そのためTK-80のシングルステップ実行機能は割り込み許可後、1命令(RET命令)を実行しその次の命令(ユーザープログラムの1命令)の実行後の割り込みが実行されるような回路になっている。
[編集] モニタプログラム
電源投入、あるいはRESETスイッチの操作によりTK-80はモニタプログラムの実行を開始する。モニタプログラムは、以下の操作を行うことができる。
- RAMへのデータ書き込み
- 指定したアドレスに、プログラムやデータを書き込みことができる。
- メモリデータの読み出し
- 指定したアドレスのメモリデータを読み出すことができる。
- プログラムの実行
- 指定したアドレスからプログラムを実行する。
- シングルステップ実行
- STEPモードの際に、1命令ずつ実行する。あるいはブレークポイントとブレークカウンタを指定し、条件を満たすまでSTEPモードの実行を連続的に繰り返すことができる。STEPモードでモニタに戻ってきた際には、退避されたレジスタの内容を参照することができる。
- プログラム/データのロードとセーブ
- STORE DATAキーの操作によりメモリデータをシリアルポートに出力できる。これをオーディオ信号などの形で保存しておけば、後でLOAD DATAキーを使ってデータをロードすることができる。
- ライブラリルーチンの提供
- キーパッドからの入力、LEDへの16進の数値表示、タイマー、シリアル入出力などのサービスを提供するサブルーチンを利用することができる。
[編集] 拡張性
100ピンのエッジコネクタにはアドレスバス、データバス、メモリ/I/Oの読み書きの信号などが接続されていたので外部回路を接続することができる。またバックプレーンを用意すれば同型の基板を重ねるように使用し、システムを拡張することも可能である。後から発売されたTK-80 Basic Station、メモリカードなどは、このような構成で接続する。また、自由に回路を作成できるユニバーサル基板も販売されていた。
しかしTK-80はトレーニングキットとして設計されたものであったため、本格的な拡張まで考えて設計されていた訳ではなかった。
たとえば、メモリアドレスのデコードである。TK-80のROMとRAMはそれぞれ最大で1KBなので、アドレスの下位10ビットはデコーダとメモリチップに接続されていた。そしてROMとRAMの切り替えを最上位1ビットで行い、A10からA14まではデコードされていなかった。そのため0000Hから7FFFHまでは先頭1KBのROMイメージが繰り返し現れ、8000HからFFFFHまではRAMイメージが繰り返し現れることになった。
外部にメモリを増設する場合は、まずこのゴーストイメージ対策を行う必要がある。具体的には、アドレスをきちんとデコードするということである。TK-80の基板はフルデコードするために、パターンをカットしてデコード信号を接続できるようになっていた。
Basic Station基板はROMとRAMを搭載しているため、BS基板とTK-80を接続する際にはこのフルデコード改造を行う必要があった。そのためBasic Station基板上にはTK-80基板上のROMとRAMのアドレスをデコードする回路が載っており、このデコード信号がエッジコネクタ経由でTK-80基板に送られるようになっていた。TKー80側ではパターンをカットした後、この信号をメモリチップ用のデコーダに接続しなければならなかった。
[編集] シリーズ商品
TK-80には初期モデルμPD8080A(減算時の10進補正が可能でインテルと非互換)とμPD454D(EEPROM)、uPD5101E(バッテリーバックアップ可能)、低価格化後期モデル(TK-80E:Economy)μPD8080AFCとuPD464(マスクROM)、uPD2101AL-4 がある。
純正オプションとしてメモリーボードTK-M20K(12kBytes)とBASIC STATION(Level1BASIC:整数BASIC、Level2BASIC:実数BASIC)があった。
- TK-80E
- EはEconomicのEつまり簡易品。値段と機能が少々落とされていた下位バージョンである。
- COMPO-BS
- 上記のBASIC STATIONをカセットユニットと併せて格納した製品で、ワンボードとデスクパソコンの過渡的存在。
- TK-85
- マイナーチェンジ版でハードが一部変更され、8進LED部には赤いアクリル板が付いていた。この頃は既にワンボードからデスクパソコンに移行が完了していた時期で、ホビー向けのワンボードとしては勿論最後の機種となった。
[編集] TK-80 Basic StationとCOMPO-BS
TK-80 Basic Stationとして販売されていたのはTK-80と重ねて実装できる基板で拡張RAM、BasicインタープリタのROM、キーボードインターフェイス、キャラクタディスプレイ用V-RAM、カセットインターフェイスを装備していた。製品にはこれに加えて基板を接続するバックプレーン、キーボードなどが含まれていた。
その後、Basicマシンとして販売されたCOMPO-BSは電源、カセットテープドライブを装備したケースにBasic Station基板を収めた完成製品であるがこれにはTK-80基板は含まれていない。プロセッサユニットは、バックプレーンボード上に実装されていた。このプロセッサ基板には当然LEDディスプレイ、キーパッド、TK-80モニタープログラムなどは実装されておらず電源投入でBasic環境が起動するようになっていた。
完成品のCOMPO-BSとは別にケース、電源は部品としても販売されていた。部品のケース購入するとTK-80基板とBasic Station基板を重ね、バックプレーンで接続したユニットとキーボードを内部に装着し完成品のCOMPO-BSと同等のものにできた。この構成ではBasic環境を起動するためにTK-80のキーパッドを操作する必要があるが、このケースはキーパッドの上部が開閉可能なフタになっており自由にTK-80基板を操作することができた(完成品のCOMPO-BSも同じケースを使っていたので、このフタもあった。もちろん、開けても下の基板が見えるだけである)。
日本のホビーパソコンとしては珍しく、COMPO-BSは電源スイッチがキースイッチであった。
[編集] 参考資料
2000年に、榊正憲著『復活! TK-80』(ISBN 978-4-7561-3401-1)という書籍がアスキーより販売された。この本にはWindows上で動作するTK-80のシミュレータプログラム、そのソース、TK-80の当時のマニュアル(回路図、モニタプログラムのソースも含む)をPDF形式に復刻したものが含まれている。
2008年現在、TK-80上位互換の製品として中日電工より「トレーニングボード ND80K」という製品が販売を継続している。