From: uz Date: Tue, 24 Nov 2009 18:31:16 +0000 (+0000) Subject: Squeezed bytes and cycles out of the kbhit functions for almost all platforms. X-Git-Tag: V2.13.1~49 X-Git-Url: https://git.sur5r.net/?p=cc65;a=commitdiff_plain;h=bfbf94404b8fc2d7c3a0812ffd51f191c7898b26 Squeezed bytes and cycles out of the kbhit functions for almost all platforms. git-svn-id: svn://svn.cc65.org/cc65/trunk@4480 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- diff --git a/libsrc/atari/kbhit.s b/libsrc/atari/kbhit.s index e066aacd4..2aff6dad3 100644 --- a/libsrc/atari/kbhit.s +++ b/libsrc/atari/kbhit.s @@ -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 + + diff --git a/libsrc/c128/kbhit.s b/libsrc/c128/kbhit.s index f63b941a9..28ee2d4de 100644 --- a/libsrc/c128/kbhit.s +++ b/libsrc/c128/kbhit.s @@ -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 + diff --git a/libsrc/c16/kbhit.s b/libsrc/c16/kbhit.s index f1164bbaa..f408c4e51 100644 --- a/libsrc/c16/kbhit.s +++ b/libsrc/c16/kbhit.s @@ -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 + diff --git a/libsrc/c64/kbhit.s b/libsrc/c64/kbhit.s index 1a54c2e5e..9fa04b550 100644 --- a/libsrc/c64/kbhit.s +++ b/libsrc/c64/kbhit.s @@ -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 diff --git a/libsrc/cbm510/kbhit.s b/libsrc/cbm510/kbhit.s index b9f32ed0a..8a94db66e 100644 --- a/libsrc/cbm510/kbhit.s +++ b/libsrc/cbm510/kbhit.s @@ -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 diff --git a/libsrc/cbm610/kbhit.s b/libsrc/cbm610/kbhit.s index b9f32ed0a..09b724b8d 100644 --- a/libsrc/cbm610/kbhit.s +++ b/libsrc/cbm610/kbhit.s @@ -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 diff --git a/libsrc/geos/conio/kbhit.s b/libsrc/geos/conio/kbhit.s index 5786d0aee..6756f49c9 100644 --- a/libsrc/geos/conio/kbhit.s +++ b/libsrc/geos/conio/kbhit.s @@ -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 diff --git a/libsrc/lynx/kbhit.s b/libsrc/lynx/kbhit.s index b19587a41..f6a426285 100644 --- a/libsrc/lynx/kbhit.s +++ b/libsrc/lynx/kbhit.s @@ -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 diff --git a/libsrc/pet/kbhit.s b/libsrc/pet/kbhit.s index 272bad778..a09c28321 100644 --- a/libsrc/pet/kbhit.s +++ b/libsrc/pet/kbhit.s @@ -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 diff --git a/libsrc/plus4/kbhit.s b/libsrc/plus4/kbhit.s index 2a804cd5b..87e379955 100644 --- a/libsrc/plus4/kbhit.s +++ b/libsrc/plus4/kbhit.s @@ -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 diff --git a/libsrc/vic20/kbhit.s b/libsrc/vic20/kbhit.s index 0fb00bf99..713646776 100644 --- a/libsrc/vic20/kbhit.s +++ b/libsrc/vic20/kbhit.s @@ -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