]> git.sur5r.net Git - cc65/blob - libsrc/atmos/cgetc.s
Working on loadable mouse drivers
[cc65] / libsrc / atmos / cgetc.s
1 ;
2 ; Ullrich von Bassewitz, 2003-04-13
3 ;
4 ; char cgetc (void);
5 ;
6
7         .export         _cgetc
8         .constructor    initcgetc
9         .import         cursor
10
11         .include        "atmos.inc"
12
13
14
15 ; ------------------------------------------------------------------------
16 ;
17
18 .proc   _cgetc
19
20         lda     KEYBUF          ; Do we have a character?
21         bmi     @L2             ; Yes: Get it
22
23 ; No character, enable cursor and wait
24
25         lda     cursor          ; Cursor currently off?
26         beq     @L1             ; Skip if so
27         lda     STATUS
28         ora     #%00000001      ; Cursor ON
29         sta     STATUS
30 @L1:    lda     KEYBUF
31         bpl     @L1
32
33 ; If the cursor was enabled, disable it now
34
35         ldx     cursor
36         beq     @L2
37         ldx     #$00            ; Zero high byte
38         dec     STATUS          ; Clear bit zero
39
40 ; We have the character, clear avail flag
41
42 @L2:    and     #$7F            ; Mask out avail flag
43         sta     KEYBUF
44
45 ; Done
46
47         rts
48
49 .endproc
50
51 ; ------------------------------------------------------------------------
52 ; Switch the cursor off, disable capslock
53
54 initcgetc:
55         lda     STATUS
56         and     #%11111110
57         sta     STATUS
58         lda     #$7F
59         sta     CAPSLOCK
60         rts
61