Brodeur235 wrote:
I have a feeling I'm not going about what I'm trying to do the right way. My knowledge of assemblers and linkers is obviously very limited ..... and until now the obscurities of a linker and different object file types (other than flat binary) have avoided me.
You should definitely get a firm grasp of your tools before getting too far in your OS. I would hardly consider a linker or an ELF file to be an obscurity. There are a lot of tools and they all have many features, some of which are very useful, and others surprising (which leads to frustration!). The sooner you learn to use them effectively, the less time you'll waste messing around with files and formats. There are wiki pages on this site that explain all the different tools. Start with
Linkers.
For organization and project management, look into the "make" command. You will need it once your project grows larger. There is a wiki page on Makefiles here. Essentially, a makefile allows you to build your entire project with one simple command, like "make os.img", and it takes care of assembling the individual files and linking them. Of course, you have to write the makefile yourself in order for this to happen.
A (very) simple example or explanation of how I could do this would be appreciated. I want, for example, to be able to put my k_mem functions in a different file than my k_put_* for organizational benefits
Assemble each separate file into a separate ELF object, so you'll have for example, mem.o, init.o, screen.o, etc. Then use your linker to combine all the objects into a single file. If you're going to use that file directly as your floppy image, it needs to be a flat binary or else the ELF header will interfere as part of your boot loader.