Basic operations - page 3 A Z-program consists of a sequence of functions, to be invoked in order. For example: knob.position -> servo.angle -> math.multiplyBy(10) -> speaker.frequency Here the knob's position function outputs a number, 0 to 180, which is transported across the network to the servo which then spins to that angle, and the same number is then transported through a math function which multiplies it by 10, presenting to the speaker which then sounds a frequency from 0 to 1800 Hz. (As we shall shortly see, "math" is a virtual device, built into the OS, and available in all Z-devices. Thus, no actual transport occurs in that case. The same is true of the virtual "do" device, used on the previous page to repeat "mike.rawData -> speaker.playRaw" 20000 times per second. It would actually run in the mike's Z-chip.) The Z-OS is distributed: identical copies of it run identically in each Z-device. Once a sequence is sent out, the host would no longer be involved in its execution. The entire sequence is sent to the first device. The Z-OS, running in that device, receives the packet, invokes the given function on that device, and then passes the remainder of the sequence on to the next device. The Z-OS there receives it, invokes that given function, and passes the remainder of the sequence on the the next device, and so on, until the last device gets it and there is no remainder to send.