]> git.sur5r.net Git - cc65/blob - libsrc/c64/soft80_cpeekc.s
Undo my previous commit.
[cc65] / libsrc / c64 / soft80_cpeekc.s
1 ;
2 ; 2017-12-28, Groepaz
3 ;
4 ; char cpeekc (void);
5 ;
6
7         .export         soft80_cpeekc, soft80_cpeekchar
8
9         .include        "c64.inc"
10         .include        "soft80.inc"
11
12         .macpack longbranch
13
14         .segment "CODE"
15
16 soft80_cpeekc:
17         jsr     soft80_cpeekchar
18         ;  0-1F -> A0-BF
19         ; 20-7F -> 20-7F
20         cmp     #$20
21         bcs     @sk
22         ;clc
23         adc     #$a0
24 @sk:
25         ldx     #0
26         rts
27
28 soft80_cpeekchar:
29
30         sei
31         lda #$34
32         sta $01
33
34         lda CURS_X
35         and #$01
36
37         jne @l1a
38
39         ; test non-inverted character (left side)
40
41         ldx #0
42 @l2aa:
43         ldy #0
44
45         .repeat 8,line
46         lda (SCREEN_PTR),y
47         and #$f0
48         cmp soft80_hi_charset+(line*$80),x
49         bne @l2b
50         .if (line < 7)
51         iny
52         .endif
53         .endrepeat
54
55 @backok:
56         lda #$36
57         sta $01
58         cli
59         txa         ; return char in A
60         ldx #$00    ; revers flag
61         rts
62 @l2b:
63         inx
64         cpx #$80
65         jne @l2aa
66
67         ; test inverted character (left side)
68
69         ldx #0
70 @l2aa2:
71         ldy #0
72
73         .repeat 8,line
74         lda (SCREEN_PTR),y
75         and #$f0
76         eor #$f0
77         cmp soft80_hi_charset+(line*$80),x
78         bne @l2b2
79         .if (line < 7)
80         iny
81         .endif
82         .endrepeat
83
84 @backokrevers:
85         lda #$36
86         sta $01
87         cli
88         txa         ; return char in A
89         ldx #$01    ; revers flag
90         rts
91
92 @l2b2:
93         inx
94         cpx #$80
95         jne @l2aa2
96
97 @backerr:
98         lda #$36
99         sta $01
100         cli
101         ldx #0
102         txa
103         rts
104
105         ; test non-inverted character (right side)
106
107 @l1a:
108         ldx #0
109 @l1aa:
110         ldy #0
111         .repeat 8,line
112         lda (SCREEN_PTR),y
113         and #$0f
114         eor soft80_lo_charset+(line*$80),x
115         bne @l2bb
116         .if line < 7
117         iny
118         .endif
119         .endrepeat
120         jmp @backok
121 @l2bb:
122         inx
123         cpx #$80
124         bne @l1aa
125
126         ; test inverted character (right side)
127
128         ldx #0
129 @l1aa2:
130         ldy #0
131         .repeat 8,line
132         lda (SCREEN_PTR),y
133         and #$0f
134         eor #$0f
135         eor soft80_lo_charset+(line*$80),x
136         bne @l2bb2
137         .if line < 7
138         iny
139         .endif
140         .endrepeat
141         jmp @backokrevers
142 @l2bb2:
143         inx
144         cpx #$80
145         bne @l1aa2
146
147         jmp @backerr
148