この手のワンボードマイコンは憧れだった。以前オークションで入手したTK-85と付属のトレーニングブック。ハンドアセンブルで入力するには1KBでも充分広いが、メモリ増設できるかな?と考えだしたのがきっかけ。
TK-85は2114という1024×4bitのRAMを2個使っている。これで1キロバイト。ROMは2716タイプで2キロバイト、空きソケットが3つある。ということは、RAMの6116あたりをROMソケットに挿し、制御線を繋げば動くような気がする。ただこれだけでは面白くもなんともないので、部品としてはRAMのみ、TTL追加なし、配線だけで挑戦してみた。もちろんパターンカットなどはしない。
TK-85のRAM空間は8000Hから始まる。本体RAMは8000H-83FFH。増設RAMは2114タイプを1KB×3セットを接続することを前提に*CS1(8400H-87FFH),*CS2(8800H-8BFFH),*CS3(8C00H-8FFFH)の信号が出ている。
TK-85の特徴として、DMAでRAM空間を読みだしてLEDの表示データとしている。83F8H-83FFHの8バイトが7セグメントLEDの8桁に対応している。これはCPUの空きサイクルにRAMを選択して読み出しているので、本体RAMのチップイネーブルは増設RAMとは異なる。
そんなわけで単純に本体2114を外して同じアドレスにRAMを被せるというわけにもいかないようだ。
2K×8の6116があればROMソケットに2個させばいいかなと思っていたが手持ちがない。あるのはTC5565PL-15。これは8K×8のRAM。ま、余らせておいて問題はない。 データシート
では具体的な配線。5565は28ピンで2716の24ピンソケットからははみ出してしまう。しかしある程度互換性を持っているため、データバスやアドレスバスの下位はそのまま使えるので、ケツだけ揃えてソケットに挿せばいい。
電源は近くのTTLからもらう(#3 LS07 P14)。アドレス線 A11,A12も近くのTTLからもらう(A12はRAMの未使用部分になるので与える必要もないが、オープンにしておくとまずいので一応配線しとく)。R/Wは*RAMWを接続。
さてRAMのEnableは*OE,*CE1,CE2が使える。これらが0,1,0のときにRAMは有効。CE2には本体RAM 2114へのチップセレクト、DMAで負論理ORをとる前の信号を与える。*CE1と*OEにはRAM全体のセレクト信号(負論理)を与える。これによりRAM全体のセレクトかつ本来RAM以外、で増設RAMがセレクトされる。
+------\_/------+
+ NC Vdd +- #3 LS07 P14
#20 LS139 P13 -+ A12 R/W +- #17 LS00 P10
+ CE2 +- #23 LS08 P13
+ A8 +
+ A9 +
+ A11 +- #20 LS139 P14
+ *OE +---+
+ A10 + |
+ *CE1 +---+-- #20 LS139 P1
配線確認後、電源を投入してメモリテストを行う。TK-85モニタにはメモリテストの機能が入っているので簡単。
[MODE][C/TM][8][4][0][0][8][F][F][F][WR/ENT]これでしばらく待って"Good"の表示が出たら成功!
最初は基板上のTTLの使っていないユニットを利用してアドレスデコーダにできないかと考えていたが LS03が1/4、LS04が2/6、LS14が1/6しか余ってなかった。かなり詰めて設計してある。これを使って最初の思いつきで配線してみたところ、メモリテストでエラー、データ部分にアドレス下位が書き込まれるという現象が起きた。これは8085のバスの仕様で、アドレスバスとデータバスが共通で*ALEという信号で分けているため、ここらへんでしくじったのだろう。
どうも何事に対しても最初の思いつきが難しい方法での解決になってしまう傾向があって、これは小学生の頃から変わらない。で、一晩寝かせて寝落ちしてやっと最短パスを思いついたのよね。