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