 PROCEDURE [INLINE] syp$cycle;
?? PUSH (LISTEXT := ON) ??

    TYPE
      psa_type = record
      fill: 0 .. 0ffff(16),
      p: ^cell,
      a0,a1: integer,
      fill2: 0 .. 0ffff(16),
      a2: ^psa_type,
      recend;

    VAR
      psa: ^psa_type,
      cycle_task: tmt$rb_cycle;

    psa := #previous_save_area();
    cycle_task.reqcode := syc$rc_cycle;
    cycle_task.code := tmc$cyc_sypcycle;
    cycle_task.p1 := psa^.p;
    IF psa^.a2 = NIL THEN
      cycle_task.p2 := NIL;
    ELSE
      cycle_task.p2 := psa^.a2^.p;
    IFEND;
    cycle_task.lock_value := 0;
    i#call_monitor (#LOC (cycle_task), #SIZE (cycle_task));

  PROCEND syp$cycle;
*copyc pmh$cycle
*copyc i#call_monitor
*copyc tmt$rb_cycle
?? POP ??
