proboard/PEXCALL.ASM

74 lines
1.1 KiB
NASM

% MODEL MEM_MOD
CODESEG
;PUBLIC __pex_dummy , __pex_set_pex_ds , __pex_set_pb_ds
PUBLIC _CallPEX
PROC _CallPEX
ARG p:PTR
push bp
mov bp,sp
les bx,[p]
mov ax,[es:bx+2] ; Get segment of function
or ax,ax
jz @@no_func
push ds
push [bp+16]
push [bp+14]
push [bp+12]
push [bp+10]
mov ds,[es:bx+4]
call [dword ptr es:bx]
add sp,8
pop ds
@@no_func:
pop bp
ret
ENDP _CallPEX
;PROC __pex_dummy
; ret
;ENDP __pex_dummy
;
;PROC __pex_set_pex_ds
; push bp
; mov bp,sp
; mov bx,[bp+6]
; mov ds,bx
; pop bp
; ret
;ENDP __pex_set_pex_ds
;
;PROC __pex_set_pb_ds
; push bp
; mov bp,sp
;
; mov bx,@Data
; mov ds,bx
; mov bx,[bp+6]
; mov cx,[bp+8]
; or bx,bx
; or bx,cx
; jz @@no_set
;
; pop bp
; ret
;
;@@no_set:
; xor ax,ax ; So PEX_RET returns NOT_HANDLED
; pop bp
; ret
;ENDP __pex_set_pb_ds
;
END