File: lowexec.asm

package info (click to toggle)
dosemu-freedos 1%3A0.0.b9r5a%2Betch.1-0etch1
  • links: PTS
  • area: contrib
  • in suites: etch
  • size: 19,744 kB
  • ctags: 23,279
  • sloc: ansic: 143,864; asm: 20,397; makefile: 3,868; perl: 1,106; yacc: 690; sh: 553; pascal: 297; xml: 150; cpp: 67
file content (83 lines) | stat: -rw-r--r-- 2,313 bytes parent folder | download | duplicates (2)
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
; $Id: lowexec.asm,v 1.1 2001/04/12 00:33:53 skaus Exp $
;  LOWEXEC.ASM
;
;
;  Comments:
;
;  ??/??/95 (Steffen Kaiser)
;    started.
;
;  12/??/95 (Svante Frey)
;    reorganized the code
;
;  01/06/96 (Tim Norman)
;    added this history
;
;  08/07/96 (Steffen Kaiser)
;    made argument handling independent of memory model
; $Log: lowexec.asm,v $
; Revision 1.1  2001/04/12 00:33:53  skaus
; chg: new structure
; chg: If DEBUG enabled, no available commands are displayed on startup
; fix: PTCHSIZE also patches min extra size to force to have this amount
;    of memory available on start
; bugfix: CALL doesn't reset options
; add: PTCHSIZE to patch heap size
; add: VSPAWN, /SWAP switch, .SWP resource handling
; bugfix: COMMAND.COM A:\
; bugfix: CALL: if swapOnExec == ERROR, no change of swapOnExec allowed
; add: command MEMORY
; bugfix: runExtension(): destroys command[-2]
; add: clean.bat
; add: localized CRITER strings
; chg: use LNG files for hard-coded strings (hangForEver(), init.c)
; 	via STRINGS.LIB
; add: DEL.C, COPY.C, CBREAK.C: STRINGS-based prompts
; add: fixstrs.c: prompts & symbolic keys
; add: fixstrs.c: backslash escape sequences
; add: version IDs to DEFAULT.LNG and validation to FIXSTRS.C
; chg: splitted code apart into LIB\*.c and CMD\*.c
; bugfix: IF is now using error system & STRINGS to report errors
; add: CALL: /N
;
; Revision 1.1.1.1.4.1  2001/02/18 17:59:36  skaus
; bugfix: KSSF: restore parentPSP on exit
; chg: Using STRINGS resource for all non-interactive messages
; chg: moving all assembly files to NASM
;

%include "../include/model.inc"
%include "../include/stuff.inc"

segment _TEXT
	GLOBAL _lowLevelExec

_lowLevelExec:
	push    bp
	mov     bp, sp
	push    si, di, ds

	lds     dx, [bp+4+2*@CodeSize]      ; load file name
	les     bx, [bp+8+2*@CodeSize]      ; load parameter block
	mov     ax, 4b00h

	mov     Word [cs:saveSP], sp
	mov     Word [cs:saveSS], ss
	int     21h
	cli						;; Can be removed for post-8086 CPUs
	mov     ss, [cs:saveSS]
	mov     sp, [cs:saveSP]
	sti

	jc      exec_error   ; if there was an error, the error code is in AX
	xor     ax, ax       ; otherwise, clear AX

exec_error:
	pop    si, di, ds
	pop     bp
	ret

saveSP dw 0
saveSS dw 0

	end