To keep tasks synchronised we use semaphores. These are global variables that are loaded with a unique value relating to the task that wishes to take control. This value is the Task's USER area address. A semaphore is initialised to zero. At this point any task may take control. When a task wishes a resource it ACQUIREs the semaphore. From now on no other task may acquire this resource as the semaphore is non zero. To allow others access the task it must RELINQUISH the resource and reset the semaphore. This mechanism provides for simple inter-task communication, provided the tasks do not hog any given resource. Tasks must co-operate.
If you refer to the demos, you will see CONVERSION is used as a semaphore for the ASCII conversion task . The task acquires it to place it's ASCII string in BUFFER. As there is a PAUSE between each character the result task would generate a false number if there was no control.
NOTE: These extensions are added by the file 18FMULTI.F.