tk-80シミュレータに そろそろケリをつけたい -...
TRANSCRIPT
TK-80シミュレータにそろそろケリをつけたい
藤田 望
2013/12/21
年月の経つのは早いもので、GR-SAKURAを使用したTK-80シミュレータというのを発表させていただいてからもう1年以上が経つのですが、そういやこのところぜんぜん弄ってなかったなー、なんかずっとホッタラカシだったわ、そろそろキチっと終わらせるか、と思ってしまったのだった。
↑こういうやつです
以前はこんなことを考えていた(ような気がする)
1. TK-80の資料集め2. ユニバーサルボードにてTK-80シールドを試作3. 8080エミュレーションプログラム作成4. カセットインターフェース実験5. 2~4. の経験と反省を基に、プログラムとハード ウェアの修正と改良6. TK-80シールド基板デザイン7. TK-80シールド基板生産8. TK-80シールド基板配布により大儲け
※実際に実行されたのは 4. までであり、5.辺りでメンド臭くなって放置された模様
TK-80とはTK-80(Training Kit μCOM80)とは日本電気(NEC)の半導体事業部(現在のルネサス エレクトロニクス)が1976年8月3日に販売した、マイクロコンピューター(マイコン)システム開発のためのトレーニングキットである。
(略)
プロセッサ
TK-80は、インテルの8080A互換のNEC製マイクロプロセッサμPD8080AをCPUとして使用している。
μPD8080Aは8080Aとは完全互換ではなかった。10進加算後のBCD補正を行うDAA命令がインテル製のチップは加算後の補正しかできなかったのに対し、NEC製は減算後の補正も行えたのである。NEC製チップは加減算のBCD補正を行うために、直前に行ったのが加算であるか減算であるかを記憶するフラグをPSW(フラグレジスタ)中に追加した。
http://ja.wikipedia.org/wiki/TK-80
NEC 8080A互換CPU開発の歴史をわかりやすく説明するとこんな感じ
インテル 8080A↓
NEC μPD753(ピン非互換、命令一部非互換)↓
NEC μPD8080A(ピン互換、命令一部非互換)↓
NEC μPD8080AF(ピン互換、命令互換)
TK-80に採用されたのはμPD8080Aであり(後の廉価版TK-80EはμPD8080AF)、TK-80シミュレータを名乗るに当たっては、インテルの8080A(とμPD8080AF)とμPD8080Aとの違いを正確に把握する必要がある。
何がメンド臭いのか?
μPD8080Aの情報の正確な資料がない↓
資料がないので調べなければならない↓
調べるにはμPD8080Aを実際に動作させなければいけない↓
μPD8080Aを動作させる環境を用意する必要がある↓
げーメンド臭い
が、しかし、やらねばなるまいということでμPD8080Aを動作させる環境を用意する方法を考えてみた
・テスト用プログラムが容易に開発/実行できること・ある程度の容量のデータをPCと容易に交換できること
→μPD8080で動作するCP/Mマシン等が用意できれば最も 望ましい
CP/MとはCP/M(Control Program for Microcomputer、シーピーエム)は1970年代にデジタルリサーチ(Digital Research Inc.)の創業者ゲイリー・キルドールによって開発、1976年に発売された、パソコン用のシングルユーザー・シングルタスクのオペレーティングシステム(OS)である。
http://ja.wikipedia.org/wiki/CP/M
動作環境として、
・8080やZ80等のCPU
・0番地から連続する20KB以上のRAM
・FDD等外部記憶装置
・操作用のターミナルを接続するインターフェース
辺りが最低限必要となる。
案1. TK-80実機をそのまま使用する
・使用できるRAMが1KB、入出力がカセットテープと 貧弱であり、大量のデータを採るのには適していない
→不採用
案2. TK-80の貧弱な部分を改造して使用する
・アドレスラインがフルデコードされていないのを改造・RAMを64KB程増設・モニターROMをRAMにバンク切り替えできる機構を追加・microSD等、メモリーカードをストレージとして使用 できるようインターフェイスを追加・シリアルインターフェース増設・CP/Mを移植
→労力の割にTK-80を使用する意味がなさげなので不採用
案3. マイコンと周辺ICを使用してμPD8080Aマシンを自作する
・CPU周り μPD8080A(CPU)、μPD8228(システム コントローラ・バスドライバ)、μPB8224D(クロック ジェネレータ・ドライバ)、Xtal・メモリ周り 256kbit SRAMx2、64kbit FlashROM・外部記憶装置 8255(PPI)、microSD ソケット・シリアルインターフェース 8251(USART)・TTL等・以上のボードを製作し、CP/Mを移植
案3.を手持ちの部品を並べてみたらこんな感じ(これプラス、デコーダやらバンク切り替えにTTL、他電源回路等)
→手段としてまともだが、労力的に大変そうなので保留
案4. GR-SAKURAにμPD8080Aを接続しCP/Mマシンを自作する
案3. に対し、・CPU周り μPD8080A(CPU)、μPD8228(システム コントローラ・バスドライバ)、μPB8224D(クロック ジェネレータ・ドライバ)、Xtal・メモリ周り 256kbit SRAMx2、64kbit FlashROM →GR-SAKURA内蔵のRAMとROMを使用・外部記憶装置 8255(PPI)、microSD ソケット →GR-SAKURAのmicroSDソケットを使用・シリアルインターフェース 8251(USART) →GR-SAKURAのSCI(またはUSB仮想シリアル)を使用・TTL等→圧倒的に部品数を減らせるような気がするので採用決定
そんなわけでボードを作ってみたのだった
画像
あれ? なんか言うほど部品少なくなくね?と思われた方、あなたはスルドい
・μPD8080Aに電源が3種類(+5V、+12V、-5V)必要・信号の電圧がμPD8080A(5V)とGR-SAKURA(3.3V)で 異なるため、変換が必要・μPD8080Aに入力する2相のクロック信号が最低9Vを 要するため、変換が必要
→そんなわけで当初思ってたほど部品は少なくならなかったのであった
さっきの画像で説明するとこんな感じ
画像
3.3V←→5V3.3V←→5V変換変換
-5V-5V生成生成
+12V+12V生成生成
クロック信号レベル変換クロック信号レベル変換予定地予定地
3.3V←→5V3.3V←→5V変換変換
3.3V←→5V3.3V←→5V変換変換
3.3V←→5V3.3V←→5V変換変換
μPD8080AμPD8080A
はい、すいません。「クロック信号レベル変換予定地」と
あった通り、未完成です。今回は残念ながら完成に間に合いませんでした
そんなわけで、次回の発表にご期待下さい
つづけ