- usb legacy mode in (or ripped from) some bios - beware that on most 'modern' *kuch* crap *kuch* systems parts of the hardware also have to be turned on with propriatory non-disclosed registers on propriatory (the new word for crap) chips. (compatibility issues arise when dropping out of real mode)
- bios disk routines (limited to the first few 100 megabytes or fist few gigabytes of diskspace, depending on the version, also real mode only in most cases)
- bootloader + int21h ripped from freedos, microsofts dos 2.0 sourcecode, or cpm (actually it has the same api)
- c64s (vice doesn't have a dos port afaik). now the thing is that c64s -came- as a dos exe file but the guy is kinda weird when it comes to releasing new versions of it or making it open source. also it's not 100% 'compatible' but who cares, it's not 'compatible' in a good way (as in it can run at the maximum cpu rate and skip the loading time from disks and tape and stuff).
i would be more in favour of picking -one specific- target (let's say some thinkpads and/or dell optiplexes, both of which are business systems and will be available in the same configuration for years to come) and just making it work -on those-, as making it work on each and every single pc out there is just a pain in the butt. there are at least 3 different chips for that 'usb' stuff alone, and 100s for sata/scsi/etc (sure most of them will happily pretend to be a 1982 disk controller and work with the bios function up to certain sector/head/cylinder limitations but that's about where it ends. also in as far as vga cards are 'standard' the results of the obtainable 'standard' modes may not be satisfying.
pcs lately seem to lack any and all compatibility (just look at the growth of the linux kernel trying to keep up with all the different chips at different locations) and also haven't come with an 'ibm pc technical reference guide' with schematics and datasheets and stuff in ages.
as long as you pick -one specific- pc model, either pressuring the manufacturer to give you all the required datasheets and memorymap or reverse engineering the thing is worth the trouble. making it work on all of them would be like maintaining the linux kernel
it's actually easier to just make new c64's in atx form factor.
(hell we'd only need to order 3 chips back into production for that, the vic, the sid, and the 6526 as that's all that's missing).
we can get our serverfarm to do quite a few things in assembly... but. that's only because those are all the same, we've used those chipsets and their predecessors for decades, etc but don't think our server deployment code would work on the average workstation or laptop. initializing all those chips, there being a ****load of different disk controllers, video chips, memory controllers, pci bridges, etc on the market, hell there are 3 different methods to pull reset on a pc alone. and usually just one or 2 out of them work on a specific system. you'd spend a year trying to get your code to pass post on everything and have a rom several megabytes big by that time just to run the memory test on every possible pc. (as obviously the end goal would not be to run it as an os from a disk or ssd, but to run it instead of the bios. where it belongs).
the problem with the entire 'pc platform' is that once you drop out of real mode any still remaining 'ibm compatibility' goes out the window. instantly. other than having a 'somewhat simular' cpu core and a somewhat simular holes pattern in their mainboards pc's barely have anything in common with each other nowadays. and the ibm pc compatible 'real mode' isn't really good enough for such things. there are more differences between 2 random pcs than between an amiga and atari st
- no network (100s of different chips)
- no video (vga isn't even standard and in as far as it is considered a standard only a few modes are supported)
- very limited and slow disk access, using only the first parts of each drive
all of which could be fixed if a single manufacturer would go 'screw that all from now on all our systems will be backwards compatible to our system xxxxx over here, which we will fully document' which would then set and become a new standard and attract the entire games industry to it, but so far none of that is happening. instead just more incompatibilities pop up every day.