Don't disable a20 for "exit" int21/ah=4c

git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@654 6ac86273-5f31-0410-b378-82cca8765d1b
This commit is contained in:
Bart Oldeman 2003-08-28 20:25:09 +00:00
parent 8a7b83ab63
commit 68805961dc
3 changed files with 10 additions and 6 deletions

View File

@ -45,8 +45,7 @@ segment HMA_TEXT
; ;
; Special call for switching processes ; Special call for switching processes
; ;
; void exec_user(irp) ; void exec_user(iregs far *irp, int disable_a20)
; iregs far *irp;
; ;
global _exec_user global _exec_user
_exec_user: _exec_user:
@ -60,15 +59,20 @@ _exec_user:
pop ax ; return address (unused) pop ax ; return address (unused)
pop ax ; irp (user ss:sp) pop ax ; irp (user ss:sp)
pop dx pop dx
pop cx ; disable A20?
cli cli
mov ss,dx mov ss,dx
mov sp,ax ; set-up user stack mov sp,ax ; set-up user stack
sti sti
; ;
or cx,cx
POP$ALL POP$ALL
jz do_iret
extern _ExecUserDisableA20 extern _ExecUserDisableA20
jmp far _ExecUserDisableA20 jmp far _ExecUserDisableA20
do_iret:
iret
segment _LOWTEXT segment _LOWTEXT

View File

@ -373,7 +373,7 @@ UWORD get_machine_name(BYTE FAR * netname);
VOID set_machine_name(BYTE FAR * netname, UWORD name_num); VOID set_machine_name(BYTE FAR * netname, UWORD name_num);
/* procsupt.asm */ /* procsupt.asm */
VOID ASMCFUNC exec_user(iregs FAR * irp); VOID ASMCFUNC exec_user(iregs FAR * irp, int disable_a20);
/* new by TE */ /* new by TE */

View File

@ -314,7 +314,7 @@ int load_transfer(UWORD ds, exec_blk *exp, UWORD fcbcode, COUNT mode)
if (InDOS) if (InDOS)
--InDOS; --InDOS;
exec_user(irp); exec_user(irp, 1);
/* We should never be here /* We should never be here
fatal("KERNEL RETURNED!!!"); */ fatal("KERNEL RETURNED!!!"); */
@ -528,7 +528,7 @@ VOID return_user(void)
if (InDOS) if (InDOS)
--InDOS; --InDOS;
exec_user((iregs FAR *) q->ps_stack); exec_user((iregs FAR *) q->ps_stack, 0);
} }
COUNT DosExeLoader(BYTE FAR * namep, exec_blk * exp, COUNT mode, COUNT fd) COUNT DosExeLoader(BYTE FAR * namep, exec_blk * exp, COUNT mode, COUNT fd)