.include "plus4.inc"
-
; --------------------------------------------------------------------------
+.segment "LOWCODE" ; Accesses the ROM - must go into low mem
+
_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
sta TED_CURSLO ; Cursor off
sta TED_CURSHI
-L2: jsr KBDREAD ; Read char and return in A
+L2: sta ENABLE_ROM ; Bank in the ROM
+ jsr KBDREAD ; Read char and return in A (ROM routine)
+ sta ENABLE_RAM ; Reenable the RAM
ldx #0
rts
.constructor initkbd
.destructor donekbd
+.segment "INIT" ; Special init code segment may get overwritten
+
.proc initkbd
ldy #15
.endproc
+.segment "LOWCODE" ; Accesses the ROM - must go into low mem
+
.proc donekbd
ldx #$39 ; Copy the original function keys
+ sta ENABLE_ROM ; Bank in the ROM
@L1: lda FKEY_ORIG,x
sta FKEY_SPACE,x
dex
bpl @L1
+ sta ENABLE_RAM ; Bank out the ROM
rts
.endproc