;=========================================================
	; gr_twoscreen_scroll, 40x48 version
	;=========================================================
	; offset is in BG_SCROLL, must be multiple of 2
	;
	; two screens, top is at $1000, bottom at $BC00
	; 	copy lines Y-48 from $1000 to $c00
	;	copy lines 0 - (48-y) from $BC00 to $c00

gr_twoscreen_scroll:

	lda	#0
	sta	TEMPY		; dest

	ldy	BG_SCROLL
	cpy	#48
	beq	gr_twoscreen_bottom		; no top to draw

gr_twoscreen_top:

	; calculate source

	lda	gr_offsets+1,Y
	clc
	adc	#($10-4)
	sta	gr_twoscreen_smc_src+2
	lda	gr_offsets,Y
	sta	gr_twoscreen_smc_src+1
	tya
	pha

	; calculate destination

	lda	TEMPY
	tay
	lda	gr_offsets+1,Y
	clc
	adc	#($c-4)
	sta	gr_twoscreen_smc_dst+2
	lda	gr_offsets,Y
	sta	gr_twoscreen_smc_dst+1

	ldx	#0
gr_twoscreen_line_loop:

gr_twoscreen_smc_src:
	lda	$1000,X
gr_twoscreen_smc_dst:
	sta	$c00,X

	inx
	cpx	#40
	bne	gr_twoscreen_line_loop


	inc	TEMPY
	inc	TEMPY

	pla
	tay

	iny
	iny

	cpy	#48

	bne	gr_twoscreen_top


	;===============================
	; now copy the bottom from $BC00

	lda	BG_SCROLL
	beq	done_twoscreen_bottom		; if 0, no bottom

gr_twoscreen_bottom:

	ldy	#0

gr_twoscreen_bottom_loop:

	; calculate source

	lda	gr_offsets+1,Y
	clc
	adc	#($bc-4)
	sta	gr_twoscreen_bottom_smc_src+2
	lda	gr_offsets,Y
	sta	gr_twoscreen_bottom_smc_src+1
	tya
	pha

	; calculate destination

	lda	TEMPY
	tay
	lda	gr_offsets+1,Y
	clc
	adc	#($c-4)
	sta	gr_twoscreen_bottom_smc_dst+2
	lda	gr_offsets,Y
	sta	gr_twoscreen_bottom_smc_dst+1

	ldx	#0
gr_twoscreen_bottom_line_loop:

gr_twoscreen_bottom_smc_src:
	lda	$BC00,X
gr_twoscreen_bottom_smc_dst:
	sta	$c00,X

	inx
	cpx	#40
	bne	gr_twoscreen_bottom_line_loop


	inc	TEMPY
	inc	TEMPY

	pla
	tay

	iny
	iny

	cpy	BG_SCROLL

	bne	gr_twoscreen_bottom_loop
done_twoscreen_bottom:
	rts								; 6