[NTVDM]
authorAleksandar Andrejevic <aandrejevic@reactos.org>
Sat, 9 Nov 2013 18:10:21 +0000 (18:10 +0000)
committerAleksandar Andrejevic <aandrejevic@reactos.org>
Sat, 9 Nov 2013 18:10:21 +0000 (18:10 +0000)
Allow COM programs to exit with a simple near return to PSP:0000. Spotted by Thomas Faber.

svn path=/branches/ntvdm/; revision=60904

subsystems/ntvdm/dos.c

index df65a78..f56ed76 100644 (file)
@@ -1203,6 +1203,12 @@ BOOLEAN DosCreateProcess(LPCSTR CommandLine, WORD EnvBlock)
         /* Set the stack to the last word of the segment */
         EmulatorSetStack(Segment, 0xFFFE);
 
+        /*
+         * Set the value on the stack to 0, so that a near return
+         * jumps to PSP:0000 which has the exit code.
+         */
+        *((LPWORD)SEG_OFF_TO_PTR(Segment, 0xFFFE)) = 0;
+
         /* Execute */
         CurrentPsp = Segment;
         DiskTransferArea = MAKELONG(0x80, Segment);