Skip to main content
Search type Search syntax
Tags [tag]
Exact "words here"
Author user:1234
user:me (yours)
Score score:3 (3+)
score:0 (none)
Answers answers:3 (3+)
answers:0 (none)
isaccepted:yes
hasaccepted:no
inquestion:1234
Views views:250
Code code:"if (foo != bar)"
Sections title:apples
body:"apples oranges"
URL url:"*.example.com"
Saves in:saves
Status closed:yes
duplicate:no
migrated:no
wiki:no
Types is:question
is:answer
Exclude -[tag]
-apples
For more details on advanced search visit our help page
Results tagged with
Search options not deleted user 18327

MS-DOS, the Microsoft Disk Operating System, its OEM-branded versions, and x86 DOS clones in general.

24 votes
7 answers
6k views

Did MS-DOS have any support for multithreading?

Common wisdom seems to be that MS-DOS was an exclusively single-threaded OS. Of course, implementing a scheduler would be possible, but the OS itself did not provide any facilities for multithreading, …
neuviemeporte's user avatar
11 votes
1 answer
604 views

How can I properly execute and clean up after a DOS MZ executable loaded into memory with in...

Ralf Brown's Interrupt List describes a subvariant of the DOS int21/4Bh function with AL=01, where the program is loaded into memory and a PSP + stack are allocated for it, but the program is not exec …
neuviemeporte's user avatar
7 votes
1 answer
686 views

What is the format of the static libraries shipping with legacy Microsoft C for DOS?

I have installed Microsoft C 5.10 on DOS 6.22. It created a 'LIB' directory with static libraries to link against. Now I need to extract the symbols and the code for the functions from them, but can't …
neuviemeporte's user avatar
3 votes

How can I make the Microsoft C compiler for DOS emit a loop with an intermediate jump to con...

TL;DR: It does not appear to be possible with the MS compiler, but I managed to get Borland Turbo C to emit the required code. Inspired by user JeremyP's suggestion that a different compiler might hav …
neuviemeporte's user avatar
3 votes
2 answers
511 views

Why does my MZ executable's BSS inflate by ~1,5KB after linking fopen() with MSC?

For a game reversing project, I am trying to undo linking with the C library performed by the MSC 5.1 C compiler+linker. To that end, I have created a simple executable that does nothing except refere …
neuviemeporte's user avatar
4 votes

Why does my MZ executable's BSS inflate by ~1,5KB after linking fopen() with MSC?

Turns out the MSC linker can put BSS data in an executable that is not referenced anywhere. I inspected the map file generated by the linker and found some public names (__bufin/__bufout/__buferr) aro …
neuviemeporte's user avatar
10 votes
3 answers
1k views

How can I make the Microsoft C compiler for DOS emit a loop with an intermediate jump to con...

I am trying to recreate the exact C source code from some 16bit DOS 8086 assembly generated by the MS C 5.0 compiler. After making some progress, I've hit a wall with the following code (annotated in …
neuviemeporte's user avatar
14 votes
Accepted

How can I make the Microsoft C compiler for DOS emit a loop with an intermediate jump to con...

It turns out that in MS C 5.1, in addition to all the /O... options there is one seemingly unrelated one that influences the optimizations for this compiler: /Zi. In the output of CL /help it is descr …
neuviemeporte's user avatar
8 votes
1 answer
705 views

How to make Microsoft C for MS-DOS emit an immediate-target far call into the data segment?

I am trying to recreate the C source code from some 16bit DOS 8086 assembly generated by the MS C 5.0 compiler. I've hit a wall with this far call instruction. 0000008D 9A2F0CB506 call 0x6b5:0 …
neuviemeporte's user avatar