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

{
> I'm looking for a pascal V6 program to detect the UART-type installed.
}

program ComType;

{ Detect the type/presence of a comport-chip.
  Norbert Igl, 5/92 }

uses
  crt;

Const ComPortText :
    Array[0..4] of String[11] =
         ('    N/A    ',
          '8250/8250B ',
          '8250A/16450',
          '   16550A  ',
          '   16550N  ');
    IIR     = 2;
    SCRATCH = 7;

Var   PortAdr : Array[1..4] of Word absolute $40:0;

function ComPortType(ComX:byte):byte;

BEGIN
  ComPortType:=0;
  if (PortAdr[ComX] =0)
  or (Port[PortAdr[ComX]+ IIR ] and $30 <> 0)
     then exit;                                       {No ComPort !}
  Port[PortAdr[ComX]+ IIR ] := 1;                     {Test: enable FIFO}
  if (Port[PortAdr[ComX]+IIR] and $C0) = $C0          {enabled ?}
  then ComPortType := 3
  else If (Port[PortAdr[ComX]+IIR] and $80) = $80     {16550,old version..}
       then ComPortType := 4
       else begin
       Port[Portadr[ComX]+SCRATCH]:=$AA;
       if Port [Portadr[ComX]+SCRATCH]=$AA            {w/ scratch reg. ?}
           then ComPortType:= 2
           else ComPortType:= 1;
       end;
END;

var com : byte;

begin
  clrscr;
  writeln('COMPORT  Chiptest':75);
  writeln('Freeware by Norbert Igl, Germany':75);
  writeln;
  for com := 1 to 4 do
     writeln('COM:',com,':  ', ComPortText[ComPortType(com)]);
end.

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