en:docs:mvm:api:1

This is an old revision of the document!


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.

Interface

/* SVC_ERROREXIT – terminate with error message (far pointer on stack) */
extern void SvcErrorExit(const char far *msg);
#pragma aux SvcErrorExit = \
    "hlt"           \
    "db  1"         \
    "db  NOT 1"     \
    parm caller [] [msg] \
    modify [ax bx cx dx];

Example

MASM

include macrolib.inc
 
    push ds
    push offset msg
    @SvcErrorExit
 
msg db "Fatal error",0

C

#include <svc.h>
 
void main(void) {
    SvcErrorExit("Fatal error");
}

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

2024/11/07 03:44 · prokushev · 0 Comments