]> git.sur5r.net Git - cc65/commitdiff
Squeezed bytes and cycles out of the kbhit functions for almost all platforms.
authoruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Tue, 24 Nov 2009 18:31:16 +0000 (18:31 +0000)
committeruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Tue, 24 Nov 2009 18:31:16 +0000 (18:31 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@4480 b7a2c559-68d2-44c3-8de9-860c34a00d81

libsrc/atari/kbhit.s
libsrc/c128/kbhit.s
libsrc/c16/kbhit.s
libsrc/c64/kbhit.s
libsrc/cbm510/kbhit.s
libsrc/cbm610/kbhit.s
libsrc/geos/conio/kbhit.s
libsrc/lynx/kbhit.s
libsrc/pet/kbhit.s
libsrc/plus4/kbhit.s
libsrc/vic20/kbhit.s

index e066aacd4ed899e0257b8ba010bcfaefee9d8847..2aff6dad3969f727da7faac8af285704ce5a379c 100644 (file)
@@ -1,17 +1,23 @@
 ;
 ; Christian Groessler, 19-Feb-2000
 ;
-; int kbhit (void);
+; unsigned char kbhit (void);
 ;
 
        .export         _kbhit
-       .import         return0, return1
+       .import         return1
 
        .include        "atari.inc"
 
-_kbhit:
-       ldx     CH              ; last pressed key
-       inx                     ; 255 means "no key"
-       bne     L1
-       jmp     return0
-L1:    jmp     return1
+.proc   _kbhit
+
+       ldx     CH              ; last pressed key
+       inx                     ; 255 means "no key"
+       bne     L1
+        txa                     ; X = A = 0
+        rts
+L1:    jmp     return1
+
+.endproc
+
+
index f63b941a903d242fbfdbf5c523cb3edad15786b8..28ee2d4ded3e423098926694e939cbc33538aaf3 100644 (file)
@@ -1,21 +1,25 @@
 ;
 ; Ullrich von Bassewitz, 18.08.1998
 ;
-; int kbhit (void);
+; unsigned char kbhit (void);
 ;
 
        .export         _kbhit
-       .import         return0, return1
 
        .include        "c128.inc"
 
-_kbhit:
+
+.proc   _kbhit
+
+        ldx     #0              ; High byte of return is always zero
        lda     KEY_COUNT       ; Get number of characters
 ;      ora     FKEY_COUNT      ; Or with number of chars from function keys
-       bne     L1
-       jmp     return0
-L1:    jmp     return1
+        beq     L9
+        lda     #1
+L9:     rts
 
+.endproc
 
 
 
+                
index f1164bbaac5ea9913a82f739fe3b2804e7f900ab..f408c4e5179e074a56111755b66953340f4e66ab 100644 (file)
@@ -1,20 +1,25 @@
 ;
 ; Ullrich von Bassewitz, 06.08.1998
 ;
-; int kbhit (void);
+; unsigned char kbhit (void);
 ;
 
        .export         _kbhit
-       .import         return0, return1
 
        .include        "plus4.inc"
 
-_kbhit:
+
+.proc   _kbhit
+
+        ldx     #0              ; High byte of return is always zero
        lda     KEY_COUNT       ; Get number of characters
        ora     FKEY_COUNT      ; Or with number of chars from function keys
-       bne     L1
-       jmp     return0
-L1:    jmp     return1
+        beq     L9
+        lda     #1
+L9:     rts
+
+.endproc
+
 
 
 
index 1a54c2e5e6fcb3af957053c8889bea8494cad644..9fa04b5501db7d2b478835577e5bffd08b650076 100644 (file)
@@ -1,20 +1,23 @@
 ;
 ; Ullrich von Bassewitz, 06.08.1998
 ;
-; int kbhit (void);
+; unsigned char kbhit (void);
 ;
 
        .export         _kbhit
-       .import         return0, return1
 
        .include        "c64.inc"
 
-_kbhit:
+
+.proc   _kbhit
+
+        ldx     #0              ; High byte of return is always zero
        lda     KEY_COUNT       ; Get number of characters
-       bne     L1
-       jmp     return0
-L1:    jmp     return1
+        beq     L9
+        lda     #1
+L9:     rts
 
+.endproc
 
 
 
index b9f32ed0ab1b0c45e0157ffc1bf6291803b053f4..8a94db66e4f70d010052b36a17e0a8d7757d4d86 100644 (file)
@@ -1,21 +1,22 @@
 ;
 ; Ullrich von Bassewitz, 06.08.1998
 ;
-; int kbhit (void);
+; unsigned char kbhit (void);
 ;
 
        .export         _kbhit
-       .import         return0, return1
         .import         keyidx: zp
 
 
-.proc  _kbhit
-       lda     keyidx          ; Get number of characters
-       bne     L1
-       jmp     return0
-L1:    jmp     return1
-.endproc
+.proc   _kbhit
+
+        ldx     #0              ; High byte of return is always zero
+               lda     keyidx          ; Get number of characters
+        beq     L9
+        lda     #1
+L9:     rts
 
+.endproc
 
 
 
index b9f32ed0ab1b0c45e0157ffc1bf6291803b053f4..09b724b8dfe6b2b8e3cabe0ef289d4b43c6d5425 100644 (file)
@@ -1,23 +1,22 @@
 ;
 ; Ullrich von Bassewitz, 06.08.1998
 ;
-; int kbhit (void);
+; unsigned char kbhit (void);
 ;
 
        .export         _kbhit
-       .import         return0, return1
         .import         keyidx: zp
 
 
-.proc  _kbhit
-       lda     keyidx          ; Get number of characters
-       bne     L1
-       jmp     return0
-L1:    jmp     return1
-.endproc
-
+.proc   _kbhit
 
+        ldx     #0              ; High byte of return is always zero
+               lda     keyidx          ; Get number of characters
+        beq     L9
+        lda     #1
+L9:     rts
 
+.endproc
 
 
 
index 5786d0aeec5dd2acc215c864465e3dfbee66f4c2..6756f49c9391c0260bf710ee4d2d84c1b5ab21c3 100644 (file)
@@ -7,12 +7,16 @@
 ; unsigned char kbhit (void);
 
            .export _kbhit
-           .import return0, return1
 
            .include "../inc/geossym.inc"
 
-_kbhit:
-           lda pressFlag
-           bmi L1
-           jmp return0
-L1:        jmp return1
+.proc   _kbhit
+
+        ldx     #0              ; High byte of result
+        lda     pressFlag
+        rol                     ; Bit 7 is new key flag
+        txa                     ; A = 0
+        rol
+        rts
+
+.endproc
index b19587a41cc82dc2eed7d4873d45d85e611abe69..f6a42628522abd9acb5e9060733c6bd4d807e840 100644 (file)
@@ -7,7 +7,7 @@
        .export         _kbhit
        .export         KBEDG
        .export         KBSTL
-       .import         return0, return1
+       .import         return1
 
 ; --------------------------------------------------------------------------
 ; The Atari Lynx has a very small keyboard - only 3 keys
@@ -49,7 +49,8 @@ _kbhit:
        sta     KBNPR           ; inverted previous ones pressed
        stx     KBPRV
        lda     KBEDG
-       beq @L1
+               beq     @L1
        jmp     return1         ; Key hit
-@L1:
-       jmp     return0         ; No new keys hit
+
+@L1:    tax                     ; No new keys hit
+        rts
index 272bad7781211baf2dc38a50406ce0c7641fff38..a09c283219b886268de8e0f6eb31fe06c47b8541 100644 (file)
@@ -1,20 +1,22 @@
 ;
 ; Ullrich von Bassewitz, 26.11.1998
 ;
-; int kbhit (void);
+; unsigned char kbhit (void);
 ;
 
        .export         _kbhit
-       .import         return0, return1
 
        .include        "pet.inc"
 
-_kbhit:
-       lda     KEY_COUNT       ; Get number of characters
-       bne     L1
-       jmp     return0
-L1:    jmp     return1
 
+.proc   _kbhit
 
+        ldx     #0              ; High byte of return is always zero
+       lda     KEY_COUNT       ; Get number of characters
+        beq     L9
+        lda     #1
+L9:     rts
+
+.endproc
 
 
index 2a804cd5ba0bc940a5694c82cda4722da4d1a249..87e379955735f86a6c9c9e46c2b2cab725f34b3e 100644 (file)
@@ -1,21 +1,24 @@
 ;
 ; Ullrich von Bassewitz, 06.08.1998
 ;
-; int kbhit (void);
+; unsigned char kbhit (void);
 ;
 
        .export         _kbhit
-       .import         return0, return1
-       
+
        .include        "plus4.inc"
 
-_kbhit:
+
+.proc   _kbhit
+
+        ldx     #0              ; High byte of return is always zero
        lda     KEY_COUNT       ; Get number of characters
        ora     FKEY_COUNT      ; Or with number of chars from function keys
-       bne     L1
-       jmp     return0
-L1:    jmp     return1
+        beq     L9
+        lda     #1
+L9:     rts
 
+.endproc
 
 
 
index 0fb00bf99dbdc81e4e2e629be6addc97d8a00021..713646776838bc0e109349697a57aa3b47240e0f 100644 (file)
@@ -1,20 +1,23 @@
 ;
 ; Ullrich von Bassewitz, 06.08.1998
 ;
-; int kbhit (void);
+; unsigned char kbhit (void);
 ;
 
        .export         _kbhit
-       .import         return0, return1
 
        .include        "vic20.inc"
 
-_kbhit:
+
+.proc   _kbhit
+
+        ldx     #0              ; High byte of return is always zero
        lda     KEY_COUNT       ; Get number of characters
-       bne     L1
-       jmp     return0
-L1:    jmp     return1
+        beq     L9
+        lda     #1
+L9:     rts
 
+.endproc