;
; Ullrich von Bassewitz, 13.09.2001
;

        .export         _textcolor, _bgcolor, _bordercolor
        .import         sys_bank, restore_bank
        .import         vic: zp, CHARCOLOR: zp

        .include        "cbm510.inc"


; ------------------------------------------------------------------------
; unsigned char __fastcall__ textcolor (unsigned char color);
; /* Set the color for text output. The old color setting is returned. */
;

.proc   _textcolor

        ldx     CHARCOLOR       ; get old value
        sta     CHARCOLOR       ; set new value
        txa
        rts

.endproc

; ------------------------------------------------------------------------
; unsigned char __fastcall__ bgcolor (unsigned char color);
; /* Set the color for the background. The old color setting is returned. */
;

.proc   _bgcolor

        jsr     sys_bank                ; Switch to the system bank
        pha                             ; Save new color
        ldy     #VIC_BG_COLOR0
        lda     (vic),y                 ; Get current color...
        tax                             ; ...into X
        pla                             ; Get new color
        sta     (vic),y                 ; Set new color
        txa                             ; Get old color into X
        jmp     restore_bank            ; Restore the old color

.endproc

; ------------------------------------------------------------------------
; unsigned char __fastcall__ bordercolor (unsigned char color);
; /* Set the color for the border. The old color setting is returned. */

.proc   _bordercolor

        jsr     sys_bank                ; Switch to the system bank
        pha                             ; Save new color
        ldy     #VIC_BORDERCOLOR
        lda     (vic),y                 ; Get current color...
        tax                             ; ...into X
        pla                             ; Get new color
        sta     (vic),y                 ; Set new color
        txa                             ; Get old color into X
        jmp     restore_bank            ; Restore the old color

.endproc