ùúùú  Û  Y  ÿ=;—ÿ=;—ÿ=;—ÿ=;—  wÿ=;—;
;Fill a Vector
;by R.The.K./RDST with help from piontal [he find addq #1,y1]
;$77
;$76

Szerokosc	equ	64

WAITBLITTER:	MACRO
	btst	#14,2(a5)
	bne.s	*-6
	ENDM


Ekran	equ	$60000

	Section	VeckCostam,Code_C		;Code to chip

	move.l	#Start,$80.w
	trap	#0
	rts
Start:
	movem.l	d0-d7/a0-a6,-(sp)
	lea	$dff000,a5	;custom

	bsr	clear
	bsr	ilszlo ;wierzcholki *4
	bsr	sizeinit

	move.l	#$50000,Ekran2

	lea	Adr,a0	;copper
	moveq	#1-1,d0
	move.l	Ekran2(pc),d1
	moveq	#40,d4
	bsr	CoppLoop

	lea	Copper(pc),a0
	move.l	a0,$80(a5)

V0:
	cmp.b	#$12,6(a5)
	bne.s	V0

**   **
* * * *
*  *  *
*     *
*     *ain Loop

	move	#510,KatObrotu	;Start kata
	move	#0*2,KatObrotuX	;Start kata
	move	#0*2,KatObrotuY	;Start kata
	move	#0*2,KatObrotuZ	;Start kata

	lea	SinusTable(pc),a3
	lea	128+SinusTable(pc),a4
	lea	Ekran,a2
	move	#$0040,$60(a5)	;BLTCMOD szer ekranu
	move	#$ffff,$72(a5) ;BLTB Data
	move	#$8000,$74(a5) ;BLTA Data
	move	#$ffff,$44(a5)		;BLTAFWM
MainLoop:

	btst	#2,$16(a5)	;RMB
	beq	End

	subq	#2*2,KatObrotux		;Kat
	bpl.s	suby
	move	#510,KatObrotux

suby
	subq	#3*2,KatObrotuy		;Kat
	bpl.s	subz
	move	#510,KatObrotuy

subz
	not	bleez
	bne.s	gsin
	subq	#1*2,KatObrotuz		;Kat
	bpl.s	gsin
	move	#510,KatObrotuz

;	subq	#1,Movey
;	subq	#1,Movez
;	subq	#1,Movex
GSin:


	moveq	#0,d0
	move.b	6(a5),d0
	cmp	Worst(pc),d0
	bmi.s	noworst
	move	d0,Worst
NoWorst

	move	#$0300,$180(a5)	*
Vertical:
	cmp.b	#-1,6(a5)
	bne.s	Vertical
*	move	#$000,$180(a5)	*

;BlitterFill:
	WAITBLITTER

	move.l	#Ekran+220*Szerokosc+38,$50(a5)		;BLTAPT
	move.l	Ekran2(pc),a0
	add.l	#220*Szerokosc+38,a0
	move.l	a0,$54(a5)		;BLTDPT
	move.l	#$09f0000a,$40(a5)	;BLTCON0 D=A con1 inclus f,desc mode
	move.l	#$00180018,$64(a5)		;BLTAMOD i d
	move	#[190*64]+[40/2],$58(a5)	;BLTSIZE


****
*   *
*   *
***
*  *
*   *
*   *otateZ
;X=x*cosA-y*sinA
;Y=x*sinA+y*cosA
;Z=z

RotateZ:
;Z
	move	KatObrotuz(pc),d3	;Kat Alpha
	move	(a3,d3),d2	;Sinus Alpha
	move	(a4,d3),d3	;Cos Alpha

	move	#Ilosc-1,d7
	lea	Pos(pc),a0
	lea	PrzekretPos(pc),a1

RotZ:
	move	(a0)+,d0 ;x
	move	(a0)+,d1 ;y

	move	d0,d4	;Save x
	move	d1,d5	;Save y

	muls	d3,d4	;x*cosA
	muls	d2,d5	;y*sinA
	sub.l	d5,d4	;(x*cosA)-(y*sinA) ;w razie czego na .l
	asr.l	#8,d4	;x'

	muls	d2,d0	;x*sinA
	muls	d3,d1	;y*cosA
	add.l	d0,d1	;(x*sinA)-(y*cosA)
	asr.l	#8,d1	;y'

	move	d4,(a1)+ ;x
	move	d1,(a1)+ ;y
	move	(a0)+,(a1)+ ;z
	dbf d7,RotZ

	move	#Ilosc-1,d7
	lea	PrzekretPos(pc),a0
	lea	PrzekretPos(pc),a1
;X
	move	KatObrotux(pc),d3		;Kat Alpha
	move	(a3,d3),d2	;Sinus Alpha
	move	(a4,d3),d3	;Cos Alpha

;X=x
;Y=y*cosA-z*sinA
;Z=y*sinA+z*cosA
RotX:
	addq.l	#2,a0 ;x
	move	(a0)+,d5 ;Y
	move	(a0)+,d6 ;Z

	move	d5,d1	;Save y
	move	d6,d4	;Save z

	muls	d3,d1	;y*cosA
	muls	d2,d4	;z*sinA
	sub.l	d4,d1	;(y*cosA)-(z*sinA)
	asr.l	#8,d1	;y'

	muls	d2,d5	;y*sinA
	muls	d3,d6	;z*cosA
	add.l	d6,d5	;(y*sinA)+(z*cosA)
	asr.l	#8,d5	;z'

	addq.l #2,a1 ;x
	move	d1,(a1)+ ;y
	move	d5,(a1)+ ;z

	dbf	d7,RotX

	move	#Ilosc-1,d7
	lea	PrzekretPos(pc),a0
	lea	PrzekretPos(pc),a1

	move	KatObrotuy(pc),d3	;Kat Alpha
	move	(a3,d3),d2	;Sinus Alpha
	move	(a4,d3),d3	;Cos Alpha

;x'=x*cosA-z*sinA
;y'=y
;y'=x*sinA+z*cosA
RotateY:
	move	(a0)+,d0 ;x
	move	(a0)+,d6 ;y
	move	(a0)+,d1 ;z

	move	d0,d4	;Save x'
	move	d1,d5	;Save z'

	muls	d3,d0	;x*cosA
	muls	d2,d1	;z*sinA
	sub.l	d1,d0	;(x*cosA)-(z*sinA)
	asr.l	#8,d0	;x''

	muls	d2,d4	;x*sinA
	muls	d3,d5	;z*cosA
	add.l	d4,d5	;(x*sinA)+(z*cosA)
	asr.l	#8,d5	;z''

;x1= x*(zmax-z)/zmax
;y1= y*(zmax-z)/zmax

Zmax	equ	4096

;THREE_D_to_TWO_D:

*	add	Movex,d0
*	add	Movey,d1
*	add	Movez,d6

Przel2:
	add	#-Zmax,d5	;(zmax-z)
	muls	d5,d0		;(zmax-z)*X
	asl.l	#4,d0 ;/zmax
	swap	d0
*	ror.l	#8,d0		;(zmax-z)*X/Zmax=x2D
*	ror.l	#1,d0		;(zmax-z)*X/Zmax=x2D

	muls	d5,d6		;(zmax-z)*Y
	asl.l	#4,d6 ;/zmax
	swap	d6
*	ror.l	#8,d6		;(zmax-z)*Y/Zmax=y2D
*	ror.l	#1,d6		;(zmax-z)*Y/Zmax=y2D

	add	#SrodekX,d0		;Srodek Ekranu X
	add	#SrodekY,d6		;Srodek Ekranu Y

	move	d0,(a1)+ ;x2d
	move	d6,(a1)+ ;y2d
	dbf	d7,RotateY


	WAITBLITTER

	move.l	#Ekran+25*Szerokosc,$54(a5) ;D
	move.l	#$01000000,$40(a5)
	move.l	#$00140014,$64(a5)	;MOD Aid
	move	#[190*64]+[44/2],$58(a5) ;SIZE


	move	#ilosc_zlaczen-1,d7
	lea	co_z_czym(pc),a0
	lea	Przekretpos(pc),a1


	WAITBLITTER
;dla lini
	move	#$8000,$74(a5) ;BLTA Data
	move	#$0040,$66(a5)	;BLTDMOD szer ekranu od czasu do czasu
	move.l	a2,$48(a5) ;BLTCPT start lini
	move.l	a2,$54(a5) ;BLTDPT start lini
*	move	#$20,$180(a5)
Plot: ;or draw
	moveq	#0,d0
	moveq	#0,d1
	moveq	#0,d2
	moveq	#0,d3

	move	(a0)+,d1
	movem	(a1,d1.w),d0-d1	;x1
;	move	2(a1,d1),d1	;y1

	move	(a0)+,d3
	movem	(a1,d3.w),d2-d3	;x2
;	move	2(a1,d3),d3	;y2


	cmp	d1,d3
	bne.s	drawit
	dbf	d7,plot
	bra	mainloop
drawit
	bpl.s	nCH
	exg	d0,d2
	ex