Apple Desktop Busアイコンと初期のApple Desktop Busキーボード | |||
| タイプ | ヒューマン入力デバイスインターフェース | ||
|---|---|---|---|
| 生産履歴 | |||
| デザイナー | アップルコンピュータ | ||
| 設計 | 1986 (1986年) | ||
| メーカー | アップルコンピュータ社 | ||
| 生産 | 1986年から1999年 | ||
| 置き換えられた | RS-422 / 6522キーボードとマウス | ||
| 代替 | USBとFireWire(1998~1999年) | ||
| 一般仕様 | |||
| ホットプラグ可能 | 時折のサポート | ||
| 外部の | はい | ||
| ピン | 4 | ||
| コネクタ | ミニDIN | ||
| データ | |||
| データ信号 | 双方向シリアルコマンドストリーム | ||
| ビットレート | 最大125 kbit/s (実際は約10 kbit/s) | ||
| 最大デバイス数 | 最大 16 個(実際は 5 個、サポートされるのは 3 個) | ||
| プロトコル | シリアル | ||
| ピン配置 | |||
| 正面から見たメスソケット | |||
| ピン1 | Appleデバイスバス | データ | |
| ピン2 | PSW | 電源オン | |
| ピン3 | +5V | +5ボルト電源 | |
| ピン4 | GND | 地面 | |
| Sビデオ と同じコネクタ | |||
Apple Desktop Bus (ADB)は、低速デバイスをコンピュータに接続する独自の[ 1 ]ビットシリアル周辺バスです。1986年にApple II GSで導入され、キーボードやマウスなどの低価格デバイスをサポートする方法として、ハブやその他のデバイスを必要とせずにデイジーチェーン接続できるようになりました。Apple Desktop Busは、その後のMacintoshモデルやNeXTコンピュータの後継モデルにすぐに導入され、他のサードパーティ製でも使用されました。当時多くのPC互換機で使用されていた同様のPS/2コネクタと同様に、Apple Desktop Busは1990年代後半にUSBシステムが普及するにつれて急速に置き換えられました。Apple製品における最後の外部Apple Desktop Busポートは1999年でしたが、2000年代に入っても一部のMacモデルでは内部専用バスとして残っていました。
Macintoshコンピュータの開発初期において、エンジニアリングチームはシリアル通信を実現するために、かなり高度なZilog 8530を選択しました。これは当初、複数のデバイスを1つのポートに接続できるようにするために行われ、8530に実装されたシンプルな通信プロトコルを使用して、ホストコンピュータとのデータの送受信を可能にしました。この考え方は、複数のデバイスを1つのポートに接続できるようにすることで、多種多様なポートや拡張スロットの使用を不要にするというものでした。[ 2 ]
AppleBusシステムの開発中に、コンピュータネットワークはあらゆるコンピュータシステムにとって極めて重要な機能となりました。カードスロットがなかったため、MacintoshはEthernetなどのローカルエリアネットワーク規格のサポートを容易に追加することができませんでした。AppleBusの開発はネットワーク化に重点が置かれ、1985年にAppleTalkシステムとしてリリースされました。これにより、Macには元々のマウスとキーボードの専用ポートしか残されておらず、低速デバイス用の汎用システムは存在していませんでした。[ 2 ]
Apple Desktop Busを採用した最初のシステムは、1986年のApple II GSでした。Macintosh IIおよびMacintosh SE以降のすべてのApple Macintoshマシンで使用されました。Apple Desktop Busは、NeXTコンピュータの後継モデルでも使用されました。[ 3 ] Apple Desktop Busデバイスの大部分は入力用であり、トラックボール、ジョイスティック、グラフィックタブレットなどのデバイスが含まれます。特殊な用途としては、ソフトウェア保護ドングルやTelePortモデムなどがあります。
Apple Desktop Busから移行した最初のMacintoshは、1998年のiMacで、 USBを採用しました。Apple Desktop Busポートを搭載した最後のAppleコンピュータは、 1999年のPower Macintosh G3(ブルー&ホワイト)です。PowerPCベースのPowerBookとiBookは、内蔵キーボードとタッチパッドを備えた内部インターフェースで依然としてApple Desktop Busプロトコルを使用していました。その後のモデルでは、USBベースのトラックパッドが採用されています。
Appleの工業デザインにおける基本理念に基づき、Apple Desktop Busは、実装コストを抑えつつ、可能な限りシンプルに使えるように設計されました。Sビデオにも使用されている4ピンミニDINコネクタが適していました。実際、多くのSビデオケーブルはADBケーブルの代わりに使用できます。しかし、一部の(主に低価格帯の)ケーブルでは、ピン1とピン2がブリッジ接続されており、システムまたはADBデバイスに壊滅的な損傷を与える可能性があります。コネクタは小型で広く入手可能ですが、「正しい方法」でしか挿入できません。固定はされませんが、摩擦による嵌合でも、ADBのような軽作業には十分な強度があります。
ADB プロトコルは、データ用にApple Desktop Busというラベルの付いたピンを 1 つだけ必要とします。データ信号は、0 を 65 マイクロ秒間ロー、35 μs 間ハイとして送信することでセルフクロッキングされ、1 の送信では逆のタイミングが使用されます。 [ 4 ]これは、5 V へのプルアップを備えたマルチドロップオープン コレクタ設計であり、衝突検出を使用してデバイス ID の競合を回避するとともに、ストップ ビットでのクロック ストレッチを使用してデバイスがサービス要求を要求していることを示します。[ 4 ]他の 2 つのピンは、+5 V 電源とグランドに使用されます。+5 V ピンは少なくとも 500 mA を保証し、各デバイスは 100 mA のみを使用する必要があります。ADB には、ホスト コンピュータの電源に直接接続されるPSW (電源スイッチ) ピンも含まれています。これは、ADB ソフトウェアが信号を解釈することなく、キーボードのキーを押すことでマシンを起動できるようにするために含まれています。より現代的な設計では、補助マイクロコントローラが常に実行されているため、標準の USB チャネル経由で電源投入コマンドを使用するのが経済的です。
デコードトランシーバーASICと関連特許はApple社が管理していたため、ベンダーはApple社と協力する必要がありました。Macintosh SEでは、AppleデスクトップバスはAppleブランドのMicrochip社製PIC16CR54マイクロコントローラに実装されています。

Apple Desktop Busシステムは、デバイスが単一の数値(アドレス)をデコードし、複数の小さなデータ項目(レジスタ)を保持できることを基盤としています。バス上のすべてのトラフィックはホストコンピュータによって制御され、ホストコンピュータはデータの読み取りまたは書き込みコマンドを送信します。デバイスは、コンピュータからの要求がない限り、バスを使用することはできません。
これらのリクエストは1バイトの文字列で表されます。上位4ビットには、チェーン上のデバイスの1つのアドレス(ID)が含まれます。この4ビットで、1つのバス上に最大16個のデバイスを接続できます。次の2ビットは4つのコマンドのいずれかを指定し、最後の2ビットは4つのレジスタのいずれかを示します。コマンドは以下のとおりです。
talk- 選択されたデバイスにレジスタの内容をコンピュータに送信するように指示しますlisten- デバイスにレジスタを次の値に設定するよう指示しますflush- 選択したレジスタの内容をクリアするreset- バス上のすべてのデバイスにリセットを指示するたとえば、マウスがアドレス $D にあることがわかっている場合、コンピューターは次のような 1 バイトのメッセージをバスに定期的に送信します。
1101 11 00
これは、デバイス$D (1101) が通信 (11) し、レジスタ0 (00) の内容を返すことを意味します。マウスにとって、これは「最新の位置変化を知らせてほしい」という意味です。レジスタは2バイトから8バイトまでの範囲で格納できます。レジスタ0は通常、主要な通信チャネルです。レジスタ1と2は未定義で、通常はサードパーティの開発者が設定情報を保存するためのものです。レジスタ3には常にデバイス識別情報が格納されます。
デバイスのアドレスと列挙は、リセット時にデフォルト値に設定されます。例えば、すべてのキーボードは$2に、すべてのマウスは$3に設定されます。マシンの電源を初めて投入すると、ADBデバイスドライバはtalkこれらの既知のデフォルトアドレスそれぞれに対して、レジスタ3の内容を順に要求するコマンドを送信します。特定のアドレスから応答がない場合、コンピューターはそのアドレスをデッドアドレスとしてマークし、それ以降のポーリングは行いません。
デバイスが応答した場合、ランダムに選択された上位アドレスへ移動中であると通知します。コンピュータは、その新しいアドレスに別のコマンドを送信することで応答し、デバイスにさらに別のアドレスへの移動を要求します。これが完了すると、そのデバイスは「ライブ」としてマークされ、システムはその後もポーリングを続けます。このようにしてすべてのデバイスが列挙されると、バスは使用可能になります。
一般的ではありませんでしたが、Appleデスクトップバスには、例えばグラフィックタブレット2台やソフトウェアコピープロテクションドングルなど、同じ種類のデバイスを複数接続することが可能でした。この場合、デフォルトアドレスのデバイスを要求すると、両方が応答し、衝突が発生する可能性があります。デバイスには、この問題を回避するためのわずかなタイミング変動が組み込まれています。ホストからメッセージを受信した後、デバイスは応答するまで短いランダム時間を待機し、バスがビジーでないことを確認するためにバスを「スヌーピング」してから応答します。
例えば、2つのドングルが接続されている場合、バスが最初にセットアップされ、そのアドレスを照会すると、ランダム待機タイマーにより、片方のデバイスが最初に応答します。もう片方のデバイスはバスがビジー状態であることを検知し、応答しません。その後、ホストは元のアドレスに別のメッセージを送信しますが、片方のデバイスが新しいアドレスに移動しているため、もう片方のデバイスだけが応答します。このプロセスは、元のアドレスへの要求に何も応答しなくなるまで、つまり、列挙できるそのタイプのデバイスがなくなるまで続きます。
バス上のデータレートは理論上は125 kbit/sです。しかし、コンピュータとデバイス間で共有されるピンが1つしかないため、スループットはせいぜいその半分程度です。実際は、システム全体がコンピュータのバスポーリング速度によって制御されるため、スループットはさらに低くなります。従来のMac OSはこのようなタスクにはあまり適しておらず、バス速度はしばしば10 kbit/s程度まで低下します。初期の2400 kbit/sで動作するTeleportモデムはApple Desktop Busを使用しても問題ありませんでしたが、後期モデルでは速度が14.4 kbit/s以上になったため、より高価なRS-422ポートへの移行を余儀なくされました。
Mini-DINコネクタは「間違った向き」で差し込むことはできませんが、円形コネクタのシュラウド内部を見なければ正しい向きを見つけるのが難しい場合があります。Appleは、コネクタの周囲にU字型の柔らかいプラスチック製のグリップを採用することで、プラグとソケットの両方をキーイングし、平らな面がシェルのキー溝と特定の関係になるようにすることで、この問題の解決を図りましたが、一部のサードパーティメーカーはこの機能を無視しました。さらに、キーボードなどのデバイスでは、受信ソケットの向きは4通りあり、Appleのキーボードの中には、少なくとも3通りの向きが採用されているものもあります。
ミニ DIN コネクタの挿入回数は 400 回までしか規定されておらず、注意して挿入しないとピンが曲がりやすくなります。また、ソケットが緩んで、断続的に機能する場合もあります。
Apple Desktop Busデバイスの中にはパススルーコネクタを備えていないものがあり、そのため、別売りのスプリッターユニットを使わずに複数のデバイスをデイジーチェーン接続することはできません。マウスやトラックボールにもパススルーコネクタを備えているものはほとんどありません。
ADBは、ごく一部のマシンを除いてホットスワップが電気的に安全ではないにもかかわらず、(現代のバスと同様に)ホットスワップに必要な基本機能をすべてソフトウェアとハードウェアに実装しています。事実上すべてのオリジナルのApple Desktop Busシステムでは、システムの電源投入後にデバイスを接続するのは安全ではありません。これは、マザーボードにハンダ付けされたヒューズが切れる原因となる可能性があります。正規販売店に持ち込むと、高額な費用でマザーボードを交換することになる可能性があります。より簡単な方法は、安価なヒューズを入手し、切れたマザーボードのヒューズに並列に配線することです(必ずしもハンダ付けは不要です)。