clear_screens:
	;===================================
	; Clear top/bottom of page 0
	;===================================

	lda	#$0
	jsr	clear_top
	jsr	clear_bottom

	;===================================
	; Clear top/bottom of page 1
	;===================================

	lda	#$4
	jsr	clear_top
	jmp	clear_bottom




	;=========================================================
	; clear_top
	;=========================================================
	; clear DRAW_PAGE
	; original = 14,558 cycles(?) 15ms, 70Hz
	; OPTIMIZED MAX (page0,48rows): 45*120+4+6 = 5410 = 5.4ms 185Hz
	;		(pageX,40rows): 50*120+4+6 = 6010 = 6.0ms 166Hz
	;				50*120+4+6+37 = 6055 = 6.0ms 166Hz
clear_top:
	ldy	#0							; 2

clear_top_y:
	sty	COLOR							; 3
	sta	DRAW_PAGE						; 3
	clc								; 2

	adc	#4							; 2
	sta	__ctf+2							; 3
	sta	__ctf+5							; 3
	adc	#1							; 2
	sta	__ctf+8							; 3
	sta	__ctf+11						; 3
	adc	#1							; 2
	sta	__ctf2+2						; 3
	sta	__ctf2+5						; 3
	adc	#1							; 2
	sta	__ctf2+8						; 3
	sta	__ctf2+11						; 3


	ldy	#120							; 2
	lda	COLOR							; 3
clear_top_fast_loop:
__ctf:
	sta	$400,Y							; 5
	sta	$480,Y							; 5
	sta	$500,Y							; 5
	sta	$580,Y							; 5

	cpy	#80							; 2
	bpl	no_draw_bottom						; 2nt/3
__ctf2:
	sta	$600,Y							; 5
	sta	$680,Y							; 5
	sta	$700,Y							; 5
	sta	$780,Y							; 5
no_draw_bottom:

	dey								; 2
	bpl	clear_top_fast_loop					; 2nt/3

	rts								; 6



clear_bottoms:
	;===================================
	; Clear bottom of page 0
	;===================================

	lda	#$0
	jsr	clear_bottom

	;===================================
	; Clear bottom of page 1
	;===================================

	lda	#$4
	; fall through

	;=========================================================
	; clear_bottom
	;=========================================================
	; clear bottom of draw page

clear_bottom:
	sta	DRAW_PAGE						; 3
	clc								; 2

	adc	#6							; 2
	sta	__cbf2+2						; 3
	sta	__cbf2+5						; 3
	adc	#1							; 2
	sta	__cbf2+8						; 3
	sta	__cbf2+11						; 3


	ldy	#119							; 2
	lda	#$a0	; Normal Space					; 2
clear_bottom_fast_loop:
__cbf2:
	sta	$600,Y							; 5
	sta	$680,Y							; 5
	sta	$700,Y							; 5
	sta	$780,Y							; 5

	dey								; 2
	cpy	#80							; 2
	bpl	clear_bottom_fast_loop					; 2nt/3

	rts								; 6


clear_screens_notext:
        ;===================================
        ; Clear top/bottom of page 0
        ;===================================

        lda     #$0
        jsr     clear_all

        ;===================================
        ; Clear top/bottom of page 1
        ;===================================

        lda     #$4
        ; fall through


	;=========================================================
	; clear_all
	;=========================================================
	; clear 48 rows
	; clear color: clear_all_color+1

clear_all:
	sta	DRAW_PAGE						; 3
	clc								; 2

	adc	#4							; 2
	sta	__caf+2							; 3
	sta	__caf+5							; 3
	adc	#1							; 2
	sta	__caf+8							; 3
	sta	__caf+11						; 3
	adc	#1							; 2
	sta	__caf2+2						; 3
	sta	__caf2+5						; 3
	adc	#1							; 2
	sta	__caf2+8						; 3
	sta	__caf2+11						; 3


	ldy	#120							; 2
clear_all_color:
	lda	#0							; 2
clear_all_fast_loop:
__caf:
	sta	$400,Y							; 5
	sta	$480,Y							; 5
	sta	$500,Y							; 5
	sta	$580,Y							; 5
__caf2:
	sta	$600,Y							; 5
	sta	$680,Y							; 5
	sta	$700,Y							; 5
	sta	$780,Y							; 5

	dey								; 2
	bpl	clear_all_fast_loop					; 2nt/3

	rts								; 6