mirror of
https://github.com/cc65/cc65.git
synced 2024-08-19 02:29:33 +00:00
in the distribution. Added --forget-inc-paths to the command line of the assembler in the Makefiles, because the assembler does now have builtin paths and will find include files from an installation first. Hopefully fixed any problems that arose from the two changes. git-svn-id: svn://svn.cc65.org/cc65/trunk@4223 b7a2c559-68d2-44c3-8de9-860c34a00d81
93 lines
1.8 KiB
ArmAsm
93 lines
1.8 KiB
ArmAsm
;
|
|
; Ullrich von Bassewitz, 06.08.1998
|
|
;
|
|
; char cgetc (void);
|
|
;
|
|
|
|
.export _cgetc
|
|
.import cursor
|
|
|
|
.include "plus4.inc"
|
|
|
|
|
|
; --------------------------------------------------------------------------
|
|
|
|
_cgetc: lda KEY_COUNT ; Get number of characters
|
|
ora FKEY_COUNT ; Or with number of function key chars
|
|
bne L2 ; Jump if there are already chars waiting
|
|
|
|
; Switch on the cursor if needed
|
|
|
|
ldy CURS_X
|
|
lda (CRAM_PTR),y ; Get current char
|
|
pha ; And save it
|
|
lda CHARCOLOR
|
|
sta (CRAM_PTR),y
|
|
|
|
lda cursor
|
|
beq L1 ; Jump if no cursor
|
|
tya
|
|
clc
|
|
adc SCREEN_PTR
|
|
sta TED_CURSLO
|
|
lda SCREEN_PTR+1
|
|
adc #$00
|
|
sbc #$0B ; + carry = $C00 (screen address)
|
|
sta TED_CURSHI
|
|
|
|
L1: lda KEY_COUNT
|
|
ora FKEY_COUNT
|
|
beq L1
|
|
pla
|
|
sta (CRAM_PTR),y
|
|
lda #$ff
|
|
sta TED_CURSLO ; Cursor off
|
|
sta TED_CURSHI
|
|
|
|
L2: jsr KBDREAD ; Read char and return in A
|
|
ldx #0
|
|
rts
|
|
|
|
; --------------------------------------------------------------------------
|
|
; Make the function keys return function key codes instead of the current
|
|
; strings so the program will see and may handle them.
|
|
; Undo this change when the program ends
|
|
|
|
.constructor initkbd
|
|
.destructor donekbd
|
|
|
|
.segment "INIT"
|
|
|
|
.proc initkbd
|
|
|
|
ldy #15
|
|
@L1: lda fnkeys,y
|
|
sta FKEY_SPACE,y
|
|
dey
|
|
bpl @L1
|
|
rts
|
|
|
|
.endproc
|
|
|
|
|
|
.code
|
|
|
|
.proc donekbd
|
|
|
|
ldx #$39 ; Copy the original function keys
|
|
@L1: lda FKEY_ORIG,x
|
|
sta FKEY_SPACE,x
|
|
dex
|
|
bpl @L1
|
|
rts
|
|
|
|
.endproc
|
|
|
|
|
|
; Function key table, readonly
|
|
|
|
.rodata
|
|
fnkeys: .byte $01, $01, $01, $01, $01, $01, $01, $01
|
|
.byte 133, 137, 134, 138, 135, 139, 136, 140
|
|
|