積み残しになっていたTK-80サブボード基板の製作にチャレンジすることにしました。
その前段階として、バス互換のSBC8085ルーズキットに対応してみました。8085を採用したTK-85がありますが、マニュアルが入手できませんでしたので、紹介しているホームページを参考に仕様の確認をしましたが、
・2.4576MHzクロックで8085を使用している
・ROM:2Kバイト、RAM:1Kバイトに拡張されている
・CMTインタフェースが含まれている
・LED表示の「0」が縦長表示になっている
・モニタコマンドが拡張されているようであるが、詳細は不明である
そこで、無理してTK-85を目指すのではなく、SBC8085でTK-80を実現することにしました。
①SBC8085ルーズキットの製作とTK-80サブボードの動作確認
SBC8085がバス互換であるので、大半は、SBC8080対応のTK-80サブボードを流用できそうでしたので、まず、SBC8085の組み立て後、機械語モード付きタイニーBASICを動作させましたが、問題なく動作しました。
次にTK-80サブボードを接続して、TK-80モニタを動作させると、困ったことにLEDの表示が消えたり、キーボードを接続しなくてもキー入力動作になったり、誤動作しているようですが、暴走まではしていないような感じでした。
8255の動作がおかしくなっていると思われるので、オシロで信号波形を確認しましたが、異常な波形やグリッジなどは、発見できませんでした。そこで、LEDが消える瞬間(8255のPC7信号がhighからlow遷移)を確認したところ、-IOW信号の立ち上がりが非常に鈍っていることを見つけました。この現象は、HOLDA信号直前で起こっていましたので、74HCT257の-IOW信号出力がhighになりきらないうちにHOLDA信号で3stateになったようでした。
SBC8080では、8288が何らかの対策をおこなっているかもしれません。8085のスペック上、-WR信号と同時にHOLDA信号が出ているはずですが、74HCT257の遅延との関係でうまくいかない可能性があります。TK-85でどのようにな回路になっているのか定かではありませんが、本来、HOLDA信号は、DMA遷移のため早めに出力されて、DMAコントローラ(例えば8257)で最適な遅延でバス切替を行うように使用するようです。従って、HOLDA信号を適度な遅延をおこなえば、問題を回避できるかもしれません。
そこで、20nS程度遅延させるため、HOLDA信号に47pFを追加してみました。問題なくTK-80サブボードが動き出しました。下記は、HOLDA信号を遅延させ、-IOW信号の問題が回避できた時の波形です。HOLDA信号の遅延によって、-IOW信号(上側)の立ち上がりがHOLDA信号(下側)の立ち上がり開始に対して約16nS遅延していてもしっかり立ち上がっています。
また、8085の-RD信号、-WR信号、M/IO信号は、HOLD期間中に3stateとなるので、今回は74LS257ではなく74HCT257を使用したため、フロート回避のプルアップ抵抗(4.7K)を追加しました。
②SBC8085用ステップ動作割込み信号生成部の試作
SBC8080とSBC8085では、CPUからの信号が異なるため、ステップ動作を行うための割込み信号の生成部を変更する必要があります。
SBC8080の場合、INTE信号がhighになった後、2命令目のフェッチでINT信号をhighにして、INTE信号がlowでリセットしています。SBC8085の場合、INTE信号がありませんので、EI命令のフェッチを検出した後、2命令目のフェッチでINT信号をhighにして、-INTA信号がlowまたは、RES信号がhighでリセットすることにします。これでソフトウェア完全互換性が保てます。
下記がSBC8085用ステップ動作割込み信号の生成部回路です。
下記は、HOLDA問題対応とステップ動作割込み信号のためのS0、S1信号取り出しを行った、SBC8085ボード裏側と表側です。
下記は、TK-80サブボードにステップ動作割込み信号ドーターボードを追加して、SBC8085でステップ動作ができるようにしたようすです。
(再クロール更新:2022/12/22)