Hello,
atc wrote:and then there's just some demos to download at the end which have already implemented things ahead of what is discussed. I also didn't see any sort of HAL in the one's I downloaded.
None of the demos should have anything implemented from later chapters. The demos build off of the code from the previous chapters' demo and only adds the code discussed in that chapter.
The HAL in the series implements a basic motherboard driver implementing interfaces for the PIT, PIC, processor tables, DMA, and can be expanded to include APIC, RTC, CMOS, etc. The HAL is a static library and should be in all of the Kernel chapters starting from Chapter 15.
I'm not sure how the demos are MEANT to be deployed. Are they supposed to be built as a PE (*.exe) or just a flat lib?
Looking at the demo code, the kernel is an EXE. All other drivers are static libraries compiled into the kernel.
The decorations on some of the kernel functions suggest they're meant to be called from the outside? Is that right?
I apologize, I do not understand what you mean here.
I've implemented my kernel as a multi-boot compliant PE executable, and I'm wondering how some of the calling conventions and such are going to work and how I need to structure my deployments.
If this is for a real OS, I highly recommend against basing it off of any tutorial. Tutorials make things easier at the cost of not supporting more advanced features. This is true for any tutorial.
The answer to the above questions depends entirely on your OS design and structure. The series uses the following structure:
I can also Post Neptune's, our in house OS's deployment structure if you wish for an example of a "real OS" deployment structure.
but it's a great help to understand what you are doing and how it all is meant to work before I go bushwacking into the unknown void*, lol.
Everything is described in the tutorial text of how everything works. As for the direction of the series OS and where it is headed, I personally do not know myself. That is one of the fun thing about writing the series

Is it really feasible/reasonable to have external code call functions that live inside a PE kernel?
I personally do not recommend other code from external programs calling your kernel, however you can support DLL linkage for your kernel fairly easily.

Funny that it is totally unused in subsequent tutorials though. Guess that's what threw me off.
Its used in all later tutorials for system initialization. Without it, the later chapters would not be possible.
I hope I got everything
