Ray Arachelian wrote:
Roger Holmes wrote:
The compiler generated some strange code to
'touch' the new top of
stack on subroutine entry so the OS could allocate all the extra space
in one go rather than in little bits. One enterprising British
software house even got Unix running on a Lisa with the (then)
optional 5MB profile hard disk. It wasn't C.A.P. but one of the other
big ones of the time.
There were two. Microsoft/SCO Xenix, and UniPlus. I'd
love to get my
hands on UniPlus, but it seems to be rare. If this was something else,
it would be wonderful to get a copy of it.
I'm not sure what the strange code is about, I suspect something to do
with the MMU. If you'd access a page that wasn't mapped to your
process, the OS would either load it from disk, or allocate more MMU
pages to your process, thus getting more memory.
Lisa (and Macintosh) used the original 68000 which was not capable of
recovering from an arbitrary access (page) fault in the middle of an
instruction (the updated 68010 fixed this, but Apple never used it).
The 68000 did lot leave enough info on the fault stack to indicate
which memory access within an instruction faulted, and which registers
might have been auto-incremented/decremented.
On the Lisa all accesses to memory that was not previously known
to be memory resident used a probe instruction (a TST.W (A0), IIRC)
that only did one memory access and did not alter the registers.
Lisa was a segmented memory architecture, not demand paged, so the
overhead was not too great. Stack extension also used this probe IIRC.