]> git.sur5r.net Git - cc65/blob - libsrc/osic1p/cgetc.s
Fixed _textcolor definition.
[cc65] / libsrc / osic1p / cgetc.s
1 ;
2 ; char cgetc (void);
3 ;
4
5         .constructor    initcgetc
6         .export         _cgetc
7         .import         cursor
8
9         .include        "osic1p.inc"
10         .include        "extzp.inc"
11         .include        "zeropage.inc"
12
13 ; Initialize one-character buffer that is filled by kbhit()
14         .segment        "ONCE"
15 initcgetc:
16         lda     #$00
17         sta     CHARBUF         ; No character in buffer initially
18         rts
19
20 ; Input routine from 65V PROM MONITOR, show cursor if enabled
21         .code
22 _cgetc:
23         lda     CHARBUF         ; character in buffer available?
24         beq     nobuffer
25         tax                     ; save character in X
26         lda     #$00
27         sta     CHARBUF         ; empty buffer
28         beq     restorex        ; restore X and return
29 nobuffer:
30         lda     cursor          ; show cursor?
31         beq     nocursor
32         ldy     CURS_X
33         lda     (SCREEN_PTR),y  ; fetch current character
34         sta     tmp1            ; save it
35         lda     #$A1            ; full white square
36         sta     (SCREEN_PTR),y  ; store at cursor position
37 nocursor:
38         jsr     INPUTC          ; get input character in A
39         ldx     cursor
40         beq     done            ; was cursor on?
41         tax                     ; save A in X
42         lda     tmp1            ; fetch saved character
43         ldy     CURS_X
44         sta     (SCREEN_PTR),y  ; store at cursor position
45
46 restorex:
47         txa                     ; restore saved character from X
48 done:
49         ldx     #$00            ; high byte of int return value
50         rts