
?? PUSH (LISTEXT := ON) ??
*copyc mtc$debug_constants
*copyc mtp$error_stop
*copyc mtt$monitor_interlock
*copyc osc$processor_defined_registers
?? POP ??

  PROCEDURE [INLINE] mtp$set_interlock (VAR lock: mtt$monitor_interlock);

    VAR
      b: boolean;


    ?IF mtc$debug_interlocks THEN
      IF lock.id = #read_register (osc$pr_maintenance_id) THEN
        mtp$error_stop ('MT - Interlock already set');
      IFEND;
    ?IFEND;

    REPEAT
     #TEST_SET (lock.locked, b);
    UNTIL NOT b;

    ?IF mtc$debug_interlocks THEN
      lock.id := #read_register (osc$pr_maintenance_id);
    ?IFEND;


  PROCEND mtp$set_interlock;

