home *** CD-ROM | disk | FTP | other *** search
- UNIT PortSigO;
-
-
- {$I PORTSIGO.INT}
-
-
- IMPLEMENTATION
-
-
- CONSTRUCTOR PortSIGNAL.init( portadr : CARDINAL; owner : PortFLAG);
- BEGIN
- adr := portadr;
- flag := owner;
- w.p := 0;
- END (* init *);
-
- FUNCTION PortSIGNAL.SignalReceived : BOOLEAN;
- BEGIN
- IF adr = 0 THEN BEGIN
- SignalReceived := TRUE;
- END ELSE BEGIN
- w.p := PORT[adr];
- SignalReceived := flag IN w.s;
- END;
- END (* SignalReceived *);
-
- PROCEDURE PortSIGNAL.ClearOwnSignal;
- BEGIN
- w.p := PORT[adr];
- w.s := w.s - [flag];
- PORT[adr] := w.p;
- END (* ClearOwnSignal *);
-
- PROCEDURE PortSIGNAL.WaitForSignalAndClear;
- BEGIN
- IF adr <> 0 THEN BEGIN
- REPEAT
- UNTIL SignalReceived;
- ClearOwnSignal;
- END;
- END (* WaitForSignalAndClear *);
-
- PROCEDURE PortSIGNAL.SendSignalTo( process : PortFLAG);
- BEGIN
- w.p := PORT[adr];
- w.s := w.s + [process];
- PORT[adr] := w.p;
- END (* SendSignalTo *);
-
-
- END (* PortSigO *).