開発日記?

プロローグ

いつも使ってるX68000ACEーHD君には、イーサネットボードなんてものは ささってません。もちろん、拡張スロット以外にささっていたら本体が壊れる 気もしますが(はぁ…^^;)。 最近(1995〜96年当時)、X68kの世界でもMPUアクセラレータが登場し、 私の68君にも、 68040(現在は60にも対応)アクセラレータ(JUPITERーX) を載せることにしました。

68040ですから、 NetBSD/x68k が載ります。けど、単独で動いていたら、ちょっと悲しいですよね。 そこで。ネットにぶら下がろうと考えると、イーサネットカードが欲しくなります。 しかし、純正イーサネットカードはなんと、20万円ぐらいします。それ以前に 売ってるのを見たことがありません。

どうにかしなければ…。



そして…

イーサネットカードが売られているわけでもありませんし、どこかのサードパーティ が販売してくれそうな雰囲気もありません(註:イーサに関するハードは、九十九電機株式会社(ツクモ)から発売予定とされた、パラレルポートを利用するLANユニットと、某草の根ネットが開発している(って、聞いたことがあるんだけど、どうなったのかなぁ?) ものがありましたが、私が開発をしようと思った95年の夏頃には知るよしもありませんでした)。誰かがやらねば…。X68kにおいては、常に誰かが 問題を打破してきた歴史があります。こんな限られた環境なのですから、そのように なるのはしょうがないのかもしれません。



それから…

AT互換機用のイーサネットカードは、安いものならNE2000コンパチが3980円で 買えます。 これを流用してしまえば、けっこう安上がりかもしれない。 けど、最初から設計するのも、美しくつくれそう。 そこで、まずは、シングルチップ ラン コントローラってのを探し ます。結構いろんな会社が出してますが、国内では富士通だけ。そこで、 富士通のMB86965Aを使わせてもらおうかな…なんて、考えてました。幸いこの MB86965Aは68系非同期バスにも対応しているのでDTACKをチップが返してくれそ うです。

この段階で、パソコン通信のネット”680*0 FREAK”で、どれくらいの人が 欲しがっているのか、それとなく聞いてみました。と、いっても ランコントローラの資料をお持ちのかた、おられませんか?ってふうに。 すると、数人の方から、反応がありました。

私は、イーサネットのソフト面について全くの無知でしたので(ハード面もかなり 無知でしたが…)、ドライバー製作を なんかして欲しいなー…なんて一人言をいっていると、どうやら、作ってくださり そうな雰囲気。

どうにかなりそうな、目度はついてきました……



問題発生…

イーサカードには、かならず世界で唯一のMACアドレスというものがついてきます。 それは、アメリカXerox社からライセンスを受けたイーサネットインタフェースカード のベンダに与えられた固有の番号とベンダがつけるノード番号から構成された6バイト の番号です(と、いうのはかなり昔のお話らしいです。今は違いますよん)。 しかし、自作の場合、Xerox社からライセンスを受けていないので(もちろん、今は Xerox社からのライセンスではありません)、MACアドレスを 決められないということになります。完全にクローズなLANの場合 なら、ローカルアドレスを用いて、LANに接続することが可能です。はてさて、どうし ましょう…。

とりあえず、AT互換機用の安いカードを買って、MACアドレスをいただくって方法があります。 が、そんなことをしていいのかどうかは、知りません。あと、ルーターやリピーター を通して外部に出ていくのなら、そのセグメント内でのみ、MACアドレスが重複しな ければいいはずです。けど、こんなことしていいのかどうかは、私は知りません。

さて…どうなりますかな?



見切り発車…

とりあえず、MACアドレスの問題はかなり大きな壁であることにはかわりありません。 やはり完全自作というわけにはいきそうにありません、この問題を クリアーし、かつ特殊なイーサネット関係の部品の入手の問題をも解決する 方法として、やはり他機種のイーサネットカードを流用するというのが もっとも現実的であると考えました。 そこで、どの機種のカードを流用するか考えます。価格面では、AT互換機のイー サネットカードを流用するのが良いと考えられます。作りやすさからいえば、 98用のイーサネットカードを使うのが情報入手性からみてもいいでしょう。 ハード的には、マッキントッシュなどの68系のコンピューターからというの も考えられます。

以上の選択肢から、私はAT互換機用のイーサネットカードで、 「NE-2000」クローンを流用することにしました。 価格面は抜群にすぐれており、3980円で入手 することも可能です。また、情報入手性ですが、ソフト的な問題はAT界では 超有名カードですので各種ソースを参考にすれば、いろいろと68に移植で きそうです。これは、かなり魅力的な条件かも知れません。



行動開始…

AT互換機のカードを利用するため、ISAバスの勉強をはじめました。幸いなことに トランジスタ技術でも、AT互換機のハードの特集がありましたので、他にインター フェース誌も参考にして、だいたいの感じをつかんでおきます。

ここで思ったことは、バスの設計が結構汚く、これでちゃんと動くカードを 設計するのは結構たいへんかもしれないということ。あと、ダイナミックバス サイジング機能をISAバスが持っているのには少し驚きました

そんなこんなで、とりあえず、回路の設計を開始しました。1番困ったのは、 68000にはA0がないことによる弊害でした。68000はA0がない 代わりに、LDSやUDSが出ていますが、この信号は確定するのがA1など のアドレスバスとくらべて遅いため、ISAバスもどきにわたすアドレス の確定が遅れ、その結果、68000側にウェイトをいれなければならな かったことです。ただでさえ、10MHzの68000では、イーサの転送 に、あまり余裕があるわけではないのに、ISAバスアクセスにウェイト をいれるのは、パフォーマンスの低下を招くだけです。

次にじゃまくさいのが、ダイナミックバスサイジングの問題です。こいつを TTLだけで組もうとすると、けっこう邪魔臭い回路になります。が、この 問題は、8ビットポートに68000側から16ビットアクセスしなければ いい話ですから、消極的解決ですが、8ビットアクセスをするように プログラム側で対処すればいいでしょう。

つぎに、バイトコピーサービス の問題です。これは、8ビットポートにアクセスしても68000は16 ビットバスですので、アドレスによって上位8ビットと下位8ビット のどちらかでアクセスされますので、上位を下位に、もしくは下位を 上位にバイトコピーしなければなりません。



簡易化へ…

以上のように、設計上、手間のかかる問題がありました。ウェイトの 問題などを回避するため、アドレスを1ビットずらす…68のA1が、ISA のA0…ことにしました。こうすれば、バイトコピーも、68000側から アクセスするアドレスを変えればいいので、一石二鳥です。

弊害としては、68000から見ると、少し変わったアドレスマッピングに なることですが、さほど問題にはならないでしょう。これで、回路を大幅 に簡略化することができました。



試作機作成へ…

とりあえず、設計した回路(ver0.1)で、ボードを試作してみることにしました。 週末に日本橋に部品を買いにいき、夜中に製作、朝日は…まぶしくなかった です、すぐに寝てしまいましたから(ぉぃ)。完成後、簡単なチェックをして とりあえず拡張スロットにおそるおそる差して電源をいれると…「ピー」とい う、電源ユニットの保護回路動作音(電源ユニットが、ご丁寧に鳴らしている わけではありませんので…^^;)は鳴りませんでした(笑)。難なく、Human 68kが立ち上がったので、デバッガでメモリマッピングを確認したところ、正しく NE2000のDP8390のレジスタが読めている模様。安心しました。煙もでないような ので、チェックプログラムを作ることにしました。 最初のチェックプログラムはLinuxのNE2000ドライバを参考に、ボード認識、割り込み 確認をするだけのプログラムでした。そして、このチェックプログラムで、だいたい ISAバスブリッジ機能の動作を確認できましたが、一部の動作がLinuxのソースに 書かれていた動作と異なりましたが、「どうにかなるだろう」と思ったので、 この段階で、始めてこのボードをホームページで公開しました。


Webでの公開、その後…

Neptune-X HomePageを公開したのが、95年の11月ですが、その後のことは、 もう忘れました(ぉーぃ。


ここから先は、まだ建設中なのです。しかし、建設されるかどうかは謎ですが、 今現在まで、結局作成されることはありませんでした。

2000年5月10日

公開後、多くの出来事があり、現在ではX680x0でのイーサネットカードとして、 デファクトスタンダードであると言っても過言ではない状況になってしまいました。 私自身、こんな事になるとは正直言って思っていませんでしたが、多くの方々から メールをいただき、また、協力してくださった多くの方々のお陰で、ここまででき たと思っております。本当にどうもありがとうございました。

気がつけば、公開してから4年以上経過し、 7万ヒットを超えるのも、さほど遠くない未来という状況です。 現在のX680x0を取り巻く環境は良くなる方向ではない事は言うまでもありません。 Neptune-XはVersionが1未満である事からもわかりますように、未完成である 状況です。実際、バスが安定しない場合があるという問題があります(通常は 問題ないはずです^^;)。 これらをNeptune-X Ver0.5 で少しでも解決できればと思いながらも、 個人的な環境の変化(就職や転勤など・・・)という言い訳に甘んじて、 あまり解決できていない状況です。
ISAのカードの入手性にもそろそろ問題がでてくるような時代と なりつつあります。ISAと比較して、非常に高機能なバスプロトコルを 持つPCIのイーサネットカードが1000円を切る値段で販売されている現状を 数年前には全く想像できませんでした。ISAカードの入手性の 問題を含めて、何らかの対応をすべきであるとは考えています。

今後も気長に開発、サポートを続けていくつもりですので、見捨てないで お付き合いいただければ幸いです。


Back to Neptune-X Home Page

Oct 29,1996
May 10,2000 リンク等修正、文章追加、修正など