|One related question, this time about "plain" occam.|
Among the restrictions placed on value processes (and hence functions) in
Ch 11, Functions, of the occam 2 reference manual, is: "Also, value processes
may not contain inputs or outputs, nor may they contain alternations, or
My question is: May they contain ports, or allocations?
It seems that the answer should be no, since ports would violate side-effect-freedom,
and one tends to speak of input and output from or to a port. But what about
allocations? They are usually in service of I/O like links or ports. I do not remember
seeing any function examples that involved PLACE xx AT nn : or the like. And yet
the discussion in the manual does not seem to forbid this.
I am just getting some real occam programming running, both on Gavin Crate’s Transputer Emulator and on a real B008 with four TRAMs. Here’s a question for anyone who used (or helped create) occonf back in the day:
The single Transputer mode (/T for icollect) requires that a free memory buffer be declared, e.g. as in
PROC simple (CHAN OF SP fs, ts, INT memory)
. . .
See 12.3.1 in the toolset manual part 1. But I cannot find any way to declare a free memory buffer in the configurer (Chapter 5 of toolset manual part 1) software section.
Are these completely incompatible? It would be nice to have the host Transputer (the one with lots of memory) be able to use its extra memory especially when communicating with the host PC. On the other hand, I know there is a problem due to the fact that the configurer allows more than one virtual processor on a real processor, and they cannot all grab for the free memory. Still, it does not seem like that big a deal to impose such a restriction at configuration time, if only one virtual processor accesses the free memory, since the total memsize is given in the network description.
I hunted through the examples in the toolset, and could not find one that both used a configuration file and used free memory.