1024MAK wrote:Getting back to the real question, do you want a low cost, but very high performance second processor?
If the answer is yes, it makes sense to make the interface compatible with the Acorn Tube.
By the same token it's an even better idea to implement a socket for a modern Intel PC processor...
The documentation clearly shows that the Acorn Tube is designed around using the BBC operating system, and this extends down to the very hardware, which is tailored to pass parameters the way OS calls do it. How this is relevant to a machine that runs an entirely different OS with a completely different abstraction of it's operations and methods of parameter passing, is beyond me. Just about the only sense I can see in implementing a Tube in the QL is to make it run a QL style OS on the BBC, which is somewhat of an attempt to add awkward to futile.
At the very least, a simple(r) dual port attachment method (and these also implement some mailbox and interrupt mechanisms) and use of general 'mailbox' type access between systems offers a far more universal and flexible mechanism. Since adding a second CPU or uC (for any purpose) requires software support which does not exist already, it's a better idea to implement something requiring less effort to program, and is not constrained by legacy architecture based on a completely foreign OS, and one based on a different abstraction of hardware and processing in general, to boot.
Also, let's note the topic of the thread, which denotes a system where there is a rather clear divide between what the main CPU does (executes applications and the OS), and the other CPUs or uCs do - abstract hardware to implement special functions and hence add or accelerate functionality to the core OS - i.e. they do NOT run applications or the OS as such, and do not directly share the load of said OS and apps on the main CPU. Common applications are abstracting more complex IO operations to a simple set that can be used across many devices (such as a caching controller for hard drives, or a uC implementing a protocol like TCP/IP), human interface devices (from simple keyboard IO to intelligent graphics controllers), signal processing and cryptography (compression/decompression of general or specific data like audio and video, vector and matrix processing) and even simpler functions such as floating point math. Also, emulation of other systems, though this is almost a special category in itself.