1;
2; Groepaz/Hitmen, 19.10.2015
3;
4; high level implementation for the monochrome soft80 implementation
5;
6; unsigned char __fastcall__ textcolor (unsigned char color);
7; unsigned char __fastcall__ bgcolor (unsigned char color);
8;
9
10        .export         soft80mono_textcolor, soft80mono_bgcolor
11        .import         soft80mono_internal_cellcolor, soft80mono_internal_bgcolor
12
13        .importzp       tmp1
14
15        .include        "c64.inc"
16        .include        "soft80.inc"
17
18soft80mono_textcolor:
19        ldx     CHARCOLOR                       ; get old value
20        stx     tmp1                            ; save old value
21        sta     CHARCOLOR                       ; set new value
22
23mkcharcolor:
24        lda     soft80mono_internal_bgcolor
25        asl     a
26        asl     a
27        asl     a
28        asl     a
29        ora     CHARCOLOR
30        sta     soft80mono_internal_cellcolor   ; text/bg combo for new chars
31
32        sei
33        ldy     $01
34        lda     #$34                            ; enable RAM under I/O
35        sta     $01
36
37        lda     soft80mono_internal_cellcolor
38        ; clear loop for vram
39        ldx     #$00
40@lp1:
41        sta     soft80_vram,x
42        sta     soft80_vram+$100,x
43        sta     soft80_vram+$200,x
44        sta     soft80_vram+$2e8,x
45        inx
46        bne     @lp1
47
48        sty     $01
49        cli
50
51        lda     tmp1                            ; get old value
52        rts
53
54soft80mono_bgcolor:
55        ldx     soft80mono_internal_bgcolor     ; get old value
56        stx     tmp1                            ; save old value
57        sta     soft80mono_internal_bgcolor     ; set new value
58
59        jmp     mkcharcolor
60
61;-------------------------------------------------------------------------------
62; force the init constructor to be imported
63
64        .import soft80mono_init
65conio_init      = soft80mono_init
66