8355は8085用の周辺回路として開発されたROMとパラレルI/Oポートが集積されたLSIです。アドレスとデータがマルチプレクスされたバスに直接インターフェースできるため、8085の他に8088にも応用できます。8355はマスクROMで、8755はUV EPROMが内蔵されています。
上はSDK-85用のモニタが書き込まれた8355です。SDK85-MONの表示が読めるでしょうか。下は8755で、チップの大半はROMで占められているのがわかります。
このLSIの中には8 bitのポート2組と2 KByteのROMが組み込まれています。8085システムの場合、8085と8355/8755の他に8155あたりを接続すればメモリとI/Oを備えた最低限度のコンピュータシステムが完成します。
8355/8755のピン配置はこのようになっています。
CE1* 1 40 VCC CE2 2 39 PB7 CLK 3 38 PB6 RESET 4 37 PB5 VDD 5 36 PB4 READY 6 35 PB3 IO/M* 7 34 PB2 IOR* 8 33 PB1 RD* 9 32 PB0 IOW* 10 31 PA7 ALE 11 30 PA6 AD0 12 29 PA5 AD1 13 28 PA4 AD2 14 27 PA3 AD3 15 26 PA2 AD4 16 25 PA1 AD5 17 24 PA0 AD6 18 23 A10 AD7 19 22 A9 VSS 20 21 A8
12番から23番ピンが8085と同じ配列になっていて、7, 9, 10, 11番ピンもI/Oピンのおかげでこの図の右側に来ていますが8085ではそれぞれ左側の34, 32, 31, 30番ピンに配置されていて、8085のすぐ横に8155/8156を並べると配線がすっきりするように考慮されています。なお、RESETは4番ピンですが8085ではすぐそばの3番ピンにRESET OUT端子があり、3番ピンのCLKも8085の37番ピンのCLKOUTに接続するため、まったくの同じ位置とはいきませんが、ほぼ同じピンが対応します。8085と直接接続すべき信号は(チップセレクトをどうするかは別にすれば)原則的にこれですべてです。READY信号は速度的に条件を満たしていれば使用しませんし、8085/8088インターフェースではIOR*はプルアップしたままでかまいません。
内部にはROMのほかにレジスタが4個あります。I/Oポートのデータレジスタとデータ方向レジスタが2組分ですね。そのチップセレクトロジックを以下に表にします。
A10 - A8 | AD7 - AD2 | AD1 | AD0 | CE1* | CE2 | control | mem/reg | description |
# | # | # | # | L | H | IO/M* = L & RD* = L & IOR* = H & IOW* = H | ROM | 2 KByte分のROM |
- | - | L | L | L | H | (IO/M* = H & RD* = L) | IOR* = L | IOW* = L | port A | 8 bitの汎用I/Oポート |
- | - | L | H | L | H | (IO/M* = H & RD* = L) | IOR* = L | IOW* = L | port B | 8 bitの汎用I/Oポート |
- | - | H | L | L | H | (IO/M* = H & RD* = L) | IOR* = L | IOW* = L | DDRA | port Aの各ビットの入出力方向を決定する |
- | - | H | H | L | H | (IO/M* = H & RD* = L) | IOR* = L | IOW* = L | DDRB | port Bの各ビットの入出力方向を決定する |
この表で'#'マークはその入力が有効に利用されることを表し、'-'マークは無視されることを意味します。つまりROMが選択されている場合にはA10 - A8, AD7 - AD0からのアドレス入力に対応したメモリの内容が読み出されます。レジスタ類をアクセスする場合にはA10 - A8, AD7 - AD2までのアドレス入力は無視されます。
メモリとレジスタ類でCE1*やCE2が共通のチップ選択信号として使われるため、複数の8355や8155を使用する際にはレジスタ類のチップ選択信号の作成に手間がかかりそうに思えるかもしれません。しかし、8085ではIN/OUT命令の際に8 bitのI/OポートアドレスをAD7 - AD0とA15 - A8の16 bitアドレス信号の下位と上位にそれぞれ出力しますから、ROMのアドレスデコードのつもりでアドレス上位信号だけのデコードを行えば、レジスタ類もきちんとデコードされることになります。たとえばA15, A14, A13をデコードして数個の8355や8155を接続することにすれば、I/Oポートアドレスも上位3 bitのA7, A6, A5をデコードしたことになり、自然とそれぞれのチップにアドレスが割り付けられます。