*******************************************************
***   Line Vector example for TSB's Vectordesigner  ***
***   --------------------------------------------  ***
***                                                 ***
***               written by ALLOC                  ***
***                                                 ***
*******************************************************
;---------------------------------------
; a  (return)
;(return)
; y  (return)
; jm (return)

>extern	"df0:readyobjects/lineship.l",lineobject
org	$30000
load	$30000

clear: 	MACRO
	lea	$dff000,a5
	move.l	?1,$54(a5)
	move.w	?2,d0       ;x
	move.w	?3,d1       ;y
	move.w	#$0,$66(a5)
	move.w	#%0000000100000000,$40(a5)
	move.w	#0,$42(a5)
	lsl.w	#6,d1
	or.w	d1,d0
	move.w	d0,$58(a5)
	ENDM


m:
	
 		lea	$dff000,a5
		movem.l	d0-d7/a0-a6,-(a7)
		moveq	#61,d0
		lea	zero,a0
		lea	8,a1
copyzero:	move.l	(a1)+,(a0)+
		dbf	d0,copyzero
		move.l	#raus,$020
raus:		move.w	#$2700,sr
		adda	#6,a7
		move.l	a7,sstack
		move.l	#stackend,a7
		move.w	$1c(a5),intbuff
		move.w	#$7fff,$9a(a5)
		move.w	#$7fff,$9c(a5)
		bra.L	main		
oson:		move.w	#$2700,sr
		move.w	#$7fff,$9a(a5)
		move.w	intbuff(pc),d0
		ori.w	#$8000,d0
		move.w	d0,$9a(a5)
		moveq	#61,d0
		lea	zero(pc),a0
		lea	8,a1
zeroback:	move.l	(a0)+,(a1)+
		dbf	d0,zeroback
		move.l	sstack(pc),a7
		move.w	#0,sr
		movem.l	(a7)+,d0-d7/a0-a6
		rts
grname:		dc.b	"graphics.library",0
		align	4

zero:		blk.l	62,0
		align	4
sstack:		dc.l	0
stack:		blk.b	4048
stackend:
		align	4

intbuff:	dc.l	0
		align	4
main:		
**********************
*** Voreinstellung ***
**********************

	lea	$dff000,a5
	move.l	#$ffffffff,$44(a5)
	move.w	#%1000010000000000,$96(a5)
	move.w	#%0000011111111111,$96(a5)
	move.l  #copperlist,$80(a5)
 	clr.w   $88(a5)
	move.w  #%1000011111000000,$96(a5)
	lea	hauptloop(pc),a4
	move.l	a4,$6c		
	move.w	#$c010,$9a(a5)
	move.w	#$2000,sr

************
*** Wait ***
************

wait:	
	move.l	$dff004,d0
	and.l	#$1ff00,d0
	cmp.l	#$ff00,d0
	ble.s	wait
	moveq	#0,d0
	bsr	v_lines

	move.l	workplane,a0
	move.l	showplane,workplane
	move.l	a0,showplane	
	btst	#6,$bfe001
	beq	end
	bra	wait		
**************************
******	Hauptteil  *******
**************************

hauptloop:
	move.w	#$10,$dff09c		
	movem.l	d0-d7/a0-a6,-(a7)
	lea	bob1adrs,a0
	move.l	showplane,d0
	moveq	#0,d7
planesset:
	swap	d0
	move.w	d0,2(a0)
	swap	d0
	move.w	d0,6(a0)
	add.l	#8,a0
	add.l	#[200*40],d0
	dbf	d7,planesset
hplend:
	movem.l	(a7)+,d0-d7/a0-a6
	rte				


workplane:
	dc.l	$60000
showplane:
	dc.l	$70000




***************
*** E N D E ***
***************


end:		
		lea	$dff000,a5
		move.l	4,a6
		lea	grname(pc),a1
		clr.l	d0
		jsr	-408(a6)
		move.l	d0,a4
		move.l	38(a4),$80(a5)
		clr.w	$88(a5)
		move.w	#$83f0,$96(a5)
		jmp	oson
		
copperlist:
                dc.w    $008e,$2981,$0090,$29c1
		dc.w	$0092,$0038,$0094,$00d0
 		dc.w    $0108,$0000,$010a,$0000
 	        dc.w    $0102,$0000,$0104,$0024
		dc.w	$120,$0,$122,$0
		dc.w	$124,$0,$126,$0
		dc.w	$128,$0,$12a,$0
		dc.w	$12c,$0,$12e,$0
		dc.w	$130,$0,$132,$0
		dc.w	$134,$0,$136,$0
		dc.w	$138,$0,$13a,$0
		dc.w	$13c,$0,$13e,$0
		dc.w	$100,$0200
		dc.w	$9c,$8010
tsbcolors:
		dc.w	$182,0,$182,$f00
		
		dc.w	$4809,$fffe
bob1adrs:
		dc.w	$00e0,$0006,$00e2,$4000
		dc.w	$4a09,$fffe
		dc.w	$100,$1200
		dc.w	$ffe1,$fffe
		dc.w	$0809,$fffe
		dc.w	$100,$0200
		dc.w	$ffff,$fffe

v_lines:
	move.w	#$f,$dff180
	clear	workplane,#20,#200
	addq.w	#2,anglex
	addq.w	#2,angley
	addq.w	#2,anglez
	move.w	#$1ff,d7
	and.w	d7,anglex
	and.w	d7,angley
	and.w	d7,anglez

	lea	lineobject,a6
	lea	drawtable,a5
lineloop:
	move.w	(a6)+,d0
	cmp.w	#$7fff,d0
	beq	lineloop2
	move.w	(a6)+,d1
	move.w	(a6)+,d2
	addq.l	#2,a6
	move.w	anglex(pc),a0
	move.w	angley(pc),a1
	move.w	anglez(pc),a2

	bsr	rotate
	add.w	#400,d2
	ext.l	d0
	ext.l	d1
	ext.l	d2
	asl.l	#8,d0
	asl.l	#8,d1
	divs	d2,d0
	divs	d2,d1
	add.w	#160,d0
	add.w	#100,d1
	move.w	d0,(a5)+
	move.w	d1,(a5)+
	bra	lineloop
lineloop2:
	move.w	#$7fff,(a5)
	
	lea	drawtable(pc),a5
	lea	lineobject+1024(pc),a6	
lineloop3:
	move.w	(a6)+,d5
	cmp.w	#$7fff,d5
	beq.s	lineloop4
	move.w	(a6)+,d6
	lsl.w	#2,d5
	lsl.w	#2,d6
	move.w	(a5,d5.w),d0
	move.w	2(a5,d5.w),d1
	move.w	(a5,d6.w),d2
	move.w	2(a5,d6.w),d3

	move.l	workplane,a0
	lea	40,a1
	bsr	linedraw
	bra	lineloop3
lineloop4:
	clr.w	$dff180
	rts

anglex:
	dc.w	0
angley:
	dc.w	0
anglez:
	dc.w	0

drawtable:
	blk.b	1000,0


lineobject:
	blk.b	2000,0


********************
*** 3-D Rotieren ***
********************
;d0,d1,d2   x,y,z
;a0,a1,a2   umx,umy,umz

rotate:
	movem.l	d3-d7/a3-a6,-(a7)
	lea	costable(pc),a3
	lea	sintable(pc),a4
	cmp.w	#0,a2
	beq	rot_1
	move.w	d0,d4
	move.w	d1,d5
	muls	(a3,a2.w),d4
	muls	(a4,a2.w),d5
	sub.l	d5,d4
	asr.l	#8,d4
	move.w	d4,d6
	move.w	d0,d4
	move.w	d1,d5
	muls	(a4,a2.w),d4
	muls	(a3,a2.w),d5
	add.l	d4,d5
	asr.l	#8,d5
	move.w	d5,d1
	move.w	d6,d0
rot_1:
	cmp.w	#0,a0
	beq	rot_2
	move.w	d2,d4
	move.w	d1,d5
	muls	(a3,a0.w),d4
	muls	(a4,a0.w),d5
	sub.l	d5,d4
	asr.l	#8,d4
	move.w	d4,d6
	move.w	d2,d4
	move.w	d1,d5
	muls	(a4,a0.w),d4
	muls	(a3,a0.w),d5
	add.l	d4,d5
	asr.l	#8,d5
	move.w	d5,d1
	move.w	d6,d2
rot_2:
	cmp.w	#0,a1
	beq	rot_end
	move.w	d0,d4
	move.w	d2,d5
	muls	(a3,a1.w),d4
	muls	(a4,a1.w),d5
	sub.l	d5,d4
	asr.l	#8,d4
	move.w	d4,d6
	move.w	d0,d4
	move.w	d2,d5
	muls	(a4,a1.w),d4
	muls	(a3,a1.w),d5
	add.l	d4,d5
	asr.l	#8,d5
	move.w	d5,d2
	move.w	d6,d0
rot_end:
	movem.l	(a7)+,d3-d7/a3-a6
	rts


costable:

	dc.w	256,256,256,255,255,254,253,252
	dc.w	251,250,248,247,245,243,241,239
	dc.w	237,234,231,229,226,223,220,216
	dc.w	213,209,206,202,198,194,190,185
	dc.w	181,177,172,167,162,157,152,147
	dc.w	142,137,132,126,121,115,109,104
	dc.w	98,92,86,80,74,68,62,56
	dc.w	50,44,38,31,25,19,13,6
	dc.w	0,-5,-12,-18,-24,-30,-37,-43
	dc.w	-49,-55,-61,-67,-73,-79,-85,-91
	dc.w	-97,-103,-108,-114,-120,-125,-131,-136
	dc.w	-141,-146,-151,-156,-161,-166,-171,-176
	dc.w	-180,-184,-189,-193,-197,-201,-205,-208
	dc.w	-212,-215,-219,-222,-225,-228,-230,-233
	dc.w	-236,-238,-240,-242,-244,-246,-247,-249
	dc.w	-250,-251,-252,-253,-254,-254,-255,-255
	dc.w	-255,-255,-255,-254,-254,-253,-252,-251
	dc.w	-250,-249,-247,-246,-244,-242,-240,-238
	dc.w	-236,-233,-230,-228,-225,-222,-219,-215
	dc.w	-212,-208,-205,-201,-197,-193,-189,-184
	dc.w	-180,-176,-171,-166,-161,-156,-151,-146
	dc.w	-141,-136,-131,-125,-120,-114,-108,-103
	dc.w	-97,-91,-85,-79,-73,-67,-61,-55
	dc.w	-49,-43,-37,-30,-24,-18,-12,-5
	dc.w	0,6,13,19,25,31,38,44
	dc.w	50,56,62,68,74,80,86,92
	dc.w	98,104,109,115,121,126,132,137
	dc.w	142,147,152,158,162,167,172,177
	dc.w	181,185,190,194,198,202,206,209
	dc.w	213,216,220,223,226,229,231,234
	dc.w	237,239,241,243,245,247,248,250
	dc.w	251,252,253,254,255,255,256,256



sintable:

	dc.w	0,-5,-12,-18,-24,-30,-37,-43
	dc.w	-49,-55,-61,-67,-73,-79,-85,-91
	dc.w	-97,-103,-108,-114,-120,-125,-131,-136
	dc.w	-141,-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ                                                                             Ö N THEN 
		 SEND ONE DISK AND A PREPAID ENVELOPE   
		 TO THE FOLLOWING ADRESS.               
		                                        
		                                        
		             PLK A 19267                
		                                        
		             W-3060 STADTHAGEN          
		                                        
		             GERMANY                    
		                                        
		                                        
		   FOR CONTACTING THE SPECIAL BROTHERS  
		       WRITE ALSO TO THIS ADRESS.       
		                                        
		----------------------------------------
		                                        
		                                        
		 II. FIRST WORD                         
		     ----------                         
		                                        
		                                        
		 THE SOURCE(SEKA) OF THIS DESIGNER IS   
		 VERY CHAOTIC BECAUSE ALLOC WROTE THIS  
		 UNDER HEAVY TIME PRESSURE FOR MAXIMUM  
		 OVERDRIVE. FIRST WE DON`T WANT TO MAKE 
		 A RELEASE OF THIS CRAP.                
		 THIS IS THE REASON WHY THIS DESIGNER   
		 ISN`T VERY `USER FRIENDLY`.            
		 IT WAS IMPOSSIBLE TO GET REAL STRUCTURE
		 IN THIS SOURCE WITHOUT WRITING IT      
		 TOTALY NEW......                       
		 YOU HAVEN`T THE HELP OF A DIRECTORY OR 
		 PULL DOWN MENUES.                      
		 THIS IS A NAKED PROGRAM BUT WHAT       
		 REMAINS IS THE POWERFUL USE OF THIS    
		 TOOL.                                  
		 WE ALSO INCLUDED A SPECIAL SAVE OPTION 
		 FOR THE RED SECTOR DEMOMAKER AS WE     
		 NOTICED THAT THERE WAS NO DESIGNER IN  
		 THAT FUNNY TOOL.                       
		 SO NOW YOU CAN MAKE YOUR RED SECTOR    
		 DEMOS WITH INCLUDING YOUR OWN MADE     
		 OBJECTS EASILY.                        
		                                        
		 BY THE WAY. THERE IS A SPECIAL BROTHERS
		 DEMO MADE WITH THE RED SECTOR DEMOMAKER
		 FLYING THROUGH THE SCENE.              
		 PLEASE NOTICE THAT THIS IS NOT FROM US.
		 `HOW LOW CAN WE GO` ???? NOT SO LOW ,  
		 OKAY DUDES...                          
		 WE THINK THAT WAS ONLY A LAME JOKE FROM
		 SOME FREAKS OUT OF IRAQ !!!!!!!!       
		                    