]> git.sur5r.net Git - cc65/blob - libsrc/atari/cgetc.s
Add "joystick mouse" driver and default mouse callback routine (not
[cc65] / libsrc / atari / cgetc.s
1 ;
2 ; Christian Groessler, November-2002
3 ;
4 ; get a char from the keyboard
5 ; char cgetc(void)
6 ;
7
8         .include "atari.inc"
9         .export _cgetc,setcursor
10         .import KEYBDV_handler
11         .import cursor,mul40
12
13 _cgetc:
14         jsr     setcursor
15         lda     #12
16         sta     ICAX1Z          ; fix problems with direct call to KEYBDV
17 .ifndef __ATARIXL__
18         jsr     @1
19 .else
20         jsr     KEYBDV_handler
21 .endif
22         ldx     #0
23         rts
24
25 .ifndef __ATARIXL__
26 @1:     lda     KEYBDV+5
27         pha
28         lda     KEYBDV+4
29         pha
30         rts
31 .endif
32
33 .proc   setcursor
34
35         ldy     #0
36         lda     OLDCHR
37         sta     (OLDADR),y
38
39         lda     ROWCRS
40         jsr     mul40
41         clc
42         adc     SAVMSC          ; add start of screen memory
43         sta     OLDADR
44         txa
45         adc     SAVMSC+1
46         sta     OLDADR+1
47         lda     COLCRS
48         adc     OLDADR
49         sta     OLDADR
50         bcc     nc
51         inc     OLDADR+1
52 nc:     lda     (OLDADR),y
53         sta     OLDCHR
54
55         ldx     cursor          ; current cursor setting as requested by the user
56         beq     off
57         ldx     #0
58         beq     cont
59
60 off:    inx
61 cont:   stx     CRSINH          ; update system variable
62
63         beq     turnon
64         and     #$7f            ; clear high bit / inverse flag
65 finish: sta     (OLDADR),y      ; update on-screen display
66         rts
67
68 turnon: ora     #$80            ; set high bit / inverse flag
69         bne     finish
70
71 .endproc