

	;===========================
	; hgr text box
	;===========================
	; point OUTL:OUTH at it
	; x1h,x1l,y1 x2h,x2l,y2
	; then X,Y of text
	; CR moves to next line
	; 0 ends

hgr_text_box:
	ldy	#0

	;====================
	; draw text box

	lda	(OUTL),Y
	sta	BOX_X1H
	iny
	lda	(OUTL),Y
	sta	BOX_X1L
	iny
	lda	(OUTL),Y
	sta	BOX_Y1
	iny

	lda	(OUTL),Y
	sta	BOX_X2H
	iny
	lda	(OUTL),Y
	sta	BOX_X2L
	iny
	lda	(OUTL),Y
	sta	BOX_Y2

skip_box_save_smc:
	lda	#1
	beq	skip_box_save

	jsr	hgr_partial_save
skip_box_save:

	jsr	draw_box

	clc
	lda	OUTL
	adc	#6
	sta	OUTL
	lda	OUTH
	adc	#0
	sta	OUTH

	; fallthrough

	;=======================
	; disp_put_string
	;	OUTL:OUTH has co-ords followed by string
	;	CR (13) goes to next line
disp_put_string:
        ldy     #0
        lda     (OUTL),Y
        sta     CURSOR_X

	jsr     inc_outl
	lda     (OUTL),Y
	sta     CURSOR_Y
	jsr     inc_outl

disp_put_string_cursor:
	lda	CURSOR_X
	sta	SAVED_X

disp_one_line:

disp_put_string_loop:
	ldy     #0
	lda     (OUTL),Y
	beq     disp_put_string_done
	cmp	#13
	beq	disp_end_of_line

        jsr     hgr_put_char_cursor

        inc     CURSOR_X
        jsr     inc_outl
        jmp     disp_put_string_loop

disp_end_of_line:
	clc
	lda	CURSOR_Y
	adc	#8
	sta	CURSOR_Y

	lda	SAVED_X
	sta	CURSOR_X

	jsr	inc_outl

	jmp	disp_put_string_loop

disp_put_string_done:

	jsr	inc_outl		; put to next

	rts



	;============================
	; like above, but don't save
	;============================
hgr_text_box_nosave:
	lda	#0
	sta	skip_box_save_smc+1
	jsr	hgr_text_box
	lda	#1
	sta	skip_box_save_smc+1
	rts
