home *** CD-ROM | disk | FTP | other *** search
- (* ---------------------------------- *)
- (* CRITICAL.INC *)
- (* mit den hier enthaltenen Prozeduren*)
- (* koennen Teile einer Interrupt-Rout.*)
- (* ununterbrechbar gemacht werden. *)
- (* ---------------------------------- *)
-
- TYPE
- CriticalSection_ = Integer;
-
- PROCEDURE CriticalBegin
- (VAR Sect: CriticalSection_);
- BEGIN
- Inline (
- $9C/ { PUSHF }
- $58/ { POP AX }
- $FA/ { CLI }
- $BEC4/Sect/ { LES DI,Sect[BP]}
- $26/$89/$05);{MOV ES:[DI],AX }
- END;
-
- PROCEDURE CriticalEnd
- (VAR Sect: CriticalSection_);
- BEGIN
- Inline (
- $BEC4/Sect/ { LES DI,Sect[BP]}
- $26/$8B/$05/{ MOV AX,ES:[DI] }
- $50/ { PUSH AX }
- $9D); { POPF }
- END;
-
- (* ---------------------------------- *)
- (* Ende von CRITICAL.INC *)