Thanks for the info, I would not have managed this otherwise...
I did originally try adding my ASM code into the boot0.s and boot1.s files, but I was getting the TIMES error (too many bytes), so it turns out I had to mod the C code.
I have no experience of C, so the ASM command was a godsend.
After some more reading around I found a little subroutine, as hardcoded hex values seemed to give errors when I compiled....
static inline void outbbbyte(int port, u_int8_t data) {
asm volatile("outb %0,%w1" :: "a" (data), "d" (port));
}
I just fed the routine with hex values and it works great, thanks again