mirror of
https://github.com/cc65/cc65.git
synced 2024-11-05 08:05:51 +00:00
b1969ac16a
Patch provided by Jeff Tranter.
29 lines
1003 B
ArmAsm
29 lines
1003 B
ArmAsm
;
|
|
; unsigned char kbhit (void);
|
|
;
|
|
|
|
.export _kbhit
|
|
.include "osic1p.inc"
|
|
|
|
_kbhit:
|
|
lda #%11111110 ; Select first keyboard row
|
|
scan:
|
|
sta KBD ; Select keyboard row
|
|
tax ; Save A
|
|
lda KBD ; Read keyboard columns
|
|
ora #$01 ; Mask out lsb (Shift Lock), since we ignore it
|
|
cmp #$FF ; No keys pressed?
|
|
bne keypressed
|
|
txa ; Restore A
|
|
sec ; Want to shift in ones
|
|
rol a ; Rotate row select to next bit position
|
|
cmp #$FF ; Done?
|
|
bne scan ; If not, continue
|
|
ldx #$00 ; High byte of return is always zero
|
|
lda #$00 ; Return false
|
|
rts
|
|
keypressed:
|
|
ldx #$00 ; High byte of return is always zero
|
|
lda #$01 ; Return true
|
|
rts
|