i started to program on 386
i remember how everything looked very puzzling at that time to me, with the 'conventional memory', 'extended memory' 'high memory' 'paged memory', have lot of Mo of memory avaible that was not actually avaible to load tsr, and how it was all the time hell to make some game work correctly with the 640k of conventional memory and tsr, and how it would need to make special bootdisk almost for each game to load only the required tsr to have all the options, all in the meanwhile have some Mo avaible in 'higher memory'
i was only about 14 or 16 at that time, and i was only programming some bit of things in vga and pascal, but already the whole programming thing was very weird, with dos4gw extenders, and many different version of borland and turbo C/pascal, with handling of memory and 32 bit that could differ between the version , and lot of basics around as well, it was really another world from now, and i couldn't help to think the design was very unhomogenous, and puzlling how some ressource were made very hard to access from my point of view of beginner programmer of the time
and there was lot of commonly used 'hacks' like db 66h to use 32 bit opcode in the 16 bit real mode, and lot of things that were hard to figure out if you weren't connected to a very good source of informations, because processor were basically running by default in a mode that was not the most advanced mode, and as DOS relied heavily uppon the bios, and on real mode, the computer was still booted in real mode and the dos was still majoritarily working in real mode, and win3.11 just ate too much memory to be able to run any interesting game, and didn't provide any meaningull api or advantage over vga or vesa, and even office application were still running in text mode, the only meaningull game that was running on win3.11 was actually the warcraft 2 editor and it stayed like that for a long time, i can't think of even a single game that required win3.1 to work
when i look at what was going on at the same time on amgia, with an integrated blitter/copper, integrated sound chip, much easier to use and logical memory model, i can really understand why lot of people who were coding on amiga never switched to pc until very late, because pc was really a mess, but it's not only because of intel, ibm also made some mistake, like the way interupt/exeption were mapped were already supposed to a design flaw to begin with, there was never even any kind of decent for sound under dos, neither in the bios, and game progrmmer had to code themselve the drivers for all hardware that could be present, with autodection of the base addr/irq that was all the time failing lol compared as the design that was on c64 on amiga, it was still very weird thing
the only moment were dos and this whole system could have been really interestig is when C and 32 dos extender started to be common in the same time than glide and voodoo cards, but it's also when they *finally' moved massivly to the native 32 bit os like windows, but at that time, there were already a few game running under dos extender who could use 3D acceleration that was mind blowing, it's why i always keep in mind that implementing all the hardware acceleration must not be so hard and complicated in the bottom, at least in monotasking/full screen mode, as some game like jetfighter 3 could handle a bunch of 3D accelerated graphic card under dos without any os driver, and as all the os was running in 16 bit real mode, 32 bit extender program had about exclusive access to all the higher memory part and the protected mode
but it's more like a whole chain of mess and it's not only because of intel and 386, it's the whole pc architecture that was poorly designed from start, at least for multimedia, even the tsr system was not that much very advanced in term of design, it was purely mono task, mono user, without proper network or audio support, the only thing that saved the day was th vesa standard, and yet it was not that great compared to the hardware you could find on amigas, when i hear people who were really amiga programming guru, and the level of power you can reach using pure assembly, and the whole range of thing amiga could handle regarding handling of pallete, sprites, vbl, etc compared to what pc could handle in a standard manner, i can't help but to call the whole pc arch rather piece of crap, but ibm and microsoft are just buisness shark, and more buisness in mind totally than actually being geek and wanting to develop really programmer friendly or most efficient plateform, compared to engineer who designed amiga or c64
pc was very good for office like applications, and to provide a sort of rigid memory model to design simple application in secure and simple manner, dos was still pretty stable all together, i don't remember i had to reboot the comp following global crash under dos, on amiga it could be more frequent, on win95 well ahem lol
for me the major issue is that there never was a true 32 bit multi taking os for 386, in itself the 386 is not all that bad, but there was just so much of application base that used 16 bit real mode, many games as well, lot of games that were already port from amiga, that they just couldn't drop the compatibility, nobody would have bougth a new pc with 386 without even a proper os to use it's feature properly, basically you'd have to drop all the application base to still have the computer run in 16 bit real mode because they simply didn't have a real 32 bit multi tasking os that was suitable to develop games or advanced application, it would have been a very poor decision to do that, and so they dragged that for very long time, as most games and application were developped under dos with a 32 bit extender, and 32 bit extender cannot run in a true 32 bit multitaksing protected mode windowed OS either, so they were stuck with that
even the biggest commercial hit epic game of all time DOOM, used dos extender, it's still quite a shame when you think about it, how pc really lacked a true 32 bit protected mode multi tasked OS for barely 10 years to handle the 386 programming natively, and instead relied on dos extender, that messed up a lot the course of the design, i'm sure if they really had a well designed kick @$$ 32 bits multi tasking os at the time they released the 386, they could have been much more confortable with droping backward compatibility, but in the context, they just couldn't do that, as for most application, the pc architecture of the 386 didn't have much more to offer than the 286, and it would really have been shooting themselve in the balls to drop the compatibility