Yeah, I would definitely go for 4.3bsd using scc in that case. The 64 kbyte limitation of 2.11bsd using cc will cause continual hassles, even with split I/D which relaxes things a bit (for example the issue of linking big executables and the workarounds employed by 2.11bsd "ld"). You might also consider 4.4bsdlite if you want to be able to release your work, you could grab any missing pieces that aren't in assembly from 386bsd etc.
Nick

On 25/11/2015 10:51 PM, "Oliver Lehmann" <lehmann@ans-netz.de> wrote:
Hi Nick,


Nick Downing <downing.nick@gmail.com> wrote:

According to this:
https://archive.org/stream/bitsavers_zilogz80000mmu_742400/z8010_mmu_djvu.txt
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?