; Double hi-res Rasterbars

GBASL	= $26
GBASH	= $27
HGRPAGE = $E6
BASE	= $FC
LINE	= $FD
YPOS	= $FE
COLOR	= $FF

HGR	= $F3E2
HGR2	= $F3D8
HPOSN	= $F411

raster:
	;=========================
	; configure double hires
	;=========================

	jsr	HGR
	jsr	HGR2
	sta	$C05E		; set double hires
	sta	$C00D		; 80 column
	sta	$C001		; 80 store

	lsr	HGRPAGE		; set to $20 (HGR2 set this to $40)

;	ldy	#100

big_loop:
	lda	#0		; 2	; blueline
	jsr	one_line	; 3

	lda	#4		; 2	; redline
	jsr	one_line	; 3

	tya			; YPOS
	bmi	go_neg		; if >128, flip to go up
	cmp	#64		; if < 64, flip to go down
	bcs	smc		; otherwise, nothing
go_pos:
	ldx	#$c8
	.byte	$2C	; bit trick
go_neg:
	ldx	#$88
	stx	smc

smc:				; move the bar
	iny	;  c8=iny, 88=dey

	bne	big_loop	; bra


one_line:
	sta	BASE		; 2
	tya			; 1
	eor	#$10		; 2
	tay			; 1

	; fallthrough

	;=======================================
draw_raster:

	lda	#7		; want 8 lines
	sta	LINE

color_loop:			; get right color
	lda	LINE	;(2)
	cmp	#$4	;(2)
	bcc	none	;(2)
	eor	#$3	; 2		00 01 10 11 00 01 10 11
none:			;		11 10 01 00
	and	#$3	;(2)

	clc
color_smc:
	adc	BASE
	tax
	lda	colors,X
	sta	COLOR

	tya
	pha			; save YPOS
;	sec	; c always 0
	sbc	LINE

	;=============================
	; draw line of color in COLOR
	;=============================
draw_line_color:
	ldx	#0
	ldy	#0
	jsr	HPOSN		; put into GBASL addr of coord (Y,X),A

	ldy	#39
loop_it:
	; set page2
	sta	$C055		; 3
	jsr	next_pixel	; 3

	; set page1
	sta	$C054		; 3
	jsr	next_pixel	; 3

	dey			; 1
	bpl	loop_it		; 2

	pla
	tay

	;====================================

	dec	LINE
	bpl	color_loop

	rts


	;==============================
	;==============================
next_pixel:
	lda	COLOR		; 2
	sta	(GBASL),Y	; 2
	cmp	#$80		; 2
	rol	COLOR		; 2
	rts			; 1

colors:
	.byte $00,$11,$22,$33	; red
	.byte $00,$DD,$EE,$FF	; blue/white

;	.byte $00,$11,$22,$33,$33,$22,$11,$00	; red
;	.byte $00,$DD,$EE,$FF,$FF,$EE,$DD,$00	; black aqua lblue white
;	.byte $00,$AA,$BB,$CC,$CC,$BB,$AA,$00	; grey yellow mblue
;	.byte $00,$77,$88,$99,$99,$88,$77,$00	; ugly green
;	.byte $00,$44,$55,$66,$66,$55,$44,$00	; purple

