CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

LANコントローラのテスト

LANコントローラのテストを始めました。
RTL8019ASのベースアドレスは0x00C0としたので
I/Oアドレスの0x00C0~0x00DFを占有することになります。
しかしこの内部レジスタの多さは手強そう。
Z80-DMAやHD63484-ACRTCも使ったことがありますがそれに匹敵します。

まず手始めにリモートDMAで外付けEEPROMからMACアドレスを読み出してみました。

a=inp(RESET); /* デバイスのリセット*/
outp(RESET,a);

outp(CR,0x21); /*リモートDMAアボート、動作停止*/
outp(DCR,0x48); /*FIFO8バイトスレッショルド、バイトDMA転送*/

outp(RBCR0,0); /*リモートDMAカウントクリア*/
outp(RBCR1,0);

outp(ISR,0xff); /*インタラプトステータス全有効*/
outp(IMR,0); /*インタラプト全マスク*/


outp(CR,0x22); /*リモートDMAアボート、動作開始*/
outp(RSAR0,0); /*コピー元アドレス*/
outp(RSAR1,0);
outp(RBCR0,0x20); /*コピーバイト数*/
outp(RBCR1,0);
outp(CR,0x0a); /*リモートDMAリード、動作開始*/

for(i=0;i<0x20;i++){
a=inp(RMTDMA); /**リモートDMA読取り*/
if(!(i%2)){
sprintf(buf,"%02X ",a); /*偶数番地のみ表示*/
putstr(buf);
}
}

とすると、以下の出力が得られました。

00 02 CB 01 A5 C9 00 00 00 00 00 00 00 00 42 42

先頭6バイトがMACアドレス、次の8バイトがプロダクトID(ALL0)、
0x42が2個はNE2000コンパチを示すフラグらしい

ところでMACアドレスの上位24ビットは企業や組織を示すベンダID(OUIコード)で
IEEEで管理されているそうです。
http://standards.ieee.org/regauth/oui/index.shtml
で「00-02-CB」を検索すると北海道のトライステートと出ました。
このRTL8019ASはMACアドレス書込み済のEEPROMとセットで秋月で買ったものですが
PICNICの流れですね。