Hi Nick,
Nick Downing <downing.nick(a)gmail.com> wrote:
According to this:
https://archive.org/stream/bitsavers_zilogz80000mmu_742400/z8010_mmu_djvu.t…
You could use only segment 0 and program the code MMU to point segment 0 to
some physical address and the data and stack MMUs to point segment 0 to
some other physical address and you have a split I/D system capable of
running 2.11bsd assuming the compiler knows nothing of segments as you
said. Or, as outlined in my previous posts you can use a compiler that has
23-bit pointers and understands how to output the high 7 bits as the
segment and the low 16 bits as the logical address each time it
dereferences a pointer (if such a compiler exists) and port 4.3bsd.
I have two compilers ;)
One compiler which creates "unsegmented binaries". The assembler code which
is generated only uses 16bit pointer addresses (r0-r15) and only works on
segment 0.
This compiler is for example used to compile the boot loaders and standalone
utilities iirc and other "small" binaries on my SYSIII.
http://pofo.de/cgi-bin/man.cgi?query=cc
There is also a "segmented compiler" which uses the 32bit registers (rr0-rr14)
to store the pointer adresses.
It is currently used for compiling the SYSIII kernel (which is much
bigger than
the 2.11 BSD kernel I saw) and all other "to big" binaries.
http://pofo.de/cgi-bin/man.cgi?query=scc
And this would mean that "such a compiler exists" (referencing to your
mail) and I could or should port 4.3 BSD?