@jlocke. Such is the percieved wisdom.
But I believe that ARM has always had a protected mode. It was certainly enough to have BSD 4.3 ported onto it in the A440/R140 days. It was called RISC iX.
And I can't see that it would be impossible to add interrupt driven multi-tasking to RISC OS. It's a programmed interrupt timer that will effectively call the same context switch code in the OS as is used in the co-operative system. May have to move some of the context save function into the interrupt handler, but that should be trivial.
The main drawback was that although RISC OS was intended from the start to be multi-tasking, I don't believe that it was ever meant to be a multi-user OS. This means that some of the protections you may expect in a modern OS could be missing. As far as I can remember, RISC OS programs are relocatable, and run in a shared address space, but this should not be a barrier to making it fully protected. If the current implementations have the requisite hardware, it should be perfectly possible to set up a Virtual Address space that will allow existing applications to run, just protected from each other.
The people who designed ARM initially were clever bunnies, and would not have missed so obvious a trick.
It may be interesting to look at ROOL to see how difficult it would be to retrofit.