[23848]  SiI0680 と IT8212 ちょっとだけ
投稿者:SKM さん   2006-05-19 23:38:46
 SiI0680ボードが見つかる前に、IT8212も買ってみました。
現用のPC/ATのIDEは古いタイプなので、こちらで使ってもよいかなと。

 IT8212、これは厄介な物のようです。ディスクパラメータの取得までは
くるのですが、PIOモードでもこのあと内部のCPUを起動しないと駄目なのか、
いまいち判りません。と、いうところで絶大なる稼動実績を持つSiI0680と
大熊猫BIOSの組み合わせが手に入り、ついにうちのRa40にもATA133という
文明の利器が届きました。

 PIO版ソースを拝見していて気になった点が、

> ;ここから先はPIO DATA-OUT PROTOCOLで共通
> PDOP:ORDL,07h;COMMAND
> OUT DX,AL
> CLI

 コマンド後のフラグセンスまでの間、割り込み禁止が必要なら先にCLIの
ほうがよいと思います。通常は問題ないでしょうけど、入れ替えたソース
をアセンブルして動作させています。

 流石にBIOSの動作には何も問題はない、安定した感じですね。

 ただ、ちょっと困った点も・・。CD-ROMのケーブルが届きません・・。
いや、それはともかく、C-busのSCSIにMDC-925Lを使っているのですが
こいつが画面モードの後片付けをしないので、大熊猫BIOSのロゴと情報
表示が見えなくなってしまいます。

 この辺りの基本的な知識が不足しているのですが、ここではまだint 18h
は使えませんよね?。
  1. 大熊猫 さん   2006-05-20 19:33:50
    >  コマンド後のフラグセンスまでの間、割り込み禁止が必要なら先にCLIの
    > ほうがよいと思います。
     ああ、ご指摘ありがとうございます。今度直しておきます。
    実はそこは割り込みが入ってこないところなので、
    あれこれいじった過程で残った、恐らく不要なCLIなのでした(^^;

    >  この辺りの基本的な知識が不足しているのですが、ここではまだint 18h
    > は使えませんよね?。
    画面消去していないのは手抜きです。INT 18hは多分使えると思います(^^;;;
    今度直しておきます。
    他のBIOSと表示が重なるので、ちょっと見た目不細工なんですが、
    INIC1060用の98BIOSも画面消去してませんので、放置していました。

     ちなみにIT8212ってドライバの出来はどうですか?
    BIOSは色々あったみたいですが。
  2. SKM さん   2006-05-21 02:05:49
     なるほど、コントローラはFIFOが空、又は一杯になるまで待つで
    しょうから割り込み関係は大丈夫ですね。

     テキスト表示ONをINT18から送ってみたのですが、駄目でした。緑電子
    さんがテキストアトリビュートを弄くったのが残っているのかも?。
    こんなところに嵌まるとは・・。

     IT8212のドライバは、Win98上で一応動いていました。BIOSが動
    いていないので、dos窓からフォーマット掛けないと読めませんが。
    古いディスクを繋いでみただけなので、速度は判りません。
    PC/ATでの評判は悪くないみたいですね、このチップ。
  3. 大熊猫 さん   2006-05-21 08:30:19
    > PC/ATでの評判は悪くないみたいですね、このチップ。
    ATA133RAID-PCI2(IT8212)で一応動くものは出来たっぽいんですが、実際どうなんでしょう?
    http://homepage3.nifty.com/ookumaneko/it821x.lzh
    うちではのそのそしてるので、謎です。

    > INT 18h
    上のではAH=16h,DX=E100hで呼んで画面消去しました。
    不具合があってブラックアウトしたみたいで一瞬ひやっとします(汗
  4. SKM さん   2006-05-21 20:32:13
    画面表示は同じ場所にコードを追加して正常になりました。
    ありがとうございます。

     IT8212用は後ほどインストールしてみます。テスト用のATA133
    ディスクが無いので、速度に関しては、どなたかよろしくお願い
    します。ドライバの処理が滑って回転待ちを食らったなら、
    もっと遅くなりそうな?。確かにちょっと不思議な速度ですね。
  5. SKM さん   2006-05-21 22:25:32
     転送速度ですが、ケーブルIDかもしれません。このレジスタは
    ケーブルはこれだっ!、とソフトウェア設定するだけみたいです。

    >MOV AX,0B109h
    >MOV DI,040h
    >INT 1Ah
    or cl,0f0h ;<--- 全部80芯、決め打ち
    >MOV BYTE PTR CS:CBLID,CL
    >ORCH,0A0h;IDE DECODE ENABLE
    >MOV AX,0B10Ch
    >INT 1Ah

    まだロジックの方は読みきっていません、失礼。
    >MOVZX DI,BYTE PTR FS:CBLID
  6. 大熊猫 さん   2006-05-22 01:09:57
    > or cl,0f0h ;<--- 全部80芯、決め打ち
    まさにそのものずばりでした。ありがとうございます。
    やったところREAD 50MB/s,WRITE36MB/sまで改善しました。

    それはそうと、ドライバインストール直後1回は起動できるものの、
    それ以降起動中に例外0Dが出て起動出来ないという不具合が出てます。
    セーフモードで一回立ち上げるとその直後1回は起動できるのですが、
    それ以降同じように起動中に例外0Dが出て起動途中に止まります。
    バグも結構あったので直したりしたんですが(★)、なかなか難しいですね。
    http://homepage3.nifty.com/ookumaneko/it8212.inc
  7. SKM さん   2006-05-23 01:35:01
     Win98インストール中に落ちて、そのままリセットしたら
    インストールは継続、終了してしまいました。で、ドライバは
    まだ入れてないんですが、BIOS経由のアクセスも速いですよー。

     Winの起動シーケンスなんて実態はさっぱり判りませんが、
    プロテクトモードドライバへの移行時に落ちてるのなら、
    何か未処理の割り込み要因でも残っている、程度のことしか
    思いつきません。とりあえず、ここまでです。
  8. SKM さん   2006-05-23 18:12:35
     まったく、いろいろ面倒な石ですね。こんなに複雑になってし
    まうものなんでしょうか。

     チップレジスタを読み出してみたら、メモリアクセスビットは
    OFFになっています。

    movdi,0004h
    movch,00h
    movcl,07h;dma:on, mem:on, i/o:on
    movax,0b10ch;write configuration word
    int1ah

     Windowsの日常的なメッセージ、例外0d,0e、ですが
    もしかすると、エラーコード通りチップのメモリがみえなかった
    だけかもしれません。

     さてWin再インストールを、というところで、ついにテスト用の
    ディスクが逝きました。もともと後半は読めないディスクだった
    のですが。どこかで拾ってこないと・・。
  9. SKM さん   2006-05-23 23:23:56
     なんとか動作確認できました。Ra40オリジナルHDD、
    これが最後の御奉公。数回の再起動に問題は無し、でした。

    Configuration Mechanism #1 : Support.
    Configuration Mechanism #2 : No Support.
    PCI BIOS Level Ver 02.10

    device 13
    83 12 12 82 07 00 30 02 13 00 80 01 00 60 00 00
    01 60 00 00 09 60 00 00 11 60 00 00 0d 60 00 00
    01 c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 22 80 00 00 00 00 00 00 00 06 01 08 08
    f0 a0 36 0f 08 00 08 00 02 02 00 00 04 02 04 02
    00 20 00 00 31 00 31 33 00 00 44 33 00 1a 02 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

    ドライバ・アーカイブ: ite8211-1328.exe

    ★ ★ ★ HDBENCH Ver 3.40 beta 6 (C)EP82改/かず ★ ★ ★
    M/B Name
    Processor Celeron 399.49MHz[GenuineIntel family 6 model 6 step 5]
    Cache L1_D:[16K] L1_I:[16K] L2:[128K]
    VideoCard スタンダード ディスプレイ アダプタ (9821 シリーズ)PC-9821 TGUI968x,Cyber938x,Providia9685 (Trident)
    Resolution 800x600 (16Bit color)
    Memory 61,872 KByte
    OS Windows 98 4.10 (Build: 1998)
    Date 2006/05/23 20:09

    SCSI = NEC PC-9801-55/L/U/FA-02,PC-9801-92/PC-9821A-E10 (DMA Transfer Mode)
    SCSI = ITE IT8211 ATA/ATAPI Controller
    HDC = スタンダード IDE ハード ディスク コントローラ

    A = FUJITSU MPC3064AT Rev 6018
    B = GENERIC NEC FLOPPY DISK
    D = IOMEGA ZIP 100 Rev J.02
    E = SONY CD-ROM CDU701 Rev 7.0s

    ALL Integer Float MemoryR MemoryW MemoryRW DirectDraw
    7338 15904 16711 4857 3013 6015 0

    Rectangle Text Ellipse BitBlt Read Write RRead RWrite Drive
    4740 5115 2231 10 12374 12352 4175 4025 A:100MB
  10. 大熊猫 さん   2006-05-24 04:37:59
     SKMさん、色々試して頂いてありがとうございます。
    あれよあれよという間に解決してますね。(^^

    >  チップレジスタを読み出してみたら、メモリアクセスビットは
    > OFFになっています。
     そう言えば本家ITE BIOSではわざわざメモリ空間イネーブルにしてました。
    BIOSでROMチップを触るわけでもないんですが。
    SiIの石はMMIOのベースアドレスレジスタがあるのでPCI-BIOSがメモリ空間イネーブルにするんですよね。
    # ちなみにITEFLASHはメモリ空間イネーブルにしないので、ITEFLASHにこだわると
    # BIOSが飛んだときマザー次第では2度と書き込みできなくなるという(^^;;;

    >  なんとか動作確認できました。Ra40オリジナルHDD、
    > これが最後の御奉公。数回の再起動に問題は無し、でした。
    すばらしいですね。
    残念ながらうちでは上記問題はメモリ空間イネーブルでは解決しませんでした。
    また他の原因があるのかもしれません。ただ、もう少し粘ればまともに動かせそうなので、
    また時間が取れたらあれこれ試してみます。
    このたびは本当にありがとうございました。