[Back to HARDWARE SWAG index] [Back to Main SWAG index] [Original]

    {
     > Does anyone here have code to detect if a system got ISA, VL or PCI-bus
     > ?
     > Please respond with code.

    An extract of my system diagnostics tools. Have fun.. :) (Put this in SWAG if
    you want...)
    }

    procedure getbustype;
    var
      works         : boolean;
      data_seg      : word;
      data_ofs      : word;
      test          : string[4];

    begin
      bustype:='';
      works:=false;

      if not works then                     { EISA }
      begin
        test:='EISA';
        test[2]:=chr(mem[$f000:$ffd9]);
        test[1]:=chr(mem[$f000:$ffda]);
        test[4]:=chr(mem[$f000:$ffdb]);
        test[3]:=chr(mem[$f000:$ffdc]);
        if test='EISA'  then
        begin
          works:=true;
          bustype:='EISA';
        end;
      end;

      if not works then                     { MCA }
      begin
        asm
          mov ah,0c0h
          int 15h
          cmp ah,0
          jnz @nope

          mov works,true

          mov data_seg,es
          mov data_ofs,bx

        @nope:
        end;
        if works then if (mem[data_seg:data_ofs+5] and 2)=2 then bustype:='MCA'
    else works:=false;  end;

      if not works then                     { PCI }
      begin
        asm
          mov ax,$b101
          int $1a
          cmp ah,00
          jne @nope
          mov works,true
        @nope:
        end;
        if works then bustype:='ISA/PCI';
      end;
      if not works then bustype:='ISA';     { ISA ? }
    end;

[Back to HARDWARE SWAG index] [Back to Main SWAG index] [Original]