1
0
mirror of https://github.com/cc65/cc65.git synced 2026-03-11 23:42:18 +00:00
Files
cc65/libsrc/apple2/cgetc.s
Colin Leroy-Mira d3ef3e1b62 Apple2: Don't depend on apple2enh definition for characters
Up, Down and Del, as well as Open-Apple, exist on
non-enhanced Apple //e.
2025-05-31 19:43:53 +02:00

65 lines
1.6 KiB
ArmAsm

;
; Kevin Ruland
;
; char cgetc (void);
;
; If open_apple key is pressed then the high-bit of the key is set.
;
.export _cgetc
.ifndef __APPLE2ENH__
.import machinetype
.endif
.import cursor, putchardirect
.include "zeropage.inc"
.include "apple2.inc"
_cgetc:
; Cursor on ?
lda cursor
beq :+
; Show caret.
.ifndef __APPLE2ENH__
lda #' ' | $40 ; Blank, flashing
bit machinetype
bpl put_caret
.endif
lda #$7F | $80 ; Checkerboard, screen code
put_caret:
jsr putchardirect ; Saves old character in tmp3
; Wait for keyboard strobe.
: inc RNDL ; Increment random counter low
bne :+
inc RNDH ; Increment random counter high
: lda KBD
bpl :-- ; If < 128, no key pressed
; Cursor on ?
ldy cursor
beq :+
; Restore old character.
pha
lda tmp3
jsr putchardirect
pla
; At this time, the high bit of the key pressed is set.
: bit KBDSTRB ; Clear keyboard strobe
.ifndef __APPLE2ENH__
bit machinetype ; Apple //e or more recent?
bpl clear
.endif
bit BUTN0 ; Check if OpenApple is down
bmi done
clear: and #$7F ; If not down, then clear high bit
done: ldx #>$0000
rts