X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=libsrc%2Fc128%2Fcgetc.s;h=7cf7fcc3ed21adf5b9a133f34e05055b27d65b36;hb=f95481fabf041750642c018f798c693ae41b17a8;hp=78e06b1eb84b84e8e7594d6b5cea1155e2bfb0d0;hpb=2bd1f2f69f194fc01804a3fccf9ef371845ffc4a;p=cc65 diff --git a/libsrc/c128/cgetc.s b/libsrc/c128/cgetc.s index 78e06b1eb..7cf7fcc3e 100644 --- a/libsrc/c128/cgetc.s +++ b/libsrc/c128/cgetc.s @@ -4,69 +4,68 @@ ; char cgetc (void); ; - .export _cgetc + .export _cgetc .constructor initcgetc .destructor donecgetc - .import cursor + .import cursor - .include "c128.inc" + .include "cbm_kernal.inc" + .include "c128.inc" ;-------------------------------------------------------------------------- -_cgetc: lda KEY_COUNT ; Get number of characters - bne L2 ; Jump if there are already chars waiting +_cgetc: lda KEY_COUNT ; Get number of characters + bne L2 ; Jump if there are already chars waiting -; Switch on the cursor if needed. We MUST always switch the cursor on, -; before switching it off, because switching it off will restore the +; Switch on the cursor if needed. We MUST always switch the cursor on, +; before switching it off, because switching it off will restore the ; character attribute remembered when it was switched on. So just switching ; it off will restore the wrong character attribute. jsr CURS_SET ; Set cursor to current position - jsr CURS_ON - lda cursor - bne L1 - lda #$01 - jsr CURS_OFF -L1: lda KEY_COUNT ; Check characters again - beq L1 - jsr CURS_OFF ; Switch cursor off, if characters available - -L2: jsr KBDREAD ; Read char and return in A + jsr CURS_ON + lda cursor + bne L1 + lda #$01 + jsr CURS_OFF +L1: lda KEY_COUNT ; Check characters again + beq L1 + jsr CURS_OFF ; Switch cursor off, if characters available + +L2: jsr KBDREAD ; Read char and return in A ldx #0 - rts + rts ;-------------------------------------------------------------------------- ; Module constructor/destructor -.bss -keyvec: .res 2 - .segment "INIT" +keyvec: .res 2 + +.segment "ONCE" initcgetc: ; Save the old vector - lda KeyStoreVec - sta keyvec - lda KeyStoreVec+1 - sta keyvec+1 + lda KeyStoreVec + ldx KeyStoreVec+1 + sta keyvec + stx keyvec+1 ; Set the new vector. I can only hope that this works for other C128 ; versions... - lda #<$C6B7 - ldx #>$C6B7 + lda #<$C6B7 + ldx #>$C6B7 jmp SetVec .code donecgetc: - lda keyvec - ldx keyvec+1 -SetVec: sei - sta KeyStoreVec - stx KeyStoreVec+1 - cli - rts - - + lda keyvec + ldx keyvec+1 +SetVec: sei + sta KeyStoreVec + stx KeyStoreVec+1 + cli + rts