SVC_ERROREXIT

Brief

Terminate MVM with error message (far pointer to ASCIIZ message on stack)

Input

Stack (top) = far pointer (segment:offset) to an ASCIIZ message string

Return

This function does not return. The MVM is terminated and control passes to the host operating system.

Notes

The message must be a null‑terminated ASCII string.

The far pointer must be pushed onto the stack (segment first, then offset) before issuing the HLT instruction.

Because the call never returns, no registers are preserved and the carry flag is undefined.

Binding

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"); }

The underlying pragma is defined as:

extern void SvcErrorExit(const char far *msg); #pragma aux SvcErrorExit = \ "hlt" \ "db 1" \ "db NOT 1" \ parm caller [] [msg] \ modify [ax bx cx dx];

See also

SVC_EXIT – terminate without a message

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