๙๚๙๚                                        
time=	700

debug=	0
aika=	68
koko1=	12
koko2=	koko1+2
wtime=	2
delay2=	2

koko1b=	4
pixx1=	4
pixy1=	12
koko2b=	4
pixx2=	-2
pixy2=	-12
ys1=	40
ys2=	30

RMB:	macro
.rmb\@:	btst	#10,$16(a6)
	beq.s	.rmb\@
	endm

Wblit:	macro
.wb\@:	btst	#6,$2(a6)
	bne.s	.wb\@
	endm

;	jmp	j
;	org	$30000

j	move.w	#time,d6
	moveq	#1,d7

	lea	j(pc),a5	;PC-relative!
	lea	$dff000,a6

	move.w	d6,rmove+2-j(a5)
	add.w	#48,d6
	move.w	d6,rmove2+2-j(a5)
 
	ifeq	debug
	move	#$4000,$9a(a6)
	move	#$8400,$96(a6)
;-------------------------------

;	lea	$60000,a0
;	moveq	#0,d0
;	move.w	#(ee-$60000)/4/4-1,d5
;.cmlp:	rept	4
;	move.l	d0,(a0)+
;	endr
;	dbf	d5,.cmlp

	lea	xpos(pc),a0
	move.l	d0,(a0)+
	move.l	d0,(a0)+
	move.l	d0,(a0)+
	move.w	#2,delay2

	lea	drawplane,a0
	move.l	#screen1,(a0)+
	move.l	#screen2,(a0)+

	lea	ctb1(pc),a0
	lea	colors(pc),a1
	moveq	#16-1,d5
.crlp:	move.l	(a0)+,(a1)+
	dbf	d5,.crlp

	moveq	#-1,d0
	tst.w	d7
	bne.s	..2

	Wblit
	move.l	#$01f00000,$40(a6)
	move.l	d0,$44(a6)
	move.w	#96-2*koko1,$66(a6)
	move.w	d0,$74(a6)
	move.l	#screen2+[(144-12)*96]+[(24-koko1)],$54(a6)
	move.w	#24*64+koko1,$58(a6)

	Wblit
	move.l	#$01f00000,$40(a6)
	move.l	#$0003c000,$44(a6)
	move.w	#96-2*koko2,$66(a6)
	move.w	d0,$74(a6)
	move.l	#screen2+48+[(144-14)*96]+[(24-koko2)],$54(a6)
	move.w	#28*64+koko2,$58(a6)
	Wblit
	bra.w	..1

..2:	move.l	#text2,text-j(a5)
	move.l	#places2,SPIN-j(a5)
	move.l	#spintab2,SPIN+4-j(a5)
	lea	colors+2(pc),a0
	lea	ctb2(pc),a1
	moveq	#16-1,d7
.cclp:	move.w	(a1)+,(a0)
	addq.l	#4,a0
	dbf	d7,.cclp		cop new colors
	Wblit
	move.l	#$01f00000,$40(a6)
	move.l	d0,$44(a6)
	move.w	#96-2*koko1b,$66(a6)
	move.w	d0,$74(a6)
	move.l	#screen2+[(144-ys1/2+pixy1)*96]+[(24-koko1b)]+pixx1,$54(a6)
	move.w	#ys1*64+koko1b,$58(a6)

	Wblit
	move.l	#$01f00000,$40(a6)
	move.l	#$0003ff00,$44(a6)
	move.w	#96-2*koko2b,$66(a6)
	move.w	d0,$74(a6)
	move.l	#screen2+48+[(144-ys2/2+pixy2)*96]+[(24-koko2b)]+pixx2,$54(a6)
	move.w	#ys2*64+koko2b,$58(a6)
	Wblit


..1:	move.l	d0,$44(a6)
	bsr.w	enlarge

	lea	copper(pc),a0
	move.l	a0,$84(a6)
	move.w	d0,$8a(a6)		;execute copper2
;--------------
	moveq	#0,d0
	moveq	#0,d1
.mlp:	cmp.b	#$e0,$6(a6)
	bne.s	.mlp
...1	cmp.b	#$e1,$6(a6)
	bne.s	...1

	move.w	#$ff,$102(a6)	reset shift value
	lea	sine(pc),a0
	move.w	(a0,d0.w),d1
	bmi.s	.o1
	sub.w	#174,d1
	neg.w	d1
	addq.l	#2,d0
	muls	#96,d1
	add.l	#screen2+2,d1
	lea	planes(pc),a1	
	move.w	d1,6(a1)
	swap	d1
	move.w	d1,2(a1)
	swap	d1
	add.l	#48,d1
	move.w	d1,14(a1)
	swap	d1
	move.w	d1,10(a1)
	bra.s	.mlp
;--------------
.o1:	lea	planes+16(pc),a0
	move.l	#textscreen,d0
	moveq	#2-1,d7
.plp:	move.w	d0,6(a0)
	swap	d0
	move.w	d0,2(a0)
	swap	d0
	add.l	#48,d0
	addq.l	#8,a0
	dbf	d7,.plp
	endc

	bsr.w	cleartext
	bra.w	prefix

Mainlp:	ifeq	debug
	cmp.b	#$37,$6(a6)
	bne.s	mainlp
	tst.b	$5(a6)
	beq.s	mainlp

	tst.w	wtest
	bne.s	.nw
	moveq	#wtime-1,d7
.w1:	cmp.b	#$f0,$6(a6)
	bne.s	.w1
.w2:	cmp.b	#$f1,$6(a6)
	bne.s	.w2
	dbf	d7,.w1
.nw:	move.w	#1,wtest
	RMB
	endc

prefix:	cmp	#aika,timer-j(a5)
	bge.s	.1
	bsr	show
	bsr	flex
	bsr	rotate
	bra.s	.2

.1	move.w	#$4200,off+2-j(a5)	4 planes on
	bsr.w	writer
	RMB
.2	addq	#1,timer-j(a5)

rmove:	cmp.w	#300,timer-j(a5)
	ble.s	dont
	lea	ee-2*16,a0
	lea	colors+2(pc),a1
	moveq	#3-1,d0
	moveq	#16-1,d7
	bsr.w	fader
rmove2:	cmp	#300+32,timer-j(a5)
	bgt.s	quit
dont
;---- Swaps:
	lea	drawplane(pc),a0
	move.l	(a0),d0
	move.l	4(a0),(a0)
	move.l	d0,4(a0)

	btst	#6,$bfe001
	bne.w	Mainlp
;-----------------------------------
quit:	ifeq	debug
	move.w	#$2200,off+2-j(a5)	planes off
	move	#$0400,$96(a6)
	move	#$c000,$9a(a6)
	moveq	#0,d0
	endc
	rts
;------------------------------------
;------------------------------------
;------------------------------------
enlarge:	lea	font2(pc),a0
		lea	font,a1
		move.w	#2*18*352/8/4-1,d7
.lp:		move.l	(a0)+,d0
		movep.l	d0,0(a1)
		lea	8(a1),a1
		dbf	d7,.lp
		rts
;------------------------------------
;------------------------------------
flex:		move.b	npos(pc),opos-j(a5)
		moveq	#$1f,d0
		and	timer(pc),d0
		move.b	mtab(pc,d0),npos-j(a5)
		rts

mtab:	dc.b	0,16
	dc.b	8,16+8
	dc.b	4,16+4
	dc.b	12,16+12
	dc.b	2,16+2
	dc.b	10,16+10
	dc.b	6,16+6
	dc.b	14,16+14
	dc.b	1,16+1
	dc.b	9,16+9
	dc.b	5,16+5
	dc.b	13,16+13
	dc.b	3,16+3
	dc.b	11,16+11
	dc.b	7,16+7
	dc.b	15,16+15
;--------------------------------------
;--------------------------------------
show:		moveq	#0,d0
		move.b	npos(pc),d0
		move.l	d0,d1
		asr	#3,d0
		muls	#96,d1
		add	d1,d0
		add	#14*96+2,d0
		add.l	showplane(pc),d0	;buf 2 = $58000

		lea	planes(pc),a0
		moveq	#2-1,d7
.lp:		move.w	d0,6(a0)
		swap	d0
		move.w	d0,2(a0)
		swap	d0
		add.l	#48,d0
		addq.l	#8,a0
		dbf	d7,.lp

		moveq	#$f,d1
		and.b	npos(pc),d1
		move.b	sfttab(pc,d1),$102(a6)	;shift value
		rts

sfttab:	dc.b	$ff,$ee,$dd,$cc,$bb,$aa,$99,$88
	dc.b	$77,$66,$55,$44,$33,$22,$11,$00
;-----------------------------------------------
rotate:		move.l  showplane(pc),a0	;s
		move.l	drawplane(pc),a4	;d
		move.l	#16*96+44,d0
		add.l	d0,a4
		add.l	d0,a0
		move.l	SPIN(pc),a1
		move.l	SPIN+4(pc),a2

		moveq	#0,d5
		move.b	opos(pc),d5
		sub.b	npos(pc),d5
		ext	d5
		muls	#8*96+1,d5
		add	#15,d5
		move	#64*64+3,d3	;size
		move.l	#32*96+12*4,d4

		Wblit
		move.l	#$002a002a,$64(a6)
		moveq	#-1,d7
		move.l	d7,$44(a6)

		moveq	#10-1,d7
.lp:		move	(a1)+,d1
		add	d5,d1
		moveq	#12-1,d6

.lp2:		move	(a2)+,d0
		add	d1,d0
		moveq	#$f,d2
			and	d0,d2
		add	d2,d2
		move	minterm(pc,d2),d2
		asr	#3,d0
		lea	(a0,d0),a3

		Wblit
		move	d2,$40(a6)
		movem.l	a3/a4,$50(a6)
		move	d3,$58(a6)
		subq.l	#4,a0
		subq.l	#4,a4
		dbf	d6,.lp2

		add.l	d4,a0
		add.l	d4,a4
		lea	-2*12(a2),a2
		dbf	d7,.lp
		rts
;-------------------------------------------------
minterm:	dc	$f9f0,$e9f0,$d9f0,$c9f0,$b9f0,$a9f0,$99f0,$89f0
		dc	$79f0,$69f0,$59f0,$49f0,$39f0,$29f0,$19f0,$09f0
;-------------------------------------------------
;-------------------------------------------------
SPIN:		dc.l	places,spintab

places:		dc	32*96-4
		dc	24*96-3
		dc	16*96-2
		dc	8*96-1
		dc	0
		dc	-8*96+1
		dc	-16*96+2
		dc	-24*96+3
		dc	-32*96+4
		dc	-40*96+5

spintab:	dc	-5*768-5
		dc	-4*768-4
		dc	-3*768-3
		dc	-2*768-2
		dc	-1*768-1
		dc	0
		dc	1*768+1
		dc	2*768+2
		dc	3*768+3
		dc	4*768+4
		dc	5*768+5
		dc	6*768+6

;----------------
places2:	dc	+32*96
		dc	+24*96
		dc	+16*96
		dc	+8*96
		dc	0
		dc	-8*96
		dc	-16*96
		dc	-24*96
		dc	-32*96
		dc	-40*96

spintab2:	dc	-5,-4,-3,-2,-1,0,1,2,3,4,5,6
;------------------------------------
;------------------------------------
fadetest:	dc.w	0
fader:	addq.w	#1,fadetest
	cmp.w	fadetest,d0
	bge.w	.out
	move.w	#0,fadetest

.loop:	move.w	(a0)+,d0
	move.w	(a1),d1
	cmp.w	d0,d1
	beq.s	.next

	move.w	d0,d2
	move.w	d1,d4
	and.w	#$f00,d2
	and.w	#$f00,d4
	cmp.w	d2,d4
	beq.s	.1b
	bgt.s	.1
	add.w	#$200,d4
.1:	sub.w	#$100,d4
.1b:	move.w	d0,d2
	move.w	d1,d3
	and.w	#$0f0,d2
	and.w	#$0f0,d3
	cmp.w	d2,d3
	beq.s	.2b
	bgt.s	.2
	add.w	#$020,d3
.2:	sub.w	#$010,d3
.2b:	or.w	d3,d4
	move.w	d0,d2
	move.w	d1,d3
	and.w	#$00f,d2
	and.w	#$00f,d3
	cmp.w	d2,d3
	beq.s	.3b
	bgt.s	.3
	addq.w	#2,d3
.3:	subq.w	#1,d3
.3b:	or.w	d3,d4
	move.w	d4,(a1)
.next:	lea	4(a1),a1
	dbf	d7,.loop
.out:	rts
;-------------------------------------------
;------------------------------------------
cleartext:	Wblit
		move.l	#$1000000,$40(a6)
		move.l	#-1,$44(a6)
		move.w	#0,$66(a6)
		move.l	#textscreen,$54(a6)
		move.w	#288*64+48,$58(a6)	;clr txtscr
		rts
;ญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญ
writer:		tst.w	delay
		ble.s	.o1
		subq.w	#1,delay
		rts

.o1:		move.w	#delay2,delay-j(a5)
		move.l	a5,-(sp)

		Wblit
		move.l	#$ffff0000,$44(a6)
		move.w	#96-4,$62(a6)
		move.w	#2*352/8-4,$64(a6)
		move.w	#96-4,$66(a6)
		moveq	#0,d0
		moveq	#0,d1
		moveq	#0,d2
		moveq	#0,d3
		moveq	#0,d4	x
		moveq	#0,d5	y
		moveq	#0,d6
		moveq	#0,d7

		move.l	text(pc),a0
		lea	textscreen,a4
		move.w	xpos(pc),d1
		move.w	xposb(pc),d4
		move.w	ypos(pc),d5
		move.l	a4,a3
		bra.s	.lp

.nline:		add.l	#24*96,d5
		move.w	d4,d1

.lp:		move.l	a4,a3
		add.l	d5,a3
		move.b	(a0)+,d0
		beq.s	.nline
		bgt.s	.0
		subq.l	#1,a0
		bra.w	.out

.0		cmp.b	#$7f,d0		set delay
		bne.s	.1
		move.w	#0,delay
		move.b	(a0)+,delay+1
		bra.w	.out

.1		cmp.b	#$7e,d0		set position
		bne.s	.2
		moveq	#0,d4
		moveq	#0,d5
		move.b	(a0)+,d4	xpos
		move.b	(a0)+,d5	ypos
		muls	#96,d5
		move.w	d4,d1
		move.w	d4,xposb
		bra.s	.lp

.2:		lea	width(pc),a5
		lea	fontj(pc),a1
		lea	font-2,a2
.lp2:		lea	2(a2),a2
		move.b	(a5)+,d3
		cmp.b	(a1)+,d0
		bne.s	.lp2

		move.w	d1,d2
		lsr.w	#3,d2
		add.l	d2,a3
		move.w	d1,d2
		and.w	#$f,d2
		ror.w	#4,d2
		or.w	#$dfc,d2

		Wblit
		move.w	d2,$40(a6)
		move.l	a3,$4c(a6)
		move.l	a2,$50(a6)
		move.l	a3,$54(a6)
		move.w	#18*64+2,$58(a6)
		lea	48(a3),a3
		lea	2*352/8*18(a2),a2

		Wblit
		move.w	d2,$40(a6)
		move.l	a3,$4c(a6)
		move.l	a2,$50(a6)
		move.l	a3,$54(a6)
		move.w	#18*64+2,$58(a6)
		add.w	d3,d1
		move.w	d1,xpos
		move.w	d5,ypos

.out:		move.l	a0,text
		Wblit
		move.l	#-1,$44(a6)
		move.l	(sp)+,a5
		rts
;------------------------------------------
;------------------------------------------
fontj:		dc.b	`abcdefghijklmnopqrstuvwxyz1234567890.:"!?- 	`
		dc.b	-1

width:		dc.b	7,7,7,7,7,7,7		;a-g
		dc.b	7,3,7,7,7,7,7		;h-n
		dc.b	7,7,7,7,7,8,7		;o-u
		dc.b	7,7,8,8,7		;v-z
		dc.b	4,8,8,8,7,8,7,8,8,7	;1-0
		dc.b	3,3,3,3,8,7,7,5*7
		even
font2:		incbin	seka:src/system/40k.font.pre
;------------------------------------------
wait:	macro
	dc.b	$7f,\1		;frames
	endm

pos:	macro
	dc.b	$7e,\1,\2
	endm
;------------------------------------------
text:	dc.l	text1

text1:	pos	170,50
	dc.b	`"living in the chaosland"`,0
	dc.b	` -morrison trilogy part1`
	wait	30
	pos	150,120
	dc.b	`credits:`
	pos	110,145
	dc.b	`coding - tsunami`
	pos	115,170
	dc.b	`music - dean`
	pos	120,195
	dc.b	`gfx - d-mage and dean`
	pos	250,240
	dc.b	`	vd 93`
	dc.b	-1
	even

text2:	pos	100,75
	dc.b	`note that this music is 130kb`,0
	dc.b	`long!!  `,0
	wait	20
	pos	70,150
	dc.b	`special thanks to zakka of sonic for`,0
	dc.b	`letting me to use his monitor while`,0
	dc.b	`i coded this intro!`,0
	pos	100,240
	dc.b	`...internal extinction is coming...`,0
	dc.b	-1
	even
;-------------------------------------------
;-------------------------------------------
;-------------------------------------------
;-------------------------------------------
copper:		dc	$108,48+4,$10a,48+4
		dc	$1fc,0
		dc	$8e,$2271,$90,$35c1
		dc	$92,$0028,$94,$d0
		dc	$120,0,$122,0

planes:		dc	$e0,0,$e2,0
		dc	$e4,0,$e6,0
		dc	$e8,0,$ea,0
		dc	$ec,0,$ee,0
off:		dc	$100,$2200

colors:		blk.l	16,0
		dc.l	-2

ctb1:		dc	$180,$0433
		dc	$182,$0
		dc	$184,$0
		dc	$186,$0322
		dc	$188,$0766
		dc	$190,$0655	0
		dc	$198,$0544
		dc	$18a,$0
		dc	$192,$0		1
		dc	$19a,$0
		dc	$18c,$0
		dc	$194,$0		2
		dc	$19c,$0
		dc	$18e,$0dcc
		dc	$196,$0987	3
		dc	$19e,$0653

ctb2:		dc	$0223
		dc	$0334		1
		dc	$0445		2
		dc	$0556		3
		dc	$0
		dc	$0
		dc	$0
		dc	$0bbc
		dc	$0889
		dc	$0556
		dc	$0aab
		dc	$0778
		dc	$0445
		dc	$0ccd
		dc	$099a
		dc	$0667

;-------------------------------------
;-------------------------------------
sine:	dc.w	0,6,11,17,22,28,33,39,44,49,55,60
	dc.w	65,70,75,80,85,89,94,99,103,107,111,115
	dc.w	119,123,126,129,133,136,139,141,144,146,148,150
	dc.w	152,154,155,157,158,158,159,160,160,160
	dc.w	-1
;-------------------------------------
drawplane:	dc.l	screen1
showplane:	dc.l	screen2

xpos:		dc.w	0
xposb:		dc.w	0
ypos:		dc.w	0
wtest:		dc	0
timer:		dc	0
npos:		dc.b	0
opos:		dc.b	0
delay:		dc	delay2
e

;		org	$60000
font:		blk.b	8000,0
screen1:	blk.b	288*96,0
screen2:	blk.b	288*96,0
		blk.b	2*4096,0
textscreen:	blk.b	288*96,0
ee

