
    VAR
      internal_signal: tmt$signal,
      signal_found: boolean,
      signal_handler: tmt$signal_handler,

      trap_enables: 0 .. 3,
      traps: 0 .. 3;

    i#disable_traps (trap_enables);
    signal_found := TRUE;
    WHILE signal_found DO
      tmp$find_signal (signal_found, internal_signal, signal_handler);
      IF signal_found THEN
        i#enable_traps (traps);
        {call the signal handler}
        signal_handler^ (internal_signal.originator, internal_signal.signal);

        i#restore_traps (traps);
      IFEND;
    WHILEND;

    i#restore_traps (trap_enables);
