$compact init: DO; $if r_32 DECLARE SIZE$OF$OFF_SET LITERALLY 'DWORD'; $else DECLARE SIZE$OF$OFF_SET LITERALLY 'WORD'; $endif DECLARE token LITERALLY 'SELECTOR'; DECLARE fifo LITERALLY '0'; DECLARE self LITERALLY '0'; DECLARE task$priority BYTE; DECLARE calling$task TOKEN; DECLARE calling$tasks$job TOKEN; DECLARE master$mbox TOKEN; DECLARE status WORD; DECLARE init$task$token TOKEN; DECLARE gaston$task$token TOKEN; DECLARE alphonse$task$token TOKEN; DECLARE alphonse$start$add POINTER; DECLARE gaston$start$add POINTER; DECLARE gaston$ds WORD EXTERNAL; DECLARE alphonse$ds WORD EXTERNAL; DECLARE stack$pointer POINTER; DECLARE stack$size SIZE$OF$OFF_SET; DECLARE task$flags WORD; gaston: PROCEDURE EXTERNAL; END gaston; alphonse: PROCEDURE EXTERNAL; END alphonse; $include(:rmx:inc/nuclus.ext) $include(:rmx:inc/eios.ext) calling$tasks$job = SELECTOR$OF(NIL); /* Directory obj cataloged in */ calling$task = SELECTOR$OF(NIL); /* Task whose priority will */ /* be retrieved */ gaston$start$add = @gaston; /* Set up start addresses for */ alphonse$start$add = @alphonse; /* tasks */ stack$pointer = NIL; /* Values for creating tasks */ stack$size = 500; task$flags = 0; init$task$token = RQ$GET$TASK$TOKENS ( /* Get token for init task */ self, @status); CALL RQ$CATALOG$OBJECT ( /* Catalog task token in */ calling$tasks$job, /* directory of calling */ init$task$token, /* task's job */ @(4,'init'), @status); master$mbox = RQ$CREATE$MAILBOX ( /* Create mailbox tasks use */ fifo, /* to pass messages */ @status); CALL RQ$CATALOG$OBJECT ( /* Catalog mailbox in */ calling$tasks$job, /* directory of calling */ master$mbox, /* task's job */ @(6,'master'), @status); task$priority = RQ$GET$PRIORITY ( /* Get priority of calling */ calling$task, /* task */ @status); task$priority = task$priority + 1; /* Pick lower priority for */ /* new tasks */ alphonse$task$token = RQ$CREATE$TASK ( /* Create tasks */ task$priority, alphonse$start$add, SELECTOR$OF(@alphonse$ds), stack$pointer, stack$size, task$flags, @status); gaston$task$token = RQ$CREATE$TASK ( task$priority, gaston$start$add, SELECTOR$OF(@gaston$ds), stack$pointer, stack$size, task$flags, @status); CALL RQ$SUSPEND$TASK ( /* Suspend self and let other */ calling$task, /* tasks run */ @status); CALL RQ$DELETE$TASK ( /* Clean up and exit */ gaston$task$token, @status); CALL RQ$DELETE$TASK ( alphonse$task$token, @status); CALL RQ$EXIT$IO$JOB ( 0, NIL, @status); END init;