1
0
mirror of https://github.com/cc65/cc65.git synced 2024-06-07 23:29:39 +00:00

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
This commit is contained in:
uz 2009-11-24 18:31:16 +00:00
parent 7357b44104
commit bfbf94404b
11 changed files with 111 additions and 80 deletions

View 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

View 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

View 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

View 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

View File

@ -1,23 +1,24 @@
;
; 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
.proc _kbhit
ldx #0 ; High byte of return is always zero
lda keyidx ; Get number of characters
beq L9
lda #1
L9: rts
.endproc

View 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
.proc _kbhit
ldx #0 ; High byte of return is always zero
lda keyidx ; Get number of characters
beq L9
lda #1
L9: rts
.endproc

View 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

View 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

View 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

View 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

View 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