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:
parent
8a7b83ab63
commit
68805961dc
@ -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
|
||||||
|
|
||||||
|
@ -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 */
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
Loading…
Reference in New Issue
Block a user