]> git.sur5r.net Git - cc65/blob - libsrc/cbm610/cpeekc.s
cbm stuff from greggs pull request
[cc65] / libsrc / cbm610 / cpeekc.s
1 ;
2 ; 2016-02-28, Groepaz
3 ; 2017-06-19, Greg King
4 ;
5 ; char cpeekc (void);
6 ;
7
8         .export         _cpeekc
9
10         .import         CURS_X: zp, CharPtr: zp
11
12         .include        "cbm610.inc"
13
14
15 _cpeekc:
16         ldx     IndReg
17         ldy     #$0F
18         sty     IndReg
19
20         ldy     CURS_X
21         lda     (CharPtr),y     ; get char from system bank
22         stx     IndReg
23         ldx     #>$0000
24         and     #<~$80          ; remove reverse bit
25
26 ; Convert the screen code into a PetSCII code.
27 ; $00 - $1F: +$40
28 ; $20 - $3F
29 ; $40 - $5f: +$20
30 ; $60 - $7F: +$40
31
32         cmp     #$20
33         bcs     @sk1            ;(bge)
34         ora     #$40
35         rts
36
37 @sk1:   cmp     #$40
38         bcc     @end            ;(blt)
39         cmp     #$60
40         bcc     @sk2            ;(blt)
41         ;sec
42         adc     #$20 - $01
43 @sk2:   ;clc                    ; both above cmp and adc clear carry flag
44         adc     #$20
45 @end:   rts