Inter-WIZ function calls - page 2 In general, functions look like this: gateway -> etc -> etc -> etc -> gateway ; 1 => restart Initially, after the function's sequence is loaded into a WIZ, the first instruction, "gateway -> etc" will block, as there is no data in the gateway and its readReady bit is low. Thus the WIZ running this code goes into a zero-power-using wait state. Then, in a moment or in a decade, somebody "calls" this function, by putting data into its gateway. The "gateway -> etc" instruction can then proceed, and the function WIZ proceeds to execute the rest of its code. If the caller tries to read the answer while this WIZ is still executing, it will block and go into a wait state. When the function completes and executes the final "etc -> gateway", the caller wakes up and proceeds to use that result. In other words, the function WIZ sleeps while waiting for a caller to deposit an argument. When that happens, the caller goes to sleep while waiting for an answer. When the answer is ready, the caller wakes up and the function WIZ goes back to sleep while waiting for another caller, and so on. Note that the "restart" register causes the sequence to start over. It is discussed in "The conditional skip" chapter in "The Single WIZ in detail" section of this document. Note also that the above few lines of code would be the *entire* program running in this WIZ. IE, one function = one WIZ and one WIZ = one function. This contributes to why we won't generally need large RAMs to hold sequences.