Got NovaShell working on D3 now. I had to change a few things and remove a bunch of code but it is running and it works quite well. I'm surprised at how little had to be changed.
I also found a bunch of small bugs that UniVerse was letting through but D3 would blow up on. Fixed those in both programs now. I need to figure out a way to do conditional compilations as I don't want to maintain two almost identical programs.
The biggest thing to abstract first is the nsh-history-file as that should be easy. The harder area is going to be dealing with the terminal type. I currently get the terminal type from linux and then set things based off the output of infocmp. Windows doesn't seem to have that functionality and so I'll need to maybe just hardcode things.