BTW, you do realize that you can't actually use that bsod batch file in the kernel right?
Do some research on Makefiles. We were going to need one anyways. That will solve the build issues.
While at it, take a peek at the source code for the FreeDOS kernel. It consists of multiple files, not just one.
Since we aren't dealing with DOS per se, you can take a peek at the MS-DOS source as well. You'll see that it consists of multiple files. IO.SYS and MS-DOS.SYS (or IBMDOS and IBMBIO) are comprised of several source files linked together.
This is why there was talk of COFF (the Common Object File Format) so that all the assembly could be pushed to a bunch of object files and then linked together. Tools like EXE2BIN or EXEFLAT can convert the COFF to a flat binary if necessary...
So basically what would happen is something along these lines:
nasm -f coff kernel.asm
nasm -f coff keyboard.asm
nasm -f coff timer.asm
nasm -f coff console.asm
nasm -f coff memory.asm
nasm -f coff disk.asm
ld -o kernel kernel.o keyboard.o timer.o console.o memory.o disk.o
A linker script may be needed, to set things like the origin and stack space (for LD). I don't know what will happen if you have access to LINK from Visual Studio Express. That would require a trip to MSDN.
On DOS platforms, it may come out as kernel.exe. EXEFLAT may be able to convert to a flat binary, KERNEL.BIN which could be renamed KERNEL.SYS
Here's a link to a Makefile, not for this project, but a basic tutorial. You should be able to configure it to work. However, given the fact that there is BITS 16 and an ORG statement in the current kernel, NASM will complain if you use the -f coff option, which is why I said a linker script would be needed for LD (since the GCC toolchain is being used)
Cheers