home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------------------------ *)
- (* CRITICAL.INC *)
- (* Teile einer Interrupt-Routine ununterbrechbar machen *)
- 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 *)