[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]