Luckily the .exe’s MZ header is pretty small. But in this case it was necessary: when DOS loads a .com binary, it can’t know how much memory it will need, so DOS just gives it all free memory. But then the program can’t launch another, because all memory is in use. So that’s why I had to add the MZ header which allows specifying the memory needs.
Luckily the .exe’s MZ header is pretty small. But in this case it was necessary: when DOS loads a .com binary, it can’t know how much memory it will need, so DOS just gives it all free memory. But then the program can’t launch another, because all memory is in use. So that’s why I had to add the MZ header which allows specifying the memory needs.