; Unless declared otherwise all
; values are type short
; setjmp(array pointer) : set
; environment of 3 integers,
; returns 0
; array -> bp of calling function
; sp current
; address of setjmp return
PUBLIC setjmp
set jmp PROC NEAR
;
mov bx,sp
mov ax,ss:[bx]
mov bx,ss:[bx+2]
mov ss:[bx],bp
mov ss:[bx+2],sp
mov ss:[bx+4],ax
xor ax,ax
ret
;
setjmp ENDP
; longjmp(array pointer, constant) :
; non local goto, returns constant
PUBLIC longjmp
longjmp PROC NEAR
;
xor ax,ax
mov bp,sp
mov bx,[bp+2]
mov ax,[bp+4]
or ax,ax
jne L1
inc ax
L1:
mov bp,ss:[bx]
mov sp,ss:[bx+2]
mov cx,ss:[bx+4]
mov bx,sp
mov ss:[bx],cx
ret
;
longjmp ENDP