]> git.sur5r.net Git - cc65/blob - libsrc/osic1p/cgetc.s
Fix high byte of return value, optimized.
[cc65] / libsrc / osic1p / cgetc.s
1 ;\r
2 ; char cgetc (void);\r
3 ;\r
4         .export         _cgetc\r
5         .import         cursor\r
6 \r
7         .include        "osic1p.inc"\r
8         .include        "extzp.inc"\r
9         .include        "zeropage.inc"\r
10 \r
11 ; Input routine from 65V PROM MONITOR, show cursor if enabled\r
12 _cgetc:\r
13         lda     cursor          ; show cursor?\r
14         beq     nocursor\r
15         ldy     CURS_X\r
16         lda     (SCREEN_PTR),y  ; fetch current character\r
17         sta     tmp1            ; save it\r
18         lda     #$A1            ; full white square\r
19         sta     (SCREEN_PTR),y  ; store at cursor position\r
20 nocursor:\r
21         jsr     INPUTC          ; get input character in A\r
22         ldx     cursor\r
23         beq     done            ; was cursor on?\r
24         tax                     ; save A in X\r
25         lda     tmp1            ; fetch saved character\r
26         ldy     CURS_X\r
27         sta     (SCREEN_PTR),y  ; store at cursor position\r
28         txa                     ; restore saved character from X\r
29         ldx     #$00            ; high byte of int return value\r
30 done:\r
31         rts\r