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

    {
    > We can me tell, how i can read the name of the fossil-driver and version
    > number of the fossil-driver ?
    }
    program
      whothere;

    uses
      dos;

    function fossilname(fport : byte) : string;
    type
      fossilrec = record
        strsize : word;
        majrev  : byte;
        minver  : byte;
        idofs   : word;
        idseg   : word;
        ibuff   : word;
        ifree   : word;
        obuff   : word;
        ofree   : word;
        swidth  : byte;
        sheight : byte;
        dte     : byte;
      end;
    var
      regs : registers;
      fosinfo : fossilrec;
      fosname : string[78];
      i : byte;
    begin
      regs.ah := $04;
      regs.dx := fport;
      intr($14, regs);
      if regs.ax <> $1954 then begin
        writeln('Unable to detect FOSSIL driver');
        halt;
      end;
      regs.ah := $1b;
      regs.cx := sizeof(fosinfo);
      regs.dx := fport;
      regs.es := seg(fosinfo);
      regs.di := ofs(fosinfo);
      intr($14, regs);
      if fosinfo.majrev <> 5 then begin
        writeln('FOSSIL is not Rev5 compatible');
        halt;
      end;
      fosname := '';
      i := 0;
      repeat
        fosname := fosname+chr(mem[fosinfo.idseg:fosinfo.idofs+i]);
        inc(i);
      until(mem[fosinfo.idseg:fosinfo.idofs+i] = 0);
      fossilname := fosname;
    end;

    begin
      writeln('Fossil name COM4=', fossilname(3));
    end.

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