TK-80
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/03/17 01:26 UTC 版)
システムの構成
最初に発売されたTK-80とその後廉価版として販売されたTK-80Eでは一部の使用部品が変更されているが、ここでは初代のTK-80を中心に説明する。
TK-80はプロセッサ、モニタプログラムを収めたROM、RAM、DMAにより表示される8桁の7セグメントLED、プログラマブルパラレルポートから構成されている。
プロセッサ
TK-80は、インテルの8080A互換のNEC製マイクロプロセッサμPD8080AをCPUとして使用している。
μPD8080Aは同社製μPD753(μCOM-8)とのソフトウェア互換品であり、8080Aとは完全互換ではなかった。10進加算後のBCD補正を行うDAA命令がインテル製のチップは加算後の補正しかできなかったのに対し、NEC製は両者とも減算後の補正も行えたのである。[注 4]NEC製チップは加減算のBCD補正を行うために、直前に行ったのが加算であるか減算であるかを記憶するSUBフラグをPSW(フラグレジスタ)中に追加した。
プログラムを作る立場からすればNECによる拡張は便利なものだったのであるがオリジナルの8080Aとの命令の動作の違いフラグの構成の違いなどの問題があり[注 5]、後から販売されたTK-80EではBCD演算処理がインテルのオリジナルと同じになっているμPD8080AFC[注 6]に変更された。
8080プロセッサは、TTLレベルではない2相クロックを必要とする。また周辺回路を制御するための信号(メモリ-I/Oアクセスの識別、リード/ライトの識別など)の信号は特定のタイミングでデータバスに出力されるという構成であったため、そのままでは簡単に周辺チップを接続することができなかった。インテル製の8080Aファミリではクロックジェネレータ8224、システムコントローラ8228というチップが用意されており8080Aとあわせて3チップでプロセッサユニットとして機能するという設計だった。
NEC製のμCOM-80ファミリも同じ構成でCPUがμPD8080AD、クロックジェネレータμPB8224、システムコントローラがμPB8228という構成である。
ROM
基板上にはROMを4個実装することができる。キットではμPD454Dを3個装着し、モニタプログラムが実行されるようになっている。μPD454DはROMライターを使ってデータの書き込み、電気的なデータ消去を行える256ワード×8ビット構成のパラレルバス型EE-PROMである。[12]
EE-PROMを使ったのは組み込み機器の実験などのためにユーザーがデータを書き換えて使えるようにするためだったと思われるが、アマチュアへの販売量が増えたために販売された後継の廉価版のTK-80EではμPD454DとピンコンパチブルなマスクROMのμPD464に変更された。
ROM用領域は、8080のアドレス空間の0000Hから03FFHの1Kバイト分である。TK-80/TK-80Eともマニュアル通りの組み立て完成時の状態ではPROM実装用スペースが1つ残っている[13]ので、自分でROMチップを用意しプログラムやデータを置くことができる。つまり、TK-80/TK-80E標準実装モニタプログラム用ROM領域は0000Hから02FFHの768バイトで、0300Hから03FFHの256バイト分はユーザー用拡張ROM領域となる。
RAM
基板には1Kビット(4ビット×256)のS-RAMを最大8個、つまり1KバイトのRAMを装着できる。TK-80では、μPD5101Eというバッテリーバックアップ可能なC-MOSのS-RAMを使っていた。μ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で採用されている8080用システム・コントローラ/バッファ8228はINTA端子の使い方により2種類の動作を選べる。 1番目の使い方は8228のINTA端子を割り込み応答出力端子として使う方法である。INTA端子がアクティブになったときにシステムデータバス(8228からメモリやI/Oが接続されている側のデータバス)に接続されている割り込みコントローラ(8212、8214、8259等)がRST 0~7命令やCALL命令をシステムデータバスに乗せ8228はそれをCPUデータバスに伝えるというものである。プロセッサはこの命令を実行する。 2番目の使い方は8228のINTA端子を1KΩの抵抗器を介して+12Vにプルアップするというものである。このような処理をすると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命令)の実行後の割り込みが実行されるような回路になっている。
注釈
- ^ 7万台を売ったとする文献もある[4]。
- ^ 半導体部門は2002年の分社化を経て2010年よりルネサス エレクトロニクスとして存続。
- ^ 1976年9月に電子デバイス販売事業部へ改称。
- ^ その他、命令の実行サイクル数がインテル製とは異なるなどの違いもあった
- ^ 部品を仕入れる担当者の立場では、NEC製が入手できない場合にインテル製を含む他社品で代替できないのも問題であった。これはμPD753があまり売れなかったのと同様の理由である
- ^ μPD8080AFのあとのCはプラスチックパッケージを示すサフィックスである。μPD8080AおよびAFのあとにDがあるバージョンもあり、Dは同様にセラミックパッケージを示す。他のICの末尾の文字も同様である
- ^ 例えば月刊I/O1977年12月号では、アドテックのメモリボード(ADB-001)、ディスプレイユニット(TVD-02)、キーボード(KB-02)を接続して東大版2K BASICを動かす方法が紹介されていた。
出典
- ^ a b c d 太田行生『パソコン誕生』日本電気文化センター、1983年、22頁。ISBN 4930916119。
- ^ a b 佐々木 2013, p. 8.
- ^ a b 日本電気社史編纂室『日本電気株式会社百年史』日本電気、2001年12月25日、649-661頁。
- ^ 上前淳一郎『読むクスリ』文藝春秋(文春文庫)、1987年、14頁。ISBN 4-16-724807-7。
- ^ a b c 関口, 和一『パソコン革命の旗手たち』日本経済新聞社、2000年、35-39頁。ISBN 4-532-16331-5。
- ^ a b 田中, 繁廣「ドキュメント・NECのPC戦略―市場制覇への道を切り拓いた戦士達 その決断と挑戦の歴史」『100万人の謎を解く ザ・PCの系譜』コンピュータ・ニュース社、1988年2月17日、76–89頁。ISBN 4-8061-0316-0。
- ^ 塩田紳二「国産銘機列伝:開発者インタビュー「オープンの発想はPDP-8から学んだ―TK-80開発者、後藤氏に聞く」」『ASCII』第22巻第5号、アスキー、1998年、314頁、ISSN 0386-5428。
- ^ 加藤明、「PC-8001の開発」 『電子情報通信学会 通信ソサイエティマガジン』 2010年 2010巻 15号 p.15_58-15_65, doi:10.1587/bplus.2010.15_5 電子情報通信学会
- ^ 「TK-80BS」『ASCII』第2巻第1号、アスキー出版、1978年、ISSN 0386-5428。
- ^ 田中, 繁廣「NECのハード開発戦略―ユーザーをとらえた「互換性と継承性の追求」優先の製品開発」『100万人の謎を解く ザ・PCの系譜』コンピュータ・ニュース社、1988年2月17日、94–105頁。ISBN 4-8061-0316-0。
- ^ 塩田, 紳二「国産銘機列伝:History「マイコンと呼ばれていた頃」」『ASCII』第22巻第5号、アスキー、1998年、312-313頁、ISSN 0386-5428。
- ^ 『μCOMシリーズ 総合ユーザーズガイド 1978 SPRING編』日本電気株式会社、1978年3月3日。IEM-517N。
- ^ 『μCOM-80トレーニング・キット TK-80E/80ユーザーズ・マニアル』
- ^ “メモリボード TK-M20K”. NEC Personal Computers, Ltd.. 2012年11月2日閲覧。
- ^ a b 太田行生『パソコン誕生』日本電気文化センター、1983年、29頁。ISBN 4930916119。
- ^ “COMPO BS/80”. NEC Personal Computers, Ltd.. 2012年11月2日閲覧。
- ^ 日本電気社史編纂室『日本電気株式会社百年史』日本電気、2001年12月25日、653頁。
- ^ “トレーニングマイクロコンピュータ TK-85”. NEC Personal Computers, Ltd.. 2012年11月2日閲覧。
- ^ “μCOMベーシックステーション TK-80BS”. NEC Personal Computers, Ltd.. 2012年11月2日閲覧。
- ^ 竹下 洋、ワンタッチLEVEL-I ↔ LEVEL-II 切り替えシステム『ラジオの製作別冊 マイコンプログラム全集1』p.12、電波新聞社、1979年
固有名詞の分類
- TK-80のページへのリンク