home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PASCAL / FOSSIL.ZIP / FOSSIL.PAS next >
Encoding:
Pascal/Delphi Source File  |  1988-08-20  |  3.1 KB  |  135 lines

  1. unit Fossil;
  2. { (C) 1987 W. B. Fair, Jr. "All Rights Reserved"
  3.  
  4.   This Unit provides basic I/O services via a FOSSIL program.
  5.   The FOSSIL is assumed to be previously installed and provides
  6.   a degree of system independence to communications software.
  7.  
  8.   12/15/87 Initial coding
  9.   }
  10.  
  11. interface
  12.   uses DOS;
  13.   const
  14.     MaxPort = 2;
  15.   type
  16.     ComPort = (Com_1, Com_2);
  17.   var
  18.     FossilInstalled : boolean;
  19.     FossilMaxFcn    : byte;
  20.     FossilVersion   : byte;
  21.     PortStat        : array[0..MaxPort] of word;
  22.  
  23.   procedure SystemReboot;
  24.   procedure InitFossil    (port : ComPort);
  25.   procedure UnInitFossil  (port : ComPort);
  26.   procedure SetBaud       (port : ComPort; baud : integer);
  27.   procedure XmitPort      (c : byte; port : ComPort);
  28.   function  RcvPort       (port : ComPort) : byte;
  29.   procedure GetPortStatus (port : ComPort);
  30.   function  PortDataRdy   (port : ComPort) : boolean;
  31.   procedure LowerDTR      (port : ComPort);
  32.   procedure RaiseDTR      (port : ComPort);
  33.  
  34. implementation
  35.  
  36.   var
  37.     Regs      : Registers;
  38.  
  39.   procedure SystemReboot;
  40.   begin
  41.     Regs.AH:= $17;
  42.     Regs.AL:= 0;
  43.     Intr($14, Regs);
  44.   end; {SystemReboot }
  45.  
  46.   procedure InitFossil(port : ComPort);
  47.   begin
  48.     FossilInstalled:= false;
  49.     Regs.DX:= Ord(port);
  50.     Regs.BX:= 0;
  51.     Regs.CX:= 0;
  52.     Regs.AH:= 4;
  53.     Intr( $14, Regs);
  54.     FossilInstalled:= (Regs.AX = $1954);
  55.     FossilMaxFcn:= Regs.BL;
  56.     FossilVersion:= Regs.BH;
  57.   end; { InitFossil }
  58.  
  59.   procedure SetBaud(port : ComPort; baud : integer);
  60.   begin
  61.     with Regs do
  62.     case baud of
  63.        300: AL:= $40;
  64.        600: AL:= $60;
  65.       1200: AL:= $80;
  66.       2400: AL:= $A0;
  67.       4800: AL:= $C0;
  68.       9600: AL:= $E0;
  69.      19200: AL:= 0;
  70.       else  AL:= $80;
  71.     end; { case }
  72.     Regs.DX:= Ord(port);
  73.     Regs.AH:= 0;
  74.     Intr($14, Regs);
  75.   end; { SetBaud }
  76.  
  77.   procedure XmitPort(c : byte; port : ComPort);
  78.   begin
  79.     Regs.DX:= Ord(port);
  80.     Regs.AL:= c;
  81.     Regs.AH:= 1;
  82.     Intr( $14, Regs);
  83.     PortStat[Ord(port)]:= Regs.AX;
  84.   end; { Xmit }
  85.  
  86.   function RcvPort(port : ComPort) : byte;
  87.   begin
  88.     Regs.DX:= Ord(port);
  89.     Regs.AH:= 2;
  90.     Intr($14, Regs);
  91.     RcvPort:= Regs.AL;
  92.   end; { RcvPort }
  93.  
  94.   procedure GetPortStatus(port : ComPort);
  95.   begin
  96.     Regs.DX:= Ord(port);
  97.     Regs.AH:= 3;
  98.     Intr($14, Regs);
  99.     PortStat[Ord(port)]:= Regs.AX;
  100.   end; { GetPortStatus }
  101.  
  102.   function PortDataRdy(port : ComPort) : boolean;
  103.   begin
  104.     GetPortStatus(port);
  105.     PortDataRdy:= ((PortStat[Ord(port)] and $100) <> 0);
  106.   end; { PortDataRdy }
  107.  
  108.   procedure UnInitFossil(port : ComPort);
  109.   begin
  110.     Regs.DX:= Ord(port);
  111.     Regs.AH:= 5;
  112.     Intr($14, Regs);
  113.     FossilInstalled:= false;
  114.   end; { UnInitFossil }
  115.  
  116.   procedure RaiseDTR(port : ComPort);
  117.   begin
  118.     Regs.DX:= Ord(port);
  119.     Regs.AL:= 1;
  120.     Regs.AH:= 6;
  121.     Intr($14, Regs);
  122.   end; { RaiseDTR }
  123.  
  124.   procedure LowerDTR(port : ComPort);
  125.   begin
  126.     Regs.DX:= Ord(port);
  127.     Regs.AL:= 0;
  128.     Regs.AH:= 6;
  129.     Intr($14, Regs);
  130.   end; { LowerDTR }
  131.  
  132. begin
  133.   { Initialization Code }
  134.   FossilInstalled:= false;
  135. end.