mirror of
https://github.com/FDOS/kernel.git
synced 2025-07-15 01:44:29 +02:00
Fixed bugs in entry.asm: stack segment and int 2A/82 Ralf Brown compliant.
git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@179 6ac86273-5f31-0410-b378-82cca8765d1b
This commit is contained in:
parent
58a5fa4438
commit
d233a1d304
@ -1,3 +1,6 @@
|
|||||||
|
2001 Mar 27 - Build 2023
|
||||||
|
-------- Bart Oldeman (bart.oldeman@bristol.ac.uk)
|
||||||
|
+ Fixes Bug fix release 2023a: fixed stack segment bug in entry.asm.
|
||||||
2001 Mar 25 - Build 2023
|
2001 Mar 25 - Build 2023
|
||||||
-------- Bart Oldeman (bart.oldeman@bristol.ac.uk)
|
-------- Bart Oldeman (bart.oldeman@bristol.ac.uk)
|
||||||
+ Fixes sys.com compilation: it is a proper .com and works again.
|
+ Fixes sys.com compilation: it is a proper .com and works again.
|
||||||
|
@ -28,6 +28,9 @@
|
|||||||
; $Id$
|
; $Id$
|
||||||
;
|
;
|
||||||
; $Log$
|
; $Log$
|
||||||
|
; Revision 1.7 2001/03/27 02:56:58 bartoldeman
|
||||||
|
; Fixed bugs in entry.asm: stack segment and int 2A/82 Ralf Brown compliant.
|
||||||
|
;
|
||||||
; Revision 1.6 2001/03/24 22:13:05 bartoldeman
|
; Revision 1.6 2001/03/24 22:13:05 bartoldeman
|
||||||
; See history.txt: dsk.c changes, warning removal and int21 entry handling.
|
; See history.txt: dsk.c changes, warning removal and int21 entry handling.
|
||||||
;
|
;
|
||||||
@ -255,12 +258,12 @@ int21_user:
|
|||||||
;
|
;
|
||||||
; DX=DGROUP
|
; DX=DGROUP
|
||||||
; CX=STACK
|
; CX=STACK
|
||||||
; AX=userSS
|
; SI=userSS
|
||||||
; BX=userSP
|
; BX=userSP
|
||||||
|
|
||||||
|
|
||||||
int21_1:
|
int21_1:
|
||||||
mov ax,ss ; save user stack, to be retored later
|
mov si,ss ; save user stack, to be retored later
|
||||||
mov bx,sp
|
mov bx,sp
|
||||||
|
|
||||||
|
|
||||||
@ -304,7 +307,7 @@ int21_onerrorstack:
|
|||||||
mov sp,cx
|
mov sp,cx
|
||||||
sti
|
sti
|
||||||
|
|
||||||
push ax ; user SS:SP
|
push si ; user SS:SP
|
||||||
push bx
|
push bx
|
||||||
|
|
||||||
call _int21_service
|
call _int21_service
|
||||||
@ -312,9 +315,13 @@ int21_onerrorstack:
|
|||||||
|
|
||||||
|
|
||||||
int21_2: inc byte [_InDOS]
|
int21_2: inc byte [_InDOS]
|
||||||
cmp ah,0ch
|
|
||||||
mov cx,_char_api_tos
|
mov cx,_char_api_tos
|
||||||
|
or ah,ah
|
||||||
|
jz int21_3
|
||||||
|
cmp ah,0ch
|
||||||
jle int21_normalentry
|
jle int21_normalentry
|
||||||
|
cmp ah,59h
|
||||||
|
je int21_normalentry
|
||||||
|
|
||||||
int21_3:
|
int21_3:
|
||||||
call dos_crit_sect
|
call dos_crit_sect
|
||||||
@ -332,7 +339,7 @@ int21_normalentry:
|
|||||||
; int21_syscall and remainder of kernel.
|
; int21_syscall and remainder of kernel.
|
||||||
;
|
;
|
||||||
|
|
||||||
push ax ; user SS:SP
|
push si ; user SS:SP
|
||||||
push bx
|
push bx
|
||||||
call _int21_service
|
call _int21_service
|
||||||
|
|
||||||
@ -346,10 +353,10 @@ int21_exit: dec byte [_InDOS]
|
|||||||
|
|
||||||
int21_exit_nodec:
|
int21_exit_nodec:
|
||||||
pop bx ; get back user stack
|
pop bx ; get back user stack
|
||||||
pop ax
|
pop si
|
||||||
|
|
||||||
cli
|
cli
|
||||||
mov ss,ax
|
mov ss,si
|
||||||
mov sp,bx
|
mov sp,bx
|
||||||
sti
|
sti
|
||||||
int21_ret: POP$ALL
|
int21_ret: POP$ALL
|
||||||
|
Loading…
x
Reference in New Issue
Block a user