module constructors/destructors and remove the conio init functions that
were called from the startup code.
git-svn-id: svn://svn.cc65.org/cc65/trunk@479
b7a2c559-68d2-44c3-8de9-
860c34a00d81
.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
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
+
+.proc initkbd
+
+ ldy #15
+@L1: lda fnkeys,y
+ sta FKEY_SPACE,y
+ dey
+ bpl @L1
+ rts
+
+.endproc
+
+
+.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
+
; Low level stuff for screen output/console input
;
- .export initconio, doneconio
.exportzp CURS_X, CURS_Y
- .import xsize, ysize
.include "plus4.inc"
- .include "../cbm/cbm.inc"
-
-.code
-
-initconio:
- ldy #15
-L1: lda fnkeys,y
- sta FKEY_SPACE,y
- dey
- bpl L1
- rts
-
-
-doneconio:
- ldx #$39 ; Copy the original function keys
-L2: lda FKEY_ORIG,x
- sta FKEY_SPACE,x
- dex
- bpl L2
- rts
-
-; Function key table, readonly
-
-.rodata
-fnkeys: .byte $01, $01, $01, $01, $01, $01, $01, $01
- .byte 133, 137, 134, 138, 135, 139, 136, 140
; This must be the *first* file on the linker command line
;
- .export _exit
+ .export _exit
.import initlib, donelib
- .import push0, _main
- .import initconio, doneconio, zerobss
+ .import push0, _main, zerobss
.include "plus4.inc"
.include "../cbm/cbm.inc"
jsr initlib
-; Initialize conio stuff
-
- jsr initconio
-
; Pass an empty command line
jsr push0 ; argc
ldx spsave
txs
-; Reset the conio stuff
-
- jsr doneconio
-
; Copy back the zero page stuff
ldx #zpspace-1