summaryrefslogtreecommitdiff
path: root/reference/C/CONTRIB/SNIP/int2e.asm
blob: e8c370e45b0564477c78672f2ffa3d0c92a84afc (plain)
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
        PAGE    55,132
        .LIST
;
;       Interrupt 2Eh Call
;
;               From information originally published in
;               PC magazine, April 28, 1987. Requires
;               MASM 5.1 or later.
;
;               Adapted by Bob Stout.
;
;       NOTES:  INT 2Eh passes a formatted command line
;               directly to the resident portion of
;               COMMAND.COM for execution. It functions
;               similarly to the 'EXEC' function in DOS
;               but is generally quicker. This is an
;               undocumented DOS function and is subject
;               to change in future releases of DOS. It
;               also aborts any .BAT file which invokes
;               a program which uses it. Use with care!
;
;  Assemble with:       MASM /Mx /z ...
;                       TASM /jMASM /mx /z ...
;
 
%       .MODEL  memodel,C               ;Add model support via
                                        ;command line macros, e.g.
                                        ;MASM /Mx /Dmemodel=LARGE
 
        .CODE
 
        PUBLIC  _Int_2E
 
_Int_2E PROC    USES SI DI DS ES, command:PTR
        Mov     CS:SaveSP,SP
        Mov     CS:SaveSS,SS
    IF @DataSize
        Lds     SI,command
    ELSE
        Mov     SI,command
    Endif
 
        Int     2Eh
 
        Mov     AX,CS:SaveSS
        Mov     SS,AX
        Mov     SP,CS:SaveSP
        Ret
 
SaveSS  Dw      ?
SaveSP  Dw      ?
 
_Int_2E ENDP
 
        End