home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / LANGUAGS / MODULA2 / TICKTOCK.MOD < prev    next >
Text File  |  2000-06-30  |  942b  |  30 lines

  1. (* This is the corrected version of the sample program illustrating *)
  2. (* TRANSFER() in the Turbo Modula-2 User's Guide (Page 455).  The problem *)
  3. (* with the original is that coroutine workspace is not allocated due to *)
  4. (* use of POINTER declarations instead of "real" variables. *)
  5.  
  6. MODULE TickTock;
  7. FROM SYSTEM IMPORT
  8.   ADR, NEWPROCESS, TRANSFER, ADDRESS, PROCESS, WORD; (* additional ADR *)
  9. VAR
  10.   tickProcess, tockProcess, main: PROCESS;
  11.   tickWork, tockWork: ARRAY[0..99] OF WORD; (* pointers no longer used *)
  12.  
  13.   PROCEDURE tick;
  14.   BEGIN
  15.     WRITELN('tick');
  16.     TRANSFER(tickProcess,tockProcess);
  17.   END tick; (* original program had a small error here, also *)
  18.  
  19.   PROCEDURE tock;
  20.   BEGIN
  21.     WRITELN('tock');
  22.     TRANSFER(tockProcess,tickProcess);
  23.   END tock;
  24.  
  25. BEGIN
  26.   NEWPROCESS(tick,ADR(tickWork),SIZE(tickWork),tickProcess);
  27.   NEWPROCESS(tock,ADR(tockWork),SIZE(tockWork),tockProcess);
  28.   TRANSFER(main,tickProcess);
  29. END TickTock.
  30.