]> git.sur5r.net Git - cc65/blob - libsrc/c128/cgetc.s
remove superfluous ".code" line
[cc65] / libsrc / c128 / cgetc.s
1 ;
2 ; Ullrich von Bassewitz, 06.08.1998
3 ;
4 ; char cgetc (void);
5 ;
6
7         .export         _cgetc
8         .constructor    initcgetc
9         .destructor     donecgetc
10
11         .import         cursor
12
13         .include        "c128.inc"
14
15 ;--------------------------------------------------------------------------
16
17 _cgetc: lda     KEY_COUNT       ; Get number of characters
18         bne     L2              ; Jump if there are already chars waiting
19
20 ; Switch on the cursor if needed
21
22         lda     cursor
23         beq     L1
24         jsr     CURS_SET        ; Set cursor to current position
25         jsr     CURS_ON
26         jmp     L2
27 L1:     lda     #$01
28         jsr     CURS_OFF
29 L2:     lda     KEY_COUNT       ; Check characters again
30         beq     L2
31         jsr     CURS_OFF        ; Switch cursor off, if characters available
32
33         jsr     KBDREAD         ; Read char and return in A
34         ldx     #0
35         rts
36
37 ;--------------------------------------------------------------------------
38 ; Module constructor/destructor
39
40 .bss
41 keyvec: .res    2
42
43 .segment        "INIT"
44 initcgetc:
45
46 ; Save the old vector
47
48         lda     KeyStoreVec
49         sta     keyvec
50         lda     KeyStoreVec+1
51         sta     keyvec+1
52
53 ; Set the new vector. I can only hope that this works for other C128
54 ; versions...
55
56         lda     #<$C6B7
57         ldx     #>$C6B7
58         jmp     SetVec
59
60 .code
61 donecgetc:
62         lda     keyvec
63         ldx     keyvec+1
64 SetVec: sei
65         sta     KeyStoreVec
66         stx     KeyStoreVec+1
67         cli
68         rts
69
70