]> git.sur5r.net Git - cc65/blob - libsrc/c128/cpeekc.s
cbm stuff from greggs pull request
[cc65] / libsrc / c128 / cpeekc.s
1 ;
2 ; 2016-02-28, Groepaz
3 ; 2017-06-26, Greg King
4 ;
5 ; char cpeekc (void);
6 ;
7
8         .export         _cpeekc
9
10         .import         plot, popa
11
12         .include        "zeropage.inc"
13         .include        "c128.inc"
14
15
16 _cpeekc:
17         lda     MODE
18         bmi     @c80
19
20         ldy     CURS_X
21         lda     (SCREEN_PTR),y  ; get char
22
23 @return:
24         and     #<~$80          ; remove reverse flag
25
26 ; Convert the screen code into a PetSCII code.
27 ; $00 - $1F: +$40
28 ; $20 - $3F
29 ; $40 - $7F: +$80
30
31         cmp     #$20
32         bcs     @sk1            ;(bge)
33         ora     #$40
34         rts
35
36 @sk1:   cmp     #$40
37         bcc     @end            ;(blt)
38         ora     #$80
39 @end:   ldx     #0
40         rts
41
42 @c80:
43         lda     SCREEN_PTR
44         ldy     SCREEN_PTR+1
45         clc
46         adc     CURS_X
47         bcc     @s
48         iny
49
50         ; get byte from VDC mem
51 @s:     ldx     #VDC_DATA_LO
52         stx     VDC_INDEX
53 @L0:    bit     VDC_INDEX
54         bpl     @L0
55         sta     VDC_DATA
56         dex
57         stx     VDC_INDEX
58         sty     VDC_DATA
59
60         ldx     #VDC_RAM_RW
61         stx     VDC_INDEX
62 @L1:    bit     VDC_INDEX
63         bpl     @L1             ; wait for blanking
64         lda     VDC_DATA
65         jmp     @return