]> git.sur5r.net Git - cc65/blobdiff - libsrc/c128/cgetc.s
Minor comment adjustment.
[cc65] / libsrc / c128 / cgetc.s
index 391a25fd2dfbb66b215f7d0fdbd16fd02dfb9e1e..f3f62ff53db4146568940a54616c25fba1570edd 100644 (file)
@@ -5,10 +5,15 @@
 ;
 
        .export         _cgetc
+        .constructor    initcgetc
+        .destructor     donecgetc
+
        .import         cursor
 
        .include        "c128.inc"
 
+;--------------------------------------------------------------------------
+
 _cgetc:        lda     KEY_COUNT       ; Get number of characters
        bne     L2              ; Jump if there are already chars waiting
 
@@ -16,6 +21,7 @@ _cgetc:       lda     KEY_COUNT       ; Get number of characters
 
        lda     cursor
                beq     L1
+        jsr     CURS_SET        ; Set cursor to current position
        jsr     CURS_ON
        jmp     L2
 L1:            lda     #$01
@@ -28,4 +34,37 @@ L2:          lda     KEY_COUNT       ; Check characters again
        ldx     #0
        rts
 
-          
+;--------------------------------------------------------------------------
+; Module constructor/destructor
+
+.bss
+keyvec:        .res    2
+
+.segment        "INIT"
+initcgetc:
+
+; Save the old vector
+
+       lda     KeyStoreVec
+       sta     keyvec
+       lda     KeyStoreVec+1
+       sta     keyvec+1
+
+; Set the new vector. I can only hope that this works for other C128
+; versions...
+
+       lda     #<$C6B7
+       ldx     #>$C6B7
+        jmp     SetVec
+
+.code
+donecgetc:
+       lda     keyvec
+       ldx     keyvec+1
+SetVec:        sei
+       sta     KeyStoreVec
+       stx     KeyStoreVec+1
+       cli
+       rts
+
+