Another quaint bit of history was when we made the jump to actually running the kernel in
split-I/D mode. My good friend Joe Pistritto wrote the JHU boot loader for that. The
512-byte boot loader that was the standard UNIX one was used to load Joe’s split I/D
booter. It had a better support of the UNIX file system, but the question was how do you
get from a non-split I/D program into the split I/D program. Joe’s solution was rather
clever. He put an instruction that stored the processor status word with the new kernel
mode at the top of the boot loader’s address space. As he did the store the PC rolled
over and now it was running at the new mode at location zero.
Years later I found that others had solved the problem by just setting up the kernel
registers and executing a trap which switched the modes. I always thought Joe’s
solution was more elegant. The kernel started the same way any other UNIX program would
start.