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

{
From: Patrick.Bernier@f209.n167.z1.fidonet.org

>I now realize that $1954 will be returned for either BNU/X00, but I would
>still like to be able to list to screen "which" fossil has been detected,
>and I cannot seem to figure it out.

 > try to call to the fossile with ah=1bh and you'll get
 > an info record,
 > containing pointer for fossil ID string ..

True. Here is an excerpt from 'myfos', my fossil interface unit; F_GetDrvID()
will return a string containing the current fossil driver's identification.
Sorry for the sloppy coding, I programmed this thing quite a while ago and
since it worked I never updated it to my current programming skills...

<incomplete code - won't compile>
}
  type
    F_IdentPtr = ^F_IdentStr;
    F_IdentStr = array[1..255] of byte;
    F_InfoBlock = record { len = 69 }
                    size:     word;        { Size of the infoblock }
                    majver:   byte;        { Version (high byte) }
                    minver:   byte;        { ...     (low byte) }
                    ident:    F_identptr;  { Pointer to asciiz ID of driver }
                    ibufr:    word;        { Input buffer size }
                    ifree:    word;        { Input buffer free }
                    obufr:    word;        { Output buffer size }
                    ofree:    word;        { Output buffer free }
                    swidth:   byte;        { Width of screen (in chars) }
                    sheight:  byte;        { Height of screen }
                    baud:     byte;        { Actual baud rate (computer-modem)
}
                  end;

  procedure F_GetDrvInfo;
  begin
    regs.ah := $1b;
    regs.cx := sizeof(F_InfoBlock);
    regs.dx := F_PORT;
    regs.es := Seg(F_Info);
    regs.di := Ofs(F_Info);
    intr($14,regs);
  end;

  function F_GetDrvID: string;
  var
    InfoRec: F_IdentStr;
    X: integer;
    s: string;
  begin
    F_GetDrvInfo;
    InfoRec := F_Info.ident^;
    X := 1;
    s := '';
    while InfoRec[X] <> 0 do begin
      s := s + chr(InfoRec[X]);
      inc(X);
    end;
    F_GetDrvID := s;
  end;


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