	XDEF	_showline
	XDEF	_showlines

_showlines

	movem.l	d0-a6,-(a7)	;60 bytes

;-------------------------------------
; step 1: 24bit to 8bit chunky

	lea	(rtab+1,pc),a4
	lea	(gtab+1,pc),a5
	lea	(btab,pc),a6

	move.l	(60+4,a7),a0	;*data 60
	move.l	(chunkypt,pc),a1
	move.l	(72+4,a7),d0	;bpr
	lea	(a1,d0*8),a2

	move.l	(80+4,a7),d7	;width
	subq	#1,d7

	moveq	#0,d0
	moveq	#0,d1
	moveq	#0,d2
.loop0	move.b	(a0)+,d0
	move.b	(a0)+,d1
	move.b	(a0)+,d2
	move.b	(a4,d0.l*2),(a1)+	r
	move.b	(a5,d1.l*2),(a1)+	g
	move	(a6,d2.l*2),(a2)+	b
	dbf	d7,.on0
	bra.b	.end0
.on0	addq.l	#3,a0
	dbf	d7,.loop0
.end0


;-------------------------------------
; step 2: 8bit chunky to planar
	move.l	(chunkypt,pc),a0
	move.l	(64+4,a7),a1	;*bm0
	move.l	(72+4,a7),d1	;bpr
	move.l	(68+4,a7),d0	;line
	mulu	d1,d0
	lea	(a1,d0.l),a1

	move	d1,d6
	subq	#1,d6

	move.l	(76+4,a7),a6	;psize
	lea	(a1,a6.l*2),a2
	lea	(a2,a6.l),a2

	move.l	#$0f0f0f0f,a3
	move.l	#$33333333,a4
	move.l	#$5555aaaa,a5

.c2p_loop	**16 pixels per loop**
	swap	d6

	move	(a0)+,d0
	move	d0,d4
	lsl	#8,d4
	move	(a0)+,d1
	move	d1,d5
	lsl	#8,d5
	move	(a0)+,d2
	move	d2,d6
	lsl	#8,d6
	move	(a0)+,d3
	move	d3,d7
	lsl	#8,d7
	move.b	(a0)+,d0
	swap	d0
	move.b	(a0)+,d4
	move	d4,d0
	move.b	(a0)+,d1
	swap	d1
	move.b	(a0)+,d5
	move	d5,d1
	move.b	(a0)+,d2
	swap	d2
	move.b	(a0)+,d6
	move	d6,d2
	move.b	(a0)+,d3
	swap	d3
	move.b	(a0)+,d7
	move	d7,d3

	move.l	a3,d7
	move.l	d0,d4
	and.l	d7,d0
	eor.l	d0,d4
	lsl.l	#4,d0
	move.l	d2,d5
	and.l	d7,d5
	eor.l	d5,d2
	lsr.l	#4,d2
	or.l	d5,d0
	or.l	d4,d2
	move.l	d1,d4
	and.l	d7,d1
	eor.l	d1,d4
	lsl.l	#4,d1
	move.l	d3,d5
	and.l	d7,d5
	eor.l	d5,d3
	lsr.l	#4,d3
	or.l	d5,d1
	or.l	d4,d3

	move.l	a4,d7
	move.l	d0,d4
	and.l	d7,d0
	eor.l	d0,d4
	lsl.l	#2,d0
	move.l	d1,d5
	and.l	d7,d5
	eor.l	d5,d1
	lsr.l	#2,d1
	or.l	d5,d0
	or.l	d4,d1
	move.l	d2,d4
	and.l	d7,d2
	eor.l	d2,d4
	lsl.l	#2,d2
	move.l	d3,d5
	and.l	d7,d5
	eor.l	d5,d3
	lsr.l	#2,d3
	or.l	d5,d2
	or.l	d4,d3

	move.l	a5,d7
	move.l	d0,d4
	and.l	d7,d0
	eor.l	d0,d4
	lsr	d0
	swap	d0
	add	d0,d0
	or.l	d0,d4
	move	d4,(a1)+		plane 1
	swap	d4
	move	d4,(-2,a1,a6.l)		plane 2
	move.l	d1,d5
	and.l	d7,d1
	eor.l	d1,d5
	lsr	d1
	swap	d1
	add	d1,d1
	or.l	d1,d5
	move	d5,(-2,a1,a6.l*2)	plane 3
	swap	d5
	move	d5,(a2)+		plane 4
	move.l	d2,d4
	and.l	d7,d2
	eor.l	d2,d4
	lsr	d2
	swap	d2
	add	d2,d2
	or.l	d2,d4
	move	d4,(-2,a1,a6.l*4)	plane 5
	swap	d4
	move	d4,(-2,a2,a6.l*2)	plane 6
	move.l	d3,d5
	and.l	d7,d3
	eor.l	d3,d5
	lsr	d3
	swap	d3
	add	d3,d3
	or.l	d3,d5
	move.l	a1,d0
	lea	(a1,a6.l*2),a1
	move	d5,(-2,a1,a6.l*4)	plane 7
	move.l	d0,a1
	swap	d5
	move	d5,(-2,a2,a6.l*4)	plane 8
	swap	d6
	dbf	d6,.c2p_loop


	movem.l	(a7)+,d0-a6
	rts






_showline

	movem.l	d0-a6,-(a7)	;60 bytes

;-------------------------------------
; step 1: 24bit to 8bit chunky

	lea	(rtab+1,pc),a4
	lea	(gtab+1,pc),a5
	lea	(btab,pc),a6

	move.l	(60+4,a7),a0	;*data 60
	move.l	(chunkypt,pc),a1
	move.l	(72+4,a7),d0	;bpr
	lea	(a1,d0*8),a2

	move.l	(80+4,a7),d7	;width
	subq	#1,d7

	moveq	#0,d0
	moveq	#0,d1
	moveq	#0,d2
.loop0	move.b	(a0)+,d0
	move.b	(a0)+,d1
	move.b	(a0)+,d2
	move.b	(a4,d0.l*2),(a1)+	r
	move.b	(a5,d1.l*2),(a1)+	g
	move	(a6,d2.l*2),(a2)+	b
	dbf	d7,.loop0
.end0


;-------------------------------------
; step 2: 8bit chunky to planar
	move.l	(chunkypt,pc),a0
	move.l	(64+4,a7),a1	;*bm0
	move.l	(72+4,a7),d1	;bpr
	move.l	(68+4,a7),d0	;line
	mulu	d1,d0
	lea	(a1,d0.l),a1

	move	d1,d6
	subq	#1,d6

	move.l	(76+4,a7),a6	;psize
	lea	(a1,a6.l*2),a2
	lea	(a2,a6.l),a2

	move.l	#$0f0f0f0f,a3
	move.l	#$33333333,a4
	move.l	#$5555aaaa,a5

.c2p_loop	**16 pixels per loop**
	swap	d6

	move	(a0)+,d0
	move	d0,d4
	lsl	#8,d4
	move	(a0)+,d1
	move	d1,d5
	lsl	#8,d5
	move	(a0)+,d2
	move	d2,d6
	lsl	#8,d6
	move	(a0)+,d3
	move	d3,d7
	lsl	#8,d7
	move.b	(a0)+,d0
	swap	d0
	move.b	(a0)+,d4
	move	d4,d0
	move.b	(a0)+,d1
	swap	d1
	move.b	(a0)+,d5
	move	d5,d1
	move.b	(a0)+,d2
	swap	d2
	move.b	(a0)+,d6
	move	d6,d2
	move.b	(a0)+,d3
	swap	d3
	move.b	(a0)+,d7
	move	d7,d3

	move.l	a3,d7
	move.l	d0,d4
	and.l	d7,d0
	eor.l	d0,d4
	lsl.l	#4,d0
	move.l	d2,d5
	and.l	d7,d5
	eor.l	d5,d2
	lsr.l	#4,d2
	or.l	d5,d0
	or.l	d4,d2
	move.l	d1,d4
	and.l	d7,d1
	eor.l	d1,d4
	lsl.l	#4,d1
	move.l	d3,d5
	and.l	d7,d5
	eor.l	d5,d3
	lsr.l	#4,d3
	or.l	d5,d1
	or.l	d4,d3

	move.l	a4,d7
	move.l	d0,d4
	and.l	d7,d0
	eor.l	d0,d4
	lsl.l	#2,d0
	move.l	d1,d5
	and.l	d7,d5
	eor.l	d5,d1
	lsr.l	#2,d1
	or.l	d5,d0
	or.l	d4,d1
	move.l	d2,d4
	and.l	d7,d2
	eor.l	d2,d4
	lsl.l	#2,d2
	move.l	d3,d5
	and.l	d7,d5
	eor.l	d5,d3
	lsr.l	#2,d3
	or.l	d5,d2
	or.l	d4,d3

	move.l	a5,d7
	move.l	d0,d4
	and.l	d7,d0
	eor.l	d0,d4
	lsr	d0
	swap	d0
	add	d0,d0
	or.l	d0,d4
	move	d4,(a1)+		plane 1
	swap	d4
	move	d4,(-2,a1,a6.l)		plane 2
	move.l	d1,d5
	and.l	d7,d1
	eor.l	d1,d5
	lsr	d1
	swap	d1
	add	d1,d1
	or.l	d1,d5
	move	d5,(-2,a1,a6.l*2)	plane 3
	swap	d5
	move	d5,(a2)+		plane 4
	move.l	d2,d4
	and.l	d7,d2
	eor.l	d2,d4
	lsr	d2
	swap	d2
	add	d2,d2
	or.l	d2,d4
	move	d4,(-2,a1,a6.l*4)	plane 5
	swap	d4
	move	d4,(-2,a2,a6.l*2)	plane 6
	move.l	d3,d5
	and.l	d7,d3
	eor.l	d3,d5
	lsr	d3
	swap	d3
	add	d3,d3
	or.l	d3,d5
	move.l	a1,d0
	lea	(a1,a6.l*2),a1
	move	d5,(-2,a1,a6.l*4)	plane 7
	move.l	d0,a1
	swap	d5
	move	d5,(-2,a2,a6.l*4)	plane 8
	swap	d6
	dbf	d6,.c2p_loop


	movem.l	(a7)+,d0-a6
	rts







;colors 0-75
rtab
i set 0
	rept	255
i set i+1
	dc	i*76/256
	endr
	dc	75


;colors 76-225
gtab
i set 0
	rept	255
i set i+1
	dc	i*150/256+76
	endr
	dc	225


;colors 226-255
btab
i set 0
	rept	255
i set i+1
	dc	i*30/256+226
	endr
	dc	255



chunkypt	dc.l	chunkybuffer

	section	bbbb,bss
chunkybuffer	ds.b	50*1024







