Each task can think of having its own CPU concerning memory environment and esp. The memory block size is 4kByte. The possible 1 MByte is divided into 256 blocks, which can be mapped at any of the 16 possible positions in the 64k size 6502 address space. Devices are a set of subroutines that can have up to 4 kBytes, i.e. one memory block. They are mostly called during an interrupt, which they have to serve.
Tasks can also have their own interrupt routine.
Semaphores to synchronize different tasks are also available. When receiving, the sending task can also be specified. File handling is done with the filesystems. For each negative number only one task can be assigned. All tasks work in the same environment, so that identical programs cannot be invoked twice.