windows-nt/Source/XPSP1/NT/base/mvdm/wow16/wfwnet/ints.asm

159 lines
3.6 KiB
NASM
Raw Normal View History

2020-09-26 03:20:57 -05:00
include isvbop.inc
.286
.model medium,pascal
_DATA segment word public 'DATA'
Old2fHandler dd ?
Old73Handler dd ?
VddHandle dw -1
DllName db "VWIPXSPX.DLL",0
InitFunc db "VwInitialize",0
DispFunc db "VwDispatcher",0
_DATA ends
INIT_TEXT segment byte public 'CODE'
assume cs:INIT_TEXT
GrabInterrupts proc far
pusha
push ds
push es
push _DATA
pop ds
assume ds:_DATA
push ds
pop es
mov si,offset DllName ; ds:si = library name
mov di,offset InitFunc ; es:di = init function name
mov bx,offset DispFunc ; ds:bx = dispatcher function name
RegisterModule ; returns carry if problem
jc @f
mov VddHandle,ax
mov ax,352fh
int 21h
mov word ptr Old2fHandler,bx
mov word ptr Old2fHandler+2,es
ifdef NEC_98
mov ax,3513h
else ; NEC_98
mov ax,3573h
endif ; NEC_98
int 21h
mov word ptr Old73Handler,bx
mov word ptr Old73Handler+2,es
push seg PmIpx2fHandler
pop ds
assume ds:nothing
mov dx,offset PmIpx2fHandler
mov ax,252fh
int 21h
mov dx,offset PmIpx73Handler
ifdef NEC_98
mov ax,2513h
else ; NEC_98
mov ax,2573h
endif ; NEC_98
int 21h
@@: pop es
pop ds
popa
ret
GrabInterrupts endp
INIT_TEXT ends
_TEXT segment byte public 'CODE'
assume cs:_TEXT
public PmIpx2fHandler
PmIpx2fHandler proc
cmp ax,1684h
jne @f
cmp bx,200h
jne @f
push cs
pop es
mov di,offset PmIpxEntryPoint
iret
@@: push bp
mov bp,sp
push ax
push ds
mov ax,_DATA
mov ds,ax
assume ds:_DATA
push word ptr Old2fHandler+2
push word ptr Old2fHandler
mov ds,[bp-4]
mov ax,[bp-2]
mov bp,[bp]
retf 6
PmIpx2fHandler endp
public PmIpx73Handler
PmIpx73Handler proc
push ds
push es
pusha
mov bx,_DATA
mov ds,bx
assume ds:_DATA
mov ax,VddHandle
mov bx,-2
DispatchCall ; get ECB
jc @f
call dword ptr es:[si][4] ; branch to the ESR
mov al,20h
ifdef NEC_98
out 08h,al ; clear slave pic
out 00h,al ; " master "
else ; NEC_98
out 0a0h,al ; clear slave pic
out 20h,al ; " master "
endif ; NEC_98
popa
pop es
pop ds
assume ds:nothing
iret
@@: popa
pop es
push bp
mov bp,sp
push _DATA
pop ds
assume ds:_DATA
push word ptr Old73Handler+2
push word ptr Old73Handler
mov ds,[bp+2]
assume ds:nothing
mov bp,[bp]
retf 4
PmIpx73Handler endp
public PmIpxEntryPoint
PmIpxEntryPoint proc
push bp
push ds
push _DATA
pop ds
assume ds:_DATA
mov bp,ax
mov ax,VddHandle
pop ds
assume ds:nothing
DispatchCall
pop bp
ret
PmIpxEntryPoint endp
_TEXT ends
end