Microsoft has released the code to MS-DOS 4.00 on GitHub; Dave takes you a tour of the code, builds it, and runs it on original hardware. For my book on lif...
Wonder what the reason was for so much being in raw assembly when C existed. A basic library/API would be one of the first things I’d tackle in an OS. Move on to a higher level as soon as you’re able.
Because Ryan wrote it like this 10 years ago and nobody bothered to rewrite it in C.
Back then, I’d guess most developers were relatively fluent in assembly, so if there’s only a small change to make, they’d just change the assembly and move on.
C compilers (at least on personal computers) weren’t great at optimization back then and every kilobyte mattered - the user only got 640 of them, going beyond that required jumping through hoops.
Similar for MHz, hand optimization was important for performance since there was so little CPU time to go around.
Compilers were much less complex back then and didn’t do a great deal of optimisation. Also hardware was slow, so your compiled code, which wasn’t necessarily optimal either before or after the compilation phase, was at least half as fast as you wanted it to be.
Wonder what the reason was for so much being in raw assembly when C existed. A basic library/API would be one of the first things I’d tackle in an OS. Move on to a higher level as soon as you’re able.
Because Ryan wrote it like this 10 years ago and nobody bothered to rewrite it in C.
Back then, I’d guess most developers were relatively fluent in assembly, so if there’s only a small change to make, they’d just change the assembly and move on.
C compilers (at least on personal computers) weren’t great at optimization back then and every kilobyte mattered - the user only got 640 of them, going beyond that required jumping through hoops.
Similar for MHz, hand optimization was important for performance since there was so little CPU time to go around.
Compilers were much less complex back then and didn’t do a great deal of optimisation. Also hardware was slow, so your compiled code, which wasn’t necessarily optimal either before or after the compilation phase, was at least half as fast as you wanted it to be.
If you wanted speed, you hand-rolled assembly.