TK-80サブボード基板の製作(SBC8085ルーズキット対応編)
2019.02.12
積み残しになっていた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でステップ動作ができるようにしたようすです。

SBC8080ルーズキット+TK-80サブボードの製作(TK-80サブボード製作編)
2019.01.11
今回は、蛇の目基板に手配線で製作しますので、秋月電子の「両面スルホール・ガラス・ユニバーサル基板Aタイプ」から、幅はSBCサイズ、奥行きは、118mmに切り出すことにします。位置決めは、スタッキングコネクタをSBCボードと串刺しにし、切り出し線、取り付け穴決めを行い、加工をしました。

次にキーボードですが、ラベルキャップ付タクトスイッチの値段が25個そろえると結構高く、大きなピン穴が必要で、取り付け基板も作成が大変そうでしたので、割り切ってZK-80を購入して、キーボード部のみを流用しました。(残りは、何かに使いたいと思います)

①TK-80サブボードの配線

例のごとく、ソケットを配置・仮止めを行い、GNDと5Vラインを先にスズめっき線で配線し、パスコンも取り付けます。各ICに近くのCRを取り付け、ローカルな配線から接続していきます。最後に広域の配線を行うと、配線がしやすくなります。

一通りの配線チェックを行った後、TK-80サブボードのICを指さずに、SBC8080の上にTK-80 SUBボードを積み、SBC8080 CPUボードとSUBボードからTK-80サブボードへ必要な追加信号を接続し、正常に立ち上がることを確かめます。これで、ショート系の誤配線が無いことを確認できます。

次に、DMAアドレスを83F8、モードスイッチをAUTOにし、データバスに接続されている8255、74ACT573以外のICを差し込み、正常に立ち上がることを確かめます。最後は、8255、74ACT573を差し込み、正常に立ち上がることを確かめます。

下記は、配線済みのTK-80サブボードです。




機械語モード付きタイニーBASICからMONコマンドでモニターに入り、下記のプログラムで、LED表示をONします。

8000
MVI A,92
OUT FB
MVI A,80
OUT FA
RET
EXEC 8000

次に、下記により、指定されたLEDのセグメントが表示されればOKです。

83F8
DEFINE 01,02,04,08,10,20,40,80

以上のように問題なければ、CMT用の発振回路、DMA用NE555の出力波形を確認し、問題ないことを確かめます。この時点で、LEDが結構明るく、LEDセグメントドライバの電流が点灯時32mA程度となっており、気になるならR30~R37の電流制限抵抗値を増やすと良いかもしれません。

②TK-80モニタの動作確認

「TK-80ユーザーマニュアル」の「モニタ・アセンブル・リスト」からバイナリを抜出すと、「0」が「O」になっている部分が見つかりました。とりあえず修正後、ROMに書き込み立ち上げると、LEDの表示が「0000 0004」と表示はするものの、暴走しているようでした。

配線ミスを再度行ったところ、未配線が見つかり、修正しましたが、表示は変わりませんでした。このマニュアルの誤植について、指摘があったホームページをみつけましたので、全て反映しましたが、まだ駄目でした。そこで、「機械語モード付きタイニーBASIC」に戻し、TK-80モニタを逆アセンブルして、ソースコードとの比較をせっせと行うと、出てきました。すべてを修正すると、「0000 0000」の表示がされ、キーボードが動作するようになりました。

誤植ヵ所は、

0012 000A D3F8 OUT OFBH ; PROGRAM TO 8255
0057 006E C9 DAD B
0271 01CD E6FO0 ANI OFOH ; MASK 'F0'
0274 01D1 OF RRC
0275 01D2 OF RRC ; SHIFT RIGHT 4 BITS
0296 01E9 5C06 SEGD: DB 5CH,06H,5EH,4FH,66H,6DH
  5B4F
  666D
0360 024E D8F8 IN 0F8H ; KEY SCAN 0--->7
0426 02BC OF RRC ; DATA SHIFT

下記が、動作中のSBC8080+TK-80サブボードです。コンパクトに実現できました。


SBC8080 CPUボードのREADYヘッダーをTK-80接続、同様にSBC8080 SUBボードのINTヘッダーを切断すると、STEP動作も問題なく動作しました。CMT出力も問題なさそうでした。

最後に、下記のような内容を書き込み集合ROMを作成します。

0000-3FFF PTBEXSA
4000-5FFF MSBAS80
6000-7FFF TK-80 MONITOR

これで、ジャンパ切替のみで、SBC8080、TK-80両方が楽しめます。参考にしていただければと思います。
2019.01.11 14:09 | 固定リンク | SBC8080+TK-80
SBC8080ルーズキット+TK-80サブボードの製作(SBC8080製作編)
2019.01.10
①SBC8080 CPUボードの改造・製作

・8224のREADYから8080のREADYの配線を箔カットして、8080のREADYを中央ピンにして、
 8080のWAIT、8224のREADYの3Pヘッダーを追加する
・TK-80サブボードのため、8224の-STSTB、8080のD5、8080のINTEをピンフレームで出力する
・CPUクロックの水晶は、18.432MHzに変更する

その他は特に変更なくはんだ付けし、12Vの電圧確認、8224差し込み後の発振確認、-5Vの電圧確認まで行いました。

②SBC8080 SUBボードの改造・製作

・8251割り込み出力(RxRDY)とINTの配線を箔カットし、2Pピンヘッダーを追加する
・74HC4060および、水晶・CRの代わりにPIC12F1822を使用する
・74HC4060の2ピンから5ピンと12ピンから15ピン合計8ピンにDIP8ソケットを差し込むと箔カットは
 不要になる
・PIC12F1822の1ピンに5V、8ピンにGND、7ピンから1K抵抗を経由して8251のRXD(3ピン)、
 2ピンから8251の-RXC(25ピン)にジャンパを追加する



・ROM切替機能のため、下記のように、箔カットとジャンパ・ヘッダー・プルアップ抵抗(47K)を追加
 する


③PIC12F1822のファームウェア

SBC6809用のPIC12F1822との違いは、ピン番号の違いのみです。下記がソースプログラムの差分です。

< #define RXD RA4 // PIN3 RA4 RXD sensing Digital Input
---
> #define RXD RA0 // PIN7 RA0 RXD sensing Digital Input

< CCP1SEL = 0; // PIN5 CCP1 on RA2
---
> CCP1SEL = 1; // PIN2 CCP1 on RA5

< TRISA = 0b11111011; // PIN3 RA4 Digital Input
< // PIN5 CCP1 on RA2 Digital Output
< WPUA4 = 1; // PIN3 RA4 Pull-up enabled
---
> TRISA = 0b11011111; // PIN7 RA0 Digital Input
> // PIN2 CCP1 on RA5 Digital Output
> WPUA0 = 1; // PIN7 RA0 Pull-up enabled

下記はSBC8080 SUBボード用のファームウェアです。自己責任で自由に使用ください。

:020000001428C2
:100008007E14803120007F08F0000B1D102801307D
:10001800F9070030FA3D0B117008FF007E10090047
:100028001528F501F601F701F8017E1020001C28BB
:10003800F0302100990022001D1423008C01DF30CC
:1000480021008C0024000C140730210095002000AA
:100058009913980197019601F901FA01910192010A
:10006800E0308B00FC309C050C3025009300F1013A
:100078003330F120F901FA0100307A02F430031923
:10008800790203184B2820000C1C3E284028F9014F
:10009800FA01FF30F7007F30F800F501F601003073
:1000A800C1200030C1200230C1200330780219304D
:1000B80003197702031C6B28033076026B3003198F
:1000C800750203186B28F1013330F120C028013084
:1000D80078028D3003197702031C7D2801307602DF
:1000E800B6300319750203187D28F1011930F12083
:1000F800C02800307802C73003197702031C8F2804
:1001080000307602DB300319750203188F28F101DD
:100118000C30F120C02800307802853003197702AE
:10012800031CA428003076029430031975020318C2
:10013800A4281F30F4007408F1000830F120C0280A
:1001480000307802433003197702031CB9280030C5
:1001580076024930031975020318B9282030F400D3
:100168007408F1000330F120C0280E307A024F30B5
:1001780003197902031C3E28C028F10020000C1C3A
:10018800C2281810970196010C18C82818140C1CBE
:10019800CB2818101708F3001608F200710AD628A1
:1001A800F336F20C890BD42878087302031DDE2875
:1001B800770872020318E4287308F8007208F70039
:1001C80073087602031DEA287208750203180800EE
:1001D8007308F6007208F5000800F20071082100A3
:1001E8009800720820009B007236250091002000BC
:0401F8001C150800CA
:020000040001F9
:04000E00E4FFFFFF0D
:00000001FF

せっかくですので、SBC6809用のファームウェアも公開します。自己責任で自由に使用ください。

:020000001428C2
:100008007E14803120007F08F0000B1D102801307D
:10001800F9070030FA3D0B117008FF007E10090047
:100028001528F501F601F701F8017E1020001C28BB
:10003800F0302100990022001D1023008C01FB30B4
:1000480021008C0024000C160730210095002000A8
:100058009913980197019601F901FA01910192010A
:10006800E0308B00FC309C050C3025009300F1013A
:100078003330F120F901FA0100307A02F430031923
:10008800790203184B2820000C1E3E284028F9014D
:10009800FA01FF30F7007F30F800F501F601003073
:1000A800C1200030C1200230C1200330780219304D
:1000B80003197702031C6B28033076026B3003198F
:1000C800750203186B28F1013330F120C028013084
:1000D80078028D3003197702031C7D2801307602DF
:1000E800B6300319750203187D28F1011930F12083
:1000F800C02800307802C73003197702031C8F2804
:1001080000307602DB300319750203188F28F101DD
:100118000C30F120C02800307802853003197702AE
:10012800031CA428003076029430031975020318C2
:10013800A4281F30F4007408F1000830F120C0280A
:1001480000307802433003197702031CB9280030C5
:1001580076024930031975020318B9282030F400D3
:100168007408F1000330F120C0280E307A024F30B5
:1001780003197902031C3E28C028F10020000C1E38
:10018800C2281810970196010C1AC82818140C1EBA
:10019800CB2818101708F3001608F200710AD628A1
:1001A800F336F20C890BD42878087302031DDE2875
:1001B800770872020318E4287308F8007208F70039
:1001C80073087602031DEA287208750203180800EE
:1001D8007308F6007208F5000800F20071082100A3
:1001E8009800720820009B007236250091002000BC
:0401F8001C150800CA
:020000040001F9
:04000E00E4FFFFFF0D
:00000001FF

④SBC8080の動作確認

SBC8080 CPUボードのREADYヘッダーをオリジナル接続、SBC8080 SUBボードのINTヘッダーも同様にします。
PTBEXSA.HEXをHN58C256APに書き込み、SBC8080 SUBボードのROM設定ヘッダーを32KB EEPROMに設定後、USBシリアルインタフェース経由でTeraTermの画面に立上りメッセージが出ればOKです。出ない場合は、PIC12F1822の2ピンからクロックが出ていることなど、はんだ付け状態を確認します。

下記は、組み立て済みのSBC8080 CPUボードです。




下記は、組み立て済みのSBC8080 SUBボードです。



2019.01.10 13:54 | 固定リンク | SBC8080+TK-80

- CafeNote -