SVC_ERROREXIT

Terminate MVM with an error message. This call displays a message and then terminates the current MVM session.

Parameters

Register	Description
Stack (top)	Far pointer (segment:offset) to an ASCIIZ message string. The message is displayed by the host system before termination.

Return Value

This function does not return; it terminates the MVM.

Description

SVC_ERROREXIT provides a way to terminate the MVM (Multiple Virtual DOS Machine) with a user‑supplied error message. It is specific to the OS/2 MVDM environment and has no direct equivalent in DOS INT 21h (the closest is AH=4Ch, which terminates without a message).

Before invoking the call, the far pointer (segment and offset) of a null‑terminated ASCII string must be pushed onto the stack. The host system (OS/2) will display the message and then terminate the virtual machine.

The low‑level instruction sequence generated for this SVC is:

HLT
DB 1 ; function code
DB NOT 1 ; complement of function code (for validation)

Example

The following example shows how to terminate with an error message using assembly language:

push ds push offset msg hlt db 1 db not 1 msg db "Fatal error",0

In a high‑level language (e.g., C with inline assembly), you could use a helper macro:

#define SvcErrorExit(msg) \ __asm { \ push ds \ push offset msg \ hlt \ _emit 1 \ _emit ~1 \ }

Notes

* The message string must be in the ASCIIZ format (zero‑terminated). * After this call, the MVM is terminated and control returns to the host operating system. * Because the call never returns, no register values are preserved.

See Also

* SVC_EXIT – terminate without a message. * SVC_DUPHANDLE – duplicate handle. * INT 21h AH=4Ch – DOS terminate with return code.

SVC API
Supervisor calls	0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
Structures	FCB XFCB FILETIME FILEDATE