blob: 5f98f704c038eef3892ff8a520e8209481a7d24e (
plain) (
blame)
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
|
;
page 60,132
;
title CP/DOS DosExit mapper
;
dosxxx segment byte public 'dos'
assume cs:dosxxx,ds:nothing,es:nothing,ss:nothing
;
;**********************************************************************
;*
;* MODULE: dosexit
;*
;* FUNCTION: Exit a process
;*
;* CALLING SEQUENCE:
;*
;* push word action code
;* push word result code
;* call dosexit
;*
;* MODULES CALLED: DOS Int 21h, Function 4ch, terminate process
;*
;*********************************************************************
public dosexit
.sall
include macros.inc
str struc
old_bp dw ?
return dd ?
Result dw ? ; result code
Action dw ? ; action code
str ends
dosexit proc far
Enter DosExit ; push registers
mov ax,[bp].action ; set resule code area
cmp ax,1 ; check for valid action code
jg exit ; jump if invalid action code
mov ax,[bp].result ; else, set result code
mov ah,4ch ; load opcode
int 21h ; do exit
xor ax,ax ; set good return code
exit: mexit ; pop registers
ret size str - 6 ; return
dosexit endp
dosxxx ends
end
|