Aside: V6 comes in two flavours: no split I+D at all, or split I+D in both
the kernel and user. For some reason that I can't recall, we actually
produced an 'm43.s', BITD at MIT, which ran the kernel in non-split-I-D, but
supported split I-D for the users.
I’m pretty sure the V6 kernel didn’t run in split I/D. It supported three user a.out
formats: 407 (mixed I&D in one instructions space),
410 (mixed I&D but with the instructions in write protected segments), and 411 (split
I&D).
It wasn’t too involved of a change to make a split I/D kernel. Mike Muuss and his crew
at JHU did it. We spent more time getting the bootstrap to work than anything else I
recall.