home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / dtx9302 / signals / t / portsigo.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1993-01-19  |  937 b   |  52 lines

  1. UNIT PortSigO;
  2.  
  3.  
  4. {$I PORTSIGO.INT}
  5.  
  6.  
  7. IMPLEMENTATION
  8.  
  9.  
  10. CONSTRUCTOR PortSIGNAL.init( portadr : CARDINAL; owner : PortFLAG);
  11. BEGIN
  12.   adr := portadr;
  13.   flag := owner;
  14.   w.p := 0;
  15. END (* init *);
  16.  
  17. FUNCTION  PortSIGNAL.SignalReceived : BOOLEAN;
  18. BEGIN
  19.   IF adr = 0 THEN BEGIN
  20.     SignalReceived := TRUE;
  21.   END ELSE BEGIN
  22.     w.p := PORT[adr];
  23.     SignalReceived := flag IN w.s;
  24.   END;
  25. END (* SignalReceived *);
  26.  
  27. PROCEDURE PortSIGNAL.ClearOwnSignal;
  28. BEGIN
  29.   w.p := PORT[adr];
  30.   w.s := w.s - [flag];
  31.   PORT[adr] := w.p;
  32. END (* ClearOwnSignal *);
  33.  
  34. PROCEDURE PortSIGNAL.WaitForSignalAndClear;
  35. BEGIN
  36.   IF adr <> 0 THEN BEGIN
  37.     REPEAT
  38.     UNTIL SignalReceived;
  39.     ClearOwnSignal;
  40.   END;
  41. END (* WaitForSignalAndClear *);
  42.  
  43. PROCEDURE PortSIGNAL.SendSignalTo( process : PortFLAG);
  44. BEGIN
  45.   w.p := PORT[adr];
  46.   w.s := w.s + [process];
  47.   PORT[adr] := w.p;
  48. END (* SendSignalTo *);
  49.  
  50.  
  51. END (* PortSigO *).
  52.