Skip to content

Commit 25efed0

Browse files
author
Csaba Fekete
committed
Fixes #270 KEY function for PET + keyboard scancodes library
1 parent 611df4f commit 25efed0

12 files changed

Lines changed: 458 additions & 20 deletions

lib/io/_keyboard.asm

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -60,27 +60,35 @@ IO_INPUT SUBROUTINE
6060
; HB: Keyboard write mask
6161
; LB: Keyboard read mask
6262
MAC F_key_word ; @push @pull
63-
IF TARGET == c64 || TARGET = c128
64-
ldx #%11111111
65-
stx IO_DDRA
66-
ldx #%00000000
67-
stx IO_DDRB
68-
ENDIF
69-
If !FPULL
70-
pla
71-
sta IO_KEYW
72-
IF TARGET & c264
73-
sta IO_KEYR
74-
ENDIF
75-
ELSE
76-
sty IO_KEYW
77-
IF TARGET & c264
78-
sta IO_KEYR
79-
ENDIF
80-
ENDIF
63+
IF TARGET & pet
64+
IF !FPULL
65+
pla
66+
sta IO_KEYW
67+
ELSE
68+
sty IO_KEYW
69+
ENDIF
70+
ELSE
71+
IF TARGET == c64 || TARGET = c128
72+
ldx #%11111111
73+
stx IO_DDRA
74+
ldx #%00000000
75+
stx IO_DDRB
76+
ENDIF
77+
IF !FPULL
78+
pla
79+
sta IO_KEYW
80+
IF TARGET & c264
81+
sta IO_KEYR
82+
ENDIF
83+
ELSE
84+
sty IO_KEYW
85+
IF TARGET & c264
86+
sta IO_KEYR
87+
ENDIF
88+
ENDIF
8189
ENDIF
82-
If !FPULL
83-
pla
90+
IF !FPULL
91+
pla
8492
ENDIF
8593
and IO_KEYR
8694
bne .f

lib/keycodes_c128.bas

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
INCLUDE "keycodes_c64.bas"
2+
3+
' Keyboard scancodes for KEY() function
4+
' additional keys on the C128
5+
6+
SHARED CONST KEY_HELP = $0101
7+
SHARED CONST KEY_KP_8 = $0102
8+
SHARED CONST KEY_KP_5 = $0104
9+
SHARED CONST KEY_TAB = $0108
10+
SHARED CONST KEY_KP_2 = $0110
11+
SHARED CONST KEY_KP_4 = $0120
12+
SHARED CONST KEY_KP_7 = $0140
13+
SHARED CONST KEY_KP_1 = $0180
14+
15+
SHARED CONST KEY_ESC = $0201
16+
SHARED CONST KEY_KP_PLUS = $0202
17+
SHARED CONST KEY_KP_MINUS = $0204
18+
SHARED CONST KEY_LF = $0208
19+
SHARED CONST KEY_ENTER = $0210
20+
SHARED CONST KEY_KP_6 = $0220
21+
SHARED CONST KEY_KP_9 = $0240
22+
SHARED CONST KEY_KP_3 = $0280
23+
24+
SHARED CONST KEY_ALT = $0301
25+
SHARED CONST KEY_KP_0 = $0302
26+
SHARED CONST KEY_KP_COMMA = $0304
27+
SHARED CONST KEY_ALT_CURSOR_UP = $0308
28+
SHARED CONST KEY_ALT_CURSOR_DOWN = $0310
29+
SHARED CONST KEY_ALT_CURSOR_LEFT = $0320
30+
SHARED CONST KEY_ALT_CURSOR_RIGHT = $0340
31+
SHARED CONST KEY_NO_SCROLL = $0380
32+
33+

lib/keycodes_c264.bas

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
INCLUDE "keycodes_cx64_common.bas"
2+
3+
' Keyboard scancodes of Commodore 264 series for KEY() function
4+
5+
' Printable characters
6+
SHARED CONST KEY_AT = $DF40
7+
SHARED CONST KEY_PLUS = $BF40
8+
SHARED CONST KEY_POUND = $FE04
9+
10+
' Control keys
11+
SHARED CONST KEY_CURSOR_DOWN = $DF01
12+
SHARED CONST KEY_CURSOR_LEFT = $BF01
13+
SHARED CONST KEY_CURSOR_RIGHT = $BF08
14+
SHARED CONST KEY_CURSOR_UP = $DF08
15+
SHARED CONST KEY_ESC = $BF10
16+
SHARED CONST KEY_HOME = $7F02
17+
SHARED CONST KEY_SHIFT = $FD80
18+
19+
' Function keys
20+
SHARED CONST KEY_F2 = $FE20
21+
SHARED CONST KEY_F3 = $FE40
22+
SHARED CONST KEY_HELP = $FE08

lib/keycodes_c64.bas

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
INCLUDE "keycodes_cx64_common.bas"
2+
3+
' Keyboard scancodes of C64/C128 for KEY() function
4+
5+
' Printable characters
6+
SHARED CONST KEY_ARROW_LEFT = $7F02
7+
SHARED CONST KEY_ARROW_UP = $BF40
8+
SHARED CONST KEY_MINUS = $DF40
9+
SHARED CONST KEY_PLUS = $DF01
10+
SHARED CONST KEY_POUND = $BF01
11+
12+
' Control keys
13+
SHARED CONST KEY_CURSOR_DOWN = $FE80
14+
SHARED CONST KEY_CURSOR_RIGHT = $FE04
15+
SHARED CONST KEY_HOME = $BF08
16+
SHARED CONST KEY_SHIFT_LEFT = $FD80
17+
SHARED CONST KEY_SHIFT_RIGHT = $BF10
18+
19+
' Function keys
20+
SHARED CONST KEY_F3 = $FE20
21+
SHARED CONST KEY_F5 = $FE40
22+
SHARED CONST KEY_F7 = $FE08

lib/keycodes_cx64_common.bas

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
INCLUDE "keycodes_vic20_common.bas"
2+
3+
' Keyboard scancodes for KEY() function
4+
' common to C64/C128 and 264 series keyboards
5+
6+
' Numbers
7+
SHARED CONST KEY_1 = $7F01
8+
SHARED CONST KEY_2 = $7F08
9+
SHARED CONST KEY_3 = $FD01
10+
SHARED CONST KEY_4 = $FD08
11+
SHARED CONST KEY_5 = $FB01
12+
SHARED CONST KEY_6 = $FB08
13+
SHARED CONST KEY_7 = $F701
14+
SHARED CONST KEY_8 = $F708
15+
SHARED CONST KEY_9 = $EF01
16+
SHARED CONST KEY_0 = $EF08
17+
18+
' Letters
19+
SHARED CONST KEY_A = $FD04
20+
SHARED CONST KEY_B = $F710
21+
SHARED CONST KEY_C = $FB10
22+
' KEY_D: see keycodes_vic20_common.bas
23+
SHARED CONST KEY_E = $FD40
24+
SHARED CONST KEY_F = $FB20
25+
SHARED CONST KEY_G = $F704
26+
SHARED CONST KEY_H = $F720
27+
SHARED CONST KEY_I = $EF02
28+
SHARED CONST KEY_J = $EF04
29+
SHARED CONST KEY_K = $EF20
30+
SHARED CONST KEY_L = $DF04
31+
' KEY_M: see keycodes_vic20_common.bas
32+
SHARED CONST KEY_N = $EF80
33+
SHARED CONST KEY_O = $EF40
34+
SHARED CONST KEY_P = $DF02
35+
SHARED CONST KEY_Q = $7F40
36+
SHARED CONST KEY_R = $FB02
37+
SHARED CONST KEY_S = $FD20
38+
SHARED CONST KEY_T = $FB40
39+
SHARED CONST KEY_U = $F740
40+
SHARED CONST KEY_V = $F780
41+
' KEY_W: see keycodes_vic20_common.bas
42+
SHARED CONST KEY_X = $FB80
43+
SHARED CONST KEY_Y = $F702
44+
SHARED CONST KEY_Z = $FD10
45+
46+
' Printable characters
47+
SHARED CONST KEY_ASTERISK = $BF02
48+
' KEY_COLON: see keycodes_vic20_common.bas
49+
SHARED CONST KEY_COMMA = $DF80
50+
SHARED CONST KEY_COMMODORE = $7F20
51+
SHARED CONST KEY_DOT = $DF10
52+
SHARED CONST KEY_EQUALS = $BF20
53+
SHARED CONST KEY_RETURN = $FE02
54+
SHARED CONST KEY_SEMICOLON = $BF04
55+
SHARED CONST KEY_SLASH = $BF80
56+
SHARED CONST KEY_SPACE = $7F10
57+
58+
' Control keys
59+
SHARED CONST KEY_CTRL = $7F04
60+
SHARED CONST KEY_DEL = $FE01
61+
SHARED CONST KEY_STOP = $7F80
62+
63+
' Function keys
64+
SHARED CONST KEY_F1 = $FE10

lib/keycodes_pet_business.bas

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
INCLUDE "keycodes_pet_common.bas"
2+
3+
' Keyboard scancodes of PET/CBM business keyboard for KEY() function
4+
5+
' Numbers
6+
SHARED CONST KEY_1 = $F101
7+
SHARED CONST KEY_2 = $F001
8+
SHARED CONST KEY_3 = $F902
9+
SHARED CONST KEY_4 = $F102
10+
SHARED CONST KEY_5 = $F002
11+
SHARED CONST KEY_6 = $F904
12+
SHARED CONST KEY_7 = $F104
13+
SHARED CONST KEY_8 = $F004
14+
SHARED CONST KEY_9 = $F908
15+
SHARED CONST KEY_0 = $F108
16+
17+
' Letters
18+
SHARED CONST KEY_A = $F301
19+
' KEY_B: see keycodes_pet_common.bas
20+
' KEY_C: see keycodes_pet_common.bas
21+
SHARED CONST KEY_D = $F302
22+
SHARED CONST KEY_E = $F502
23+
SHARED CONST KEY_F = $F204
24+
SHARED CONST KEY_G = $F304
25+
SHARED CONST KEY_H = $F208
26+
SHARED CONST KEY_I = $F420
27+
SHARED CONST KEY_J = $F308
28+
SHARED CONST KEY_K = $F220
29+
SHARED CONST KEY_L = $F320
30+
SHARED CONST KEY_M = $F808
31+
' KEY_N: see keycodes_pet_common.bas
32+
SHARED CONST KEY_O = $F520
33+
SHARED CONST KEY_P = $F440
34+
SHARED CONST KEY_Q = $F501
35+
SHARED CONST KEY_R = $F404
36+
SHARED CONST KEY_S = $F202
37+
SHARED CONST KEY_T = $F504
38+
SHARED CONST KEY_U = $F508
39+
' KEY_V: see keycodes_pet_common.bas
40+
SHARED CONST KEY_W = $F402
41+
SHARED CONST KEY_X = $F802
42+
SHARED CONST KEY_Y = $F408
43+
SHARED CONST KEY_Z = $F701
44+
45+
' Printable characters
46+
SHARED CONST KEY_ARROW_LEFT = $F901
47+
SHARED CONST KEY_ARROW_UP = $F120
48+
' KEY_AT: see keycodes_pet_business_[uk/us].bas
49+
' KEY_BACKSLASH: see keycodes_pet_business_[uk/us].bas
50+
' KEY_BRACKET_LEFT: see keycodes_pet_business_[uk/us].bas
51+
' KEY_BRACKET_RIGHT: see keycodes_pet_business_[uk/us].bas
52+
SHARED CONST KEY_COLON = $F920
53+
' KEY_COMMA: see keycodes_pet_common.bas
54+
SHARED CONST KEY_DOT = $F608
55+
SHARED CONST KEY_MINUS = $F008
56+
SHARED CONST KEY_RETURN = $F310
57+
' KEY_SEMICOLON: see keycodes_pet_business_[uk/us].bas
58+
SHARED CONST KEY_SLASH = $F840
59+
SHARED CONST KEY_SPACE = $F804
60+
SHARED CONST KEY_TAB = $F401
61+
62+
' Control keys
63+
SHARED CONST KEY_CURSOR_DOWN = $F510
64+
SHARED CONST KEY_CURSOR_RIGHT = $F020
65+
SHARED CONST KEY_DEL = $F480
66+
SHARED CONST KEY_ESC = $F201
67+
SHARED CONST KEY_HOME = $F810
68+
SHARED CONST KEY_REPEAT = $F740
69+
SHARED CONST KEY_REVERSE = $F801
70+
SHARED CONST KEY_SHIFT_LEFT = $F601
71+
SHARED CONST KEY_SHIFT_RIGHT = $F640
72+
' KEY_STOP: see keycodes_pet_common.bas
73+
74+
' Keypad
75+
SHARED CONST KEY_KP_1 = $F880
76+
SHARED CONST KEY_KP_2 = $F780
77+
SHARED CONST KEY_KP_3 = $F680
78+
SHARED CONST KEY_KP_4 = $F580
79+
SHARED CONST KEY_KP_5 = $F280
80+
SHARED CONST KEY_KP_6 = $F380
81+
SHARED CONST KEY_KP_7 = $F110
82+
SHARED CONST KEY_KP_8 = $F010
83+
SHARED CONST KEY_KP_9 = $F180
84+
SHARED CONST KEY_KP_0 = $F710
85+
SHARED CONST KEY_KP_DOT = $F610

lib/keycodes_pet_business_uk.bas

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
INCLUDE "keycodes_pet_business.bas"
2+
3+
' Keyboard scancodes of PET/CBM business keyboard (UK) for KEY() function
4+
5+
' Printable characters
6+
SHARED CONST KEY_AT = $F340
7+
SHARED CONST KEY_BACKSLASH = $F410
8+
SHARED CONST KEY_BRACKET_LEFT = $F540
9+
SHARED CONST KEY_BRACKET_RIGHT = $F210
10+
SHARED CONST KEY_SEMICOLON = $F240

lib/keycodes_pet_business_us.bas

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
INCLUDE "keycodes_pet_business.bas"
2+
3+
' Keyboard scancodes of PET/CBM business keyboard (US) for KEY() function
4+
5+
' Printable characters
6+
SHARED CONST KEY_AT = $F410
7+
SHARED CONST KEY_BACKSLASH = $F240
8+
SHARED CONST KEY_BRACKET_LEFT = $F340
9+
SHARED CONST KEY_BRACKET_RIGHT = $F540
10+
SHARED CONST KEY_SEMICOLON = $F210

lib/keycodes_pet_common.bas

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
' Keyboard scancodes for KEY() function
2+
' common to PET graphics and business keyboards
3+
4+
' Letters
5+
SHARED CONST KEY_B = $F604
6+
SHARED CONST KEY_C = $F602
7+
SHARED CONST KEY_N = $F704
8+
SHARED CONST KEY_V = $F702
9+
10+
' Printable characters
11+
SHARED CONST KEY_COMMA = $F708
12+
13+
' Control keys
14+
SHARED CONST KEY_STOP = $F910

0 commit comments

Comments
 (0)