From 6078dea817cc53b1daf06bf30c8f33fe707573d4 Mon Sep 17 00:00:00 2001 From: cpg Date: Sun, 3 Nov 2002 22:10:55 +0000 Subject: [PATCH] honour cursor setting git-svn-id: svn://svn.cc65.org/cc65/trunk@1481 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- libsrc/atari/cgetc.s | 45 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 36 insertions(+), 9 deletions(-) diff --git a/libsrc/atari/cgetc.s b/libsrc/atari/cgetc.s index 82b6cdd8e..62e00d2e5 100644 --- a/libsrc/atari/cgetc.s +++ b/libsrc/atari/cgetc.s @@ -1,21 +1,48 @@ ; -; get a kbd char. +; Christian Groessler, November-2002 ; +; get a char from the keyboard ; char cgetc(void) ; - .include "atari.inc" - .export _cgetc - + .include "atari.inc" + .export _cgetc + .import cursor + _cgetc: + jsr setcursor jsr @1 ldx #0 rts -@1: lda KEYBDV+5 - pha - lda KEYBDV+4 - pha +@1: lda KEYBDV+5 + pha + lda KEYBDV+4 + pha lda #12 sta ICAX1Z ; fix problems with direct call to KEYBDV - rts + rts + + +.proc setcursor + + lda OLDCHR ; get char at current cursor position + ldy #0 ; needed later + + ldx cursor ; current cursor setting as requested by the user + beq off + ldx #0 + beq cont + +off: inx +cont: stx CRSINH ; update system variable + + beq turnon + and #$7f ; clear high bit / inverse flag +finish: sta (OLDADR),y ; update on-screen display + rts + +turnon: ora #$80 ; set high bit / inverse flag + bne finish + +.endproc