For the assembling and linking, you can use almost any assembler, and if you use some specific bootloaders you can get away with using almost any linker. If you want to make your own bootloader, you'll need a linker that can link to fixed addresses and produce a flat binary file of your assembled code. One such linker is JLOC, made by some guy named John Fine. Just Google for "JLOC", and be sure to read some of the documentation, 'cause you'll need to write some brief text files for it, outlinine where you want your segments, etc.

As far as a good OS development environment, all I can say is "I wish...". At the moment, I develop using RadASM (an indispensable IDE for assembly), MASM32, JLOC, and NaturalDocs (a great documentation generator). I hope that I get around to making a custom interface editor (the next best thing) for PwnOS (my OS project), once I have the kernel and main libraries down. A full development environment for it would be possible, but even harder. I have lots of good ideas, but all of which would take quite a while to implement. Anyway, the main idea would be that you could completely change everything about the main user interface of the OS. However, considering that I just finished coding the heap memory functions on Tuesday night, it might be a while (though I did write it in 3 nights, complete with 2 overlapping AVL trees :D).

If you'd like to get involved with PwnOS, I'd love for someone to make a neat interface (or a few different interfaces), or if you know stuff about internet driver programming or PCI or USB programming, that sort of help would add a lot to my planned initial release in January. For some more info, you can check out http://groups-beta.google.com/group/pwnos/ and http://code.google.com/p/pwnos/ or you can contact me directly.

Oh noes! :shock:The content I had at http://groups-beta.google.com/group/pwnos/ has vanished sometime in the past few hours! I hope Google puts it back up if it still exists, but I'm lucky that I have a browser tab open with the most important page that I don't have mostly backed-up. I guess that's what I get for using the beta version of their new Google Groups thing. :sad:

Added:Well, it looks like they did put it all back at 3:34am this morning. yay! :D