I don't know how symbios does it but I don't think it's that hard to create something pretty close to preemptive multitasking on a z80. You have the vsync interrupt (50 times per second). Add to that some stack manipulation, some bookkeeping and a register store/restore procedure and you're done. It wouldn't be fast though, and it would also limit what a process is allowed to do (disable interrupt, write outside of its own memory region). The z80 provides no mechanism to enforce this, of course. But technically, it's a primitive kind of preemptive multitasking.