
.386p
CODE32 SEGMENT PARA PUBLIC USE32
ASSUME cs:CODE32, ds:CODE32

		include pmode.inc

		EXTRN	screen		:BYTE
		EXTRN	pal_pom		:BYTE
		PUBLIC	set_mode13
		PUBLIC	set_mode3
		PUBLIC	pal_fadein10
		PUBLIC	pal_white
		PUBLIC	pal_black
		PUBLIC	pal_fadein
		PUBLIC	pal_fadeout
		PUBLIC	pal_fadewhite
		PUBLIC	pal_set
		PUBLIC	pal_set_nr
		PUBLIC	synch
		PUBLIC	ekran
		PUBLIC	copyekran
		PUBLIC	blur
		PUBLIC	siej
		EXTRN	t’o		:BYTE

; esi-from <mem>
; edi-to <mem>
copyEkran	PROC
		mov	ecx,16000
		rep	movsd
		ret
copyEkran	ENDP

; esi-draw piccy on shitty display
ekran		PROC
		@rlp	edi,0a0000h
		mov	ecx,16000
		rep	movsd
		ret
ekran		ENDP

set_mode13	PROC
		mov	v86r_ax,13h
		mov	al,10h
		int	33h
		ret
set_mode13	ENDP

set_mode3	PROC
		mov	v86r_ax,3
		mov	al,10h
		int	33h
		ret
set_mode3	ENDP

; edi-palette where is to
; bl -how many obieg¢w in fade palette
pal_fadein10	PROC
		push	edi
		call	pal_read
		pop	edi
		lea	esi,pal_pom
		mov	ecx,768
	@pv1:	mov	al,byte ptr [esi]
		cmp	al,byte ptr [edi]
		je	@pv2
		cmp	al,byte ptr [edi]
		jb	@pv3
		sub	al,bl
		OR	AL,AL
		JS	@PN1
		cmp	al,byte ptr [edi]
		jae	@pw1
	@PN1:	mov	al,byte ptr [edi] ;dd
	@pw1:	mov	byte ptr [esi],al
		jmp	@pv2
	@pv3:	add	al,bl
		cmp	al,byte ptr [edi]
		jbe	@pw2
		mov	al,byte ptr [edi] ;dd
	@pw2:	mov	byte ptr [esi],al	
	@pv2:	inc	esi
		inc	edi
		loop	@pv1
		lea	esi,pal_pom
		call	pal_set
		ret
pal_fadein10	ENDP

pal_white	PROC
		lea	edi,pal_pom
		mov	ecx,768/4
		mov	eax,03f3f3f3fh
		rep	stosd
		lea	esi,pal_pom
		call	pal_set
		ret
pal_white	ENDP

pal_black	PROC
		lea	edi,pal_pom
		mov	ecx,768/4
		xor	eax,eax
		rep	stosd
		lea	esi,pal_pom
		call	pal_set
		ret
pal_black	ENDP

; esi-palette where is from
; edi-palette where is to
pal_fadein	PROC
		push	edi
		call	pal_set
		call	pal_read
		pop	edi
		lea	esi,pal_pom
		mov	ecx,64
	@pii:	mov	zm,0
		push	ecx esi edi
		mov	ecx,768
	@pi1:	mov	al,byte ptr [esi]
		cmp	al,byte ptr [edi]
		je	@pi2
		jb	@pi3
		dec	al
		mov	byte ptr [esi],al
		mov	zm,1
		jmp	@pi2
	@pi3:	inc	al
		mov	byte ptr [esi],al	
		mov	zm,1
	@pi2:	inc	esi
		inc	edi
		loop	@pi1
		lea	esi,pal_pom
		call	pal_set
		pop	edi esi ecx
		mov	al,zm
		or	al,al
		jz	@piend
		loop	@pii
	@piend:	ret
		zm	db 0
pal_fadein	ENDP

pal_read	PROC
		lea	edi,pal_pom
		mov	dx,03c7h
		xor	eax,eax
		out	dx,al
		inc	dx
		inc	dx
		mov	ecx,768
		rep	insb
		ret
pal_read	ENDP

pal_fadewhite	PROC
		LOCAL	arpi
		call	pal_read
		mov	ecx,64
		lea	edi,pal_pom
	@pfi:	push	ecx edi
		mov	ecx,768
	@pfi2:	mov	al,byte ptr [edi]
		cmp	al,63
		je	@pfi3		
		inc	al
		mov	byte ptr [edi],al
	@pfi3:	inc	edi
		loop	@pfi2
		lea	esi,pal_pom
		call	pal_set
		pop	edi ecx
		loop	@pfi
		ret
pal_fadewhite	ENDP

pal_fadeout	PROC
		LOCAL	arpi
		call	pal_read
		mov	ecx,64
		lea	edi,pal_pom
	@pfo:	push	ecx edi
		mov	ecx,768
	@pfo2:	mov	al,byte ptr [edi]
		or	al,al
		jz	@pfo3		
		dec	al
		mov	byte ptr [edi],al
	@pfo3:	inc	edi
		loop	@pfo2
		lea	esi,pal_pom
		call	pal_set
		pop	edi ecx
		loop	@pfo
		ret
pal_fadeout	ENDP

synch		PROC
		mov	dx,03dah
	@arpi:	in	al,dx
		test	al,8
		je	@arpi
		ret
synch		ENDP

; esi-palette where is from
pal_set		PROC
		call	synch
		mov	dx,03c8h
		xor	eax,eax
		out	dx,al
		inc	edx
		mov	ecx,768
		rep	outsb
		ret
pal_set		ENDP

; esi-palette where is from
;  al-start of color to paletting
; ecx-number of colors  
pal_set_nr	PROC
		push	eax
		call	synch
		pop	eax
		lea	ecx,[ecx+ecx*2]
		mov	dx,03c8h
		out	dx,al
		inc	edx
		rep	outsb
		ret
pal_set_nr	ENDP

blur		PROC
		mov	ecx,64000
		@rlp	edi,0a0000h
		lea	esi,screen
	@lur:	xor	eax,eax
		mov	al,byte ptr [edi]
		lea	edx,[eax*8]
		shl	eax,1
		sub	edx,eax 
		mov	al,byte ptr [esi]
		lea	edx,[edx+eax*2]
		shr	edx,3
		and	dl,00111111b
	okkk:	mov	byte ptr [esi],dl
		inc	esi
		inc	edi
		dec	ecx
		jnz	@lur
		call	synch
		lea	esi,screen
		call	ekran
		ret
blur		ENDP

comment	#
; tworzenie nielegularnego t’a...
                siej_where      dd offset t’o
siej            PROC
                ; sianie punkt¢w na ekranie
                mov     edi,siej_where
                mov     ecx,6
        @sie2:  push    ecx
                mov     ecx,1500
                xor     ebx,ebx
        @sie:   mov     bx,111h
        seed:   add     bx,6666h  ;9768h ;6665h
                ror     bx,1
                ror     bx,1
                ror     bx,1
                mov     word ptr [seed-2],bx
                mov     ax,64000-320
                mul     bx
                mov     bx,dx
                mov     al,colsi
                mov     byte ptr [edi+ebx+1],al
                mov     byte ptr [edi+ebx+2],al
                mov     byte ptr [edi+ebx+3],al
                mov     byte ptr [edi+ebx+322],al
                mov     byte ptr [edi+ebx-318],al
                mov     byte ptr [edi+ebx+321],al
                mov     byte ptr [edi+ebx+323],al
                mov     byte ptr [edi+ebx-319],al
                mov     byte ptr [edi+ebx+317],al
                loop    @sie
                pop     ecx
                inc     byte ptr [colsi]
                loop    @sie2
		mov	edi,siej_where
		mov	ecx,64000
	@slop:	mov	al,byte ptr [edi]
		cmp	al,LoCol
		ja	@sok
		mov	byte ptr [edi],LoCol
	@sok:	inc	edi
		loop	@slop
                ; soften...
                mov     ecx,4
       @sft:    push    ecx
                mov     ecx,64000-640
                mov     edi,siej_where
                add     edi,320
        Soft:   xor     ebx,ebx
                xor     eax,eax
                mov     al,byte ptr [edi+1]
                cbw
                add     bx,ax
                mov     al,byte ptr [edi-1]
                cbw
                add     bx,ax
                mov     al,byte ptr [edi+320]
                cbw
                add     bx,ax
                mov     al,byte ptr [edi-320]
                cbw
                add     bx,ax
                mov     al,byte ptr [edi+321]
                cbw
                add     bx,ax
                mov     al,byte ptr [edi+319]
                cbw
                add     bx,ax
                mov     al,byte ptr [edi-321]
                cbw
                add     bx,ax
                mov     al,byte ptr [edi-319]
                cbw
                add     bx,ax
                push    ecx
                mov     cl,3
                shr     bx,cl
                pop     ecx
                mov     byte ptr [edi],bl
                inc     edi
                loop    Soft
                pop     ecx
                loop    @sft
                mov     edi,siej_where
                lea     esi,[edi+640+640]
                mov     ecx,80
                rep     movsd
                sub     esi,640
                mov     ecx,80
                rep     movsd
                mov     ecx,80
                mov     edi,siej_where
                lea     esi,[edi+64000-640-640]
                add     edi,64000-640
                rep     movsd
                sub     esi,640
                mov     ecx,80
                rep     movsd
		mov	esi,siej_where
		mov	ecx,64000
	judd:	mov	al,byte ptr [esi]
		sub	al,218
		mov	byte ptr [esi],al
		inc 	esi
		loop	judd
                ret
                colsi   db  LoCol+10
		LoCol	equ 225 ;225
siej            ENDP
#

		include	siej
		include 666.scr

CODE32 ENDS
END
		
