;
; Karri Kaksonen, 2022-04-16
;
;

        .export         _textcolor
        .export         txtcolor

        .include        "atari7800.inc"

        .data
;-----------------------------------------------------------------------------
; Holder of the text colour offset
; 0 = red, 42 = green, 84 = white
;
txtcolor:
        .byte   0

        .code

;-----------------------------------------------------------------------------
; Change the text colour
;
; Logical colour names are
; 0 = red
; 1 = green
; 2 = white
;
; The routine will also return the previous textcolor
;
        .proc   _textcolor

        beq     @L2
        sec
        sbc     #1
        beq     @L1
        lda     #84
        jmp     @L2
@L1:    lda     #42
@L2:    ldy     txtcolor
        sta     txtcolor        ; Store new textcolor
        ldx     #0
        tya
        bne     @L3
        rts                     ; Old colour was 0
@L3:    sec
        sbc     #42
        bne     @L4
        lda     #1
        rts                     ; Old colour was 1
@L4:    lda #2
        rts                     ; Old colour was 2
        .endproc
