Thanks for the information everyone. I have started doing some of the examples in the C book. I have entered them in using nano and compiled them using GCC on Linux. I wasn't sure what compiler to use in DOS/Windows, so i thought i would use GCC in Linux because my linux installation is bound to have it installed. It didn't so I attempted to install it using Aptitude only to find that it wanted it to be installed from the CD which I had lost. I eventually managed to configure it to install stuff from the internet.

Harrison: MS-DOS is essential for this project. At least for testing it. NT could be used but that would be a very big inconveniance since accessing the parallel port in NT would appear to be rather difficult. MS-DOS will be necessary for testing because I would rather just get on with testing to find out if the hardware that i am going to make actually functions as it should, rather than messing about trying to get past Windows NT/the >386's security thingies. I think if I were to make it run on a more modern OS I would just use Linux.

Of course Linux and NT will probably be more than suitable for stuff that doesn't require access to the I/O ports.